Forth
Материал из Lurkmore
Содержание |
: слово
( любой набор символов, ограниченный разделителями) ;
: программирование
- очень простое внутреннее устройство языка позволяет написать минимальную форт-машину за предельно короткие сроки (в том числе и прямо на голом железе) . Это первое, что делает начинающий фортер, поэтому в форте так много разных реализаций форта .
- отсутствие типизации (хотя есть StrongForth, в нём статическая типизация) . Нет никаких способов узнать, что за тип данных находится на вершине стека: число, беззнаковое число или указатель на строку . Строк, кстати, тоже нет . Второе, что пишет начинающий фортер — это свою реализацию строковых переменных, поэтому в форте так много разных реализаций строк . Заодно нафортер думает о написании механизма типизации, но размышлениями дело обычно и ограничивается . Поэтому типизации в форте нет и не предвидится . (Зато тот, кто думает долго, получает и типизацию, и всё остальное, hint: Factor)
- поддержка ООП отсутствует, но написание библиотеки ООП — третье, что делает начинающий фортер . Поэтому в форте так много разных реализаций ООП .
- стеки и обратная польская нотация — в общем случае начинающий фортер думает также и о том, чтобы сделать в форте всё как у людей . Но через некоторое время начинает уже у людей всё делать как в форте .
- ." программирование на ошибках" — ошибки в коде, как правило, сразу же обрушивают программу . Наиболее простые определения слов позволяют написать для них точные тесты и получить многократное использование кода .
- если программист, начав осваивать программирование с форта и освоив его, попытается перейти на другой язык программирования, его несказанно удивит загадочность компиляторов/интерпретаторов любого языка . Признак компилятора форта — прозрачная форт-машина . Декомпилятор форт-ядра (core) обычно пишется за час, при начальных навыках и внимании . Эксперименты с ядром при внимательном подходе, как правило, удачны .
- суть языка сначала — ." Некогда изучать, нужно программировать", потом — или приходит опыт, или программист отказывается от использования данного языка ;
: язык
- изобретён в 1971 году Чарльзом Муром (работы над языком велись в 1960-х годах) для управления телескопом
- принадлежит к четвёртому поколению (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 скобка — это базовый эзотерический символ, а в прочих языках соблюдается некий баланс, то в Форте вся эзотерика строится на отсутствии скобок в записи выражений . Мегаследствие: все различия глобальных концептов в программировании определяются числом скобок в языке ! А не всякими там ООП , замыканиями и прочими коротящими мозги штуками .
- Для тех, кто не понял два вышеидущих пункта — Форт это просто такой низкоуровневый Лисп задом наперёд и без скобок ; Но! Правильный asm!
[править] : FORTH[1]
слово из чуть_более_чем состоит программирование язык — ;[2]
: сноски
- ↑ здесь мы, естественно, получим «warning: redefine word», что, впрочем, не мешает переопределить всё что угодно . Над «#define TRUE FALSE» фортеры не смеются .
- ↑ Это — не «иллюстрация», а корректная программа на форте . Учтите (!) что «программа» (вернее, слово) начинается с двоеточия в заголовке :)
[ + ] Любой программист без словаря поймёт, что такое Forth
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|