                                                   Фоpсюк В.
                ЯЗЫК ФОРТ. НЕМНОГО ИСТОРИИ.

   Разработчик  Форта  Чарлз  Мур  утверждал,  что не просто
создал новый язык. Он создавал и развивал его постепенно  на
протяжении  многих  лет  как  способ  повышения  собственной
производительности. "Tрадиционные языки программирования  не
обеспечивали  желаемой   для  меня   мощности,  легкости   и
гибкости,- объяснял он позднее.- Я подсчитал, что за 40  лет
очень хороший программист может написать 40 программ, а  мне
хотелось гораздо больше. В мире столько вещей, которые нужно
сделать, что мне  требовался инструмент, способный  помочь в
этом".

   Родившись в штате Мичиган, Мур в 1960 г. окончил МТИ, где
специализировался в области физики. В начале 60-х годов  Мур
начал разрабатывать элементы  Форта, создавая программы  для
Станфордского линейного  ускорителя в  Калифорнии. Одной  из
особенностей   Форта   была   компактность;   система    его
обозначений  настолько  лаконична,  что  некоторые  ключевые
слова  представляют  собой  просто  знаки пунктуации. Другое
свойство,   необычное   для    других   языков   -    легкая
расширяемость: программист может без труда определять  новые
ключевые  слова  или  команды  в  терминах уже существующих,
настраивая набор команд языка  на любое приложение. В  конце
60-х годов, когда Мур занимался программированием для  одной
нью-йоркской частной  компании, все  его идеи  слились в то,
что с полным правом  можно было назвать языком.  Вначале Мур
хотел  дать  своему  детищу  название  FOURTH   (четвертый),
поскольку ему казалось, что мощь языка настолько велика, что
он на  целое поколение  опередил языки  компьютеров третьего
поколения. (По словам Мура, в своем окончательном виде новый
язык повысил его производительность в 10 раз.) Однако машина
IBM-1130, на  которой Мур  в то  время работал, ограничивала
длину  идентификаторов  5-ю  литерами,  поэтому  он сократил
название   языка   до   Форт   (FORTH),   которое    позднее
охарактеризовал как "утонченную  игру слов" (новое  название
было не хуже первого, FORTH в переводе - вперед).

   Впервые  Форт  стал  активно  применяться  в  начале 70-х
годов, когда Мур работал в Национальной радиоастрономической
обсерватории в Аризоне.  В сотрудничестве с  Элизабет Разер,
ведавшей   программным    обеспечением   обсерватории,    он
использовал   Форт   при   написании   серии   программ  для
мини-компьютеров, которые, в частности, управляли в реальном
масштабе времени  системой наведения  11-метрового телескопа
обсерватории  Кит-Пик.  Программы  и  сама система оказались
столь удачными, что в 1973  г. Мур, Разер и их  руководитель
Нед   Конклин   решили   создать   свою   компанию.    "Форт
Инкорпорейтид" продавала  системы, пригодные  не только  для
обсерваторий, но  и для  других специальных  приложений, где
требовалось управление в реальном масштабе времени.  "Именно
такая система автоматического управления видеокамерами  была
установлена на подводном аппарате, участвовавшем в 1985 г. в
поисках затонувшего "Титаника".

   Хотя  компания  не  проявляла  особого  интереса  к рынку
персональных компьютеров, Форт  тем не менее  вызвал ажиотаж
среди программистов-любителей.  В числе  первых был  молодой
инженер  из  Кремниевой  долины  по  имени  Ким  Харрис.  На
семинаре, проводимом компанией, он с благоговением наблюдал,
как  один  из  демонстраторов  за  15  мин. составил простую
программу для  исполнения компьютерной  музыки. Харрис  знал
квалифицированного любителя,  который трудился  больше года,
чтобы получить подобную программу на языке ассемблера.  "Это
было подобно  чуду, -  вспоминал Харрис,  - и  я увидел  его
собственными глазами".

   В  1977  г.  Харрис,  объединившись  с  четырьмя  другими
молодыми  энтузиастами,  образовал  инициативную  группу под
названием  ФИГ  (FIG,  от  FORTH  Interest  Group),  которая
занялась  разработкой  дешевой  Форт-системы  для любителей.
Пятеро  основателей  и  семеро  их  добровольных помощников,
получив  из  обсерватории   первую  широкодоступную   версию
интерпретатора Форта,  трудились более  полугода ночами  и в
выходные  над  созданием   упрощенного  интерпретатора   для
персональных  компьютеров.  Результат  этой работы, ФИГ-Форт
(FIG-FORTH),  продавался  по  цене  примерно  20  долл.    В
дальнейшем появились  в продаже  и другие  версии Форта  для
микрокомпьютеров,   но   любители   отдавали    предпочтение
ФИГ-Форту.  Сама  группа  тем  временем  охватила около 4000
человек из разных концов страны.

   Форт  малопонятен  всем,  кроме  самих его пользователей.
Однако его сторонники  утверждают, что этот  язык "усиливает
их власть" над компьютером (подобно тому как ручная передача
подчиняет автомобиль водителю). "Язык, подобный Форту, - это
рай для хакеров", - заметил один из энтузиастов.
   _________________________________________________________

                 ФОРТ И ВСТРОЕННЫЕ СИСТЕМЫ

   Имеется ряд реализаций языка (например, ПолиФорт), вполне 
применимых к микропроцессорам.  ПолиФорт имеет средства  для
мультипрограммирования   и   представляет   собой  замкнутую
систему с  дисковой поддержкой  этапа создания  и отладки, а
также  с  обеспечением  для  выполнения  программы  в   ППЗУ
объектной системы.

   Что же может  привлекать в Форте  инженера-разработчика ?
Прежде всего, наверное,  два его необычных  свойства: полный
доступ  к   особенностям  ЭВМ    и  уникальная   возможность
использования ассемблера  в диалоговом  режиме. Кроме  того,
Форт  очень  компактен,  для  вызова  любой операции  языка,
независимо от ее сложности,  требуется всего два байта.  Чем
больше  размер   программы,  тем    больше  экономия,   чему
способствует  иерархическая  структура  прикладной  задачи и
соответственно  программы.  Модульность   кода  приводит   к
отсутствию  дублирования    отдельных  его    кусков.   Если
ассемблерная  программа    занимает   4К,    соответствующая
программа  на  Форте    будет  примерно   такая   же.   Если
ассемблерная программа  занимает 8К,  размеры программы   на
Форте  (при  условии,  что  она  грамотно написана) составят
6.5-7К.

   Главное преимущество Форта  как языка программирования  -
его гибкость, позволяющая оптимизировать программный продукт
по  трем  критериям:  время  написания,  время   выполнения,
требуемая память.
