El primer lenguaje de programación de alto nivel data de la 2ª Guerra Mundial, pero no compiló ni una línea de código hasta los 70

La Z4 fue la primera computadora comercial de la historia. Su creador, el ingeniero civil alemán Konrad Zuse, llevaba desde 1938 diseñando computadoras (de ese año data la Z1), una labor que realizó de forma casi autodidacta y, hasta el fin de la Segunda Guerra Mundial (la Z4 data de 1945), al margen de la labor de otros científicos contemporáneos.

Pero hoy nos interesa especialmente la Z4, porque fue durante su fabricación cuando Zuse llegó a la conclusión de que la programación en código máquina resultaba demasiado lenta y compleja, y empezó a trabajar en una tesis doctoral que contenía una propuesta innovadora en aquel momento: Plankalkül, el primer lenguaje de programación de alto nivel (así como el primer motor de ajedrez para ordenador, a modo de software de ejemplo).

Algunos de sus otros diseños (llegaría hasta la Z34) pasaron también a la historia por derecho propio: Z22, por ejemplo, fue la primera computadora con memoria basada en almacenamiento magnético.

La idea de algo llamado 'Plankalkül' —que podría traducirse como "sistema formal de planificación"— empezó a formarse en la mente del autor durante el desarrollo de la Z3, como algo que iba más allá de la lógica formal. Más tarde, Zuse desarrolló el primer sistema formal conocido de notación de algoritmos que contemplaba la existencia de ramas y bucles.

Ante la imposibilidad de seguir avanzando en el campo del hardware durante algunos años (la ocupación aliada de Alemania en 1945 destruyó gran parte de sus creaciones y le impidió acceder a financiación), todo su esfuerzo intelectual se centró en la creación de su pionero lenguaje de programación.

Su tesis doctoral no llegaría a ver la luz en aquellos años por razones burocráticas: la Universidad de Augsburgo no la aceptó por un retraso en el pago de tasas. En 1948, Zuse publicó un extracto de la misma em forma de artículo en el Archiv der Mathematik y lo presentó en la Reunión Anual de la GAMM (Sociedad de Mecánica y Matemáticas Aplicadas de Alemania).

No recibió mucha atención, y nueve años después, en una conferencia de 1957, Zuse seguía expresando su esperanza de que Plankalkül, "después de algún tiempo como la Bella Durmiente, aún cobre vida".

Lo hizo al año siguiente… de manera indirecta: la GAMM, inspirándose en Plankalkül, unió fuerzas con la ACM (Association for Computing Machinery) para crear ALGOL 58. Uno de sus creadores Heinz Rutishauser, sin reconocer explícitamente su deuda intelectual, si reconoció el papel pionero de Zuse y Plankalkül:

"El primer intento de idear un lenguaje algorítmico fue realizado en 1948 por K. Zuse. Su notación era bastante general, pero la propuesta nunca alcanzó la consideración que merecía".

Aquí podemos ver a Zuse hablando de sus computadoras en 1958 en la TV pública del estado de Hesse:

José E. Marchesi, fundador de GNU Spain, lo describía hace unos años como "un lenguaje muy anciano y que al mismo tiempo resulta sorprendentemente actual. Personalmente, es ahora, en el siglo XXI, cuando estoy comenzando a ver lenguajes que puedan compararse con Plankalkül en riqueza expresiva y potencia denotacional". Para entenderlo, afirmaba, "el lector actual debe 'cambiar el chip'"…

Todo un "cambio de chip"

"Plankalkül […] se especificó antes de que se formalizaran los conceptos como variable o programa. Posee una belleza considerable y algo ingenua, pero leerlo puede resultar tedioso y aún complicado. Esto en parte es debido a su peculiar notación bidimensional (que es muy difícil de reproducir en ASCII) y al uso de algunos caracteres que no forman parte del ASCII de 7 bits".

"Estas características, que dificultan la escritura de programas en un ordenador, se deben a que no estaba pensado para ejecutarse en un ordenador, sino para escribir los programas a mano. En realidad, lo que Zuse quería era un modelo de notación de problemas simbólicos (no numéricos). Por estas razones, leer un programa en Plankalkül obliga a cambiar conceptos establecidos en la mente de cualquier programador actual".

La primera particularidad radica en que los únicos objetos primitivos de Plankalkül son de tipo booleano, y los objetos compuestos se construían de manera recurrente mediante arrays de dimensiones arbitrarias (ejemplo: 'm x n x S0') y tuplas.

Otras características del lenguaje radicaban en la existencia de expresiones condicionales (pero sin ELSE) y de bucles 'for' y 'while' (pero no de GOTO) o en la no-recursividad de sus funciones. Los identificadores de variables se marcaban con letras distintas según fueran de estrada (V), intermedios (Z), de salida (R) o constantes (C).

Pero lo que todos queréis saber es qué aspecto tenía el 'Hola, Mundo' en Plankalkül. No queremos dejaros con la duda:

vía @HelloWorldClctn

Una última duda

Sin duda, cuando empezaste a leer el artículo, te estarías preguntando "¿cómo pudo estar 30 años sin usarse para programar el primer lenguaje de programación de alto nivel?". Pero, a estas alturas, me atrevo a decir que tu duda será más bien "si su creador no lo creó para ejecutarse en directamente en computadoras, ¿qué cambió en la década de los 70 para que Zuse pudiera ver, finalmente, a un ordenador ejecutar el código de Plankalkül?

Zuse se animó a publicar su tesis original (descargable aquí en PDF) en 1972. A partir de dicho texto, Joachim Hohmann creó en 1975 el primer compilador para Plankalkül. E el año 2000, incluso, cuatro ingenieros de la Univ. Libre de Berlín presentaron una nueva implementación del lenguaje que contemplaba una notación lineal, no bidimensional. A partir de dicha versión de Plankalkül se han ido creando nuevos compiladores que puedes descargar de GitHub, como este, basado en Java, este basado en Ruby o este último, basado en Rust.

Ver todos los comentarios en https://www.genbeta.com

VER 0 Comentario

Portada de Genbeta