Brain Fuck, jugando un poco con lenguajes esotéricos
Además de los lenguajes de programación normales y corrientes existen lenguajes de programación esotéricos creados para "divertirse" o de manera meramente educativa/científica, no con una orientación funcional.
Un lenguaje esotérico muy conocido es el brain fuck, cuyas primitivas son "><+-[]. y ,". Estos son todos los simbolos de los que dispone el lenguaje y con los que hay que escribir el programa.
No voy a explicar qué hace cada simbolo ni cómo, para eso está la wikipedia o la página oficial. Incluso hay tutoriales sobre brainfuck para aprender a programar las primitivas básicas de un lenguaje de programación con estos simbolos.
La cosa es que me ha dado por ahí y ayer me puse a programar algo. La idea era hacer un programita que pidiera dos números por teclado, y luego los sumara. Nada complicado.
El mayor problema con el que me he encontrado es a la hora de representar el resultado por pantalla cuando el número era mayor de 10, puesto que con brainfuck tienes que sacar por pantalla caracter a caracter.
Por supuesto este programa no suma números de más de dos dígitos, dado que la entrada se hace cáracter a carácter y parsear un 12 por ejemplo implicaría una complejidad inimaginable (quizás no tanto, pero eso requeriría unas cuantas horas más).
Aquí está el código:
<++++++++++[>++++++++++<-]><++[>+++++<-]>.<++++++
[>----------<-]>-.<+++[>+++<-]>.<<<<<<,>>>>>><<<<
,>>>>[-]<++++++++++[>++++++++++<-]><++[>+++++<-]>
.<++++++[>----------<-]>.<+++[>+++<-]>-.<<<<<<<,<
<<,>>><<<<[-]++++[>>>>------------<<<<-]++++[>>>>
>------------<<<<<-]>>>>[>+<-]>>>[-]<<[>>+<<-]>>[
<+<+>>-]<<>>+<>>>[-]+<<<>>>>>[-]<<<<<>>>>[-]+++++
+++++[<<<<-+[>>>[-]<<<>>>>>+<<<<<-]->>>[<<<>-<>>>
[-]]<<<>>>[-]+<<<>>>>>[<<<<<+>>>>>-]<<<<<>>>>-]<<
<<<<<<<<[-]++++++++++++++++++++++++++++++++++++++
++++++++++>>>>>>><<<<[-]++++++[>>>>++++++++<<<<-]
>>>>.<<<<[-]++++++[>>>>--------<<<<-]>>>>[<<<<<<<
[-]++++++++++++++++++++++++++++++++++++++>>>>>>>[
-]]<<<<<<<[>>>>>+<<<<<-]>>>>>.[-]<[-]++[>+++++<-]
>.
¿Por qué brainfuck? ¿Estás loco o qué? No se, es divertido tratar de encontrar soluciones a problemas y si tienes que utilizar un lenguaje como este el reto es mucho mayor. Nunca viene mal ejercitar un poquiito las neuronas y recordar cosas de computación básica. Al fin y al cabo el universo podría reducirse a estos simbolos, eso sí, habría que escribir un montón.




Comments
Viva brainfuck
+++++[>+++++[>++++<-]<-]>>[<+<+>>-]<-.<+++++++++++.++++++.--.+.>++.----.<+.
y viva brainfuck
PD, hace tiempo hice un intérprete de brainfuck en el potentísimo lenguaje JavaScript, ¿te lo paso?
...bueno, como seguro que contestas que sí, y luego se me va a olvidar... http://pastebin.com/tNFPgyTE (a ver si el bot no me banea)
Genial! brain fuck mola
Genial! brain fuck mola