A 60 anni suonati togliamoci un sassolino dalla scarpa sul Basic: di solito questi articoli cominciano così “Ha compiuto 60 anni ma non li dimostra”; “È stata una rivoluzione silenziosa”; “Ha democratizzato l’informatica e ispirato miriadi di programmatori e appassionati”. E poi, ma solo alla fine, si fa notare il grande problema che invece ha provocato.
Questa volta però scegliamo di partire proprio da quella fine. Il Basic, acronimo che sta per “Beginner’s All-Purpose Symbolic Instruction Code”, creato dai matematici John G. Kemeny e Thomas E. Kurtz del Dartmouth College per il mainframe General Electric GE-225, aveva molti difetti, alcune ottime intuizioni ma soprattutto un problema sostanziale che ha piagato miliardi di righe di codice e la vita di vita di milioni di utenti e programmatori. Ecco, adesso vediamo dal principio di cosa stiamo parlando, per capire qual era il problema.
Inventare un linguaggio di programmazione
Il Basic è un linguaggio di programmazione interpretato, che non richiede cioè un compilatore. Il sistema operativo utilizza un interprete che lo legge, una riga dopo l’altra, per capire quali istruzioni eseguire. Anche il codice Html (e i linguaggi Css e Javascript che lo accompagnano) sono linguaggi interpretati e non compilati: l’interprete è nel “motore” del vostro browser. Ma questi ultimi linguaggi sono infinitamente più moderni del Basic delle origini e di molte versioni successive semplicemente perché costruiti sulle spalle dei giganti che li hanno preceduti e quindi pensati meglio.
Il Basic quando è nato aveva uno scopo didattico e non operativo, almeno inizialmente. E come tale, era pensato per essere facile da imparare e soprattutto da usare, più che per raggiungere complessi risultati. Per questo era “interpretato”: più facile da scrivere e più facile da debuggare e correggere di un linguaggio che invece richiedesse un tempo di compilazione offre in cambio però una serie di prestazioni e funzionalità più avanzate.
La “pars destruens” del Basic
Vogliamo dirla tutta? Ok, apriamo allora questa “pars destruens” della sua celebrazione: questa parte di critica serrata, per poi vedere cosa c’è (ancora) di buono nel Basic.
Infatti, il Basic aveva dei limiti proprio per come era stato architettato, almeno nelle prime versioni: una scarsa gestione della memoria (che portava rapidamente alla frammentazione ed esaurimento della memoria disponibile per programmi appena un po’ più grandi), fortissimi limiti nella tipizzazione, cioè nella gestione dei tipi dei dati (niente tipi dinamici o complessi) e soprattutto il suo vero e più spettacolare problema: la struttura del codice.
Infatti, a causa del modo con il quale veniva scritto il programma Basic, era possibile non solo creare dei comandi sintatticamente ambigui (questo è un problema anche dell’Html, per esempio) ma soprattutto non era strutturato il flusso delle istruzioni.
La ricetta velenosa
È lo Spaghetti Code, il termine dismissivo per indicare il problema che scaturiva da questa mancanza di struttura: difficile leggere e capire programmi lunghi, difficilissimo da mantenere, pieno di loop e di altri problemi dovuti alla mancanza di procedure e sottoprogrammi pensati per inserirsi in maniera modulare. Chi scriveva, per dirla in modo semplice, doveva fare salti in continuazione, aprire cicli che magari non si chiudevano più perché l’esecuzione “saltava” su altre parti del programma e via dicendo. Un grande caos.
Una grande bellezza
È normale che fosse così, se vogliamo, perché sessant’anni fa l’esigenza non era creare le app o fornire anche solo dei programmi funzionali per il mainframe di turno. Invece, il Basic era stato pensato come uno strumento didattico che doveva insegnare un metodo di pensiero (il “pensiero computazionale”) che facesse apprendere agli alunni in maniera introduttiva come scrivere programmi per il computer. Per scrivere codice “sul serio” si ricorreva ad altri linguaggi sia di basso che di alto livello, dal Cobol al Fortran all’Assembly.
Il grande successo del Basic è stato dovuto al fatto che la facilità di funzionamento e la sorte benigna (ci vuole sempre un tot di fortuna, anche per il linguaggi di programmazione) lo hanno trasformato nella “base” che compariva in tutti gli home computer degli anni Settanta, compreso il più popolare di tutti cioè il Commodore 64.
Piccoli poteri, grandi responsabilità
Dopodiché la gente si sa com’è fatta: si è adattata a quel che aveva. Usando il Basic si poteva mettere assieme un gestionale per una piccola azienda o un piccolo sistema di archiviazione dei dati per un ufficio senza ricorrere a programmatori esperti (merce rara all’epoca). E da qui è nato un uso e un abuso del Basic che lo hanno portato al di là delle sue capacità strutturali.
Ogni linguaggio “Turing completo” (con questa espressione si intende un sistema in grado di simulare una qualsiasi macchina di Turing, dei modelli teorici di calcolo creati nel 1936 da Alan Turing) ha un certo tipo di “espressività” e il Basic, che nelle sue prime incarnazioni non era neanche Turing completo, cioè non un vero e proprio linguaggio di programmazione.
Dopo, tuttavia, ha subito per tutti gli anni Settanta e Ottanta un rapido processo di complessificazione apposta per poter fare di più “esprimendolo” meglio, pur rimanendo all’interno di un limite fortissimo di gestione della memoria, della complessità del codice e in generale delle performance degli interpreti che lo rendono comunque poco più di uno strumento didattico.
E adesso, la “pars construens”
Ecco, dopo esserci tolti questo sassolone (altro che sassolino) dalla scarpa a ben sessant’anni di distanza dalla sua nascita, avrete capito che siamo in realtà qui per celebrare l’importanza di questo linguaggio di programmazione. La vera nave scuola di milioni e milioni di persone, molte delle quali poi hanno continuato la loro vita nel mondo dell’informatica, costituendo la prima, vera ondata di “nativi digitali”, cioè di persone, oggi poco meno che sessantenni, esposte fin dalla più tenera età al mondo del pensiero computazionale.
Con questa prospettiva, il Basic non è semplicemente geniale. È un vero e proprio monumento all’intraprendenza e all’abilità di una generazione di pensatori e creatori di tecnologia che sono riusciti a trovare il modo per rendere autosufficienti milioni e milioni di ragazzini e ragazzine. Persone che probabilmente non sapevano ancora cos’era un’equazione perché a scuola non si era nemmeno arrivati a quella parte del libro di testo, ma che riuscivano a implementare in modo intuitivo algoritmi per calcolare orbite, parabole, raggi di curvatura con una, due e tre variabili.
La grande mossa di Microsoft
Torniamo dunque a noi, e anzi ai 60 anni del Basic. Il tempo è galantuomo e come scriva Mauro Notarianni a 44 anni dalla nascita del Basic, il linguaggio è cresciuto in modo sostanziale: “Il Basic poteva essere utile e sfruttato non solo con i mainframe. Paul Allen e Bill Gates lo adottarono a partire dal 1975 e ancora oggi il linguaggio è ampiamente usato in varie scuole per insegnare i principi della programmazione.
“Col passare degli anni, ovviamente, sono nate varianti molto più complesse e complete, fino ad arrivare a varianti strutturate con il QuickBasic prima e il VisualBasic/RealBasic dopo, in grado di gestire eventi e la GUI dei moderni sistemi operativi. C’è persino chi, “inorridito” dal proliferare di queste ultime varianti, ha sviluppato il TrueBasic, una variante “snella” che rispetta gli standard ANSI e ISO”.
Insomma, il Basic è cambiato radicalmente: c’è persino RealBasic (oggi Xojo), un Basic strutturato, procedurale ed event-driven molto potente, grazie al quale è possibile creare applicazioni per Mac, Windows e Linux che poco o nulla ha a che fare con il “grezzo” linguaggio delle origini.