Язык Forth

Лет двадцать пять назад копался в давно ископанной стопке книг на полке информатики в библиотеке и некоторое время крутил в руках [С.Н. Баранов, Н.Р. Ноздрунов. Язык Форт и его реализации. Л.: Машиностроение, 1988]. Покрутил, да и вернул обратно. Школота, интереснее казались другие языки, искал крупицы по Паскалю. Запомнил проходной момент потому, что запала в голову схожесть названия с Фортраном. Фигня же, а зацепилась, да.
Года два назад стояли с тестем в дворике на Плющихе, меланхолично курили в небо и долго обсуждали атипичные языки, на которые соскочили после обсуждения того, как на современных студентов влияют сладенькие песочницы Java и Python. Как-то докурили до ассемблеров, потом до стеков и регистров, ну и дальше по цепочке. И второй раз в жизни цепляющим за извилину эпизодом оказался Forth. Тесть как-то бодро рукой махнул, мол, на Форте можно планету покорить, а по пути ещё и Марс с Венерой на сдачу подмять. Я плечами пожал (толку обсуждать, если ничего не знаешь), но запомнил.
На днях ползаю по статьям о разработке. Бац, Forth. В статье 2016 года. И написано вовсе не про каки мамонтов. Тут уже зацепило за живое. Начал раскручивать, шо то воно такое. И докрутился до трёхчасового чтения перед сном.
Лирическое вступление для того, чтобы сразу стало ясно следующее: я не двигаю Forth в качестве рабочего языка, он применим очень узко. Если не используете, вам и не надо. Даже не топлю за него в теме «это знать каждому разработчику, желающему стать программистом». Причины интереса к нему… да вон выше описаны. А всё-таки интуитивно кажется, что с этим языком и его культурой стоит ознакомиться, если хочется почувствовать атмосферу 70..80-х гг. Да, вы не будете писать на Lisp, на Forth, на Ada и Algol. Зато до сих пор используете решения тех лет, потому полезно узнать, для борьбы с какими проблемами придумалось то или иное. Наконец, тексты программистов 30..40-летней давности — тексты людей, которые учат не использовать фреймворк X или быстрее выходить на рынок с прототипом, но учат быть программистом, который создаст язык, на котором создаст фреймворк, который сам по себе создаст рынок. Милый сердцу олдскул.

Так вот, Forth создан Чарльзом Муром в 1968..1970 годах. Если считать выходом языка выход stable production, получим 1971 год — полноценный Forth был доделан и прикручен к телескопу в National Radio Astronomy Observatory, в которой работал Мур. Ну и понеслось.
В первые минут 10..15 знакомства с синтаксисом умиляешься. Оно такое муси-пуси. Синтаксиса почти нет. Вот всё, что в голову приходит, всё отсутствует. В чистом виде Forth представляет собою метаязык, на котором вы сваяете что-то, что решит ваши проблемы. Описывать не буду, ссылок хватает. Задумываешься, ладно, мол, а куда вот это применять-то? Игры типа крестиков-ноликов клепать? Вы всё-таки походите по ссылкам, посмотрите, как язык выглядит. Тем занятнее будут примеры использования в нашем столетии. Приводить примеры из прошлого не вижу смысла, т.к. в период 1970..90 гг Forth был везде. Думаю, если накатить и начинать собирать яркие примеры из периодики («Forth Dimensions», «Journal of Forth Application and Research») и литературы (учебники, статьи в научных журналах, каталоги производителей и т.д.), блога не хватит. Ограничусь цитированием Баранова:

К середине 1980-х гг. Форт выдвинулся на третье место после языков Бейсик и Паскаль в качестве средства программирования для персональных ЭВМ, и рост его применения продолжается. Широкое распространение получили коммерческие программные продукты, написанные на Форте: системы обработки текстов, пакеты машинной графики, трансляторы, видеоигры. Стихийно быстрое распространение Форта и его практический успех обусловили необходимость стандартизации языка. В 1983 г. был опубликован стандарт «Форт-83», в соответствии с которым ведется изложение материала в этой книге.

Вот как-то так это тогда и выглядело, да.


Итак, где нынче живёт Forth.
Космонавтика. Главное в этом разделе — микроконтроллер RTX20x0, выполняющий код на Forth. Этот микроконтроллер впаивали во всё (список собирался до 2003 года, потому полным не является): миссии IMAGE, ROSETTA, Deep Impact, Shuttle, CASSINI и т.д. Да чего далеко ходить. Помните миссию Philae, которая про комету? Так вот там два RTX2010 зарулили.
Embedded. До сих пор используется во всякой цифровой мелочи. Много точечных ссылок и упоминаний, включу лишь одно интересное. Вот на этой странице отмотать вниз до Partial customer list. Partial потому, что NDA. Интересно тем, что это «покупатели» VFX Forth — от BAE и NASA до Rolls Royce и Saab. Sapienti sat. Сюда же можно добавить и этот список. Пролистал также 40+ страниц современных форумов и переписок, выяснил, что (как минимум) в США язык жив не только в заводских условиях. Инженеры его используют для своих поделок и для прототипирования (в чём он знатно силён, как начинаю всё больше понимать).
Наука. Научные статьи выходят до сих пор, т.к. стековые машины всё в той же зоне внимания, а Forth прекрасен в своей чистоте реализации идеи. Правда, это ничему не показатель, учёное сообщество по любой давной забытой штуковине статьи сотнями выпускать будет, но всё же.
А и всё, пожалуй. Космос, промышленность, наука — три современных ниши языка. Более ничего не нашёл, хоть искал старательно, уверяю.

С литературой швах. Есть стандарты, есть ворох всего по начало 2000-х, дальше тишина. Варианты Форт-систем спокойно разрабатываются внутри контор, нужды им информацию наружу выплёскивать особой и нет, потребителя, нуждающегося в свежих учебниках / руководствах, тоже нет. Потому голову питаем прошлым.
На данный момент самыми интересными источниками знания про Forth оказались вот эти (либо прочёл, либо читаю, но уже оценил):

  • Статьище «The Evolution of Forth» — информация из первых рук.
  • Журнал «BYTE, Vol.5, No 8, August, 1980» (200MB PDF). 2/3 номера в 300+ страниц посвящены языку. А ещё там реклама 26-мегабайтного винта за $5К. Были же времена, а. Даже если не читать, важно отметить то, как массовый журнал для народа выделяет целый номер под одну тему. Этого не бывает с маргинальными разработками, ну и 80-е — начало пика популярности Форт-систем, что BYTE не мог пропустить.
  • Книга «Thinking Forth». Выпустили в 1984 году, стала бестселлером. Перевыпустили в 1994. Потом в 2004, уже под CC-лицензией. Исправили опечатки, улучшили типографику и т.д. Книга одна из культовых в мире Forth и правильно — читается запойнее художественного романа.
  • Статья «Язык Форт в СССР и России» — любопытная статья с деталями, из неё же и цитата post scriptum’а.
  • Книга «Язык Форт и его реализации» — первая глубокая отечественная книга по Forth. Интересна ещё и тем, что в «Приложении 2» приведён список распространённых в 80-е Форт-систем, но по понятным причинам почти сплошь советские.

Не проработал (даже не полистал, но собираюсь) следующее потенциально интересное:

  • Кладовка древних ссылок на Forth-ресурсы, половина уже не с нами. Достаточно сказать, что там используется слово webring. ^_^
  • Книга Starting Forth того же Броуди. Примечательна и тем, что в СССР вышел её перевод [Лео Броуди. Начальный курс программирования на языке Форт. Финансы и статистика, 1990]. Милота: «Starting» vs «Начальный курс программирования».
  • Стандарт ANS Forth-1994 для хардкора.
  • Логово фортолюбов. Тоже кладовка ссылок.
  • Наконец, компания тех, кто Forth придумал, использовал и продолжает его двигать.

В сумме ссылок хватит, чтобы обеспечить извилины гимнастикой надолго. Ну и вообще есть смысл поискать издания по Forth 80-х, в США их много вышло, хоть коллекцию собирай.


PS. Хотел бы обратить внимание на слова про упомянутую в первом абзаце монографию: «Первый тираж составил 50 тыс. экземпляров, но затем издательство получило столько запросов с мест, что пришлось допечатать еще 50 тысяч – редкий случай в практике!». Современные тиражи IT/CS-книг для профессионалов — 200..3000 экземпляров за редким исключением. Для объективной оценки тиража и допечатки советую прикинуть, сколько в 1988 году в СССР было компьютеров, программистов и людей, которые могли освоить / использовать Forth.

Язык Forth: 2 комментария

  1. Из отличных книг, вышедших на русском языке – переводная “Язык программирования FORTH” Келли и Спайса 1993 года.

    А еще в 93-97 (точнее годы не помню уже) в ЛЕнинградском доме пионеров (одном из районных) была создана система… того, что мы назвали бы сейчас “тонкий клиент”.

    Старое (уже по тогдашним меркам старое) железо, на котором развернута OS, а к серверу подключено 10 или 12 терминалок. На каждой – страшно сказать – 128 килобайт памяти. 1 сегмент на систему, 1 сегмент на данные… или только 64 килобайта? Не помню 😦

    Руоводил всем этим Константин Георгиевич Бурков, сейчас он уже на пенсии и разыскать я его не смог 😦

Добавить комментарий