Языки программирования, "родственные" языку Форт.

Postscript

Самым близким родственником Форта является язык Postscript, разработанный фирмой Adobe. Postscript - фактически прямой потомок Форта. Хотя такого заявления в описании языка вы и не встретите.

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

При всей своей издательской ориентированности, Postscript, как и Форт, является универсальным языком. Он может выполнять вычисления, имеет переменные, процедуры, средства преобразования текстов, может читать и писать файлы, и т.д. С Фортом его роднит общая идеология. Postscript как и Форт явно использует стек для передачи параметров между процедурами (только в PS он типизированный). PS имеет практически идентичный Форту синтаксис и набор примитивов - команд для работы со стеком и для вычислений (только в PS все команды называются другими словами - например, "add" вместо "+"). Также как и в Форте, в PS можно определять новые процедуры на этапе интерпретации исходного текста и сразу пускать их в дело. PS может работать в командном режиме, когда текст пограммы поступает не из файла, а с клавиатуры, при этом можно все команды испытать в ручном режиме. В общем, работать с PS-системой любой фортер может начать "с ходу", получив только минимальную информацию о том, как переименовали основные слова-команды.

На мой вгляд Postscript является намного более продуманной и стройной системой чем Форт. Однако "красота требует жертв" - Postscript более громоздкий и медлительный чем Форт, и всё-таки более специализированный, поэтому за пределы издательской ниши он не вышел. Видимо так и должно быть. Единственный "прорыв" PS за пределы печатных устройств - это диалект Display Postscript, который впервые был применен, кажется в системах NeXT Стива Джобса, позже и в других. Но дисплей в значительной степени - тоже печатающее устройство...

Где почитать об этом языке. Очень интересная книга "Thinking in Postscript" (не правда ли созвучно упоминавшейся здесь "Thinking Forth"?!) попалась мне кажется в дебрях сайта adobe.com. Закладка на adobe потерялась, но файл можно взять здесь (PDF). Там же есть и PostScript Language Reference Manual (в виде PDF и HTML). На русском языке мне никакой информации о Postscript не попадалось. Примечание от 14.02.2002: не попадалось в 1999 году, а сейчас уже есть. Например: http://psdraw.narod.ru/.

На чем это попробовать. Есть замечательный интерпретатор Postscript для PC - Ghostscript. С его помощью можно просматривать PS-файлы на экране, можно печатать их на принтере, который сам не понимает Postscript. И конечно же можно исполнять програмы в диалоговом режиме, например, узнать сколько будет 5+5 :). На PS это запишется как
5 5 add =
Подобно тому как на Форте
5 5 + .

Последнее время Postscript вытесняется своим младшим братом Portable Document Format (PDF-файлы, которые вы читаете с помощью Acrobat Reader), однако врядли уйдет со сцены в ближайшие годы. Тем более, что PDF старается по мере возможности быть совместимым с PS. Спецификация PDF 1.3, реализованная в Adobe Acrobat 4: The PDF Reference Manual Version 1.3 (5Mb, PDF).

LISP

LISt Processor - намного старше Форта, и вообще один из первых языков программирования высокого уровня - разработан John McCarthy в конце 50х годов, т.е. только Фортран старше Лиспа. По элегантности с ним врядли можно сравнить какой-либо другой язык. При почти предельно минимальном базовом наборе сущностей он является совершенно полноценным языком программирования. К сожалению незаслуженно забываемым. Последние острова его использования - вымирающие проекты по исследованиям в области искусственного интеллекта (когда-то в 60х-70х годах эта область хорошо финансировалась, и Лиспу тогда жилось привольно, он был неотъемлемой частью "культуры хакеров" в MITS), средство программирования AutoCAD, встроенный язык некоторых экспертных систем, редактора Emacs в Unix - вот, пожалуй, и все известные мне ниши Лиспа.

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

Возможно Чак Мур, прочитав мои слова, воскликннул бы - "ничего подобного - я сам всё это придумывал и ничего у Лиспа не заимствовал!" Конечно, может так всё и было, но это не противоречит тому, что Лисп был первым языком, воплотившим упомянутые идеи, а Форт - вторым. Форту очень далеко до математической строгости и упорядоченност Лиспа, поэтому я вполне верю, что Мур дошел своим умом без учета чужого опыта. Как бы там ни было, Форт более жизнеспособен, т.к. более компактен и быстр, а это все еще немаловажно.

Где почитать о Лиспе? Кроме двухтомника "Мир Лиспа" вроде как бы и нечего (из бумажных книг). Много полезной информации на странице Ассоциации пользователей Лиспа.

Smalltalk

Smalltalk на мой взгляд претендует на место Лиспа в ряду красивых академических языков. Друг на друга они не похожи, но влияние Лиспа и Форта на Смолтолк я ощущаю где-то на уровне подсознания :) Тоже словари и виртуальные машины, интерпретация и компиляция, открытость и диалог с программистом.

Мне Смолтолк кажется одним из наиболее перспективных языков. Он все еще очень активно развивается, первый его ANSI-стандарт принят в 1998 году, вот его текст (PDF 920Kb). Также в Сети доступно несколько весьма неплохих реализаций языка для многих платформ. Есть коммерческие (наиболее силен Visual Works, 3-я версия которого для Windows и Linux раздается бесплатно), есть и "народные" (не пропустите Squeak!). Страница обновлена 2.01.99.


Первая страница узла Первая страница узла Моя первая страничка Вперёд Вперёд

Andrey Cherezov