Facebook Twitter RSS Reset

Los 10 lenguajes de programación más difíciles

Sin duda todos nos hemos preguntado alguna vez: ¿cuáles son los lenguajes de programación más difíciles de aprender? Algunos dirán que es Fortran, otros dirán que es C con sus punteros o el C++ que además tiene clases, etc. Pero hoy no he venido a hablaros de estos lenguajes para mortales. Hoy he venido a hablar de aquellos lenguajes de programación surgidos de alguna mente retorcida, diseñados tras una noche de borrachera e implementados con una dosis enfermiza de sadismo.

Los que aparecen aquí son probablemente unos lenguajes tan obfuscados, complicados y crueles que probablemente preferirías saltar por un barranco a un río de lava antes que intentar dominarlos…

10- LOLCODE

Por si comprender dos mil líneas de código no fuera suficiente castigo para los ojos humanos, aquí llega LOLCODE, que tiene el añadido de que todas las instrucciones están escritas en el lenguaje de los chats de Internet, es decir: con faltas, abreviaciones y expresiones que convertirían al más calmado académico de la RAE (o su equivalente inglés) en un dios vengativo con sólo leer una línea. Mis hogos…

HAI 1.2

CAN HAS STDIO?

VISIBLE “HAI WORLD!!!1!”

KTHXBYE

9- Shakespeare

En contraposición a LOLCODE tenemos el lenguaje Shakespeare. Si entender un código ya tiene un cierto grado de dificultad de por sí, imagina ahora que todo el programa es una obra de teatro escrita por Shakespeare. Si el autor inglés se levantara de su tumba y cambiara los versos por la programación imperativa y la pluma por el ordenador, así serían sus programas:

The Infamous Hello World Program.

Romeo, a young man with a remarkable patience.

Juliet, a likewise young woman of remarkable grace.

Ophelia, a remarkable woman much in dispute with Hamlet.

Hamlet, the flatterer of Andersen Insulting A/S.

Act I: Hamlet’s insults and flattery.

Scene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:

You lying stupid fatherless big smelly half-witted coward!

You are as stupid as the difference between a handsome rich brave

hero and thyself! Speak your mind!

You are as brave as the sum of your fat little stuffed misused dusty

old rotten codpiece and a beautiful fair warm peaceful sunny summer’s

day. You are as healthy as the difference between the sum of the

sweetest reddest rose and my father and yourself! Speak your mind!

You are as cowardly as the sum of yourself and the difference

between a big mighty proud kingdom and a horse. Speak your mind.

Speak your mind!

[Exit Romeo]

Y no continúo. Esto es sólo una pequeña parte de un holamundo… cada personaje es una variable y cada párrafo contiene una (o más) palabras clave que se corresponden a las funciones, condicionales y bucles.

Deberían dar el Premio Turing a quién escriba una base de datos con esto. Y de paso el Nobel de Literatura.

Los 10 lenguajes de programación más difíciles

8- Chef

¿Quién podría llegar a pensar que detrás de una innocente receta de cocina (un poco extraña, eso sí) se pueda esconder un programa? Los amantes de la cocina sin duda adorarán Chef, el único lenguaje de programación en el que las variables son ingredientes, los platos son arrays y los cuencos, punteros…

He aquí un holamundo:

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.

¡Y recordad, servidlo humeante y bien calentito!



7- Spaghetti Programming Language

Y continuamos con los programas culinarios.

Cuando a un código se le llama “código espagueti” significa que está mal organizado: hay muchos GOTO, las funciones están mal ordenadas, las variables se declaran en sitios inesperados… básicamente es como un bol de espaguetis en el que el flujo del programa se retuerce de un punto a otro.

El Spaghetti Programming Language es un lenguaje especialmente pensado para crear código espagueti. Cada función debe acabar en un GOTO, pero con la condición de que no puedes saltar a la siguiente línea. El resumen: es un programa que va saltando de una línea a otra sin ninguna lógica aparente. He aquí un ejemplo:

2[x~13:0]3

1[x?]2

3[?x]1

6- Trollscript

Trollscript es un lenguaje que sólo puede programarse con dos carácteres: ‘o’ y ‘l’. Además todas las funciones deben empezar por ‘tr’. Eso, sumado al hecho de que sólo puede programarse modificando punteros y direcciones de memoria, hacen que el nombre de Trollscript sea, sin lugar a dudas, el más adecuado para este lenguaje.

He aquí un holamundo:

Trooloolooloolooloolooloolooloolollooooolooloolooloolooloolooooolooloolooloolooloolooloolooloooooloolooloooooloooloolooloololllllooooloolo

loooooololooolooloolooloolooloololoolooolooloololooooooloololooooloololooloolooloolooloolooloolooloolooloolooloololooooolooolooloololoool

lollollollollolllooollollollollollollollollloooooololooooolooll

5- Intercal

Extraído de la web oficial:

“Abandonad toda cordura aquéllos 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 sólo es difícil, quiere 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 escriviendo, 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”…

El programa típico para escribir la série de Fibonacci sería:

DO .9 <- #16
DO .10 <- #0
DO .11 <- #1 (1) PLEASE READ OUT .11
DO .1 <- .10
DO .2 <- .11
PLEASE (1009) NEXT

DO .10 <- .11
DO .11 <- .3 DO (3) NEXT
DO (1) NEXT

(3) DO (4) NEXT

PLEASE GIVE UP

(4) DO .1 <- .9
DO .2 <- #1
PLEASE (1010) NEXT

DO .9 <- .3
DO .1 <- '.9~.9'~#1
PLEASE (1020) NEXT

DO RESUME .1

4- Whitespace

Para entender mejor Whitespace, lo mejor será ver un ejemplo. Este programa pide un string y lo muestra en pantalla.

¿Como que me he olvidado de escribir el código? ¡Si está justo ahí! Prueba a seleccionar el espacio en blanco…

En efecto. Whitespace es un lenguaje de programación que sólo tiene tres valores: espacio, salto de línea y tabulador. Con esto puede implementarse cualquier algoritmo posible…

Y lo mejor es colar un programa en Whitespace dentro de un programa normal. ¿No es brillante?

3- Brainfuck

Brainfuck pretende ser un lenguaje minimalista con sólo ocho carácteres, extremadamente difícil de entender. El lenguaje declara un array de variables inicializadas a cero, y el programa consiste en utilizar un puntero para editar los valores. Genial.

He aquí un ejemplo de holamundo:

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>—.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

Sí, tiene bien merecido su nombre.

2- Unlambda

Al igual que Brainfuck, Unlambda es un lenguaje diseñado para que sea prácticamente imposible de programar con él. Un ejemplo de série de Fibonacci sería:

“`s“s“sii`ki

`k.*“s“s`ks

“s`k`s`ks“s“s`ks“s`k`s`kr“s`k`sikk

`k“s`ksk

Claro como el agua, ¿eh? Pero el hecho de que Unlambda aparezca en segundo lugar es que se trata de un lenguaje enfocado a las funciones. Muy enfocado a las funciones. Tan enfocado a las funciones que no hay ni variables, arrays, bucles… sólo funciones que retornan otras funciones que, a su vez, retornan otras funciones… supongo que es el sueño de un amante de la recursividad con tintes masoquistas.

Y finalmente, en primera posición…

1- Malbolge

Malbolge. Sólo el nombre ya infunde respeto. Un lenguaje con una crueldad y malicia inigualables. Es diabólico, y cuando digo diabólico es que ni el mismísimo Lucifer, ni los Cuatro Jinetes del Apocalipsis, ni una legión de Demonios surgidos del más profundo recovenco del Averno sería capaz de maquinar un lenguaje así.

Malbolge debe su nombre al Octavo Círculo del Infierno de la Divina Comedia de Dante, dónde se clasifican los pecadores según su crimen antes de ser castigados. En el infierno de los programadores se trabaja con Malbolge.

Los 10 lenguajes de programación más difíciles

¿Crees que los lenguajes anteriores son difíciles de programar? Malbolge no sólo está pensado para ser complicado… ¡pretende ser imposible de compilar! No existe un compilador oficial para Malbolge ni una lista concreta de instrucciones: estas cambian según su posición… pero no su posición en el programa, no señor: ¡Su posición en la memoria de la máquina! ¡Toma ya!

Existe un compilador para Malbolge que se creó aprovechando un error de diseño del lenguaje… pero igualmente es infernal.

He aquí un ejemplo de holamundo… ¡disfrutad!


(‘&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=`CB]V?Tx

No comments yet.

Leave a Comment