Forth es popular entre algunos programadores por una variedad de razones, algunas de las cuales son las siguientes:
- No hay verificación de tipo (por lo tanto, no hay declaraciones de tipo o conversiones forzadas con las que lidiar) que se interponga en su camino. Si desea sacar la raíz cuadrada o el coseno de una dirección, Forth no se interpondrá en su camino.
- Forth es altamente interactivo. Pasar parámetros y recibir resultados de las funciones de Forth es fácil. Por lo tanto, probar cada función recién definida es fácil.
- El flujo del programa ocurre en la pila, como con una calculadora HP RPN. Por lo tanto, los parámetros en una función están fácilmente disponibles en la consola en todo momento, no ocultos.
- Una vez que te acostumbras a la pila, Forth realmente no es diferente de otros lenguajes de programación. Todos los componentes básicos para escribir programas están ahí: bucles, sentencias condicionales if-else-then, etc.
- La cuarta sintaxis es concisa y de forma libre, lo que permite al programador la máxima facilidad y flexibilidad al escribir programas.
- Forth está inherentemente estructurado. No hay declaraciones de goto ni números de línea.
- Otros han mencionado las razones por las cuales Forth también puede ser popular para aplicaciones integradas donde el tamaño del código, el consumo de energía, etc. son importantes.
Ahora no sé si lo anterior significa que Forth es el mejor lenguaje de programación para escribir algoritmos (7. no lo es). Espero que sea una decisión de juicio para cada programador.
De Wikipedia: Algoritmo
La solución de ejemplo dada en Básico para el algoritmo divisor común más grande de Euclides:
10 ENTRADA A, B
20 SI B = 0 ENTONCES GOTO 80
30 SI A> B LUEGO VAYA 60
40 LET B = BA
50 GOTO 20
60 DEJA A = AB
70 GOTO 20
80 IMPRIMIR A
90 FIN
El programa equivalente escrito en Forth:
: mcd {ab -}
empezar
b 0>
mientras
ab> if ab – a un
más ba – a b
luego
repetir a. ;
Prueba: 3009884 gcd 17
Usando la consola Forth, los parámetros de entrada se pasan implícitamente en la pila a la función gcd y el resultado se imprime en la consola allí mismo (. O “punto” es el comando de impresión de Forth). Este ejemplo de la solución Forth utiliza parámetros locales con nombre que algunos objetan pero que encuentro útil especialmente para desarrollar una nueva función.
El programa es un bucle definido por comenzar … mientras … repetir. El while mira el resultado de b> 0 (o b 0> en RPN) y continúa la ejecución al if condicional mientras el resultado es verdadero. Cuando se alcanza la repetición, el programa regresa para comenzar. O mientras salta a repetición pasada cuando la condición no es verdadera y, por lo tanto, finaliza el programa.
Recuerde que Forth es de forma libre y los saltos de línea, sangría y mayúsculas utilizados fueron arbitrarios y reflejan mi estilo personal. Podría haber colocado todo el programa en una línea. El único requisito de sintaxis para Forth es que se use un espacio (s) entre tokens.
Si lo desea, puede reescribirse sin locales, manteniendo la misma lógica y flujo de programa, y el código compilado será más pequeño y podría ejecutarse un poco más rápido. No me molestaré en mostrar eso aquí.
Tenga en cuenta que muchos escribirían esta solución utilizando la división de módulo, lo que hace que la solución sea bastante corta y simple. Por supuesto, esto también se puede hacer en Forth.