Персональные инструменты
Счётчики
В других энциклопедиях

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. Это - не «иллюстрация» , а корректная программа на форте . Учтите (!) что «программа» ( вернее , слово ) начинается с двоеточия в заголовке :)
 ;