Forth
: слово
( любой набор символов, ограниченный разделителями ) ;
: программирование
- очень простое внутреннее устройство языка позволяет написать минимальную форт-машину за предельно короткие сроки ( в том числе и прямо на голом железе ) . Это первое , что делает начинающий фортер , поэтому так много разных реализаций форта .
- отсутствие типизации ( хотя есть StrongForth , в нём статическая типизация ) . Нет никаких способов узнать , что за тип данных находится на вершине стека: число , беззнаковое число или указатель на строку . Строк , кстати , тоже нет . Второе , что пишет начинающий фортер - это свою реализацию строковых переменных , поэтому в форте так много разных реализаций строк . Заодно нафортер думает о написании механизма типизации , но размышлениями дело обычно и ограничивается . Поэтому типизации в форте нет и не предвидится . ( Зато тот , кто думает долго , получает и типизацию , и всё остальное , hint: Factor )
- поддержка ООП отсутствует , но написание библиотеки ООП - третье , что делает начинающий фортер . Поэтому в форте так много разных реализаций ООП .
- стеки и обратная польская нотация - в общем случае начинающий фортер думает также и о том , чтобы сделать в форте всё как у людей . Но через некоторое время начинает уже у людей всё делать как в форте .
- ." программирование на ошибках" - ошибки в коде , как правило , сразу же обрушивают программу ( или всю систему ) . Наиболее простые определения слов позволяют написать для них точные тесты и получить многократное использование кода .
- если программист , начав осваивать программирование с форта и освоив его , попытается перейти на другой язык программирования , его несказанно удивит загадочность компиляторов/интерпретаторов любого языка . Признак компилятора форта - прозрачная форт-машина . Декомпилятор форт-ядра (core) обычно пишется за час , при начальных навыках и внимании . Эксперименты с ядром при внимательном подходе , как правило , удачны .
- суть языка сначала - ." Некогда изучать, нужно программировать" , потом - или приходит опыт , или программист отказывается от использования данного языка ;
: язык
- изобретён в 1971 году Чарльзом Муром ( работы над языком велись в 1960-х годах ) для управления телескопом, или Эдсгером Дейкстрой в 1962 ради лулзов
- принадлежит к четвёртому поколению ( fourth - четвёртый )
- также является самым продвинутым языком ( forth - вперёд )
- совмещает свойства интерпретатора и компилятора
- работает на наибольшем количестве аппаратных платформ
- диалекты форта можно обнаружить в совершенно неожиданных местах: в загрузчике FreeBSD , в лазерном принтере , в биосе спарки , в глубоководных и космических аппаратах , в фирмваре PowerPC-шных маков ,
давным-давно в далёкой-далёкой галактике . - стандарт языка ANSI в ASCII занимает больше места , чем бинарный код реализации форта
- грамматика языка в БНФ описывается одной строчкой
- Фраза ." Йоды джедаев магистра речи тайна раскрыта - на Форте просто старый программер он есть" очень хорошо иллюстрирует разницу между синтаксисом языка Форт и синтаксисом других языков . Математикам , наверное, будет нагляднее разница в записи выражений в Си: «a = 1*(2+3)-4*5» и на Форте: « 1 2 3 + * 4 5 * - a ! »
- Обратная польская запись выражений ( она «постфиксная» ) хорошо прочищает мозг на тему глобальных отличий языков программирования: с одной стороны вершины семейства LISPов с префиксной нотацией «(divide 6 (plus 1 2))» , с другой - вершина форта с его постфиксной записью выражений « 6 2 1 + / » , а посерединке - все прочие тысячи языков в инфиксной нотации «6/(1+2)» . Замечено , что редкий программер добирается до обеих противостоящих вершин ( LISP или Forth ) , или хотя бы до одной из них; большинство предпочитают оставаться в уютном болотце языков с более традиционной записью выражений . Так мозгу спокойнее .
- Итого , если в LISP скобка - это базовый эзотерический символ , а в прочих языках соблюдается некий баланс , то в Форте вся эзотерика строится на отсутствии скобок в записи выражений . Мегаследствие: все различия глобальных концептов в программировании определяются числом скобок в языке ! А не всякими там ООП , замыканиями и прочими коротящими мозги штуками .
- Для тех, кто не понял два вышеидущих пункта - Форт это просто такой низкоуровневый Лисп задом наперёд и без скобок ;
- Благодаря аморфности среды Форт системы Форт не имеет объективных недостатков .
В принципе , любые недостатки устранимы . Причем самим пользователем Форт системы . Проблема заключается в отсутствии стимула заботиться о фортерах ( вне собственной фирмы ) . В связи с открытой архитектурой Форта нереально поставить фортеров в зависимость от разработчиков инструментальных средств Форта . Фортерам трудно найти консенсус между собой и заставить друг друга следовать стандартам. Организационную часть развития Форта может взять на себя рынок , если будет простой способ продажи дешевых файлов . Экономический стимул побудит фортеров заботиться друг о друге и следовать стандарту де-факто .
: FORTH[1]
слово из чуть_более_чем состоит программирование язык - ;[2]
: сноски
- ↑ здесь мы, естественно, получим «warning: redefine word», что, впрочем, не мешает переопределить всё что угодно . Над «#define TRUE FALSE» фортеры не смеются .
- ↑ Это - не «иллюстрация» , а корректная программа на форте . Учтите (!) что «программа» ( вернее , слово ) начинается с двоеточия в заголовке :)
;
w:Forth (язык программирования) en.w:Forth (programming language)