18 subscribers

Триангулярная интрижка: Дейкстра, Мур и чей-то Форт

154 full reads
Триангулярная интрижка: Дейкстра, Мур и чей-то Форт

Язык программирования Форт (англ. Forth - вперёд, "передовой", сокр. от Fourth - четвёртый, то есть ЯП 4-го поколения; буква в названии выпала из-за ограничения, допускающего не более 5-и символов для имени файла в компьютере IBM 1130, на котором впервые был реализован транслятор) слывёт притчей во языцех, и поделом! Внутри сообщества энтузиастов и специалистов нет даже призрачного намёка на консенсус относительно того, чем в действительности является Форт. Достаточно сказать, что далеко не все считают Форт языком, называя его то ультраминималистичной саморасширяющейся системой (в том числе операционной), то своеобразным трафаретом или элементарной IDE для создания проблемно-ориентированных ЯП (наличие рудиментарной файловой системы и примитивного редактора на основе специфических блоков - с возможностью изменения содержимого и чтения/записи кода/данных - служит косвенным доводом), а то и вовсе вещью в себе - уникальным методом или парадигмой, где конкретные лексические, семантические и синтаксические особенности ничуть не играют роли (приверженцы этой точки зрения традиционно апеллируют к могучему авторитету Лео Броуди с его каноничным манифестом "Способ мышления - Форт"). Но если всё-таки язык, тогда какой: высоко- или низкоуровневый, - уж не медиальный ли? интерпретируемый, компилируемый, или, быть может, гибридный?.. Пожалуй, лучше остановиться здесь и сейчас, не углубляясь в технические дебри трансцендентной природы объекта, - ведь дьявол, как известно, кроется в деталях; рассмотрение более тонких материй лишь усугубит и без того чрезвычайно запутанную ситуацию. К счастью, проблема классификации и дефиниции Форта нисколько не перекликается с темой настоящей публикации.

Официально годом рождения Форта принято считать 1971, когда он укоренился в недрах Национальной радиоастрономической обсерватории США (собственно, отсюда и берётся назойливая привязка к телескопу), хотя по легенде его отца-основателя, Чарльза "Чака" Мура, зачат язык давным-давно в далёкой-далёкой галактике аж в конце 50-х (см. "Forth - The Early Years"). Впрочем, убедительные доказательства сему отсутствуют, зато - и тут начинается самое интересное - есть неопровержимые свидетельства приоритета... Эдсгера Вибе Дейкстры! В статье 1962 года "Процессы подстановки" великий голландец описывает "в терминах Мура" ныне хорошо знакомую двухстековую - стеки данных и возвратов - архитектуру с набором исходных примитивов, позволяющих безгранично расширять систему путём определения новых слов, значение коих меняется в зависимости от контекста; разумеется, вкупе с "фирменной" обратной польской нотацией... Причём теоретические рассуждения Дейкстры отчасти строятся на результатах практических экспериментов. Вместе с тем, даже целиком принимая взаправду версию Мура, стоит учитывать, что вплоть до второй половины 60-х идеи, впоследствии сформировавшие ядро Форта, носили абсолютно разрозненный интуитивный характер, - поэтому можно смело утверждать, что хронологически Дейкстра занимает доминантное положение.

Среди фортеров вопрос гипотетической причастности Дейкстры к появлению языка или, по крайней мере, влиянию на Мура, бродит с незапамятных времён, - вот только вслух задать его осмеливаются немногие... К избранной когорте дерзких храбрецов принадлежит и ваш покорный слуга. Ранней весной 2019-го, промозглой мартовской ночью, я спровоцировал очередной виток дискуссии о первичности Дейкстры по отношению к Муру ради устранения вопиющей исторической несправедливости. Площадкой для прений выступила тематическая Форт-конференция в Telegram (@forthchat). Волею судеб, один из участников - им оказался не кто иной, как меметичный Арви Хэкер - находился в прямом контакте с Муром. Без обиняков и экивоков Арви отправил электронное письмо адресату и собравшиеся погрузились в томительное ожидание...

Наконец пришёл долгожданный ответ:

I learned of Dijkstra’s paper today, when I read your email. I understand your interest, for he describes something very like Forth.
His use of ‘word’ and the postfix stack are striking. However, his E operator is clearly unnecessary. I think if he had actually used the language he would have realized that.
This is evidence that the notion of Forth was ‘in the air’ in the 1960s. I have heard that others devised stack languages. But that window closed, and Forth was lucky to survive.
Charles H. Moore
21.03.2019

Как именно квалифицировать сложившийся казус: совпадение? плагиат? криптомнезия? - сугубо личное дело каждого.

***

Вообще, Мур о Дейкстре, конечно, знал (например, ссылка на Дейкстру указана в статье "The Evolution of Forth"), но слышал ли Дейкстра о Муре или Форте, и тем паче что думал, - вопрос до сих пор открытый. Если читатели располагают какой-либо информацией по этому поводу - убедительная просьба отписаться в комментариях.