"Hola mundo" en 10 lenguajes de programación esotéricos
Men? de navegaci?nMen?
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

"Hola mundo" en 10 lenguajes de programación esotéricos

Si hacemos un repaso rápido de los lenguajes de programación más comunes verás que, incluso ciñéndonos a los más  conocidos que vienen a la cabeza de inmediato, son un montón de ellos:

Java, C#, Visual Basic, C, C++, JavaScript, Python, Perl, Ruby, Swift, Objective-C, PHP, Delphi/Pascal, Ensamblador...

Sólo en esta lista ya hay 14.

Pero en realidad la lista de lenguajes de programación es enorme. En la Wikipedia se recogen nada menos que 700 lenguajes de programación diferentes, que puedes examinar alfabéticamente, por categoría o paradigma, cronológicamente (¿sabes cuál es el más nuevo de todos?: Swift) o incluso atendiendo a su genealogía.

Bueno, pues además de estos 700 lenguajes, existe toda una categoría aparte de lenguajes de programación llamados esotéricos.

esoterico

Los lenguajes de programación esotéricos (también llamados "esolenguajes" o "esolangs") son lenguajes poco útiles en la vida real pero que se han diseñado para crear pruebas de concepto, ver hasta dónde es posible llevar un concepto de diseño de compiladores o análisis sintáctico, para hackear otros lenguajes, como forma de arte, o incluso como un tipo de broma "geek".

La facilidad de uso de estos lenguajes no es uno de sus objetivos. Más bien lo normal es que sea justo lo contrario. Hoy en día existen ya tantos que ni siquiera la Wikipedia los tiene recopilados. Sin embargo, Internet nunca defrauda, y por supuesto existe una página, Esolang.org, en la que una serie de "geeks" muy implicados está manteniendo en forma de Wiki una gran colección de este tipo de lenguajes, con información, documentación y ejemplos de cada uno de ellos. Actualmente disponen de más de 1.035 lenguajes de programación esotéricos catalogados :-O

¿Sabes cómo se crea un "Hola Mundo" en alguno de esos lenguajes? Puedes alucinar...

Algunos ejemplos:

asdf

Este lenguaje utiliza solo 4 instrucciones para mover punteros en la memoria, cambiar bits y limpiar indicadores. Con eso es capaz de hacer un montón de cosas. El "Hola mundo" sería así:

asaasaasssasaasssasaaaasssasaasssasaaaaaaaasssasaaaasssasaaaasssasaasssasaasss
asaasssasaasssasaaaasssasaasssasaaaasssasaaaaaasssasaaaasssasaasssasaaaasssasa
aaaaasssasaaaasssasaasssasaaaaaaaasssasaaaasssasaasssasaasssasaaaasssasaaaaaaa
asssasaasssasaaaaaaaaaaaasssasaaaaaasssasaasssasaaaaaasssasaasssasaaaasssasaas
ssasaaaaaaaasssasaasssasaaaaaasssasaaaasssasaasssasaaaasssasaaaasssasaasssasaa
aasssasaaaaaasssasaaaasssasaaaasssasaasssasaaaaaaaasssasaasssasaaaaaaaasssasaa

¿Cómo distinguirlo de un típico texto malo de prueba? :-S

BiTrax

Este lenguaje bi-dimensional simula el trabajo en una cinta de memoria plana, lineal e infinita, en donde cada posición de la memoria contiene dos posibles valores (0 o 1) y en la que el color de cada celda, representado por un pixel, es una instrucción. En total hay 7 colores y por lo tanto 7 instrucciones.

Nuestro programa de ejemplo en este lenguaje sería:

HelloWorldb

aunque la imagen está aumentada varias veces ya que en el original cada cuadradito sería un píxel, y por lo tanto todo muy pequeño.

Brainfuck

Este es quizá el más famoso de los lenguajes esotéricos. Nació en 1993 como un intento de crear el compilador más pequeño posible para un lenguaje de programación en los computadores Amiga. Su creador consiguió crear un compilador que ocupaba tan solo ¡240 bytes!. Impresionante.

El ejemplo universal en este lenguaje sería:

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

Como parte de su nombre es una palabra muy "fea" en inglés, es hasta difícil encontrar información sobre el mismo en la Web, pero si te interesa aquí tienes un enlace con documentación.

Daoyu

Se trata de uno de los lenguajes esotéricos más recientes, pues se creó en 2016. Sigue los principios de la filosofía de vida Taoista: la unidad absoluta, el minimalismo...

Este es su "Hola mundo":

))))))))/:((((((S...............
%(>#>[>[>;/.==>;=/>[>%/!.:......

Entre sus características están:

  • No existen las asignaciones numéricas
  • No hay operaciones matemáticas
  • No se permite el acceso aleatorio a la memoria
  • Condicionales limitados
  • Se trata de manera igualitaria a todos los programas y datos

Filosofía pura ;-)

Flip

Se trata de otro lenguaje bidimensional en el que disponemos de bolas que portan valores y que colisionan con otros elementos en un campo de juego. También existen "flippers" que permiten cambiar las paredes en las que rebotan las bolas. Es algo así como programar jugando al billar o a una máquina del millón.

Ahí va nuestro ejemplo:

 >0> 5+  \
@'+  
 >0>4*+\
+,  /    /
vXv/   /
  \   \  \  \  \  \  \  \  \  \  \  \  \  \ 
      4@ 6@ 7@ 7@ 7@ 0@ 5@ 7@ 8@ 7@ 6@ 0@ 2@
    *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~<<
  P++<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~<<
   Q  0@ 9@ 6@ 6@ 9@ 0@ 5@ 9@ 2@ 6@ 8@ 1@ 2@
\     /  /  /  /  /  /  /  /  /  /  /  /  /

Alucinante...

Gravity

Este lenguaje de programación se basa en una idea de Newton, y es completamente distinto a cualquier otro lenguaje de programación ya que, aunque su comportamiento está bien definido y es determinista, la evolución de su espacio no es computable debido a las ecuaciones diferenciales en las que se basa.

(0,0) : 2

(1,1,1,1, 2) ->  3 :  72
(1,1,1,1, 3) ->  4 : 101
(1,1,1,1, 4) ->  5 : 108
(1,1,1,1, 5) ->  6 : 108
(1,1,1,1, 6) ->  7 : 111
(1,1,1,1, 7) ->  8 :  32
(1,1,1,1, 8) ->  9 : 119
(1,1,1,1, 9) -> 10 : 111
(1,1,1,1,10) -> 11 : 114
(1,1,1,1,11) -> 12 : 108
(1,1,1,1,12) ->  # : 100

Su ejecución se basa en la simulación de los efectos de la gravedad en un número infinito pero contable de partículas.

Mycelium

Este es un lenguaje basado en imágenes, en el que las instrucciones se leen desde una imagen en formato PNG. Dado que hay libertad en cuanto a los colores de cada pixel necesarios para crear una instrucción, se pueden esconder programas enteros en una fotografía. Es bastante complicado, pero puede tener ciertas utilidades. Puedes conocer más detalles aquí.

Nuestro saludo universal tiene esta pinta en este lenguaje:

Hello_mycelium

La imagen está ampliada 30 veces porque en su tamaño normal mide tan solo 7x4 pixeles.

Pi

Este te encantará si eres matemático... Es una variante de BrainFuck que introduce codificadas las instrucciones base de ese otro lenguaje dentro de los dígitos (infinitos) del número Pi, incluyendo errores en algunos dígitos aleatorios para ofuscar más aún el programa.

Un "Hola Mundo" dentro de Pi tendría esta pinta:

  3.1415926535897932384226433232725028841271693992751358239749245923072164062
  822089986780348053431120629821483865332223366470908446395535832317223594083
  284831172502841037019385311052596446029489529303219642288009756259134461214
  751482337817834652812009021456285664234613486134553226482133236073603491413
  737242870066363155841744815239239622292545917053643278925902605113301301488
  204625213821429519415316024320522703627595939530921261373219226137931021185
  580744023794627495273518257527348912274384830113491298346743644406563430865
  2133494633522473749030217386093370277033921317659317670238267581846066440

Una pequeña locura, pero que puede esconder instrucciones en el lugar más insospechado.

Tree

Árbol en inglés, este lenguaje está pensado para que el código quede siempre formando bonitos árboles y además está hecho a propósito para que no sea Turing Completo.

Mira qué preciosidad es el "Hola Mundo":

      ^
    ^^|^^ 
   ^^\|/^^
   H^ |/^^^
     \| e
      |/
   ol~|  
     \| 
  , 32|  W
   \/ | /      
    \ |/   
 l   \|  
 \  d |   o
  \/ !|r /   
   \/ |\/
    \ |/ 
     \|

Si te interesa la naturaleza, quizá este sea tu lenguaje ;-) Aquí tienes más detalles.

Unicat

Otro lenguaje raruno, esta vez para los amantes de los gatos. Las instrucciones de Unicat son exclusivamente 9 emoticones de gatos. Se hace caso omiso de cualquier otro carácter que escribamos, así que podríamos insertar comentarios donde quisiéramos.

El programa patrón tiene este aspecto:

unicat-HolaMundo

Y tenemos un intérprete, documentación y ejemplos en GitHub.

Más ejemplos

¿Cómo te has quedado? Aquí tan solo te hemos dejado 10 ejemplos, pero en la página de esolangs tienes un "Hola mundo" escrito en más de 200 lenguajes esotéricos.

Más allá de su utilidad práctica, algunos de ellos son experimentos interesantes en teoría de compiladores o intérpretes, y otros son un mero divertimento. En esta página te puedes pasar un largo rato buceando entre ellos y descubriendo cosas raras.

¡Que te diviertas!

Créditos de la fotografía "Hidden Mystique": Fayez

campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP

No te pierdas ningún post

Únete gratis a nuestro canal en Telegram y te avisaremos en el momento en el que publiquemos uno nuevo.

Archivado en: DevFacts

Comentarios (2) -

Alberto Población
Alberto Población

Estoy decepcionado. En la lista de los 1.035 lenguajes (y en la de los 700) no aparece el Boriar que yo inventé. Y eso que se vendieron del orden de 1000 copias del compilador :-)

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Alberto:

Vaya, no lo sabía :-)

Pues quizá deberías darte de alta en el Wiki y meter una entrada con info y ejemplos en ese lenguaje.

¡Nos vemos!

Responder

Agregar comentario