Avremo mai sul serio codice ad alto livello? Questo post mi è stato ispirato all’articolo di Daniele su Comega, dalla compattezza del linguaggio e dal tentativo (secondo me) di rendere meno leggibile il codice, allo scopo però ovviamente di ottenere costrutti più efficienti, veloci o comunque sorgente da dare in pasto al compilatore. Mi è tornata in mente una cosa. Quando ero ancora bambino (parlo dei grandiosi anni 80, lo ricordo ancora oggi perché ogni tanto i miei genitori me lo ricordano, eh eh eh) credevo che i computer (all’epoca miseri 8 bit) si programmassero semplicemente scrivendo qualcosa tipo: voglio un albero qui, ecco, poi metto la strada al centro, bella dritta. Adesso ci metto una macchina, rossa, che viaggia e via dicendo. Insomma, pensavo che i linguaggi ad alto livello (ma alto sul serio) fossero già stati creati. Oggi sorrido se penso alla concezione che avevo in quel periodo.
Oggi mi accorgo, vivendoci ogni giorno, che questo obiettivo ovviamente non è stato ancora raggiunto. La mia domanda è se raggiungeremo veramente un giorno questo obiettivo. I vari framework e le piattaforme di sviluppo (.NET, Java, etc. etc.) astraggono gran parte dei problemi e dei casini, lasciando al programmatore compiti più “umani”: interfaccia utente, algoritmi, etc. etc. Però se ci pensiamo un attimo, passano gli anni, però noi programmatori sono siamo sempre lì a litigare con banali variabili, a come convertire una stringa, manipolare oggetti, lavorare con combobox e contare gli elementi di un array. Operazioni tutto sommato a bassissimo livello rispetto alla realtà che ci circonda. Se faccio il paragone tra hardware e software, vediamo come il primo ha fatto passi avanti terrificanti (basta misurare la pura potenza di calcolo, ai Mhz, o la memoria RAM, senza pensare a tutto il resto), mentre il software è rimasto lì, relativamente parlando. Non sto tanto parlando dal punto di vista utente, perché anche qui il progresso c’è stato (esempio: le interfacce utente): prendiamo un videogioco di 10 anni e uno attuale. Se c’è qualcuno disposto a dire che sono anche lontanamente simili, alzi la mano e poi esca dalla stanza, piano piano senza distubare gli altri. Eh eh eh.
Il mio punto di vista è quello dello sviluppatore. Alla fine, dietro ai framework, ai cosiddetti linguaggi ad alto livello, cosa abbiamo realmente? Il C è diventato C++, poi C#. GWBasic è diventato QuickBasic, poi Visual Basic. Pascal è diventato Delphi, etc. etc. Però dietro le strutture e la logica di base è rimasta sempre la stessa: i soliti cicli for-next, do-while, strutture condizionali, etc. etc. Da questo punto di vista il software è rimasto assolutamente fermo. Mi domando ad esempio se non ci siano esperti che abbiano previsto quale potrebbe essere la prossima vera rivoluzione in questo senso, qualcosa che oggi non pensiamo nemmeno, troppo ancorati alle metodologie di programmazione odierne. Ad esempio, potrebbe servire a qualcosa l’intelligenza artificiale? Quando le cose cambieranno sul serio? Quando potrò dire al mio PC qualcosa tipo Dim Abete as New Albero, senza scendere nel dettaglio, senza complicazioni? Quando un *qualcosa* riuscire a capire in modo completamente autonomo quello che deve fare?
Rileggendomi, prima di cliccare sul pulsante POST, è quasi un discorso che fa ridere, però…oh, che vi devo dire, è un sogno che ho fin da bambino. C’è qualcuno disposto a realizzarlo?