martes, 21 de diciembre de 2010

Lenguajes esotéricos

Esoterismo

Para quienes somos aficionados a los lenguajes de programación, todo paradigma alternativo o detalle de implementación novedoso tiene un atractivo especial, ya que sin importar el hecho de que sean prácticos o relevantes como lenguajes, todos dejan alguna lección que puede ser útil en algún momento.

De hecho, hay muchos lenguajes que ni siquiera intentan ser útiles, sino que son ejercicios intelectuales, de la misma forma en que años atrás en Europa el taller de literatura potencial Oullipo producía sus obra alrededor de desafíos como escribir una novela sin la letra e, poemas usando palabras de largo ascendente en cada verso, o utilizando palíndromos.

Siguiendo esa tradición de experimentar con lo absurdo, en el terreno de los lenguajes de programación se han generado muchos que están basados en ideas locas, pero cuya implementación plantea un desafío real y un buen ejercicio.

David Morgan, también conocido como Danger Mouse, tiene una sección entera de su sitio dedicada a este tipo de lenguajes, entre los que encontramos algunos como:

Chef: en el que los programas parecen recetas de cocina

Este ejemplo es un programa que imprime los primeros 100 números de la serie de Fibonacci.

Ingredients.
100 g flour
250 g butter
1 egg

Method.
Sift the flour. Put flour into mixing bowl. Serve with caramel sauce.
Stir for 2 minutes. Remove egg. Rub the flour until sifted.
Stir for 2 minutes. Fold the butter into the mixing bowl.
Pour contents of the mixing bowl into the baking dish.

Recuerden que esto no es sólo una idea, existe un intérprete (escrito en Perl) para este lenguaje.

Piet: en en que los programas parecen arte abstracto

No confundirse con Mondrian (ambos refieren al artista Piet Mondrian), que es un lenguaje de scripting que si existe y se utiliza bastante.

Piet se basa en bloques de colores llamados Codels (pueden pensarse como pixels, pero frecuentemente se amplían a más de un pixel por codel para ver los programas con más claridad).

El lenguaje está basado en stacks y tiene una cantidad de operaciones usuales como push y pop, operaciones como add, substract y multiply, comparaciones, punteros, etc. Pero en lugar de expresarse en forma textual, se expresan como cambios entre un set de 20 colores.

Va aquí un ejemplo con el mismo ejercicio de imprimir los primeros 100 números de la serie de Fibonacci:

Fibonacci escrito en Piet

Esta imagen está magnificada y muestra con fechas el sentido de flujo del programa. Nuevamente, este lenguaje cuenta con varios intérpretes e incluso herramientas de desarrollo, incluyendo alguna IDE.

 

Esta sección del sitio de Morgan es parte de una red de sitios (unidos bajo este antiguo concepto de las primeras épocas de la web) conocido como The Esoteric Programming Languages Ring.