Un desarrollador de software promedio es capaz de programar eficazmente en al menos 3 lenguajes de programación. Un programador generalmente aprende los lenguajes dominantes en el mercado, los cuales están diseñados para desarrollos robustos.
Sin embargo, hay una pequeña porción de lenguajes programación que no son convencionales en ningún sentido. Es tal que la población de desarrolladores que realmente sabe programar con ellos, es solamente un pequeño porcentaje del total de los mismos. Observemos brevemente algunos de ellos:
INTERCAL
En Mayo de 1972, dos estudiantes de Princeton diseñaron un lenguaje de programación. Don Woods y James M. Lyon. El lenguaje es prácticamente una sátira de los lenguajes existentes en ese tiempo. De acuerdo al sitio web, está diseñado para “reducir a los hombres más fuertes a lágrimas(de risa)”.
INTERCAL hace uso de sentencias con nombres como “IGNORE” (ignora), “FORGET” (olvida) e incluso “PLEASE” por favor.
Dato curioso, si el programa no contiene suficientemente la palabra “PLEASE” se considera “insuficientemente educado” y si lo aparece demasiadas veces, se considera “excesivamente educado”.
LOLCODE
Si creías que lo habías visto todo, te presento LOLCODE. El lenguaje de programación creado por Adam Lindsay en 2007 que está inspirado en el meme de LOLCAT.
Al ver un programa desarrollado en LOLCODE, es imposible no mostrar una sonrisa, pues se aprecian sentencias como “HAI” para iniciar un programa, “BTW” para comentar y “O RLY?” para una condicional.
La sintaxis del lenguaje es sencilla y asimila un pseudo-código lo cuál hace que una vez comprendidas las referencias, sea muy fácil entender el programa en cuestión.
Whitespace
Basándose en el principio de que los lenguajes de programación convencionales no consideran caracteres como espacios, tabuladores y saltos de línea, nace whitespace.
El lenguaje desarrollado por Edwin Brady y Chris Morris solamente usa distintas combinaciones de los caracteres antes mencionados para crear un programa. El compilador ignora cualquier otro carácter considerándolo como comentario.
Básicamente, whitespace genera archivos aparentemente vacíos que pueden ser importantes piezas vitales de código. ¿Espionaje?
Piet
Si de verdad buscas desarrollar un programa que parezca cualquier otra cosa, Piet es la opción.
Hacer de un mapa de bits un código fuente fue una idea de David Morgan-Mar. La idea es sencilla, el compilador recorre el mapa de bits pixel a pixel definiendo para un determinado bloque de colores un comportamiento específico.
El leguaje fue nombrado Piet debido al artista holandés Piet Mondrian y los programas parecen realmente una pieza de arte abstracto.
Malbolge
Ben Olmstead llevó la complejidad de desarrollar un programa a otro nivel con Malbolge. El nombre está basado en el 8vo círculo del infierno de la Divina Comedia, y no pudo haber nombre más apropiado. Malbolge está diseñado para ser un lenguaje en el cuál sea prácticamente imposible programar.
Tal es su complejidad que tuvieron que pasar 2 años para que el primer programa desarrollado en Malbolge viera la luz, un “Hola Mundo” que por cierto, se ve así:
(‘&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#”
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj”Fhg${z@>
¿Qué?…
Desarrollar en Malbolge es toda una odisea por que es un lenguaje máquina para una máquina virtual ternaria. Esto ya puede ser un reto para cualquier programador ya familiarizado con el clásico sistema binario, pero además, el lenguaje también encripta cada instrucción después de ejecutada lo cuál es la cereza en el pastel que hace de este lenguaje un verdadero desafío para cualquier programador.
En fin, los lenguajes presentados anteriormente, aunque confusos, son Turing completo, lo cuál básicamente se refiere a que tiene el mismo poder de cómputo que cualquier lenguaje convencional. Sin embargo, no es recomendable desarrollar en ellos por las trabas que cada uno de ellos representa. ¿O acaso tú te atreverías?
Para saber más:
- INTERCAL: http://www.catb.org/~esr/intercal/
- LOLCODE: http://lolcode.org/language.html
- Whitespace: http://compsoc.dur.ac.uk/whitespace/
- Piet: http://www.dangermouse.net/esoteric/piet.html
- Malboge: http://www.lscheffer.com/malbolge.shtml
¿Dónde están Brainfuck y Ook!? son mis favoritos! además están basados en el funcionamiento de la máquian de Turing!