Эвересты и Марианские жёлобы Форта
By Azamadt Smaguloff. Friday, 2. March 2007, 18:49:03
Всё таки не удержался я от того чтобы как обещал в начале писать только "чиста-конкретно" и написал достаточно "водянистое" эссе. Впрочем, получилось не так уж и бесполезно, так что опубликую, но с предупреждающим значком "bla-bla", так чтобы избегающие лирики могли проскакивать в дальнейшем эту "воду".
С одной стороны на Форте можно писать так (отрывок из сканера по HTML):
... в-тексте на-входе: отсюда начать-копить ; все: копить-дальше ; \ перевод-строки: внести-текст отсюда начать-копить ; символ: < внести-текст в-ожидании-имени-тэга ; строка-кончилась: внести-текст ; : от-конца-накопленного-текста накопленный-текст 2@ + начать-копить отсюда протянуть вернуть-букву накопленный-текст запомнить прописать-текстовый-узел ; в-ожидании-имени-тэга все: вернуть-букву в-имени-тэга ; символ: ! пропустить-атрибуты ; символ: > от-конца-накопленного-текста в-тексте ; символ: / в-имени-закрывающегося-тэга ; строка-кончилась: от-конца-накопленного-текста ; ...
С другой стороны, можно так (это другой отрывок, из реализации бэктрэкинга на SPF):
... : R@ENTER, SetOP 0xFF C, 0x14 C, 0x24 C, SetOP ; : PRO R> R> >L ['] LDROP >R >R ; : CONT L> >R [ R@ENTER, ] R> >L ; ...
Первое является прототипирующим Эверестом (и на самом деле, этот код в виде диаграмм автоматов у меня был нарисован ещё до того как я даже начал делать реализацию конечных автоматов на SPF, впрочем я отвлёкся). Второе -- настоящий Марианский жёлоб, нижайший уровень -- непосредственная компиляция машинного кода и манипуляции со стеком возвратов.
Вследствие этого проскакивали даже мнения что Форт следует называть не языком высокого уровня или языком низкого уровня, а положить в специальную, эксклюзивную категорию языков среднего уровня, в которой дозволяется как писать и на Эвересте, пиша очень "высокий" код (переносимый, кросс-платформенный, векторизируемый, аспектный, объектный и вообще весь из себя), так и в Марианском жёлобе, используя "грязные" хаки, завязанные на побочных эффектах текущей архитектуры, платформы, ОС.
Это естественное следствие того что в Форте практически нет запретов на процесс компиляции, нет никаких запретов на структуру самого компилятора, и поэтому можно спускаться вплоть до ножек процессора, под самый термоклей. Хорошо это или плохо есть разные мнения, но то что эта возможность даёт исключительные возможности Форту -- факт.
Ссылки по теме:
-
Не пущать!" vs "Хай будэ.. (моё мнение о том отсутствие ограничений это хорошо)
-
Что не хватает Форту? (исследование Balancer'а почему языкам необходимы ограничения)







Aleksey Elin # 23. March 2007, 22:20
Конечно, далеко не каждый язык позволяет расширять возможности собственного компилятора (особенно так легко как ФОРТ), но все чаще и чаще это становится возможным (.NET, BlackBox...).
И тут встает вопрос: СТОИТ ЛИ РАДИ Р_А_С_Ш_И_Р_Я_Е_М_О_С_Т_И ЖЕРТВОВАТЬ ТИПИЗАЦИЕЙ
Azamadt Smaguloff # 24. March 2007, 08:02
По поводу вопроса о оправданности уничтожения понятия "типизация": тут разные личные мнения. В "Не пущать! vs Хай будэ" я выразил своё личное мнение, что введение ограничений (типизация и т.д.) порождает и необходимость обхода их, и снежным комом порождает новые ограничения. Всё это надо специфицировать (разработчикам стандартов), реализовывать (писателям трансляторам), учить (рядовым программистам).
Впрочем я вполне понимаю, что моё мнение может показаться оторванным от реальности, или несколько экстремистским.