Forth
Материал из Lurkmore
Содержание |
[править] : слово
( любой набор символов, ограниченный разделителями ) ;
[править] : программирование
- очень простое внутреннее устройство языка позволяет написать минимальную форт-машину за предельно короткие сроки ( в том числе и прямо на голом железе ) . Это первое , что делает начинающий фортер , поэтому в форте так много разных реализаций форта .
- отсутствие типизации ( хотя есть StrongForth , в нём статическая типизация ) . Нет никаких способов узнать , что за тип данных находится на вершине стека: число , беззнаковое число или указатель на строку . Строк , кстати , тоже нет . Второе , что пишет начинающий фортер — это свою реализацию строковых переменных , поэтому в форте так много разных реализаций строк . Заодно начинающий фортер думает о написании механизма типизации , но только думает . Недолго . Поэтому типизации в форте нет и не предвидится .
- поддержка ООП отсутствует , но написание библиотеки ООП — третье , что делает начинающий фортер . Поэтому в форте так много разных реализаций ООП .
- стеки и обратная польская нотация — в общем случае начинающий фортер думает также и о том , чтобы сделать в форте всё как у людей . Но через некоторое время начинает уже у людей всё делать как в форте .
- ." программирование на ошибках" — ошибки в коде , как правило , сразу же обрушивают программу . Наиболее простые определения слов позволяют написать для них точные тесты и получить многократное использование кода .
- если программист , начав осваивать программирование с форта и освоив его , попытается перейти на другой язык программирования , его несказанно удивит загадочность компиляторов/интерпретаторов любого языка . Признак компилятора форта - прозрачная форт-машина . Декомпилятор форт-ядра (core) обычно пишется за час , при начальных навыках и внимании . Эксперименты с ядром при внимательном подходе , как правило , удачны .
- суть языка сначала — ." Некогда изучать, нужно программировать" , потом — или приходит опыт , или программист отказывается от использования данного языка ;
[править] : язык
- изобретён в 1971 году Чарльзом Муром ( работы над языком велись в 1960-х годах ) для управления телескопом
- является языком четвёртого поколения ( fourth — четвёртый )
- также является самым продвинутым языком ( forth — вперёд )
- является интерпретатором и компилятором одновременно
- работает на наибольшем количестве аппаратных платформ
- диалекты форта можно обнаружить в совершенно неожиданных местах: в загрузчике FreeBSD , в лазерном принтере , в биосе спарки , в глубоководных и космических аппаратах , в давным-давно далёкой-далёкой галактике .
- стандарт языка 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» фортеры не смеются.
- ↑ Это - не «иллюстрация», а корректная программа на форте
[ + ] Любой программист без словаря поймёт, что такое Forth
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|