Какую реализацию Forth я должен использовать для изучения Forth?

Я хочу начать учиться, Forth (как в связанном вопросе о Переполнении стека это практичный, чтобы изучить и использовать Forth?). Я вижу, что существует много реализаций. Я хотел бы использовать a

  • Совместимая версия ANS 1994 (если разумный, но придерживание стандарта могло бы быть хорошим),
  • маленькая и компактная реализация, я не хочу полную ОС.
  • Windows
  • простой в использовании, я плохо знаком с Forth ;-)

Какая конкретная реализация может быть рекомендована?

19
задан Peter Mortensen 20 January 2019 в 01:12
поделиться

4 ответа

Win32Forth - это действительно фантастика, как упоминалось выше. Он имеет хорошую интегрированную среду разработки и является довольно современной реализацией, которая, кажется, очень хорошо соответствует стандартам, а также включает некоторые более экспериментальные, но широко принятые функции.

Я использую Gforth, но я также использую Vim для редактирования исходных файлов. :) Gforth хорош и "классичен" в том, что касается поддерживаемых им функций. Он дает вам очень "старый школьный" опыт работы с Фортом, не будучи слишком причудливым в использовании. (Некоторые бесплатные Форты делают странные вещи со своими командными строками и тому подобное - я использую "Starting Forth" Броуди как модель того, как должен вести себя интерпретатор Форта.)

Я посмотрел на SwiftForth, который является очень хорошей "высокотехнологичной" системой Форта, которая выходит далеко за рамки того, что предлагают классические Форты в плане возможностей языка и действительно вводит Форт в современный мир программирования. Если вы хотите профессионально заниматься программированием на языке Forth, SwiftForth выглядит так, как будто он может справиться практически со всем, что вы захотите с ним сделать.

13
ответ дан 30 November 2019 в 04:07
поделиться

Некоторое время назад я оценил 4tH, реализацию Forth. Я думаю, что она отвечает всем вашим требованиям. Например, компилятор занимает всего 61 КБ. Также имеется полная поддержка чисел с плавающей запятой, что важно, если вы хотите попытаться использовать его для технических/научных целей.

4tH работает на большинстве операционных систем, включая MS-DOS, MS-Windows (как 16 бит, так и 32 бит), Linux, Coherent, AIX, SunOS, BOS, BSD, Mac OS X, BeOS, RISC OS и т.д. Скачать (установщик для Windows, 1,5 МБ, включает руководство). Руководство (PDF, 1,1 МБ).

Существует активное сообщество, сосредоточенное вокруг группы Google 4tH-compiler. Например, сегодня я получил два сообщения.

Обратите внимание, что в 4tH вы не можете определять свои собственные определяющие слова (слова, выполняющиеся во время компиляции). Это не является серьезным ограничение, если только вы не хотите использовать расширенные возможности Форта.


Чтобы начать работу (поскольку это не очень понятно из руководства или интерактивной компиляции), после установки скопируйте компилятор, 4th.exe, в пустую папку, создайте в этой папке два файла, HelloWorld.bat и HelloWorld.4 th, and run HelloWorld.bat:

HelloWorld.bat:

    4th.exe cx HelloWorld.4th
    pause

HelloWorld.4th:

   : hello ." Hello from XYZ!" cr cr ;
   hello
8
ответ дан 30 November 2019 в 04:07
поделиться

Win32Forth у меня работал хорошо.

1
ответ дан 30 November 2019 в 04:07
поделиться

SwiftForth . Он не самоуверенно маленький и компактный; это просто так. Он прост в использовании (LOCATE WH EDIT, более приятный, чем обычные слова), поставляется с двумя книгами и имеет отличный список рассылки с более чем десятилетними архивами. Пробная версия не позволит вам компилировать приложения или библиотеки DLL под ключ; он по-прежнему представляет собой отличную консоль для учащихся и может поддерживать сценарии обычными способами. Примеры быстрых Windows:

: sleep-monitor ( -- )
  HWND_BROADCAST WM_SYSCOMMAND SC_MONITORPOWER 2 SendMessage drop ;


library dnsapi.dll
( ... DLL imports, constants ... )
variable results
: DnsQuery ( z -- res )
  DNS_TYPE_A 0 NULL results NULL DnsQuery_UTF8 ;

: resolves? ( z -- f )
  DnsQuery if false exit then
  results @ DnsRecordListFree true ;


\ an example use of the dialog compiler
\ this compiled DSL is an example of something that 4th
\ precludes with its "not ... serious limitation"
DIALOG (HELLO-ABOUT)
[MODELESS " About Hello" 10 10 120 70
   (FONT 8, MS Sans Serif) ]
\  [class           text                        id   x   y   sx xy ]

   [CTEXT           " HELLO"                    -1  10  10  100 10 ]
   [CTEXT           " (C) 1997 Forth, Inc."     -1  10  25  100 10 ]
   [CTEXT           " http://www.forth.com"     -1  10  35  100 10 ]
   [DEFPUSHBUTTON   " OK"                     IDOK  35  50   50 14 ]
END-DIALOG
2
ответ дан 30 November 2019 в 04:07
поделиться