Extraños lenguajes informáticos: guía de campo para hackers

¿Por qué construimos radios o relojes cuando puedes comprarlos? ¿Por qué hacemos que los LED parpadeen sin un propósito aparente? ¿Por qué estamos tratando de exprimir un cuadro extra de nuestras tarjetas de video? No sabemos por qué, pero lo sabemos. Esa podría ser la misma actitud que la mayoría de la gente tendría al aprender sobre esolenguajes - lenguajes de programación esotéricos - no sabemos por qué la gente los crea o los usa, pero lo sabemos.

No estamos hablando de lenguajes principales que molestan a la gente como Lisp, Forth o VBA. No estamos hablando de lenguajes antiguos que hoy parecen crípticos como APL o Prolog. Estamos hablando de lenguajes que están hechos para ser... bueno... raros.

INTERCAL

Tenemos que empezar desde el principio. INTERCAL. Esto comenzó como una broma en 1972 y se dice que el acrónimo es un acrónimo de lenguaje compilado sin pronunciar. Sin embargo, no hubo una implementación efectiva hasta alrededor de 1990. Ahora hay dos: C-INTERCAL y CLC-INTERCAL.

Debido a que INTERCAL es una parodia, toma algunas decisiones muy extrañas. Por ejemplo, los operadores bidireccionales como AND funcionan con dos argumentos, pero uno de los argumentos se invierte. Es decir, el bit superior de un operando coincide con el bit inferior del segundo operando. Con un guiño a una convención social, hay un modificador conocido como POR FAVOR, que a veces usa cuando, por ejemplo, lee datos como "POR FAVOR LÉALO". Si no lo usa con la suficiente frecuencia, la compilación no le advertirá que el programa no es lo suficientemente correcto. Sin embargo, si lo usa con demasiada frecuencia, también obtendrá el error de que su programa es demasiado correcto.

Originalmente, la implementación usaba EBCDIC, por lo que usa algunos caracteres que no aparecen en los sistemas ASCII de 7 bits convencionales. Esto ha obligado a algunos reemplazos de caracteres y ahora, con Unicode, algunas versiones permitirán los caracteres antiguos si los prefiere. El manual de INTERCAL cambia el nombre de casi todos los signos especiales para mayor confusión. Una comilla simple es "chispa" y el signo igual es "medio bucle". Solo el letrero y permanece intacto.

¿Quieres saber más? Presta atención a lo que quieres.

FALSO y Brainf**k

Avance rápido hasta 1993 hasta el nacimiento de FALSE, un lenguaje de pila hecho para ser ilegible. Como consuelo, el compilador necesitaba solo 1.024 bytes. Eso inspiró un lenguaje aún más minimalista, Brainf**k. Solo se necesitan ocho caracteres en un programa BF.

Brainf**k ha generado muchos lenguajes similares como Befunge y JSF**k. Si has oído hablar de un solo idioma en esta publicación, probablemente sea este.

Cómo se ve? De la Wiki de lenguaje esotérico:

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

¡Eso es Hello World, por cierto!

Lógica Binaria Combinada y Unlambda

Una vez conocimos a un profesor universitario que solía decir "maximizar la variable booleana" cuando quería decir "poner el bit a 1". Creemos que le gustaría BCL. Si desea expresar la verdad en BCL, escriba K (KK). ¿Falso? K (K (SK)). Está empeorando a partir de ahí. Jen XOR: S (S (S (SS) (S (S (SK))) S)) K.

Sin embargo, esto es binario, por lo que S es realmente 01 y K es 00 y el paréntesis izquierdo es singular 1. Súper extraño y aparentemente tiene alguna aplicación en algunos estudios matemáticos teóricos.

Hay varias versiones de esto, todas ligeramente diferentes. Unlambda, por ejemplo, utiliza muchos caracteres diferentes. Aquí está el programa "gato" en Unlambda:

```s`d`@|i`ci

espacio en blanco

La mayoría de los lenguajes de programación no se preocupan por los espacios en blanco y puedes usarlos libremente o no. Es decir, en C podemos escribir:

x = 10 * 2;

o:

X = 10

*

2;

Al compilador no le importa. Python es diferente. Los niveles de sangría importan. El espacio en blanco lleva eso al extremo. Todo el programa está escrito en tabulador, espacio y avance de línea, y todo se ignora. Esto puede sonar extraño, pero curiosamente le permite ocultar un programa dentro de otro programa, siempre que no sea un programa de Python.

El primer signo en blanco le dice lo que significa el siguiente. Por ejemplo, todas las secuencias de control de flujo comienzan con un paso de línea. La manipulación de la pila comienza con el espacio. El tabulador y el paso de línea introducen operaciones de E/S. Una pestaña y un espacio son para matemáticas y dos pestañas administran el acceso masivo.

Los números pares están en binario, donde el espacio es positivo, la tabulación es negativa. Después de eso, el espacio es 0 y la pestaña es 1.

LOLKODO

Si bien el espacio en blanco es quizás incluso menos inteligible que Brainf ** k, algunos idiomas intentan imitar cosas legibles particulares. Caso en cuestión: LOLCODE que tiene programas que coinciden con los subtítulos de memes LOLCAT. Aparentemente, los LOLCAT fueron la razón principal por la que se inventó Internet, después de todo.

¿Por qué creemos que los gatos hablan así? No estamos seguros, pero creemos que la historia dentro del cerebro de un gato real es más como: "¡Definitivamente es difícil encontrar buenos sirvientes hoy!" Los antiguos egipcios adoraban a los gatos y los gatos no lo olvidaban.

Aquí hay un programa para contar hasta 10:

HAI 1.3
IM IN YR loop UPPIN YR var TIL BOTH SAEM var AN 10
VISIBLE SMOOSH var AN " " MKAY!
IM OUTTA YR loop
KTHXBYE

Estrella de rock

Tal vez no seas fan de LOLCATs pero te gusta la música rock. Entonces, Rockstar es el lenguaje de programación para ti. Los nombres de variables pueden ser casi cualquier cosa y los datos tienen tipos como "misterioso".

Suponemos que para ser un buen codificador en este idioma hay que dejarse crecer el pelo, murmurar y poseer al menos una prenda de spandex. Piénsalo, eso describe a bastantes programadores que conocemos.

Entre las cosas sabias que hace, los números se expresan en longitud de palabra, y muchas construcciones del programa tienen correlaciones "obvias" en el idioma inglés. Entonces "El odio es agua" asigna 5 a la variable "Odio".

Aquí está Fizbuzz escrito en Rockstar:

Midnight takes your heart and your soul
While your heart is as high as your soul
Put your heart without your soul into your heart

Give back your heart

Desire is a lovestruck ladykiller
My world is nothing 
Fire is ice
Hate is water
Until my world is Desire,
Build my world up
If Midnight taking my world, Fire is nothing and Midnight taking my world, Hate is nothing
Shout "FizzBuzz!"
Take it to the top

If Midnight taking my world, Fire is nothing
Shout "Fizz!"
Take it to the top

If Midnight taking my world, Hate is nothing
Say "Buzz!"
Take it to the top

Whisper my world

Shakespeare

Si la música rock es demasiado pedestre para usted, siempre está SPL, el lenguaje de programación de Shakespeare. Al igual que el bardo, el lenguaje de programación no es conocido por su economía de palabras.

Los números son especialmente difíciles en SPL. Los sustantivos tienen un valor de -1 o 1 dependiendo de cuán hermosos sean (por ejemplo, los árboles y las flores valen 1 mientras que los cerdos valen -1). Los adjetivos se multiplican por 2. Así que "mentiroso, estúpido, huérfano, grande, maloliente, tonto, cobarde" es -1 (cobarde) * 2 * 2 * 2 * 2 * 2 * 2 = -64.

Alrededor del enfriador de agua La-Tecnologia, pensamos en escribir una nueva versión de este lenguaje donde todos los programas están en forma de conversación entre el bardo y Sir Francis Bacon. Lo llamaremos Shake 'n Bake.

Esta es solo una parte del programa electrónico Hello World script de 89 líneas:

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]

Scene II: The praising of Juliet.

[Enter Juliet]

Hamlet:
Thou art as sweet as the sum of the sum of Romeo and his horse and his
black cat! Speak thy mind!

Malbolge

Malbolge fue diseñado para ser difícil de usar. Según se informa, el primer programa para imprimir hola mundo requirió otro programa de computadora para buscar todos los programas posibles hasta encontrar la secuencia correcta. Si no reconoce la referencia, Malbolge es un error ortográfico de Malebolge, la octava ronda del infierno en Dante. Infierno.

Malbolge utiliza una máquina virtual básica de tres. Solo hay unas pocas instrucciones que incluyen girar a la derecha y la operación "loca", que cambia bits de una manera definida en una matriz y, por lo que sabemos, no tiene nada que ver con ninguna operación matemática normal, y es básicamente encriptación. Malbolge es tan horrible que se han hecho algunos intentos como Dis para ser "un poco menos malo".

Piet

¿Alguna vez has notado cómo en las películas de ciencia ficción, los extraterrestres casi siempre se comunican usando algún tipo de sonido que podemos escuchar? O hablan inglés o hablan algo que suena como Andy Kaufmann haciendo un personaje. Rara vez se ven extraterrestres que se iluminan, emiten feromonas o irradian ondas de radio de baja frecuencia para comunicarse. Todos los idiomas en esta lista usan ciertos caracteres o como números, símbolos o palabras. Excepto Piet. Los programas de Piet son un arte abstracto del tipo creado por Piet Mondrian.

Una sola unidad de código es un códelo y los bloques de códelos tienen el mismo color. El "contador de programa" se puede mover en dos dimensiones, por supuesto. Si Piet interpretara, por ejemplo, el rojo como una adición y el verde como un salto, sería otra forma de simbolismo. Pero eso no funciona. En cambio, el intérprete observa el cambio de tono e intensidad entre los colores. Entonces, un paso en el tono y ningún cambio en la luminosidad es una operación adicional. Pero si el color cambia más oscuro, eso es restar. Aquí hay un mundo de saludo en Piet. ¡No nos pidas que te lo expliquemos!

¿Por qué? ¿Por qué?

No vale la pena preguntarse por qué la gente crea o usa estos lenguajes. ¿Por qué la gente compra rocas para mascotas? ¿Por qué la gente colecciona sellos? Simplemente lo hacen. Sin embargo, aprender un poco sobre uno de estos curiosos idiomas puede sacarte de tu zona de confort y eso no siempre es malo. Además, muchas personas dirían que escribir un montaje para PIC o AVR es solo un poco menos críptico que Malbolge y muchos lectores de La-Tecnologia.

En cuanto a nosotros, nos quedaremos con lenguajes de programación más prácticos. Forth parece críptico, pero es genial y puede crear programas muy legibles en manos de un experto. Sin embargo, a veces nos sumergimos en estos idiomas por diversión.

Alejandro Vargas
Alejandro Vargas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.