Veden12> Я верно Вас понял, что Форт сложно считать языком потому что все реализации имеют слишком серьёзные отличия друг от друга? Значительно большие, чем в любых языках?
Я бы сказал по-другому. FORTH позволяет вносить серьезные различия в свои реализации. Это его полезное свойство, которого нет в других языках.
Допустим, мы описываем решение задачи в виде алгоритма на ALGOL-60 (раньше так и делали). Понятно, что любая неточность в соблюдении стандарта вызвала бы непонимание и могла бы привести к двусмысленностям и ошибкам.
А теперь, мы будем объяснять то же человеческим языком. Всех тонкостей передать не удастся даже при использовании немецкого языка. Зато, основную идею, весьма возможно, удастся описать буквально в двух словах. Образно и доходчиво.
(В книге Ахо, Хопкрофта и Ульмана можно посмотреть на правильное дозирование алгоритмического и английского языков. Или - у Кнута в его Литературном Программировании).
Так вот, FORTH позволяет обойтись без этого. Он позволяет комбинировать человеческие и машинные описания в пределах своего языка. Причем, то, что не относится к решению данной задачи, можно просто не реализовать.
Нет необходимости описывать некий средний уровень. Мы можем практически ничего не включать в свой алгоритм, кроме самого решения. Все тривиальное фортер пусть реализует сам.
Например, я предлагаю описывать TETRIS-блоки в виде:
7 bricks: LBDBR LBRR DBRR LBRD RDL LBDR RBDL
У какого фортера возникнет проблема в создании слов L R U D B и простенького интерпретатора строк из них? Зачем мне навязывать свое решение, которое, может быть, легко ложится на мою реализациию, но тяжело на вашу?
Конечно, хочется взять чужую прогу и без проблем засунуть в свой компьютер. Но если прога не может быть больше 100 строк, то, может быть, набить ее самому? Более того, это позволит обмениваться прогами просто в журнальных статьях. А сложные программы? Во-первых, дружественная ОС может намного их укоротить (Ведь, в том же Windows большая часть программного кода носит чисто ритуальный характер. Вместо "выйди по Esc" мы пишем "обрабатывая сообщения, в случае, если это сообщение о нажатии на клавишу с кодом Esc, освободи следующие ресурсы... и пошли следующие сообщения..."). А, во-вторых, регулярный обмен FORTH-идеями должен привести к накоплению своих реализаций полезных общих решений, на которые вполне можно ссылаться в дальнейшем.
Это сообщение редактировалось 10.03.2014 в 00:42