Форт

Эмблемка Forth

Эта страница о языке программирования Форт (FORTH) и про мои с ним взаимоотношения, выразившиеся в трансляторе СП-Форт :)

Язык Форт создал американский программист Чарльз Мур в конце 60х (здесь его фото, история языка, и вообще это сайт его бывшей компании :). Первое описание Форта (Moore, Charles H. and Leach, G.C. FORTH - A Language for Interactive Computing. Amsterdam, NY: Mohasco Industries Inc. (internal pub.) 1970.) появилось в 1970 году, этот год и считается годом создания языка (ровесник Паскаля, на два года старше Си). Как и язык Си, Форт был разработан в процессе выполнения конкретных практических задач на распространенных в те годы моделях компьютеров. Си создавался в процессе разработки ОС Unix, Форт - в процессе разработки систем управления астрономическим оборудованием. Области принципиально довольно близкие (ОС - это тоже "система управления"), поэтому и возможности языков получились близкими. Однако реализуют свои возможности каждый по-своему, "идеологически" совершенно по-разному. Если вы программист, то язык Си вы наверняка знаете. Главные отличия Форта от Си - наличие интерпретирующего и диалогового режимов работы транслятора (как у языков Лисп, Бейсик, Смолтолк, Перл), предельная простота синтаксиса языка и, как следствие, предельная простота и компактность транслятора. Форт идеологически гораздо ближе к Лиспу и Смолтолку, чем к Си, но по прикладным областям он пересекается в основном с Си. Почему Форт менее популярен чем Си? В разную почву попали после рождения :)

Применяют ли Форт сейчас? Да. Показателем того, что язык не умер, является продолжающийся процесс стандартизации. Последний ANSI-стандарт Форта принят в 1994 году (предыдущие в 83м и 79м). Форт по-прежнему находит работу в своей нише. Это и управление железками (телескопами, батискафами, космическими аппаратами), вот целый сайт NASA об их форт-проектах, и выполнение роль BIOS в компьютерах Sun и новых Macintosh - используемая в этих и некоторых других компьютерах система OpenFirmware (http://www.openfirmware.org/) является Форт-системой, и в издательском деле - широко использумый в принтерах язык Postscript (фирмы Adobe) и его диалект Display Postscript (применяемый для вывода на дисплей в системе NeXT и др.) - это ни что иное как переработанный Форт; и в более традиционных областях - например, мой Интернет-сервер Eserv написан на Форте, есть написанные на Форте игры и другие "обычные" программы. Отдельная интересная тема - форт-процессоры. Их немало, есть среди них очень мощные. О форт-процессорах намного лучше расскажет разработчик одного из них - Алексей Чепыженко - на страницах "Форт в кремнии".

Почему я применяю для разработки Форт? Честно говоря, не знаю. До Форта я программировал на многих традиционных языках (Си, ++, Паскаль, различные ассемблеры, Фортран, Бейсик и т.п.) и они вполне подходили для решаемых мной задач. Но Форт - первый язык (кроме русского :), который я "полюбил". Потрясающая простота, краткость и открытость языка не оставят равнодушным никого, кто нашел время и желание познакомиться с Фортом поглубже. Большую роль сыграла книга, из которой я узнал о Форте - книга С.Н.Баранова "Язык Форт и его реализации" (1988 г. издания). Форт позволил мне изъясняться с компьютером проще, быстрее и "доходчивее" (для компьютера :-). Мой транслятор Форта рос вместе с моим программистским опытом, и возможно этим объясняется моя привязанность к нему моё владение им. Это как родной язык. Не попади мне в руки та книга - использовал бы до сих пор C++; не доведись мне родиться в России - говорил бы на каком-нибудь китайском (например) языке и рисовал бы иероглифы, не зная какого счастья лишен (русского языка). Так что во многом всё случайно. Если вы случайно набрели на этот текст, тем интереснее - у вас есть шанс "заразиться" фортом тоже. Хотя специально стремиться заразить вас я не буду.

Теперь ближе к делу. Здесь я попробую подробнее рассказать о Форте, о родственных языках и технологиях, дам вам свой транслятор Форта, ссылки на другие Форт-ресурсы, покажу примеры реальных программ на Форте. Что со всем этим делать - решайте сами :-)

Для начала прочтите вот эту forth_ideas.html мою относительно старую статью об идеях, положенных в основу языка Форт. Это, конечно, моя точка зрения, а не перевод идей создателя языка Чарльза Мура. Так что на истинность не претендую. Просто я так вижу этот язык. Сейчас я даже не со всеми положениями своей статьи сам согласен :) Но все же это наиболее дельная и краткая из моих статей о Форте, и без "наездов" на другие языки, чем грешат мои более ранние статьи (я пишу о Форте с 1990 года).

Если вы начинаете знакомство с Фортом и ищете описание языка и учебник, то попробуйте найти такие книги (на русском языке): С.Н.Баранов "Язык Форт и его реализации" Л.Броуди "Начальный курс программирования на языке Форт" (перевод книги "Starting Forth"). Эти книги выпущены около 10 лет назад, поэтому найти их сегодня сможете только в библиотеке или у друзей. В электронном виде эта книга есть на сайте www.forth.org.ru. Есть также текст стандарта ANS Forth 94 - наиболее подробное и современное описание языка. Правда по-английски. Мой перевод определений всех стандартных слов (команд) Форта вы найдете в комплекте моего СП-Форта, либо можете взять здесь в виде отдельного файла (неизвестный доброжелатель выковырял перевод из моих исходников СП-Форта). Также есть в электронном виде русский перевод очень любопытной книги Лео Броуди "Thinking Forth". Она может быть интересной не только для фортера, но и для любого программиста.

К сожалению книги довольно старые, и уровень примеров программ соответствующий - далекий от современной практики программирования. Однако основы языка изложены хорошо. А если вам нужны примеры из современной практике - вы их найдете в современных Форт-системах. В нашей стране были выпущены еще несколько книг о Форте - отечественных и зарубежных авторов, я не привожу здесь их названия, поскольку на мой взгляд усилия по поиску этих книг не оправдаются их полезностью. Да и не помню я уже авторов и названия, честно говоря ;) Вот здесь еще кое что подобрал из литературы.

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

Если вы используете DOS или Win32 (Windows 95/98/NT/CE), то вам далеко ходить не нужно - вы найдете трансляторы здесь - это СП-Форт разных версий. До версии 2.5 включительно это были 16-разрядные форт-системы для DOS, версия 3.х - 32-разрядные форт-системы для Windows/Intel, версия 4.0 может работать также и на Windows CE для процессоров MIPS. Все версии СП-Форт написаны на Форте, поставляются с полными исходными текстами, и тоже могут служить примерами программ на Форте.

Среди отечественных фортеров также очень популярна 32-разрядная форт-система для DOS - Smal. Разработчики - Александр Ларионов, и др. Smal использует DOS-extender.

Существуют и отечественные коммерческие форт-системы - ПараФорт и Форт-Ягуар фирмы "Ирбис". Обе - 32-разрядные для DOS.

Вообще отечественных Форт-систем в свое время (80-е - начало 90х годов) было создано огромное количество, для всех платформ, какие существовали в СССР. Для 8-разрядных процессоров i8080 (К580ВМ80) Кириллиным, Клубовичем и Ноздруновым (к сожалению не помню имен) в городе Петергофе был создан превосходный Форт-К580, соответствующий стандарту FORTH-83. При размере базовой системы около 8Кб, он был исключительно удобным и мощным, поэтому он стихийно портировался энтузиастами на другие многообразные платформы с тем же процессором К580, я лично портировал его на три платформы :)

Были и удачные Форт-системы для ЕС ЭВМ (IBM/360), я знаю о двух из них, обе созданы в Ленинграде. Кажется, до сих пор используются на последних представителях этих ЕС-динозаврах.

Также в Ленинграде были созданы и первые россйские Форт-системы для PC (DOS). Это АстроФорт фирмы AstroSoft (сейчас эта фирма - известный в Питере поставщик "решений Microsoft" и о Форте очевидно забыли) - довольно мощная для тех времен (конец 80-х) система с богатыми графическими возможностями. И еще два питерский Форта для PC - InfoForth и BetaForth. Автор последнего - С.Н.Баранов - автор упомянутой книги, автор одной из Форт-систем для ЕС, президент российского отделения ACM SIG FORTH.

К сожалению, последние несколько лет обстановка в нашей стране не способствовала занятиям "наукой", и российские Форт-системы испытали на себе действие "естественного отбора". Выжили только форт-системы, которые оказались нужны их создателям и пользователям, прямо или косвенно приносили прибыль. Видимо поэтому в реальном относительно широком использовании остались только Smal - современная Форт-система для DOS и мой СП-Форт - единственная русская Форт-система для Windows (развитие СП-Форта для DOS я прекратил в начале 95го).

Западных Форт-систем, конечно, еще больше чем отечественных. Также для всех существующих в мире процессоров и операционных систем. Наиболее развитыми (из бесплатных) форт-ситемами для PC являются F-PC 3.5 (DOS) и Win32forth 4.0 (Windows). Последний продолжает развиваться, версия 4 появилась в этом году. Как и СП-Форт, он поставляется с исходными текстами. "Архитектурные" отличия SP-Forth 3 и Win32forth в том, что Win32forth использует "загрузчик", написанный на Си и компилирует косвенный шитый код, а СП-Форт полностью написан на Форте и компилирует в машинный код, поэтому имеет преимущества в скорости и гибкости.

Win32forth и массу других Форт-систем вы найдете на сайте ftp://ftp.taygeta.com/ - самое крупное собрание трансляторов Форта в Интернет. Из этого многообразия хочется выделить еще SOD32 - интересный Форт-проект, автор которого попытался создать описание платформенно-независимой форт-машины, выполняющей переносимый форт-код. Т.е. нечто вроде Java, но для Форта. Система работает, хотя раз в 40-100 медленее непереносимых Форт-систем.

Кстати, есть и Форт-системы, написанные на Java и таким образом "портабельные" в той же степени. И они могут выполняться в браузере как обычные Java-программы.

Больше о Форт-системах говорить не буду - дело это неблагодарное - всё постоянно меняется, и системы, и ссылки. Да и я не имею возможности иследовать их достатоно подробно для написания сколько-нибудь корректного обзора. Каждый может сравнить и выбрать сам. Основной сайт о Форте - http://www.forth.org/ Мои форт-закладки с краткой аннотацией сайтов - здесь.

Хотелось бы сказать несколько слов о языках, на мой взгляд родственных Форту. Им я посвятил отдельную страничку lang.html. Там вы сможете прочесть о языках Postscript, Smaltalk, Lisp. Страница обновлена 2.01.99.


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

Andrey Cherezov