El mundo de los lenguajes de programación es como el de los idiomas. Hay alguno que, por ser el primero que hemos aprendido, nos resulta más fácil o natural, sin serlo necesariamente. Nuestro “español” a la hora de programar puede ser Pascal o Visual Basic. Luego está el lenguaje de facto, C, que es como el inglés: todo el mundo lo “machuca” un poco pero luego colocan en el currículum que tiene nivel avanzado/experto.

Pero lo que se pretende mostrar hoy son esos lenguajes tan desconocidos como el swahili, tan vistosos como el japonés o tan enrevesados y muertos como el latín. Lenguajes de programación en los que un “Hola mundo” se convierte en una auténtica pesadilla, o que parecen cualquier cosa menos códigos. Son lenguajes “que suenan a broma”: los lenguajes de programación esotéricos.

Un lenguaje de programación esotérico es un lenguaje de programación minimalista, cuya utilidad para la programación de proyectos de gran tamaño es dudosa normalmente debido a su naturaleza ofuscada u otra característica que no es común en otros lenguajes.

En general estos lenguajes poseen una sintaxis muy básica, con un alfabeto muy restringido, lo que los hace especialmente peculiares en su implementación. En su creación muchas veces ha primado la diversión por parte de los desarrolladores, sobre la utilidad. Sin embargo, al mismo tiempo se trata de lenguajes que funcionan como un desafío tanto para quienes los crean, como para aquellos que intentan programar con ellos.

A continuación un Top 5 de los lenguajes de Programación Esotéricos.

5. Brainfuck

Uno de los grandes clásicos de los lenguajes esotéricos. Brainfuck se caracteriza por utilizar sólo 8 caracteres, con los cuales sólo se puede desplazar un puntero por la memoria e incrementar o decrementar su valor, con lo que el nombre le viene al pelo. Un ejemplo de Hola mundo, que para mayor legibilidad se ha dispuesto con cierta organización, aunque podría ir en una sola línea si quisiésemos hacerlo más confuso:

4. Malbolge

Cuando un lenguaje recibe por nombre Malbolge, que es apelativo para el 8º círculo del infierno de La Divina Comedia, ya se pueden imaginar cómo debe ser programar con él. Y es que sus creadores no lo ocultan: Malbolge fue concebido para convertirse en el lenguaje de programación más difícil que exista. Al basarse en teorías criptográficas no es nada fácil descifrar su significado, ya que quién iba a imaginarse que lo siguiente es un Hola mundo:
(‘&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<m :9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@></m>
Les contaría algo más sobre su sintaxis, pero es que sinceramente no la entiendo, así que todo queda en un dogma de fe. Total, tampoco creo que ningún valiente se fuera a atrever con él, ¿ o si?

3. Chef

Indudablemente los lenguajes de los que hemos hablado hasta ahora son muy complejos, pero al verlos uno sabe que ahí hay algo escondido. Lo que hace realmente original al lenguaje Chef es que nadie podría sospechar que tras unas recetas de cocina exista auténtico código de programación. Veamos un ejemplo de Hola mundo (Hello World en inglés) para ilustrarlo mejor:

Hello World Souffle.
Ingredients.

72 g haricot beans

101 eggs

108 g lard

111 cups oil

32 zucchinis

119 ml water

114 g red salmon

100 g dijon mustard

33 potatoes

 

Method.

Put potatoes into the mixing bowl.

Put dijon mustard into the mixing bowl.

Put lard into the mixing bowl.

Put red salmon into the mixing bowl.

Put oil into the mixing bowl.

Put water into the mixing bowl.

Put zucchinis into the mixing bowl.

Put oil into the mixing bowl.

Put lard into the mixing bowl.

Put lard into the mixing bowl.

Put eggs into the mixing bowl.

Put haricot beans into the mixing bowl.

Liquefy contents of the mixing bowl.

Pour contents of the mixing bowl into the baking dish.

Serves 1.

Tras ver esto uno se pregunta ¿hemos hecho un programa o un shufflé? El funcionamiento es relativamente sencillo: los ingredientes son variables, y la cantidad es su valor. El bol de mezclado es una pila y lo que se ha hecho es ir metiéndolos en orden contrario a como queremos que se representen. Et voilà!

2. Piet

Este vistoso lenguaje de programación basa su código en secuencias de colores dispuestas de tal manera que imitan los cuadros del vanguardista neerlandés Piet Mondrian, del que toma su nombre, Piet. La imagen que abre el artículo es un auténtico cuadro del artista holandés, pero miren qué pinta tiene el típico Hola mundo en Piet:

 

Para codificar las órdenes se utilizan 20 colores (6 tonos con 3 grados de intensidad, más el blanco y el negro). Las variaciones del puntero vienen determinadas por la diferencia de tono e intensidad entre dos colores contiguos, el negro hace las veces de stopper, ya que no puede ser atravesado al seguir una secuencia de colores, y el blanco… el blanco da relleno, ya que no sirve para nada en este lenguaje. Eso sí, ayuda a que sea bonito, ¿verdad?

1. Whitespace

Para entender bien por qué éste es nuestro número 1, comencemos con un Hola mundo típico en Whitespace:

 

Las líneas rojas son espacios y las verdes son tabulaciones.

La particularidad de Whitespace es que sólo utiliza tres caracteres: el espacio, la tabulación y el salto de línea. La consecuencia inevitable es un código imposible de descifrar si no se le aplica algún tipo de coloración, marcado o transformación de símbolos. Y aún haciéndolo, lo único que habríamos conseguido es hacerlo visible, ya que lo que obtendríamos sería un código igual de complicado que el de Brainfuck y el resto de sus derivados.

No es de extrañar que un lenguaje así saliese a la luz un 1 de abril, festividad anglosajona equivalente a nuestro 27 de diciembre “Día de los Inocentes”. Sin embargo, tiene una ventaja frente al resto de seleccionados en esta lista: puede ser introducido dentro de algún lenguaje habitual, donde el exceso de espacios no afecta (como HTML o C), y de esta forma transmitir información oculta, dando la impresión de que compartimos un código inofensivo, cuando el código real será el resultante al quitar todos los caracteres con representación gráfica.

Tomado de http://www.genbetadev.com/ y Wikipedia