Hablando Forth... a pesar de los redactores de las enciclopedias

Descripción del contenido de la página

Comentario sobre una mención al lenguaje Forth encontrada en la enciclopedia Mi computer.

Etiquetas:

A mediados de los 1980, aún no era infrecuente que se citase al Forth en igualdad de condiciones con otros lenguajes de programación. Pero raramente se hacía con equidad y, menos todavía, con suficientemente conocimiento.

Un perjuicio añadido era que cuando los redactores de las publicaciones reproducían código en Forth no respetaban su sintaxis. La sintaxis de Forth es la más sencilla de todos los lenguajes de programación: el único carácter especial es el espacio, que sirve para separar las palabras; no hay más. Pues, ignorantes de ello, los redactores copiaban los programas en Forth quitando y poniendo espacios a su antojo, como si se tratara de un texto en su lengua materna. Por ejemplo, juntaban la palabra . (que sirve para imprimir el número superior de la pila de datos) a lo que la precedía, y quitaban alegremente los espacios alrededor de las comillas. Desde 1984 hasta la fecha he visto todo tipo de barbaridades de esas en revistas, enciclopedias y libros. El código en Forth que se reproduce correctamente en una publicación lo debe a haber sido transcrito y revisado por un conocedor del lenguaje.

Recientemente he encontrado un ejemplo más, mal escrito. Está en el volumen 2, página 344, de la excelente enciclopedia Mi computer. El artículo se titula Hablando idiomas y ofrece unas muestras de código en varios lenguajes de programación, y una breve explicación de ellos: BASIC, Pascal, COMAL, LISP, Forth y Logo.

Artículo original

Estas imágenes muestran las páginas originales del artículo:

Primera página: (482.43 KiB) Segunda página: (393.02 KiB)

Las imágenes proceden del proyecto de digitalización de Mi computer iniciado por David Novo Iglesias.

A continuación reproduzco el contenido de la sección del artículo que trata sobre Forth, con el código fuente de ejemplo corregido:

El FORTH se parece al LOGO en cuanto que es un lenguaje funcional interactivo, con la importante diferencia de haber sido el primer lenguaje, aparte del BASIC, que se incorporó a un ordenador personal, el Jupiter Ace. El lenguaje consta de varias funciones predefinidas, denominadas "primitivas", y posee la capacidad de definir funciones nuevas desde el punto de vista de éstas. En FORTH las operaciones matemáticas son "orientadas en pila", lo que significa que a la memoria del ordenador se la trata como una lista de datos que se expande y se contrae, lo que da como resultado que la última operación siempre esté al comienzo de la lista. Otra consecuencia de la "orientación en pila" es que no se utiliza la notación algebraica. En vez de escribir (12 + 4)/2 para hallar la media de 12 y 4, en FORTH usted debería escribir 12 4 + 2 /, que es la misma suma que antes expresamos en notación algebraica, expresada ahora en notación polaca invertida.

Todo esto hace que el FORTH sea un tipo de lenguaje muy diferente, que obliga a aplicar un criterio muy distinto para solucionar los problemas y para efectuar los procesos informáticos. En la jerarquía de los lenguajes de alto nivel, se encuentra casi un paso más abajo. Este fragmento en FORTH define dos palabras nuevas denominadas SHOUT y CHORUS:

: SHOUT ( imprime "SHAZAM!")
  ." SHAZAM!" ;
: CHORUS ( utiliza SHOUT en un bucle)
  0 DO SHOUT LOOP ;

Ahora digitar n CHORUS hará que SHAZAM! se imprima n veces en la pantalla.

En este caso el redactor no se limitó a corromper el código en Forth, sino que escribió perlas sorprendentes: denominar «funciones» a las palabras; decir, para explicar una simple pila, que la memoria (¡toda!) se trata como una lista de datos (cuando una pila y una lista son estructuras de datos opuestas); concluir que la última operación está al comienzo de la lista; usar la palabra «suma» en lugar de operación para referirse al ejemplo aritmético.

Una descripción tan confusa no le hace ningún favor al lenguaje.

Alternativa

Este es mi texto alternativo. Quien conoce bien el lenguaje no puede evitar citar algunas de sus cualidades:

Forth es un lenguaje interactivo que posee las cualidades tanto de un compilador como de un intérprete. Ha sido incorporado como lenguaje nativo en varias computadoras personales, como la Jupiter Ace. El lenguaje consta de palabras, equivalentes a las funciones de otros lenguajes, y su sintaxis es extremadamente sencilla: el sistema ejecuta las palabras en el orden en que las recibe, tras buscarlas en su diccionario, y el signo de espacio sirve para separarlas. Esta simplicidad hace que los sistemas Forth sean muy compactos y eficientes, y puedan ser entendidos y escritos por una sola persona, algo impensable en otros lenguajes. Las palabras originales del sistema se denominan primitivas. Utilizando estas palabras primitivas el programador define otras nuevas que tienen la misma categoría que ellas. El programador de Forth puede así reescribir el propio lenguaje, sin ninguna limitación, para adaptarlo a sus necesidades, incluso a nivel de compilador y de sintaxis. En Forth se usa una pila de datos para mantener los parámetros que reciben las palabras y devolver sus resultados. Esto implica que las operaciones matemáticas se realizan con notación polaca inversa, más eficaz que la tradicional porque elimina el problema de la prioridad entre los operadores y hace innecesario agrupar las operaciones. Por ejemplo, la operación (12 + 4)/2 en Forth se escribiría 12 4 + 2 /. Se considera que el Forth es, de entre los lenguajes de alto nivel, uno de los de menor nivel, por su cercanía al funcionamiento interno de la máquina. A pesar de eso, permite escribir programas muy estructurados, fáciles de depurar y de reutilizar.

Todas estas características hacen de Forth un lenguaje muy diferente, que obliga a aplicar criterios poco habituales para solucionar los problemas. La recompensa son las soluciones más sencillas, compactas y rápidas que permite obtener.