Форт

Форт - это ЯзыкПрограммирования такой. СамыйЛучший :) :)

  • (1001) Главная особенность Форта в том, что он позволяет каждому создавать свои собственные правила программирования, чтобы было легче писать программы.
    Правда, многие оказываются настолько захвачены этой возможностью, что перестают собственно программировать. Все время создают новые и улучшают старые правила.
    Широко известная (в узких кругах)беда фортеров- написание собственных Фортов, ООП-ов и других подобных вещей. Как правило, собственные правила отличаются от известных некоторой неполнотой и ущербностью.
    Потому существует стандарт ANS Forth...
  • (micro) С другой стороны - Форт прдназначен для того, чтобы менять эти самые правила, и не использовать эту возможность - это значит не использовать всех возможностей Форта. Но изменения эти должны быть просты и очевидны в работе. Например как слово -- :)
  • (ac) Да, некоторые используют Форт как игрушку. Но есть и РеальныеПрименения :)
  • (mak) Форт перекрывает понятие языка программирования. Программа на Форте может превратить саму Форт-систему в любую программу, в том числе в транслятор/интерпретатор любого языка. При этом, могут остваться доступны ресурсы базовой Форт-системы.

УчебникиФорта, стандарт и прочая литература.

ИзобретательФорта

ТрансляторыФорта (ac) У меня уже есть несколько страничек с линками на разные трансляторы Форта, есть также масса других сайтов, пытающихся собирать коллекции трансляторов Форта, но, imho, дело это неблагодарное - линки устаревают, трансляторы тем более. И перебирать их всех фортерам долго и бесполезно. Интересно иметь список реально используемых и развиваемых фортов с разбивкой по видам OS. Чтобы ищущий не метался зря :)

Исходный текст интерпретатора форта (на примере SPF):

(удачно сложились имена нестандартных слов, которые я применил в коде - словно специально для Wiki, сами становятся линками :)

 : INTERPRET ( -> ) \ интерпретировать входной поток
   BEGIN
     NextWord DUP
   WHILE
     SFIND ?DUP
     IF
          STATE @ =
          IF COMPILE, ELSE EXECUTE THEN
     ELSE
          S" NOTFOUND" SFIND
          IF EXECUTE
          ELSE 2DROP ?SLITERAL THEN
     THEN
     ?STACK
   REPEAT 2DROP
 ;
Valid XHTML 1.0! Valid CSS!
Page Execution took real: 1.484 seconds