Quando si parla di linguaggi di programmazione, spesso si parla di linguaggi funzionali o ad oggetti, o comunque di realtà ben consolidate da tempo all’interno del mondo informatico. Che cosa sono dunque questi linguaggi esoterici, e da dove vengono?
C’è sempre quella nicchia di programmatori, comunemente chiamati hackers, a cui diverte inventare o imparare linguaggi fuori dal comune, dove non esistono le classiche regole. Dalla volontà di creare linguaggi “strani“, lì nascono i linguaggi esoterici, linguaggi che spesso sono di difficile comprensione, e che passano inosservati, se letti da qualsiasi persona che non sappia l’esistenza di questo tipo di linguaggio.
Un linguaggio esoterico è dunque un linguaggio di programmazione appositamente complesso ed oscuro ai più.
Guardate questo testo
Put cinnamon into 2nd mixing bowl
Si tratta dell’inserimento nello stack di un valore definito precedentemente, ma apparentemente sembra parte di una ricetta. Frutto del linguaggio Chef!
Ora diamo uno sguardo a queste immagini:
Sono due immagini 13×13 e 14×14 apparentemente senza senso, con un che di “artistico”.
Ebbene, entrambe queste immagini, secondo le regole del linguaggio Piet (dall’artista Mondrian, alle cui opere si ispira) stampano sullo standard output il famoso “Hello World!\n”.
NB: La seconda immagine ha 3 diverse colorazioni che stampano sempre la stessa stringa a schermo.
Considerate ora il fatto che le immagini precedenti sono ovviamente ingrandite, ma in realtà un quadratino colorato corrisponde ad un pixel. Ecco come risulterebbero:
Abbastanza piccole da passare inosservate, sopratutto se poste all’interno di un’immagine più grande.
Come suggerisce il nome di questo linguaggio, il codice risulterà molto incomprensibile, come sempre del resto per questo tipo di linguaggi.
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
Indovinate cosa fa questo codice? Stampa “Hello World!\n”!
In Brainfuck sono disponibili 8 simboli che compongono ogni programma: < > + – [ ] . ,
La particolarità di Brainfuck sta nel fatto che possa essere eseguito persino su una macchina di Turing, infatti le operazioni di questo linguaggio sono: decremento/incremento del puntatore (o della “testina”), incremento o decremento del valore puntato dal puntatore, istruzioni di confronto e loop, e operazioni di output/input.
Mentre Piet offusca il programma in un’immagine, Whitespace lo nasconde in un testo.
Whitespace usa 3 simboli: lo Spazio, la Tabulazione, e il LineFeed (“a capo”). Questi 3 simboli formano, con diverse combinazioni, tutte le istruzioni necessarie.
La parte “divertente” sta nel fatto che se aprite con un editor di testo un programma in whitespace, o se lo stampate su carta, vi troverete di fronte ad un foglio completamente bianco. Da qui ovviamente il nome Whitespace.
Per oggi sui linguaggi esoterici è tutto, seguiteci anche su Facebook, Google Plus, Tumblr e Twitter, per restare sempre in contatto con noi e con le nostre guide.
Appassionato fin da piccolo al mondo telematico, segue la sua passione studiando Ingegneria Informatica presso il Politecnico di Milano. Predilige linguaggi lato client come C, Java, Ruby e Python, ma ha conoscenze anche nel web con PHP, SQL, Javascript, HTML e CSS. Preferisce lavorare approfonditamente ai cuori dei programmi, tralasciando la grafica come parte finale ‘opzionale’.