 ПРЕДИСЛОВИЕ

     Язык   программирования  Форт  (англ.  forth  -  вперед  и  одновременно
 сокращение  от  fourth  - четвертый), которому посвящена эта книга, появился
 в  начале  1970-х  гг.  в  США.  Его  изобретатель  Чарльз Мур первоначально
 применил  его  для разработки программного обеспечения микроЭВМ, управляющей
 работой  радиотелескопа  [27].  Преимущества  работы  с  языком  Форт вместо
 применявшегося  ранее  Ассемблера  были настолько велики, что вскоре он стал
 использоваться и на других специализированных ЭВМ.

     Быстрый  рост  популярности  языка  Форт  начался с середины 1970-х гг.,
 когда  появились  персональные  ЭВМ.  Оказалось,  что  этот  язык  позволяет
 обходиться  сравнительно  небольшим набором возможностей первых персональных
 ЭВМ,  превращая  их  в  удобный  и  эффективный  инструмент для самой разной
 работы.  К  середине 1980-х гг. Форт выдвинулся на третье место после языков
 Бейсик  и  Паскаль  в  качестве  средства  программирования для персональных
 ЭВМ,  и  рост его применения продолжается [7, с.54]. Широкое распространение
 получили  коммерческие  программные  продукты,  написанные на Форте: системы
 обработки текстов, пакеты машинной графики, трансляторы, видеоигры [24, 30].
 Стихийно  быстрое  распространение Форта и его практический успех обусловили
 необходимость  стандартизации  языка.  В  1983  г.  был опубликован стандарт
 "Форт-83"   [3,   23,  26],  в  соответствии  с  которым  ведется  изложение
 материала в этой книге.

     Едва     появившись,    Форт    вызвал    ожесточенные    споры    среди
 профессионалов-программистов,  обсуждавших,  в  частности,  является ли Форт
 еще  одним  языком  (если  языком, то какого уровня - высокого или низкого),
 операционной  системой,  интерпретатором или компилятором. Одни считали Форт
 шагом  вперед  в  развитии  программирования,  другие - ошибочным выбросом в
 сторону.  К  настоящему  времени  становится  ясным,  что  Форт представляет
 собой  самостоятельный  унифицированный  подход  к  разработке  программного
 обеспечения,  который  действительно  позволяет решать практические задачи -
 от  небольших  игровых  программ до больших систем программного обеспечения,
 работающих  в  реальном времени [21; 7, с.56]. Унификация состоит в том, что
 Форт  предполагает  последовательное  и  систематическое использование очень
 небольшого   числа   "правил".   Например,   "мостом"   между  аппаратурой и
 прикладной  задачей  служит  всего  один  язык программирования (Форт), в то
 время  как  при  традиционном  подходе  этот  разрыв заполняется в несколько
 приемов  разнородными инструментальными средствами (ассемблер, универсальные
 языки выского уровня, проблемно-ориентированные языки, средства операционной
 системы).

     Система  программирования  на  Форте  (форт-система) обычно обеспечивает
 полный  набор  средств  поддержки  для  разработки  и  исполнения  программ:
 операционную  систему, интерпретатор для диалогового исполнения, компилятор,
 ассемблер,  текстовый редактор и обслуживающие программы. Все эти компоненты
 являются  расширениями Форта и написаны на том же Форте. Таким образом, Форт
 является   одновременно   и   системой   для   пользователя,  и  собственной
 метасистемой,  т.е.  системой,  описывающей  саму себя (см. приложение 1). В
 соответствии  с  общим  принципом  Форта в форт-системе используется минимум
 правил  и  накладывается  минимум  ограничений, т.е. она обходится почти без
 синтаксиса,  жестко  контролируемых  интерфейсов для взаимодействия модулей,
 закрытых  для  пользователя  областей  памяти,  имеет лишь незначительный по
 объему  встроенный  контроль  ошибок. Это обеспечивает максимум возможностей
 для  программиста, включая возможность изменять, добавлять или удалять любую
 часть системы, позволяет расширять систему в заданном направлении и вместе с
 тем сохраняет ее относительную независимость от аппаратуры.

     Разумеется,  Форт  имеет и свои недостатки. Многие программисты считают,
 что  форт-тексты  трудно читаемы из-за применяемой в Форте обратной польской
 формы   и   различных   неочевидных   манипуляций  со  стеком.  В  некоторых
 форт-системах  отсутствуют  средств  для получения независимого программного
 продукта.  Вызывает  возражение отсутствие контроля типов при взаимодействии
 модулей    и    незащищенность   форт-системы   от   неправильных   действий
 программиста. В то же время становится ясно, что методология Форта находится
 в   общем  русле  поисков  в  области  технологии  программирования,  хотя в
 настоящее   время   практически  отсутствуют  работы  по  методологическим и
 технологическим   аспектам   его   применения,   сравнимые  по  значимости с
 исследованиями для традиционных языков [13, 14, 19].

     В  целом  цикл  разработки  программного  продукта  остается неизменным:
 анализ,  проектирование,  программирование,  отладка.  Однако лишь на первых
 двух   этапах   применяется   традиционная   технология   "сверху  -  вниз".
 Программирование  и  отладка  ведутся  по  методу "снизу - вверх". Благодаря
 этому отпадает необходимость в модулях-заглушках и в повторных тестированиях
 всего  комплекса программ при заменах заглушек на действительные модули, что
 сокращает  время прохождения всего цикла и позволяет выполнить его несколько
 раз  за  то  же  время. При разработке форт-программ наблюдается тенденция к
 вычленению  относительно замкнутых групп модулей, каждая из которых проходит
 свой  цикл  разработки.  При  этом обычно размер модуля составляет от 1 до 3
 строк  текста,  что  резко  контрастирует с традиционными языками. Для целей
 промышленного    производства   программ   сочетание   методологии   Форта с
 существующими  [14] представляется весьма перспективным, однако практические
 разработки в этой области пока не известны.

     В нашей стране также шли поиски принципов, аналогичных тем, которые ныне
 определяют  язык  Форт,  в  большей  степени  исходя  из теоретических основ
 программирования  [10]. Эти работы привели к созданию интересных систем ДССП
 [9],  КОМФОРТ  [12],  системы  программирования  на  основе понятия "рабочей
 смеси"  [5,  17]  и других. Интерес к языку Форт возрастал по мере получения
 сведений  о  нем  и достижения собственных результатов в этой области [2, 6,
 18,  20].  Усилиями  энтузиастов  созданы  самостоятельные реализации Форта,
 которые  получают распространение наряду с заимствованными реализациями (см.
 приложение  2).  Язык  Форт  включается  в  программное обеспечение школьных
 компьютеров.  Ведутся  работы  по  аппаратной реализации этого языка [12]. В
 1985   г.   в   рамках   Рабочей   группы   по  технологии  программирования
 микропроцессорной  техники  при  Комиссии по технологии программирования при
 ГКНТ  была  создана  целевая подгруппа по языку Форт и родственным системам,
 задачей  которой  является  обобщение  и распространение опыта практического
 применения этих средств в различных областях.

     С  1978  г.  в  США  выходит журнал "Форт Дименшнз" (FORTH Dimensions) -
 основное  периодическое  издание  для  массовых  пользователей языка Форт. С
 1979  г.  проводятся  ежегодные  конференции,  материалы которых, отражающие
 последние   достижения   в   развитии   форт-подхода,   публикуются  в  виде
 сборников.  С  1983 г. издается журнал "Джорнал оф Форт Эпликейшн энд Рисёч"
 (The  Journal  of  FORTH  Application  and  Research,  шифр ГПНТБ - V1467) -
 издание  для программистов-профессионалов. Журналы "Байт" (BYTE, шифр B1841)
 и  "Д-р Доббз Джорнал" (Dr. Dobb's Journal, шифр W9464) посвящают языку Форт
 специальные выпуски.

     До  сих  пор знакомству широких кругов программистов нашей страны с этим
 языком  препятствовало  отсутствие сколько-нибудь обстоятельных публикаций о
 нем  на  русском  языке.  Данная  книга  является первой такой публикацией и
 написана  с  целью  дать  подробное и по возможности простое введение в язык
 Форт.  Мы  надеемся,  что  знакомство  с  интересными принципами этого языка
 позволит  читателям  по-новому  взглянуть на свою программистскую практику и
 будет полезно во всех отношениях.

     Авторы   выражают   глубокую   благодарность   Г.С.   Кудрявцевой,  О.Н.
 Колесниковой  и  М.Б.  Округину  за  помощь  в подготовке рукописи. Отзывы о
 книге  и  предложения  можно  направлять  по  адресу: 191065, Ленинград, ул.
 Дзержинского, 10, ЛО издательства "Машиностроение".
