jueves, 16 de septiembre de 2010

Whitespace: Lenguaje de programación esotérico

Whitespace: Lenguaje de programación esotérico: "

Whitespace: Lenguaje de programación esotérico

¿Alguna vez, leyendo el código fuente de un programa, te costó trabajo entender qué había querido hacer su creador? Seguramente sí. Incluso hay concursos para ver quién escribe el código más retorcido (“C ofuscado” le dicen). Pero el premio gordo a la dificultad extrema se lo lleva Whitespace. Este lenguaje, que solo usa espacios en blanco, tabuladores y líneas nuevas en su código, es lo más esotérico que hemos visto. ¿Lo conocías?

Lenguajes de programación hay muchos. Demasiados, si tenemos que creerle a algunos expertos. Uno podría pensar que con C alcanza y sobra para programar cualquier cosa, desde un sistema operativo hasta un microcontrolador. Pero los expertos siguen desarrollando nuevas formas de convertir una idea en un montón de símbolos que indiquen a un ordenador que debe hacer. En general, esos esfuerzos se orientan a conseguir formas más “naturales” de instruir a la máquina, de forma que gente sin una formación en sistemas pueda crear sus propios programas. Pero algunas veces, seguramente como una broma o un intento de lograr cierta clase de “fama”, alguien concibe un compilador capaz de volver loco al programador más avezado. Whitespace es un ejemplo de ello: un lenguaje de programación esotérico y prácticamente desconocido, que solo usa espacios en blanco, tabuladores y líneas nuevas en su código.

Visto en Neoteo: Whitespace: Lenguaje de programación esotérico
“Hola mundo”, con los espacios aparecen en color rosa y las tabulaciones en celeste.
“Hola mundo”, con los espacios aparecen en color rosa y las tabulaciones en celeste.

Whitespace, un lenguaje de programación que seguramente sería muy apreciado por los espías, se basa en un código que resulta prácticamente invisible. Como sus instrucciones se expresan como una combinación de espacios en blanco y golpes de tabulador -ambos símbolos inimprimibles- se hace indispensable utilizar algún editor de textos que resalte con colores estos elementos para poder leerlas. La imagen anterior, en la que los espacios aparecen en color rosa y las tabulaciones en celeste, es el “Hola Mundo” de Whitespace. ¿Te cuesta trabajo entenderlo? Imagina lo que sería si no hubiesen pintando esos caracteres de colores: ¡solo verías una hoja en blanco! Este esotérico lenguaje de programación fue desarrollado por Edwin Brady y Chris Morris, quienes dieron a conocer su obra a la comunidad de programadores el 1 de abril de 2003. Es un lenguaje “imperativo”, como C, BASIC, PERL, PHP o JAVA. La programación imperativa describe la programación en términos del estado del programa y sentencias -las que en este caso se redactan con espacios y tabuladores- capaces de cambiar dicho estado. Dicho de otra forma, los programas imperativos son un conjunto de instrucciones, una especie de “receta”, que le indican al ordenador la manera en que debe realizar una tarea. Prácticamente todo el hardware existente está diseñado para ejecutar código de máquina escrito en una forma imperativa, basado en el paradigma de las Máquinas de Turing. Whitespace, a pesar de lo extraño que nos parece, es un lenguaje completamente funcional y que -al menos en teoría- nos permite realizar cualquier tarea.

Visto en Neoteo: Whitespace: Lenguaje de programación esotérico
Chuck Norris programa (obviamente) en Whitespace, con los ojos vendados.
Chuck Norris programa (obviamente) en Whitespace, con los ojos vendados.

Al igual que otros lenguajes de alto nivel, Whitespace permite el uso de variables y sentencias bastante complejas. Su funcionamiento, al igual que otros lenguajes, basa en una “pila” (stack en inglés). La pila no es más que una estructura de datos de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir). Este sistema permite almacenar y recuperar datos mediante dos operaciones básicas: apilar (“push”, que coloca un objeto en la pila) y su operación inversa, retirar (“pop”, o desapilar), que retira el último elemento apilado. Whitespace solo pude acceder a la parte superior de la pila (TOS, por “Top of Stack”), donde se encuentra el último objeto apilado. Se pueden apilar números enteros de cualquier longitud, pero no valores de coma flotante. ¿Cuál es la utilidad real de un lenguaje de programación tan extraño como este? En la práctica, ninguna. Desarrollar algo así es un excelente ejercicio intelectual, pero utilizar Whitespace para programar una aplicación no es más que una muestra de masoquismo extremo. Y ni hablar del trabajo que implicaría realizar tareas de mantenimiento al código escrito por otra persona, o por uno mismo luego de algún tiempo. Brady y Morris han conseguido un merecido lugar en el “hall of fame” de los creadores de compiladores extraños, pero nada más que eso. ¿No te parece?


Enlaces relacionados:
Visto en Neoteo: Whitespace: Lenguaje de programación esotérico
Sitio oficial de Whitespace

Technorati Tags:
Tags Blogalaxia: "