Lenguaje de programación esotérico


Un lenguaje de programación esotérico (a veces abreviado como esolang ) es un lenguaje de programación diseñado para probar los límites del diseño de lenguajes de programación de computadoras, como prueba de concepto , como arte de software , como una interfaz de piratería para otro lenguaje (particularmente programación funcional o lenguajes de programación procedimental ). ), o como una broma. El uso de esotérico los distingue de los lenguajes que usan los desarrolladores para escribir software. Los creadores de la mayoría de los esolangs no pretenden que se utilicen para la programación principal, aunque algunas características esotéricas, como la sintaxis visoespacial ,[1] han inspirado aplicaciones prácticas en las artes. Dichos lenguajes suelen ser populares entre los piratas informáticos y los aficionados. [ cita requerida ]

La usabilidad rara vez es un objetivo para los diseñadores de lenguajes esotéricos; a menudo el diseño conduce a todo lo contrario. Su objetivo habitual es eliminar o reemplazar las características del lenguaje convencional mientras se mantiene un lenguaje que es Turing-completo , o incluso uno para el que se desconoce la clase computacional .

El ejemplo más antiguo, y todavía canónico, de un lenguaje esotérico es INTERCAL , [2] diseñado en 1972 por Don Woods y James M. Lyon, quienes dijeron que su intención era crear un lenguaje de programación diferente a cualquiera con el que estuvieran familiarizados. [3] [4] Parodiaba elementos de los lenguajes de programación establecidos de la época, como Fortran , COBOL y el lenguaje ensamblador .

Durante muchos años, INTERCAL estuvo representada únicamente por copias en papel del manual de INTERCAL. Su renacimiento en 1990 como una implementación en C bajo Unix estimuló una ola de interés en el diseño intencional de lenguajes informáticos esotéricos.

En 1993, Wouter van Oortmerssen creó FALSE, un pequeño lenguaje de programación orientado a pilas , con una sintaxis diseñada para hacer que el código sea intrínsecamente ofuscado, confuso e ilegible. También tiene un compilador de solo 1024 bytes. [5] Esto inspiró a Urban Müller a crear un lenguaje aún más pequeño, el ahora infame brainfuck , que consta de solo ocho caracteres reconocidos. Junto con Befunge de Chris Pressey (como FALSE, pero con un puntero de instrucción bidimensional), brainfuck es ahora uno de los lenguajes de programación esotéricos mejor soportados, con ejemplos canónicos de tarpits de Turing mínimos y funciones de lenguaje innecesariamente ofuscadas. Brainfuck está relacionado con la P′′familia de máquinas de Turing .

Befunge permite que el puntero de instrucción deambule en múltiples dimensiones a través del código. Por ejemplo, el siguiente programa muestra "Hello World" colocando los caracteres en orden inverso en la pila y luego imprimiendo los caracteres en un bucle que circula en el sentido de las agujas del reloj a través de las instrucciones >, :, v, _, ,y ^.


Programa Piet que imprime 'Piet'
Un programa "Hello World" en Piet