Linguaggio di programmazione esoterico
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.
Indice |
[modifica] Storia
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.
[modifica] Esempi
Di seguito alcuni esempi del classico programma hello world o di singole istruzioni scritte con linguaggi esoterici:
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 funzionante, Hello, world è arrivato due anni dopo il suo rilascio:
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCAA@98\6543W10/.R,+O<
[modifica] Note
- ^ The A-Z of Programming Languages: INTERCAL
- ^ Brainfuck - An Eight-Instruction Turing-Complete Programming Language
[modifica] Collegamenti esterni
|
|