Il linguaggio di programmazione del futuro
Oggi esistono centinaia di linguaggi di programmazione, ciascuno progettato per uno scopo più o meno specifico. I programmatori, e gli studenti di informatica, scelgono i linguaggi da studiare in base a ciò che viene richiesto dal mercato oppure in base al gusto personale. Spesso si formano vere e proprie tifoserie, che credono nella supremazia di un linguaggio rispetto gli altri. Ci sono linguaggi molto vecchi e ormai obsoleti che si è però costretti a imparare perché le aziende non si decidono ad aggiornarsi. Ci sono linguaggi nuovissimi che per il loro sviluppo e supporto tolgono tempo e risorse a altri linguaggi più maturi.
Si possono fare tanti discorsi, a seconda della propria esperienza, della posizione lavorativa, e del personale approccio alla programmazione. Ma la realtà è che tutti vogliono sapere sempre la stessa cosa: qual è il linguaggio del futuro? In altre parole, esiste un linguaggio perfetto, adatto a ogni situazione? Un linguaggio facile da imparare, che si possa parlare con la disinvoltura delle lingue umane, come l’italiano e l’inglese, ma che offra la potenza necessaria a sfruttare le potenzialità di un computer moderno?
La risposta è si, e dopo estensive ricerche noi l’abbiamo scoperto: Monicelli.
Monicelli è un linguaggio di programmazione sviluppato da un italiano, Stefano Sanfilippo, l’utente Esseks su GitHub. Si tratta certamente del linguaggio definitivo: è talmente facile da leggere che il codice sorgente scritto in Monicelli è perfetto per essere inserito direttamente nei report aziendali destinati ai propri superiori.
I tipi di dato
Invece di utilizzare diciture oscure, come int, char, o bool, Monicelli utilizza dei nomi molto più orecchiabili. Un numero intero, della lunghezza di 64 bit, è chiamato Necchi. I caratteri, a 8 bit, sono chiamati Mascetti. I numeri a virgola mobile a 32 bit sono chiamati Perozzi, mentre i numeri con virgola a 64 bit sono chiamati Sassaroli. I valori booleani, vero o falso, sono i Melandri. Con questi nomi, chiunque può capire subito di cosa stiamo parlando.
Per dichiarare e inizializzare una variabile si utilizza una sintassi di questo tipo:
voglio <varname>, <type> come se fosse <expression>
L’istruzione come se fosse, infatti, assegna un valore alla variabile.
Per esempio
voglio antani, Necchi come se fosse 10
Se invece si vuole leggere il dato dallo standard input si può semplicemente chiedere che la variabile ci venga porta.
voglio antani, Necchi mi porga antani
La variabile può poi essere stampata su schermo chiedendo che sia a posterdati.
antani a posterdati
Le istruzioni di controllo
Porre condizioni è molto facile: visto che alla fine tutto si riduce a capire cosa sia contenuto dentro una variabile, basta chiederselo. Basta chiedersi “che cos’è”.
cavallo come se fosse antani per due che cos'è antani? cavallo: cavallo come se fosse cavallo per due antani a posterdati o magari minore di cavallo antani come se fosse antani più uno antani a posterdati e velocità di esecuzione
La chiusura del blocco if è segnata da un riferimento alla velocità di esecuzione. Perché questo linguaggio è geniale. E che cos’è il genio, se non fantasia, intuizione, decisione, e velocità di esecuzione?
Un ciclo, tipo loop, può essere dichiarato indicando che il codice stuzzica. E brematura.
stuzzica codice e brematura anche, se condizione
A proposito di blocchi di codice, per dichiarare una funzione è importante blindare la supercazzola, restituendo il valore con un vaffanzum.
blinda la supercazzola [tipo di dato, o nulla in caso di void] nomefuzione [con nomeparametro tipoparametro[, nomeparametro tipoparametro]] o scherziamo? codice vaffanzum variabile!
La stessa funzione viene poi chiamata brematurandola:
variabileoutput come se fosse brematurata la supercazzola nomefunzione [con argomento1[, argomento2] o scherziamo?
Un programma di esempio
Mettendo assieme tutto quello che abbiamo visto finora, proviamo a scrivere un semplice programma di esempio, che chiamiamo cippalippa.mc:
blinda la supercazzola Melandri zingarata con antani Perozzi, cofandina Necchi o scherziamo? voglio cappella, Necchi come se fosse 0 voglio vicesindaco, Melandri come se fosse 0 voglio tarapia, Sassaroli stuzzica tarapia come se fosse cofandina per cappella che cos'è tarapia? antani: vicesindaco come se fosse 1 o magari minore di antani cappella come se fosse cappella più 1 e velocità di esecuzione cappella a posterdati e brematura anche, se tarapia minore di antani vaffanzum vicesindaco! Lei ha clacsonato bituma 'Patente' a posterdati voglio antifurto, Perozzi mi porga antifurto bituma 'e libretto' a posterdati voglio vigile, Necchi mi porga vigile voglio scribai, Melandri come se fosse brematurata la supercazzola zingarata con antifurto, vigile o scherziamo? scribai a posterdati
Possiamo compilare il codice usando questa sintassi per il compilatore di Monicelli mcc:
~/mcc/bin/mcc cippalippa.mc -o cippalippa
Otterremo l’eseguibile ./cippalippa. Questo programma legge due numeri dalla tastiera e calcola se il primo sia divisibile per il secondo. Il risultato sarà qualcosa di questo tipo:
14 2 1 2 3 4 5 6 7 7 1
oppure
13 2 1 2 3 4 5 6 7 7 0
Infatti, 14 è divisibile per 2, quindi il risultato è 1 (vero), mentre 13 non è divisibile per 2 e il risultato è 0 (falso). In entrambi i casi, sono stati necessari 7 cicli per arrivare al risultato.
Ciò che conta, comunque, è che il linguaggio che abbiamo utilizzato è perfetto per parlare con chiunque non sia un programmatore. E anche con molti colleghi programmatori.