Tributo a Niklaus Wirth


Hace una semana, a la edad de 89 años, fallece en Suiza el profesor Niklaus Wirth. Conocido principalmente por la creación del lenguaje Pascal, fue realmente el padre de los lenguajes de  programación. Nunca cesó de crear en ese campo: Euler, Algol W, Pascal, Modula, Modula-2 y Oberon. Sus lenguajes exhibían principios claros de diseño: legibilidad, regularidad, seguridad, economía de formas. 

Los lenguajes de programación crean abstracciones, las cuales se basan en supuestos o axiomas: es responsabilidad de la implementación del lenguaje vigilar que cada vez que se utiliza alguna abstracción se cumple con los supuestos en los cuales se basa. Un ejemplo sencillo es la abstracción "arreglo", que permite el acceso a elementos mediante índices, y donde habrá de vigilarse que el índice esté siempre dentro del rango del arreglo. Hay abstracciones más complejas, hasta llegar, por ejemplo, al concepto de objetos y herencia o extensión de tipos. Son muchos los supuestos en que se basan estas poderosas abstracciones, y habrá de vigilarse su consistencia y conformidad con los supuestos. A  falta de estas medidas de seguridad, el trabajo del programador se hará artificialmente difícil, más de lo que naturalmente es.

Aparte de sus trabajos en diseño de hardware (a fin de cuentas, era ingeniero en electrónica), otra gran contribución de Wirth fue en la enseñanza de la programación, su método, basado en la sabia escogencia de ejemplos adecuados, y en el desarrollo del programa por refinamientos sucesivos, sigue siendo de capital importancia. Wirth fue un crítico de la mala escogencia de lenguajes para los cursos de programación en los colegios y universidades, una escogencia que parece más dirigida por los intereses de los grandes fabricantes, de  las grandes casas de software o de las compañías editoras de libros de texto. Para él, y para muchos, es inadmisible el uso de lenguajes como PL1, Java o C++.

Wirth (aprovechemos para aclarar que esa "W" suena "V", no "U") siempre sintió admiración e interés por la astronomía. De hecho, uno de sus últimos proyectos, el lenguaje orientado a objetos y sistema operativo Oberon, toma ese nombre de una de las lunas de Urano. A su vez, a Wirth se le honró dando su nombre a un asteroide; el 21655, entre Marte y Júpiter, se le dio el nombre "Niklauswirth". Fue merecedor de una decena de premios y reconocimientos, entre ellos el premio Turing, una especie de Nobel de las ciencias de la computación.

En una ocasión -mientras hacíamos un inolvidable  verano en la Universidad de California en Santa Cruz- preguntamos a Edsger Dijktra, que quién era, a su juicio, un verdadero científico de la computación. Hay varios, nos dijo, pero si quieren sentir el teclado del piano bajo la punta de sus dedos, vayan a Wirth.

Wirth fue un crítico eterno. ¡y la falta que hace la crítica hoy, cuando la incultura nos rodea! Se quejó a tiempo de lo ineficiente y complejo que se volvía el software. Él lo llamó fatware, software obeso, un tipo de software sin consideraciones por la eficiencia y por el diseño simple y ortogonal. De hecho, hay una observación conocida como la Ley de Wirth. Según esa ley, el hardware cada vez más rápido nunca va a la par del software cada vez más lento. El software se ralentiza más rápidamente de lo que el hardware mejora.

Una área donde campea el fatware es en el diseño de aplicaciones web. Los llamados sistemas full stack, que abarcan tanto la programación del lado del servidor, como la interfaz del lado del cliente, son una amalgama de sistemas, lenguajes y plataformas distintas. ¡Qué falta hace aquí un lenguaje único!, que abarque todos los aspectos de esa área, un lenguaje hecho con unidad de criterio, basado en claros principios de diseño y sin problemas de compatibilidad entre versiones de piezas de software provenintes de los más variados y a veces descuidados programadores. Es decir, qué falta hace allí un Niklaus Wirth.

Termino con una anécdota personal. Guardo intacto el recuerdo de una carta de Wirth donde me ofrecía pasar mi sabático en ETH, Suiza. Al final de su mensaje decía, como de pasada, le recuerdo que el lenguaje oficial de la universidad es Swiss German. Gran problema: durante el corto sabático no alcanzaría a dominar ese Swiss German. Había una opción B: la Universidad de California, en el mismo campus donde había conocido, diez años antes, al insigne profesor. Allá trabajé con uno de los últimos proyectos apadrinados por Wirth: Modula-3, implementando su interfaz para programación paralela bajo el modelo de trenzas de Mach, un novedoso sistema operativo experimental.




Comentarios

Entradas populares de este blog

¿Gap generacional?

Programación de un modelo simple de epidemia