Linguaggio di programmazione esoterico

Da Wikipedia, l'enciclopedia libera.

Un linguaggio di programmazione esoterico è una tipologia di linguaggi di programmazione particolarmente complessi e volutamente meno chiari possibile. Questi linguaggi, popolari fra gli hacker e gli utenti più che abili, non hanno una vera utilità nel mondo reale, ma sono generalmente concepiti per mettere alla prova i limiti della programmazione su computer, come proof of concept per dimostrare una teoria o per semplice divertimento. Alcuni, invece, sono concepiti come esercizio per comprendere meglio il funzionamento di un calcolatore.

Storia[modifica | modifica wikitesto]

Il primo esempio di linguaggio esoterico è stato INTERCAL, scritto nel 1972 da James M. Lyon e Don Woods, col tentativo di creare un linguaggio totalmente differente da quelli esistenti all'epoca, parodiando elementi di Fortran, COBOL, e assembly.[1]

Venti anni più tardi Wouter van Oortmerssen ha creato FALSE, un linguaggio basato sul concetto di macchina a stack dotato di una sintassi confusa, illeggibile ed estremamente concisa: il compilatore occupa solamente 1024 byte. Questo ha in seguito ispirato Urban Müller a creare un linguaggio ancora più conciso, il Brainfuck, composto da soli otto caratteri riconosciuti.[2] Insieme al Befunge creato da Chris Pressey, sono i due linguaggi esoterici più noti.

Esempi[modifica | modifica wikitesto]

Di seguito alcuni esempi del classico programma hello world o di singole istruzioni scritte con linguaggi esoterici:

  • LOLCODE è stato creato per imitare il linguaggio dei "lolcat".
HAI   
CAN HAS STDIO?   
VISIBLE "HAI WORLD!"   
KTHXBYE 
  • Befunge è un linguaggio nel quale i programmi sono "distesi" in un array bidimensionale, nel quale il puntatore viene fatto scorrere.
"dlroW olleH">:v
             ^,_@
  • Brainfuck è uno dei linguaggi esoterici più estremi, nel quale minimalismo e offuscazione del codice sono portati a livelli molto elevati.
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
  • Chef è stato sviluppato in modo che i suoi programmi sembrino ricette di cucina; per esempio, il seguente costrutto inserisce un valore in uno stack:
Put cinnamon into 2nd mixing bowl
  • FALSE è un linguaggio basato sugli stack, dotato di comandi a singolo carattere e variabili. Esempio di come visualizzare i numeri primi fino a 100:
99 9[1-$][\$@$@$@$@\/*=[1-$$[%\1-$@]?0=[\$.' ,\]?]?]#
  • In Shakespeare le istruzioni ricalcano gli scritti dell'omonimo drammaturgo. Ad esempio, la frase seguente indica un punto nel listato che può essere raggiunto tramite un'istruzione simile a GOTO:
Act I: Hamlet's insults and flattery.
  • Malbolge è talmente complesso che il primo programma "Hello world" funzionante è arrivato due anni dopo il suo rilascio:
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<

Note[modifica | modifica wikitesto]

  1. ^ The A-Z of Programming Languages: INTERCAL
  2. ^ Brainfuck - An Eight-Instruction Turing-Complete Programming Language

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica