Arma tu propia web, acá como hacerlo
Ciencia y Educacion 07.09.2014 a las 03:26 hs 732 1
Lenguajes de programación más enrevesados y absurdos
635) {this.width=635}" * />
Si aprender JavaScript o C se te hizo cuesta arriba, mejor no sigas leyendo porque he recopilado lo más de lo más friki 635) {this.width=635}" * /> Para quien prefiera un repaso por este submundo en formato de artículo científico, puede verlo
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
. 1. Programar con espacios en blanco
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
al mundo el 1 de abril de 2003 (el “día de los inocentes” del mundo anglosajón), el lenguaje Whitespace propone lo contrario que lo que hace el parser de cualquier lenguaje normal: ignorar cualquier texto, número o símbolo y únicamente interpretar los huecos en blanco como instrucciones. Por tanto, es perfecto para esconder código en un texto. Su máquina virtual se compone de una pila, un espacio de memoria para variables y un puñado de instrucciones. 635) {this.width=635}" * /> |
Así se ve un programa en Whitespace en el editor vim ( Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate! ) |
Todo: constantes, el control de flujo, operaciones aritméticas, entrada y salida, se codifica mediante secuencias de tabuladores, espacios, espacios y tabuladores. Los enfermosinteresados pueden leer más en
Creado para hacer su compilación lo más difícil posible, se trata de un lenguaje
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
. Befunge
Creado para hacer su compilación lo más difícil posible, se trata de un lenguaje
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
con un flujo de programa bidimensional: cada carácter dice al compilador o intérprete en qué dirección ir a continuación. Por si fuera poco, el programa puede modificarse a sí mismo, al estilo del clásico Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
. Absolutamente no apto para humanos, ni para compiladores… aunque finalmente hay quien consiguió programar un compilador para este engendro: 635) {this.width=635}" * /> |
Este sencillo programa resuelve un Sudoku. Click para ampliar (pero no, no creas que aún así lo entenderás). ( Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate! ) |
Imprescindible hacer un recorrido por este
Con la idea contraria del anterior, Brainfuck fue creado con la idea de hacer su compilación lo más sencilla posible, lo que evidentemente va en contra de su usabilidad e inteligibilidad por el programador. La máquina virtual asumida por el lenguaje es extremadamente simple, y sólo soporta 8 instrucciones. La siguiente tabla resume bien el lenguaje al completo (
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
escritos en Befunge por la, probablemente, única persona capaz de hacerlo del mundo. Brainfuck
Con la idea contraria del anterior, Brainfuck fue creado con la idea de hacer su compilación lo más sencilla posible, lo que evidentemente va en contra de su usabilidad e inteligibilidad por el programador. La máquina virtual asumida por el lenguaje es extremadamente simple, y sólo soporta 8 instrucciones. La siguiente tabla resume bien el lenguaje al completo (
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
):Comando Brainfuck | Equivalente en C |
(Estado inicial) | char array[infinitely large size]; char *ptr=array; |
> | ++ptr; |
< | –ptr; |
+ | ++*ptr; |
- | –*ptr; |
. | putchar(*ptr); |
, | *ptr=getchar(); |
[ | while (*ptr) { |
] | } |
A pesar de ser otro lenguaje Turing completo, hasta el más elemental “Hello world!” es ininteligible: |
A++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++. |
LOLCODE: Ola K aze!
Esto ya se ha ido de madre: una especie de Pascal donde todas las palabras clave están escritas en la jerga del lenguaje usado habitualmente en memes de Internet:
HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
UP VAR!!1
VISIBLE VAR
IZ VAR BIGGER THAN 10? KTHX
IM OUTTA YR LOOP
KTHXBYE
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
UP VAR!!1
VISIBLE VAR
IZ VAR BIGGER THAN 10? KTHX
IM OUTTA YR LOOP
KTHXBYE
Por ejemplo, KTHXBYE significa: “OK, Thanks, bye!” Y sí, existe
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
. Una única instrucción
Existen quienes van un paso más allá en simplificar su propuesta de máquina virtual: el extremo son las máquinas de una única intrucción. Obviamente, conseguir que dicho sistema sea Turing completo requiere pensar muy bien qué instrucción va a ser la elegida.
Entre
Entre
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
, una opción es la siguiente: - SBNZ a,b,c,d –> Restar dos valores a y b, almacenar el resultado en c, y si el resultado no es cero saltar a una dirección de memoria d.
6. Piet
Bautizado en honor al pintor Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
, los programas en Piet no se escriben: se dibujan con colores. De nuevo tenemos una máquina virtual que hace uso intensivo de almacenamiento en la pila y con un puntero de programa en 2D que se desplaza por el dibujo interpretando los distintos colores como instrucciones. 635) {this.width=635}" * /> |
Programa que imprime “Hi!” por consola, con una traza del flujo del programa. Más explicaciones, si es que las necesitas con lo claro que está, Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate! . |
Una forma curiosa de enviar mensajes sencillos “codificados” en una imagen, aunque desde luego no serán tan discretas como otras técnicas avanzadas de
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
. Existe un editor/programa de dibujo y un intérprete llamado Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
.INTERCAL
De los lenguajes de programación creados “por hacer la coña”, INTERCAL puede considerarse el abuelo. Fue perpetrado en 1972 por dos estudiantes de Princeton, que sarcásticamente lo presentaron como: “Compiler Language With No Pronounceable Acronym, which is, for obvious reasons, abbreviated INTERCAL”. Se publicó como un manual en texto que describía toda la sintaxis, aunque posteriormente se han creado compiladores reales. Un clásico “Hello World!” se ve así en INTERCAL:
DO ,1 <- #13 PLEASE DO ,1 SUB #1 <- #238 DO ,1 SUB #2 <- #108 DO ,1 SUB #3 <- #112 DO ,1 SUB #4 <- #0 DO ,1 SUB #5 <- #64 DO ,1 SUB #6 <- #194 DO ,1 SUB #7 <- #48 PLEASE DO ,1 SUB #8 <- #22 DO ,1 SUB #9 <- #248 DO ,1 SUB #10 <- #168 DO ,1 SUB #11 <- #24 DO ,1 SUB #12 <- #16 DO ,1 SUB #13 <- #162 PLEASE READ OUT ,1 PLEASE GIVE UP |
Quien no tenga problemas con el inglés, puede echar un vistazo a la completa página en Wikipedia, repleta de extractos de la especificación original del lenguaje donde se muestra el frikísimo sentido del humor de los creadores.
Velato
Garabatos, dibujos… ¡nos faltaba la música! Velato es el (¿único?) lenguaje de programación basado en lenguaje musical: los programas se pueden escribir en partituras y se guardan como ficheros MIDI. Por supuesto, existe
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
. 635) {this.width=635}" * /> |
Programa “Hello World!” en Velato ( Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate! ) |
El submundo de las templates en C++
¡No! Yo nunca metería a mi querido C++ en la lista de lenguajes absurdos. Pero… hay que admitir que una vez abres la caja de Pandora de las
Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
(o plantillas), se accede a unas herramientas muy poderosas, a veces tanto como para redefinir el aspecto habitual de un programa en C++. Un ejemplo maravilloso de esto es Para poder ver los links necesitas estar Registrado . O.. ya tienes cuenta? Logueate!
que permite operar con dibujos de formas geométricas y sus propiedades geométricas:#include"analogliterals.hpp" using namespace analog_literals::symbols; unsigned int c = ( o-----o | ! ! ! ! ! o-----o ).area; assert( ( o-------------o |L \ | L \ | L \ | o-------------o | ! ! ! ! ! o | ! L | ! L | ! L| ! o-------------o ).volume == ( o-------------o | ! ! ! ! ! o-------------o ).area * int(I-------------I) ); analog_literals::rectangle<4, 2> r = o---------o | ! ! ! o---------o; |
FIN DEL POST
635) {this.width=635}" * />
Puntos: 590
Comentarios (11)
Cargando comentarios espera un momento...
No tienes permisos para comentar.
Medallas
Posts Relacionados: