ide - preguntas - tag questions estructura
¿Qué implementación de Forth usar para aprender Forth? (7)
Descarga Gforth para PC y Android.
Tinker con él usándolo como una calculadora, resolviendo problemas simples, Fibonacci, resolviendo el abc cuadrático, etc.
Quiero comenzar a aprender Forth (como en la pregunta relacionada sobre el desbordamiento de pila ¿Es práctico aprender y usar Forth? ). Veo que hay muchas implementaciones . Me gustaría usar un
- Versión compatible con ANS 1994 (si es razonable, pero cumplir con el estándar podría ser bueno)
- Implementación pequeña y compacta, no quiero un SO completo.
- Windows
- Fácil de usar, soy nuevo en Forth ;-)
¿Qué implementación particular puede ser recomendada?
Hace algún tiempo evalué 4tH , una implementación de Forth . Creo que cumple con todos sus requisitos. Por ejemplo, el compilador es de sólo 61 KB. También hay soporte completo para números de punto flotante, importante si desea intentar usarlo con fines técnicos / científicos.
4tH se ejecuta en la mayoría de los sistemas operativos, incluidos MS-DOS, MS-Windows (tanto de 16 bits como de 32 bits), Linux, Coherent , AIX , SunOS , BOS , BSD, Mac OS X, BeOS , RISC OS , etc. Download (Windows Instalador, 1.5 MB, incluye el manual). Manual (PDF, 1.1 MB).
Hay una comunidad activa centrada en el 4tH-compiler Google Group. Por ejemplo hoy recibí dos mensajes.
Tenga en cuenta que en 4tH no puede definir sus propias palabras de definición (palabras que se ejecutan en tiempo de compilación). Esto no es una limitación seria, a menos que quiera cubrir las funciones avanzadas de Forth.
Para comenzar (ya que esto no está muy claro en el manual o en la compilación interactiva), después de la instalación, copie el compilador, 4th.exe
, en una carpeta vacía, 4th.exe
dos archivos en este directorio, HelloWorld.bat
y HelloWorld.4th
. y ejecute HelloWorld.bat:
HelloWorld.bat:
4th.exe cx HelloWorld.4th
pause
HelloWorld.4th:
: hello ." Hello from XYZ!" cr cr ;
hello
Me doy cuenta de que es posible que no cumplan con todos sus requisitos, pero los siguientes lenguajes de Forth-like también podrían interesarle desde una perspectiva de aprendizaje.
Además, he encontrado que el blog Re-Factor es una buena introducción a Factor.
Si puede encontrar una copia del antiguo polyFORTH de FORTH Inc, y un x86 antiguo que puede ejecutarse, este es el lenguaje utilizado en el "Starting FORTH" original de Leo Brodie. Es un FORTH limpio y muy robusto.
SwiftForth . No es conscientemente pequeño y compacto; Simplemente sucede que es. Es fácil de usar (LOCATE WH EDIT, una palabra más agradable de lo normal), viene con dos libros y tiene una excelente lista de correo con más de una década de archivos. La versión de evaluación no le permitirá compilar aplicaciones llave en mano o DLL; Todavía proporciona una excelente consola para un estudiante y puede admitir scripts de la manera habitual. Ejemplos rápidos de 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
Win32Forth es realmente fantástico, como se mencionó anteriormente. Tiene un buen entorno de desarrollo integrado y es una implementación bastante moderna que parece encajar muy bien con los estándares, además de incluir algunas características más experimentales pero ampliamente aceptadas.
Utilizo Gforth , pero también uso Vim para editar archivos de origen. :) Gforth es bueno y "clásico" en cuanto a las características que soporta. Te da una experiencia de Forth muy "de la vieja escuela" sin ser demasiado extravagante de usar. (Algunos Forths libres hacen cosas extrañas con sus líneas de comando y, por ejemplo, uso el "Starting Forth" de Brodie como modelo de cómo debe comportarse un intérprete de Forth).
Miré SwiftForth , que es un muy buen sistema Forth de "alta tecnología" que va mucho más allá de lo que ofrece el clásico Forths en términos de características de lenguaje y realmente lleva a Forth al mundo de la programación moderna. Si realmente quieres hacer programas Forth profesionalmente, SwiftForth parece que puede manejar casi cualquier cosa que quieras hacer con él.
Win32Forth funcionó bien para mí.