sábado, 3 de diciembre de 2016

Lenguajes Esotéricos

Por: Gerardo Muñoz.

Cuando se habla del lenguaje el común de las personas lo define como el medio que permite la comunicación el cual puede ser de distintos tipos pero seguirá cumpliendo la misma función, no es una definición muy formal que digamos pero se ajusta al concepto general. Se define como "4. m. Estilo y modo de hablar y escribir de cada persona en particular. "[1], por lo cual se cumple que es un tipo de medio por el cual el ser humano o los seres vivos se expresan con el ambiente o sus pares.

Pero no se hablará del lenguaje humano sino más bien del lenguaje computacional derivado al lenguaje   esotérico un tipo de lenguaje muy especial dirigido especialmente a la creación de nuevos lenguajes de programación., este se puede definir como "7. m. Inform. 
Conjunto de signos y reglas que permite la comunicación con una computadora"[2] lo cual es correcto ya que el computador no entiende el lenguaje humano en su totalidad por lo cual se diseñó uno que solo él lo ocupe, sin perder el lenguaje nativo  pero ocupando signos especiales para referirse a una acción. Este se denomina lenguaje maquina el cual es un "1. m. Inform. Conjunto de instrucciones codificadas que una computadora interpreta y ejecuta directamente"[3] a eso se debe la combinación del lenguaje humano y maquina ya que el computador puede entender más fácilmente una acción dirigida por el usuario a si mismo el usuario puede entender mejor la acción  que está mandando.

Luego de presentar algunas definiciones del lenguaje tanto humano como computacional entraré de lleno al tema principal, el cual trata sobre el lenguaje esotérico un tema en común con los lenguajes de programación tradicionales como lo son Java, C, entre otros., claramente hay lenguajes que son iconos de moda dentro del mundo de la programación por lo cual se excluye a una inmensa cantidad de otros lenguajes que cumplen la misma función de formar una comunicación entre el humano y la máquina pero que en algunos casos estos excluidos no son comprendidos por el común de los programadores o solo es necesidad de entrar en una larga franja de aceptación. 

Uno se pregunta porque lleva como nombre “esotérico” pues simple, la definición de la palabra es que es incomprensible o difícil de entender”  lo cual se complementa de manera perfecta ya que la función principal de diseñar este tipo de lenguaje es que sea difícil de comprender para los demás programadores.  Principalmente se usan para pruebas de conceptos para creación de lenguajes por su sintaxis básica y alfabeto limitado, aunque también son diseñados por programadores ociosos que solo quieren ver el mundo arder o se puede expresar como un tipo de desafío personal.

Tras sus inicios en 1972 con la creación del INTERCAL el primer lenguaje esotérico conocido se ha diseñado una gigantesca producción de este lenguaje tanto popular como ignorado. Para no ser ingrato con el padre del lenguaje esotérico escribiré un poco de su historia, fue una parodia de los lenguajes de programación de esa época (FORTRAN Y COBOL) sus diseñadores fueron dos estudiantes universitarios, Don Woods y James Lyons, la traducción de INTERCAL es: “Lenguaje compilado con ningún acrónimo pronunciable”. Además este lenguaje no sigue la sentencia <GOTO> sino que el <COME FROM #> el cual indica que cuando se ha ejecutado la sentencia <#> se salta a la siguiente sentencia después de <COME FROM #>. Actualmente se encuentra la versión C-INTERCAL la cual sigue vigente.

“Hola Mundo!” [4] 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

Conociendo el inicio del lenguaje esotérico iré directamente a mí preferido, el lenguaje del infierno: Malbolge. Y literalmente del infierno pues su nombre proviene del octavo círculo del infierno de Dante en la “Divina Comedia”, el Malebolge. Es un lenguaje de dominio público diseñado por Ben Olmstead en 1998 como todos los lenguajes esotéricos este se inició para ser el más difícil tanto así que el primer programa creado no fue hecho por un humano sino que por una algoritmo de búsqueda diseñado por Andrew Cooke en LISP (Uno de los primeros lenguajes de programación).
 


  “Hola Mundo!” en Malbolge

       (=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-
Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.
R,+O<


A simple vista se puede ver que este código está encriptado por lo que se propuso un Malbolge “normalizado” es decir después de la desencriptación gracias a esto puede ser posible (o no) escribir algún código en Malbolge (normalizado) para luego pasar a la fase de encriptación para que sea válido en Malbolge.

Ejemplo de un código normalizado:

  jpp<jp<pop<<jo*<popp<o*p<pp<pop<pop<jijoj/o<vvjpopoopo<ojo/o
   vooooooooooooooooooooooooooooooooooooooooooooooooooo*p<v*<*

Aunque resulta algo más legible que antes, sigue siendo complicado de descifrar sin una descripción de qué significa cada símbolo.

Al observar hasta donde ha llegado el humano en el tema de la programación de como la imaginación y la libertad de expresión de estos ha creado una infinidad de mundos en forma de código que pueden ser un tipo de rebeldía en contra de la simplicidad de los lenguajes de programación comunes o solamente una carrera difícil que ellos mismos quieren superar. Bueno siempre que haya personas con este pensamiento hacen la vida más divertida y el mundo de la programación.



1 2 3 Definición según la RAE de la palabra “lenguaje”.


Es el principio para todo programador la forma más fácil de escribir una acción para que la máquina la ejecute.

___________________________

Pedro Gimeno Fortea, Lenguajes Esotéricos, url: Fuente principal
RAE, Definición Lenguaje, url: Definición
RAE, Definición Esotérico, url: Definición

No hay comentarios:

Publicar un comentario