software,

Python, il Visual Basic del XXI secolo?

Sabino Maggi Sabino Maggi Segui 19-Apr-2021 · 7 minuti di lettura
Condividi

Microsoft Visual Basic 1.0 per Windows 3.0 (e versioni successive). Fonte: WinWorld.

Ho appena letto l’articolo Is Python the Spiritual Successor to Visual Basic? di Matthew MacDonald e non potrei essere più d’accordo, tanto più che ho fatto esattamente lo stesso percorso, Visual Basic nei primi anni ‘90 e Python (assieme ad R) oggi.


Visual Basic è stato un linguaggio davvero rivoluzionario, il primo che permetteva di aggiungere in modo semplice una interfaccia grafica ai programmi scritti in BASIC, un linguaggio di programmazione ben noto a tutti coloro che avevano vissuto la stagione degli home computer come il Commodore 64 o lo Spectrum.1

A me, abituato ad usare il Fortran o uno dei vari linguaggi Turbo-qualcosa e Quick-qualcosa che all’epoca spopolavano, Visual Basic sembrò all’inizio come una ventata di aria fresca e lo usai subito per un progetto a cui tenevo moltissimo (e che merita di essere raccontato più in dettaglio).

Ma dopo questa prima volta lo abbandonai senza remore, non solo perché nel frattempo avevo scoperto la potenza di UNIX e Windows era diventato improvvisamente troppo stretto per le mie esigenze, ma soprattutto perché avevo cozzato contro uno dei problemi più seri del linguaggio (almeno per me), l’incompatibilità fra le varie versioni, che impediva di eseguire il codice sviluppato per Visual Basic 1.0 già nella versione successiva della piattaforma di sviluppo. Ma dato che Microsoft già allora era maestra nel mettere i bastoni fra le ruote dei suoi utenti, nemmeno la compatibilità fra il Visual Basic 1.0 per Windows e la versione corrispondente per DOS era garantita al 100% (e questo era proprio il mio caso).

Non sapevo ancora nulla di free software o di open source, ma l’idea di dover dipendere dai capricci di una azienda di software mi sembrava già allora incomprensibile.

Visual Basic è considerato un prodotto Microsoft, ma in realtà è l’adattamento di un linguaggio di programmazione visuale per Windows 3.x, sviluppato in proprio da Alan Cooper (che lo aveva chiamato Ruby). L’idea originale di Cooper era di creare uno strumento con cui costruire con facilità delle interfacce grafiche che aiutassero gli utenti ad utilizzare al meglio il nuovo sistema operativo, interfacce che potevano essere diversificate in base al livello di esperienza di chi le usava.2 Tramite dei buoni agganci Alan Cooper riuscì a presentare il proprio prodotto a Bill Gates, che ne rimase entusiasta e decise immediatamente di acquistarne i diritti. Ruby però finì subito in un limbo, ostaggio delle strategie aziendali e delle rivalità fra i diversi gruppi di sviluppatori, per essere associato solo in un secondo momento al QBasic, il vecchio interprete Basic della Microsoft, diventando così il Visual Basic che conosciamo.

L’ambizioso obiettivo iniziale si ridusse così alla semplice riproposizione di un vecchio linguaggio di programmazione in una forma graficamente più accattivante. Alan Cooper sarà quindi anche considerato il padre del Visual Basic, ma la sua idea originale ha ben poco a che fare con il prodotto finale!

Date le premesse non ci si può stupire che Visual Basic abbia avuto una vita travagliata e relativamente breve, descritta con grande abbondanza di dettagli nell’articolo Visual Basic: Early Beginnings, pubblicato in uno dei blog più interessanti in assoluto sulla storia del Personal Computer.


Python oggi è uno dei linguaggi di programmazione più popolari, e con buona ragione. Python e Visual Basic sono praticamente coetanei: il primo ha festeggiato trent’anni a febbraio di quest’anno,3 mentre Visual Basic è stato pubblicato pochi mesi dopo, a maggio del 1991.

Ma Python, a differenza del Visual Basic, dopo una partenza lenta ha conosciuto negli ultimi anni un successo travolgente dovuto, a mio avviso, a due aspetti fondamentali del linguaggio:

  • Leggibilità. Python non è infarcito di parentesi e di segni di interpunzione come JavaScript, C/C++ o Java, e questo lo rende molto più leggibile dei linguaggi concorrenti. Se per un programmatore esperto questo può essere un dettaglio di poco conto, di sicuro aiuta i neofiti ad avvicinarsi al linguaggio. Anche il fatto che le istruzioni contenute all’interno dei cicli for e while o delle istruzioni condizionali if debbano essere indentate rispetto al resto del codice contribuisce moltissimo alla sua leggibilità, perché permette di afferrare “ad occhio” la struttura del programma. Questa caratteristica obbliga anche a rispettare una certa disciplina nella scrittura del codice (se non si rispetta la giusta indentazione il codice, anche se corretto dal punto di vista sintattico, si rifiuta di funzionare), che è sempre una cosa positiva quando si programma.

  • Flessibilità. Si può programmare in Python utilizzando indifferentemente un approccio procedurale, ad oggetti o funzionale, riuscendo spesso a mescolare senza troppi problemi i diversi metodi di programmazione all’interno dello stesso programma. Il linguaggio quindi si adatta facilmente alle abitudini dei singoli programmatori e consente di far evolvere il codice in base alle esigenze del momento. È abbastanza usuale, almeno per i programmatori dilettanti come me, cominciare a scrivere un programma in Python buttando giù le idee alla bell’e meglio, per passare solo in un secondo momento ad organizzare le parti principali in funzioni autonome, arrivando magari a creare una struttura di classi e metodi o a spingersi verso le asprezze della programmazione funzionale (in cui dati e funzioni diventano un tutto unico) quando serve un approccio più robusto.

La flessibilità del linguaggio viene sfruttata all’estremo dalle interfacce a notebook come Jupyter, che consentono di costruire dei veri e propri documenti programmabili, dove le parti di testo che descrivono il problema o i dettagli di funzionamento del codice si mescolano alle istruzioni Python e perfino ai dati e agli stessi risultati delle elaborazioni, dando all’utente la possibilità di sperimentare in modo interattivo e di eseguire il codice in modo non lineare (una pratica non sempre raccomandabile, ma che se tenuta sotto controllo è molto comoda).

Jupyter può essere utilizzato direttamente dal web, senza installare nulla sulla proprio computer e senza dover gestire le mille dipendenze dei pacchetti di terze parti che permettono a Python di essere usato in settori diversissimi, che spaziano dalle analisi scientifiche alla finanza o all’arte. Bisogna ammettere che la gestione dei pacchetti esterni è l’aspetto più complesso del linguaggio ed anche la sua principale debolezza, e che ancora oggi non esiste uno strumento universale per farlo.

Grazie a Colab di Google si può persino utilizzare una GPU (e in certi casi persino una TPU) per velocizzare i programmi su Jupyter, una cosa fantascientifica fino a pochissimi anni fa.

Sul fronte opposto, Python è in grado di girare anche su microcomputer da poche decine di euro, come le varie incarnazioni del Raspberry Pi, e perfino su alcuni microcontroller, come il recentissimo Raspberry Pi Pico, dei veri e propri computer ridotti all’osso.

Dal Visual Basic per Windows al Python di oggi se ne è fatta di strada!

Immagine generata da un testo mediante le reti neurali BigGAN e CLIP. Fonte: Reddit.

Immagine generata da un testo mediante le reti neurali BigGAN e CLIP. Fonte: Sabino Maggi.

  1. Prima del Visual Basic mi viene in mente solo LabView (sviluppato originariamente per MacOS), che però era un linguaggio iper-specializzato (e iper-costoso!) per la gestione della strumentazione elettronica di misura (e per l’automazione industriale in generale) e l’analisi dei dati acquisiti. 

  2. LabView (ancora!) perseguiva lo stesso scopo (e lo fa tuttora) nell’ambito, ben più ristretto, dell’automazione industriale. 

  3. Il codice originale di Python si trova qui, adattato in modo che possa essere ancora compilato sulle macchine moderne. 

Sabino Maggi
Pubblicato da Sabino Maggi Segui
Commenti

Aggiungi un commento