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.

I linguaggi più disprezzati dai programmatori Fonte: https://stackoverflow.blog/2017/10/31/disliked-programming-languages/

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.

Il programma cippalippa stabilisce se un numero sia divisibile per un altro numero, o se invece sbiliguda fifty-fifty

Luca Tringali

Luca Tringali

Giornalista, autore per GNU/Linux Magazine Italia dal 2010, e attuale redattore della rivista. Si occupa di divulgazione scientifica e tecnologica, in particolare nel campo dell'intelligenza artificiale e la sicurezza informatica.

Potrebbero interessarti anche...