Forth

Материал из Lurkmore

Перейти к: навигация, поиск
Forth.png

Содержание

 : слово

( любой набор символов, ограниченный разделителями) ;

 : программирование

  • очень простое внутреннее устройство языка позволяет написать минимальную форт-машину за предельно короткие сроки (в том числе и прямо на голом железе) . Это первое, что делает начинающий фортер, поэтому в форте так много разных реализаций форта .
  • отсутствие типизации (хотя есть StrongForth, в нём статическая типизация) . Нет никаких способов узнать, что за тип данных находится на вершине стека: число, беззнаковое число или указатель на строку . Строк, кстати, тоже нет . Второе, что пишет начинающий фортер — это свою реализацию строковых переменных, поэтому в форте так много разных реализаций строк . Заодно нафортер думает о написании механизма типизации, но размышлениями дело обычно и ограничивается . Поэтому типизации в форте нет и не предвидится . (Зато тот, кто думает долго, получает и типизацию, и всё остальное, hint: Factor)
  • поддержка ООП отсутствует, но написание библиотеки ООП — третье, что делает начинающий фортер . Поэтому в форте так много разных реализаций ООП .
  • стеки и обратная польская нотация — в общем случае начинающий фортер думает также и о том, чтобы сделать в форте всё как у людей . Но через некоторое время начинает уже у людей всё делать как в форте .
  • ." программирование на ошибках" — ошибки в коде, как правило, сразу же обрушивают программу . Наиболее простые определения слов позволяют написать для них точные тесты и получить многократное использование кода .
  • если программист, начав осваивать программирование с форта и освоив его, попытается перейти на другой язык программирования, его несказанно удивит загадочность компиляторов/интерпретаторов любого языка . Признак компилятора форта — прозрачная форт-машина . Декомпилятор форт-ядра (core) обычно пишется за час, при начальных навыках и внимании . Эксперименты с ядром при внимательном подходе, как правило, удачны .
  • суть языка сначала — ." Некогда изучать, нужно программировать", потом — или приходит опыт, или программист отказывается от использования данного языка ;

 : язык

  • изобретён в 1971 году Чарльзом Муром (работы над языком велись в 1960-х годах) для управления телескопом
  • принадлежит к четвёртому поколению (fourth — четвёртый)
  • также является самым продвинутым языком (forth — вперёд)
  • совмещает свойства интерпретатора и компилятора
  • работает на наибольшем количестве аппаратных платформ
  • диалекты форта можно обнаружить в совершенно неожиданных местах: в загрузчике FreeBSD , в лазерном принтере, в биосе спарки, в глубоководных и космических аппаратах, в фирмваре PowerPC-шных маков , Bashorgrufavicon.pngдавным-давно в далёкой-далёкой галактике .
  • стандарт языка 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]

 : сноски

  1. здесь мы, естественно, получим «warning: redefine word», что, впрочем, не мешает переопределить всё что угодно . Над «#define TRUE FALSE» фортеры не смеются .
  2. Это — не «иллюстрация», а корректная программа на форте . Учтите (!) что «программа» (вернее, слово) начинается с двоеточия в заголовке :)
 ;


Источник — «http://lurkmore.to/Forth»