Los lenguajes de programación vienen en muchos colores y sabores. Los hay funcionales, imperativos, de propósito específico, de propósito general, interpretados, compilados, etcétera. Uno de los más interesantes es Forth, el cual es -de acuerdo a la Wikipedia- un lenguaje estructurado, imperativo, basado en el uso del stack. Este lenguaje funciona creando “palabras”, que son la secuencia de instrucciones que se ejecutan en el intérprete. En general Forth viene a manera de intérprete porque por una parte, es mucho más fácil de programar así. Por otra parte, lo hace en muchos sentidos más práctico porque puede ponerse en diferentes plataformas. Simplemente hay que escribir el intérprete y no pensar en escribir un compilador para cada plataforma existente.
En este caso, hallamos una implementación de Forth escrita en el lenguaje Java. El propio autor nos aclara que no es un Forth ANS, es decir, totalmente estándar con la definición del mismo, pero que muchas de las palabras que usa el lenguaje pueden definirse fácilmente en esta implementación.
Debido a que LeoForth, como se llama esta implementación, está escrita en Java, puede portarse fácilmente para usarse en los dispositivos Android. De hecho, ya se consigue en la tienda de apps de Google Play. Leonardo Cecchi es su autor y hasta ahora tiene en la tienda entre 1000 y 5000 descargas. Nada asombroso si consideramos apps populares como Facebook, pero estos esfuerzos por promover un lenguaje muy simple y claro en su ejecución, poco a poco va ganando algunos espacios.
De acuerdo al autor, esta implementación tiene sus peculiaridades:
- Está compilado en una serie de primitivas que se guardan en una “memoria virtual de Forth”
- El stack está compuesto por objetos de Java
- Las cadenas se representan como cadenas en Java, por lo que no se necesitan dos parámetros para pasar las cadenas al stack (dirección y longitud)
- Tiene un sistema interno de ayuda
- Puede manejar vocabularios múltiples
- Se pueden crear instancias de objetos de Java
- Se pueden invocar métodos de los objetos de Java
- Se pueden acceder a todas las clases y bibliotecas de Java
- Tiene un ambiente de desarrollo simple, con un editor de código y un shell de Forth
- Se puede usar LeoForth como un lenguaje de scripts interno, embebido en Android
Probablemente vale la pena intentar usar Forth para conocer más sus virtudes. No es el lenguaje universal y quizás sea muy útil o interesante para cierto tipo de aplicaciones. Sin embargo, su filosofía sobre el manejo del stack lo hace considerablemente diferente a muchos lenguajes en donde el programador simplemente no puede controlar el stack del sistema. Échele un ojo. Verá que no es difícil de programar.
Referencias:
LeoForth
LeoForth (código fuente)
LeoForth (binarios)
Google Play