Cellar Door

16 августа 2005

FORTH

Forth Programming Webring

FORTH, детище гениального инженера Чарльза Мура, создано им для управления телескопами в Национальной радиоастрономической обсерватории в конце 60х. Это черезчур ёмкое слово, чтобы дать его полное определение, но попытаться следует. Форт - это:
  • язык высокого уровня
  • язык ассемблера
  • язык проектирования
  • операционная система
  • набор инструментальных средств
  • философия решения задач
Прежде всего языковая составляющая вселенной Форт - это "метаязык" для создания собственных проблемно-ориентированных языков... Суть этого процесса состоит в реализации необходимого для решения задачи инструментального набора, словаря. Форт, будучи использован правильно, приближается к уровню функционального языка. Ключевым отличием от традиционных языков является то, что: "Язык Форт предлагает вместо фиксированного набора порождающих понятий единый механизм порождения таких порожающих понятий." [Баранов, Ноздрунов "Язык Форт и его реализации"]

Язык предоставляет максимальный доступ ко всем средствам его реализации и потоку исполнения "шитого" кода. Неделимые в остальных языках операции, например конструкция процедурного вызова, здесь разложены на элементарные составляющие, доступные программисту без какого-либо контроля (так, для упомянутой конструкции процедурного вызова доступно управление точкой возврата). Доступна и внутренняя структура каждого слова, семантика слов-определений как времени исполнения, так и времени компиляции. Сама форт-система постепенно расширяется по мере разработки... Здесь нет нерушимых правил. Сохраняется соответствие между исходным текстом и результирующим машинным кодом. Во главу поставлена простота, свобода и расширяемость. Отстутствие какого-либо контроля является еще одной характерной чертой языка Форт. Следствием такой неограниченной свободы видится то, что программирование на Форте представляется в гораздо большей степени искусством, чем на любом другом языке...

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

Несмотря на то, что Форт интерпретируемый язык, он исполняет скомпилированный код. В целом Форт превышает все другие высокоуровневые языки по скорости работы, а по компактности - и ассемблерный код. Критичные к скорости исполнения участки кода на любом этапе разработки могут быть переписаны на встроенном ассемблере.
В полной инструментальной среде многозадачная Форт-система с интерпретатором, компилятором, ассемблером, редактором, операционной системой и другими утилитами поддержки занимает около 16 КБайт, при этом вполне заурядный размер для ядра системы со словарем - около 4К, а для встроенного ассемблера - 1К.
О еще одном важном свойстве - переносимости - форт-кода свидетельствует наличие многих микроконтроллеров и DSP-процессоров, основанных на Форте...

Форт имеет достаточно широкое применение в научных и промышленных целях, а также встраиваемых системах, с начала 70-х. Хотя его можно считать языком будущего, популярность Форта стабильна в течение продолжительного периода времени и, увы, вряд ли можно ожидать её скачкообразного роста.

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

Осталось ответить на еще несколько вопросов...

Трансляторы Форта
Для системы FreeBSD и остальных opensource-систем семейства UNIX доступны реализации Gforth проекта GNU, PFE http://pfe.sourceforge.net/ (Portable Forth Environment), а также интерпретируемый язык FICL http://ficl.sourceforge.net/ (Forth Inspired Command Language). Последний дополняет стандартный Forth объектно-ориентированными свойствами и идеально подходит для интеграции с другими приложениями и "встраиваемых" применений.

Литература
Её немного, но качество и ценность имеющихся изданий поразительны. Книга "Starting FORTH" Leo Brodie послужит более чем удачным вводным курсом. "Язык ФОРТ и его реализации" С.Н. Баранова, Н.Р. Ноздрунова также заслуживает наивысших оценок. А "Thinking FORTH" Leo Brodie, освещающий вопросы техники и стиля в цикле разработки программного обеспечения, представляет исключительную ценность для программистов на любых языках и может занять достойное место рядом с "Искусством программирования" Дональда Кнута, "Мифическим человеко-месяцем" Фредерика Брукса или "Совершенным кодом" Стива Макконнелла...

Все перечисленные книги можно найти на сайтах forth.org и forth.org.ru. Второе издание Thinking FORTH легально доступно на SourceForge, в т.ч. в виде исходных текстов системы LaTeX. Также стоит посетить Forth Programming Webring, страницу проекта Open Directory и домашнюю страницу Чарльза Мура.
О самом изобретателе лучше всего говорит цитата из статьи Дж. Фокса "Тощий компьютинг": "...Это самый продуктивный программист, которого я когда-либо видел. За последние 15 лет он написал 15 KB кода: несколько десятков популярных ОС, систему проектирования СБИС, с помощью которой создал работающие микропроцессоры, и десяток масштабных систем управления, функционирующих по сей день...".

Одним словом, перед нами еще одна крошечная бездна, нечто крайне отличное, как по своей структуре, так и по философии, от всего, с чем приходилось иметь дело до сих пор, средство открывающее совершенно иные пути решения "вечных" проблем.
В заключение еще одна цитата: "Форт подобен Дао: это Путь, и осознается он, когда ему следуешь. Хрупкость его есть его сила; его простота есть его направление." (Майкл Хэм, победитель конкурса Mountain View Press на описание Форта в двадцать пять слов или меньше.)