fbpx
I 5 linguaggi di programmazione piu strani della storia

Viene il momento nella vita di ogni ingegnere di confrontarsi con un’ardua sfida informatica: imparare a programmare. C’è chi ha imparato Matlab, chi Python, Java, C++ o C per i più coraggiosi. Ci sono però alcuni linguaggi che si discostano dai più classici utilizzati oggi e hanno al loro interno diverse stranezze.

Esiste in internet Esolang: l’enciclopedia dei linguaggi di programmazione esoterici. Per rientrare in questa categoria un linguaggio deve essere minimale, alternativo, strano, più corto possibile, a tema, possibilmente creato per scherzo, difficile da leggere. Oggi vedremo 5 linguaggi che rispecchiano perfettamente questa definizione

1. Velato: un linguaggio per soli musicisti.

Velato utilizza un compilatore in grado di leggere e interpretare i file MIDI trasformandoli in un programma eseguibile. Funzioni e variabili sono definite dall’ordine e dall’intonazione delle note. Il linguaggio e` progettato per garantire flessibilità di composizione: un programma Velato non suonerà come note messe a caso ma avrà una sua armonia. I programmi tendono ad avere i suoni tipici del Jazz. Queste sono le note che descrivono un programma che stampa “Hello world” sul terminal:

2. LOLCODE: un lignuaggio ispirato da un meme

Creato nel 2007 da Adam Lindsay, ricercatore presso la Lancaster University. Il linguaggio e` ispirato al celebre LOLCAT. Tutte le parole sono scritte in maiuscolo ed è un linguaggio altamente leggibile a differenza dei precedenti, non utilizza infatti simboli o operatori se non parentesi e segni di punteggiatura per le frasi. La sua peculiarità sta nei tipi di dato utilizzati che sono ben distanti dai classici Integer, Float, Char. NOOB e` il tipo delle variabili senza alcun valore assegnato. BUKKIT e` l’equivalente di un array. TROOF e` l’equivalente di una variabile booleana e puo avere due valori WIN o FAIL. NUMBR rappresenta un intero mentre NUMBAR viene usato per i numeri decimali. YARN è un tipo che potrebbe essere definito come carattere speciale: le variabili YARN sono delimitate da doppi apici, alcune delle più celebri sono “:)”  che permette di andare a capo o “:O” che fa emettere un beep al computer.

3. Brainf***: lavorare con il piu piccolo compilatore possibile

Brainf*** nasce come linguaggio per una macchina di turing che possa essere implementato con il più piccolo compilatore possibile. Lavora su un array di bytes inizialmente posti a 0, un puntatore che punta alla prima cella dell’array e due stream di bytes per l’input e l’output. I comandi disponibili sono unicamente 8:

  • >: incrementa il puntatore
  • <: decrementa il puntatore
  • +: incrementa il byte indirizzato dal puntatore
  • : decrementa il byte indirizzato dal puntatore
  • .: stampa il carattere indirizzato dal puntatore
  • ,: inizializza la cella puntata al carattere letto
  • ]: salta in avanti all’istruzione dopo il corrispondente ] se il byte indirizzato dal puntatore è 0
  • [: salta indietro all’istruzione dopo il corrispondente [ se il byte indirizzato dal puntatore non è 0

Il linguaggio e` stato ispirato da FALSE: altro linguaggio esoterico con un compilatore di soli 1024 bytes. Un programma che stampa “hello world”  e` una stringa di questo tipo:

4. Intercal: il linguaggio educato

Abbreviazione di “Compiler Language With No Pronounceable Acronym”  e` stato creato nel 1972 da Donald R. Woods e James M. Lion. Consiste in una serie di dichiarazioni precedute da un’etichetta e da una frase opzionale che può essere DO, PLEASE e PLEASE DO. In particolare PLEASE e` integrato in due modi: se non viene usato abbastanza spesso viene mostrato un alert che avvisa che il programma non e` abbastanza educato; se viene usato troppo spesso invece l’alert annuncia che il programma e` troppo educato.

5. Whitespace: un linguaggio di soli spazi

Whitespace e` stato creato nel 2003 da Edwin Brady e Chris Morris. Utilizza solamente spazi e tab ogni altro carattere e` ignorato. Proprio per questa caratteristica un programma in whitespace può essere contenuto in un programma scritto in qualsiasi altro linguaggio. Le diverse combinazioni di spazi, tab e frecce sinistre definiscono comandi e tipi di dato. Per esempio per stampare il primo carattere contenuto nello stack si usa un doppio spazio, per la moltiplicazione un tab e uno spazio ecc…

 

E tu che ne pensi? Faccelo sapere!

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

%d blogger hanno fatto clic su Mi Piace per questo: