Actualidad42 Madrid

La diversión, y la locura, de los lenguajes de programación esotéricos (II)

¿Cuáles son los lenguajes de programación más difíciles de aprender? Esta pregunta ya la formulamos en primer post que le dedicamos a los lenguajes esotéricos, un extraño universo de códigos diseñados para no hacernos la vida más fácil. No te animamos a que te lances a aprender algunos de los que te traemos a continuación, pero quién sabe, a lo mejor en el futuro serán parte de alguna piscina de 42 Madrid...

42 Madrid Estudiante Campus Fundación Telefónica

Los desarrolladores suelen tener muy controlado uno o unos pocos lenguajes de programación: Java, Kotlin, Python, C o cualquier otro. Además, no es nada raro que también hagan sus pinitos en otros cuantos. El lifelong learning, que se llama. Entre los lenguajes de programación también hay modas; un cierto lenguaje “se lleva” más que otros en ciertos momentos, lo cual es lógico habida cuenta de que la tecnología evoluciona y con ella las necesidades. Luego, están los desarrolladores que se esfuerzan en crear nuevos lenguajes. No vamos a explicar de nuevo qué son los lenguajes de programación esotéricos porque son tan absurdos que explicarlos dos veces sería doblemente absurdo. Eso sí, el concepto no de ser muy atractivo y magnético. Dedicar tiempo a dominar alguno como parte del lifelong learning, es cuestionable. Para acabar con esta serie, algunos ejemplos más de esta maravillosa locura:

INTERCAL

INTERCAL es un lenguaje de programación esotérico diseñado para ser extremadamente difícil de entender (¡Oh, qué novedad!). Es una parodia de los lenguajes de programación Fortran y COBOL de la que sus creadores hacen un interesante aviso de precaución: “Abandonad toda cordura aquellos que entréis aquí. Así que crees que ya lo has visto todo, ¿eh? Vale…has programado en C, has hackeado con LISP, lenguajes como Fortran y Basic no esconden ningún secreto para ti. Escribes módulos de Emacs por diversión. Comes ensamblador para desayunar. Conoces y dominas una docena de lenguajes de los que nadie salvo una pandilla de übergeeks ha oído a hablar […] Entonces quizá estés preparado para el desafío final… INTERCAL”.

INTERCAL no solo es complicado, se propone hacer sufrir al programador. Las expresiones parecen una línea de texto mal codificada, no hay estructuras de datos y muchas instrucciones sólo se ejecutan escribiendo, literalmente “POR FAVOR” (en inglés “PLEASE”). Si no hay suficientes PLEASE en el programa, este se ofenderá al compilar y no funcionará. Asimismo, si hay un exceso el programa se sentirá superior al programador y tampoco funcionará. Y así con otros comandos como “IGNORE” o “READ OUT”…

Piet

Piet es un lenguaje de programación inventado por David Morgan-Mar, pero altamente curioso. Su nombre es un homenaje al pintor neoplasticista Piet Mondrian porque los resultados que produce tienen cierta belleza matemática que se asemeja a los cuadros del artista holandés. Básicamente, el código del programa son combinaciones de colores, como si fuera una pintura de arte abstracto donde cada cambio de color y tonalidad representa una operación distinta: push, pop add, substract, mod, roll, out… Piet utiliza 20 colores distintos formando distintos gráficos que después un interprete ejecuta. No tenemos claro si, aparte del bueno de David, alguien más puede leer los programas directamente con la mente como hacen en Matrix, pero, sin lugar a dudas, le quedó un lenguaje muy bonito. Con página web “oficial”. 

ArnoldC

Si siempre has soñado con poder expresarte a través de un lenguaje de programación basado en las frases de la estrella de Hollywood, multipremiado culturista y exgobernador de California Arnold Schwarzenegger, considera tu deseo concedido. ArnoldC existe para desvelar la verdadera semántica de míticas citas clásicas de películas de Arnie. Todos sus grandes éxitos están ahí: Terminator 2, Desafío Total, Predator y, por supuesto…COMANDO.

Entre otras características, ArnoldC corre sobre la plataforma Java. Lauri Hartikka, el desarrollador finlandés detrás de esta ¿genialidad?, afirma que los proyectos apuntan a «descubrir nuevos significados de las películas de Arnold con los medios de la informática». Parece una broma, pero también todos los lenguajes de esta lista. Ocurre que se puede utilizar para hacer programas. Retamos a que identifiquen todas las películas a las que pertenecen las siguientes frases míticas. Todas ellas son instrucciones:

  • False: I LIED
  • True: NO PROBLEMO
  • If: BECAUSE I’M GOING TO SAY PLEASE
  • Else: BULLSHIT
  • EndIf: YOU HAVE NO RESPECT FOR LOGIC
  • While: STICK AROUND
  • EndWhile: CHILL
  • EqualTo: YOU ARE NOT YOU YOU ARE ME
  • Or: CONSIDER THAT A DIVORCE
  • And: KNOCK KNOCK
  • DeclareMethod: LISTEN TO ME VERY CAREFULLY
  • NonVoidMethod: GIVE THESE PEOPLE AIR
  • MethodArguments: I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE
  • Return: I’LL BE BACK
  • EndMethodDeclaration: HASTA LA VISTA, BABY
  • AssignVariableFromMethodCall: GET YOUR ASS TO MARS
  • DeclareInt: HEY CHRISTMAS TREE
  • BeginMain: IT’S SHOWTIME
  • EndMain: YOU HAVE BEEN TERMINATED
  • Print: TALK TO THE HAND
  • ReadInteger: I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
  • AssignVariable: GET TO THE CHOPPER
  • SetValue: HERE IS MY INVITATION
  • EndAssignVariable: ENOUGH TALK
  • ParseError: WHAT THE FUCK DID I DO WRONG

Ook!

El frikismo llevado al extremo…¿o no? Ook! es otro de esos lenguajes de programación esotéricos que nacen de Brainfuck, pero esta vez usando el vocabulario empleado por el personaje del Bibliotecario de la saga de novelas Mundodisco, de Terry Pratchett. Este personaje es, digamos…escueto. No destaca por un vocabulario esdrújulo o dominar la prosa o el verso. De hecho, solo es capaz emplear tres vocablos: Ook., Ook! y Ook? Con estas palabras, el ocioso creador de Ook! utilizó los ocho comandos de Brainfuck:

  • Ook. Ook? – Incrementa el puntero.
  • Ook? Ook. – Decrementa el puntero.
  • Ook. Ook. – Incrementa el byte apuntado.
  • Ook! Ook! – Decrementa el byte apuntado.
  • Ook! Ook. – Salida (ASCII) del byte apuntado.
  • Ook. Ook! – Entrada (ASCII) sobre el byte apuntado.
  • Ook! Ook? – Avanza a la instrucción inmediatamente posterior al Ook? Ook! correspondiente si el byte actualmente apuntado es cero.
  • Ook? Ook! – Retrocede a la instrucción inmediatamente posterior al Ook! Ook? correspondiente si el byte actualmente apuntado no es cero.

¿Personajes de ficción más parcos en palabras que el Bibliotecario? Pensemos…

Groot

Groot es un coloso Flora del Planeta X, la capital de los mundos secundarios del universo. Además, es, posiblemente, el único personaje de la casa de cómics Marvel que habla un idioma distinto al resto. Al oído humano es como si solo dijera su nombre todo el tiempo: «yo soy groot». Entre sus poderes se encuentran la succión de madera como comida, es resistente al fuego, puede controlar los árboles y tiene un nivel intelectual de un genio, aunque sólo pueda mencionar su nombre. Brainfuck ha dado para mucho. Si quieres programar en Groot, solo necesitas controlar las siguientes instrucciones: i am groot, I am Groot, I AM GROOOT, I AM GROOT, I am groot, I am grooot, I’m Groot, We are Groot. Más información en su GitHub.

Hodor

¿Piensas todavía que no hay suficientes lenguajes esotéricos para programar? Al parecer, muchos desarrolladores siguen pensándolo. En 42 Madrid formamos a los programadores del presente y del futuro. Una metodología innovadora para conseguir resultados innovadores. Después de compartir todos estos lenguajes, no tenemos claro si entrarían en el terreno de la tecnología disruptiva. Original, sí, pero ¿útil? Usando permutaciones confusas de la palabra «Hodor» una y otra vez, los creadores han simplificado la sintaxis de programación para que sea más fácil que nunca (dicen). Si quieres por alguna casualidad convertir tus viejos archivos JavaScript a Hodor usando su herramienta js2hd. js2hd myfile.js -> myfile.hd. Más información disponible en GitHub. Esperamos que encuentres Hodor tan fácil de usar como nosotros. Hold the door! Hold the door!

por Eduardo Santana