Работа Дейкстры интересна тем, что полностью посвящена формализации стекового промежуточного представления. Однако, с практической точки зрения его исследования не сообщают нам чего-то нового. Например, он рассуждает о "словах" разных типов, помещающихся в ячейки памяти единого размера. Но такая аппаратная система на момент написания статьи уже существовала, только в B5000 "слова" назывались "слогами", а размер их был 12 бит. Да и в целом в архитектуре B5000 воплотилось многое из того, о чем Дейкстра лишь довольно туманно рассуждал.
С точки зрения теории, работа Дейкстры явно не доведена до логического завершения. Действительно, заманчиво использовать стековую машину (о дуализме языка и машины Дейкстра хорошо сказал в начале своего текста) для вывода операционной семантики формализуемого языка программирования. Вот пример формальной семантики для языка Scheme:
http://schemers.org/Documents/Standards ... H-10.html# Думаю, если бы придуманный (и продуманный!) стековый язык использовался в таком же духе для описания формальной семантики подмножества Алгол, то работа Дейкстры от этого бы сильно выиграла.
Какое все это имеет отношение к форт-методу? Попробую разобрать ниже, что же я под ним понимаю.
Форт-метод это явление из области инженерного творчества и психологии. Таким образом, форт-метод ближе к Альтшуллеру, чем, скажем, к Дейкстре. Впрочем, Дейкстра в начале своей статьи использует элементы "форт-метода", когда пишет, что создавал свои конструкции, руководствуясь собственным вкусом, выводя их из соображений крайней простоты и элегантности, используя единообразный подход и осуществляя выбор из большого числа соседних вариантов.
Форт-метод -- метод создания инструментария для решения задач. Каковы же его отличительные стороны? Ориентированность на личность, на кустаря-одиночку, независимого от чужого инструментария. Использующему форт-метод разработчику требуются большие опыт и знания. Ведь он, подобно Родену, изучив "глыбу мрамора" знаний и технологий, отсекает от нее все лишнее для себя, путем тщательного отбора из большого числа возможностей. Аналогия с искусством тут неслучайна, ведь автор не просто создает полезный инструмент, а такой, которому он будет испытывать чувства. Отсюда стремление к элегантности, красоте конструкций, миниатюризации. Его инструмент -- средство индивидуального пользования для решения собственных задач. Поддержка в рабочем состоянии, независимость от чужих технологий -- все это накладывает отпечаток на структуру инструмента. Отсюда требования к простоте и регулярности конструкции. Минимализм и единообразие часто приводят к тому, что одни и те же элементы такого инструментария используются нетривиальным образом для различных целей. Это требует определенного мастерства в освоении, в духе процесса бритья топором или использования надфиля в качестве пилки для ногтей. В целом, форт-метод добавляет к результату яркий отпечаток индивидуальности создателя.
В случае Форта несложно видеть, как его автор из большого числа перспективных технологий своего времени (Lisp, B5000, ранние интерактивные и мета-системы) сумел создать нечто для себя и своих собственных задач, не выдумывая ничего принципиально нового, по большому счету. Возможности для подобного маневра были и остаются, поскольку крупные компании и исследовательские центры редко интересуются особенностями характера работы и психологией кустаря-одиночки. К настоящему моменту должно быть уже очевидно, что форт-метод не ограничивается лишь одним Фортом. А что у других?
По схожим принципам был создан язык Смолток Алана Кэя, в котором понятия минимализма, элегантности, единообразия тоже играют ключевую роль. Неслучайно, что Смолток и Форт являются не просто языками, а системами, ведь это требует принцип независимости от чуждого инструментария. В относительно недавнем проекте STEPS Алан Кэй идет еще далее в использовании форт-метода.
Еще одна система -- Оберон, разработанная Никлаусом Виртом построена по канонам форт-метода: то есть с помощью убавления, изъятия избыточных возможностей из существующих технологий.
Язык K Артура Уитни в большей степени, чем ориентированные на обучение и большую аудиторию Оберон или Смолток, напоминает Форт в том, как личность создателя отражается в языке. Принцип Родена работает и тут: язык появился путем упрощения APL и J.
В каждом из представленных языков есть своя "философия". Например, в Форте это "все есть стек(и)", в Смолтоке -- "все есть объект", в Обероне -- однопроходный режим компиляции и отсутствие литералов массивов, в K -- однострочные определения.
Напоследок, пара слов об отрицательных моментах форт-метода. Персональный подход к созданию инструментария часто оказывает странное психологическое воздействие на сторонних его пользователей, вплоть до полурелигиозного почитания или личной ненависти. Второй момент более важен. Применение форт-метода требует недюжинных интеллектуальных усилий. Тем немногим, кто использовал его хотя бы раз, трудно заставить себя снова применить его, переступив через прошлые наработки.