Sono grato a Guido Van Rossum per il linguaggio Python

Sinclair ZX 80
ZX80 [Daniel Ryde, Skövde]
Quando mi trovai tra le mani lo ZX80, nel 1981, la prima domanda che mi venne in mente, lo ricordo bene, fu: Ma come diavolo nasce un linguaggio di programmazione? 
Una domanda idiota, come le migliori domande del mondo, a cui non ho saputo trovare risposta neppure nel 1991 quando affrontai la storia dei computer nel corso Teoria e Applicazioni di Macchine Calcolatrici, con l'acronimo TAMC, all'Università di Cagliari. E neppure dopo. Fino a ieri, quando sono andato a cercare l'origine del linguaggio Python, che sto con curiosità studiando e con meraviglia, in qualche modo, forse anche amando. La risposta l'ho trovata nel blog di Guido Van Rossum l'uomo che nel 1991 (ebbene sì, proprio l'anno di TAMC, quando il mio principale obiettivo era imparare il Fortran) inventò questo linguaggio. 
Guido Van Rossum [Dan Stroud]

Lo scopo di Guido Van Rossum era chiaro: creare un linguaggio, cioè un codice, object-oriented: ovvero "orientato agli oggetti", in grado cioè di creare modelli di oggetti del mondo reale. Ma questo cosa significa? Pensiamo a cosa accade nella realtà. Per costruire oggetti complessi si assemblano oggetti più semplici, facili da sostituire, spesso costruiti da altri, come accade nella costruzione delle automobili o delle lavatrici, in cui il produttore finale assembla parti oggetti (tachimetro, oblò, ecc.) costruiti da altri produttori. Inoltre chi produce parti elettroniche non deve ogni volta reinventare il transistor o qualsiasi altro un componente modulare prefabbricato. Allo stesso modo nel programmare il Python non si fa altro che prendere concetti dal mondo reale (albero, casa, gatto) e imprigionarli dentro il codice.

Guido inoltre voleva che Python diventasse un linguaggio "multi-paradigmatico", in grado cioè di garantire non solo il "paradigma" object-oriented, ma anche la programmazione strutturata, quella, per capirci, che prevede la scomposizione del problema in sotto problemi più semplici e procedendo per blocchi di istruzioni da eseguire in sequenza. Il successo di Python è arrivato con la sua diffusione in ogni campo: nelle scuole (a quanto pare è la lingua più insegnata nelle scuole elementari del Regno Unito), nelle università (a quanto pare è il linguaggio di programmazione più diffuso nelle università statunitensi) e in ambito industriale (ad esempio: Amazon, Facebook, Google, IBM, NASA, Netflix, Walt DisneyAnimation, Youtube). 


E se Python è utilizzato nell'industria, non meno lo è nella ricerca: in bioinformatica, fisica, ingegneria, matematica. Perché tanta diffusione? Sicuramente uno dei suoi pregi è la grande disponibilità di librerie, cioè di enormi scaffali a disposizione per prendere pezzi già pronti da assemblare. Una di queste è scipy (molto usata proprio in ambito scientifico).

Python è un linguaggio interpretato: il codice che scrivo sul computer viene trasformato immediatamente in linguaggio macchina (la lingua che ha dato il nome a questo blog e che può essere capita direttamente dal computer, che per questo si chiama linguaggio di basso livello). Devo dire che è davvero semplice utilizzarlo su qualsiasi tipo di macchina.

E perché si chiama Python? Lasciamo rispondere Guido: «nel dicembre 1989 stavo cercando un progetto di programmazione per "hobby" che mi avrebbe dovuto tenere occupato nella settimana vicina a Natale. Il mio ufficio sarebbe stato chiuso ma io avevo un computer e non molto di più. Decisi così di scrivere un interprete per un nuovo linguaggio a cui avrei pensato dopo: un discendente dell'ABC, che sarebbe dovuto appartenere agli hacker di Unix. Scelsi Python come nome per il progetto, essendo leggermente irriverente (e sono un grande fan di Monty Python's Flying Circus)». 

Monty Python's Flying Circus (1969)


Facciamo una piccola deviazione e andiamo a vedere sul blog di Guido qual è la sua storia preferita. 
L'ho trovata nel post King's Day Speech: nel 2015 dedicò 20 minuti a un gruppo di studenti e docenti della Babylon University (Iraq) in video conferenza. Il tema era ovviamente Python. 
A ripensarci Guido si commuove: 
Thanks to the efforts of the audacious woman who organized this event in a war-ridden country, students at Babylon University are now being taught introductory programming classes using Python. I still tear up when I think about the power of that experience. In my wildest dreams I never expected I’d touch lives so far away and so different from my own. 

 

(Grazie agli sforzi dell'audace donna che ha organizzato questo evento in un paese in guerra, agli studenti dell'Università di Babilonia oggi vengono impartite lezioni introduttive di programmazione utilizzando Python. Mi viene ancora da piangere quando penso al potere di quell'esperienza. Nei miei sogni più folli non mi sarei mai aspettato di toccare vite così lontane e così diverse dalla mia.)

 

Ritorniamo ai primi anni di Python: nel 1999 Guido Van Rossum presentò una proposta al DARPA (Defense Advanced Research Projects Agency) intitolata "programmazione per tutti" ("Computer programming for everybody"), in cui definiva i suoi obiettivi: deve essere un linguaggio semplice, intuitivo e potente quanto i suoi maggiori avversari; dotato di un codice sorgente aperto, in modo che chiunque avrebbe potuto partecipare allo sviluppo e al miglioramento del linguaggio; un codice facilmente comprensibile, più vicino possibile all'inglese parlato (per questo si dice che Python è un linguaggio di alto livello). Da queste caratteristiche appare chiaro che quando si ha un bel progetto (e le adeguate competenze per sostenerlo) il resto è in discesa.

A tutto questo se aggiungiamo la grande disponibilità di librerie (di cui ho parlato sopra), di strumenti e di comunità di supporto (di cui parlo sotto) e di bibliografia (libri, articoli, forum, siti web) ci rendiamo conto di come questo uno strumento possa avere conquistato il posto che ha. Io aggiungo che Python è anche molto bello: in parte perché ha un comportamento elegante (indenta e colora per esempio), in parte perché lascia libertà alla creatività (decidere come chiamare le cose per esempio), come dire: bello da vedersi (in fase di creazione) e bello nei risultati che offre.

Un piccolo esempio di 5 righe di codice per calcolare l'area di una circonferenza in cui si deve digitare il valore del raggio. 
La prima riga è solo un commento, trasparente al computer; nella seconda riga stampo un bel Ciao; nella terza definisco l'oggetto raggio e chiedo nello stesso tempo di inserire il valore del raggio da tastiera; nella quarta introduco la formula che sarà utilizzata dal computer: area = pigreco per raggio al quadrato; nella quinta riga scrivo la formula; nella quarta riga chiedo al programma di stampare su schermo la frase "Risultato: l'area è di" seguita dal risultato numerico e infine l'unità di misura. 

  
# Un programmino per il calcolo dell'area della circonferenza 
print ("Ciao")
raggio = float(input("Se vuoi l'area inserisci la misura del raggio in cm: "))
area = 3.14159*(raggio**2)
print ("Risultato: l'area è di", area, "cm")

poi, digitando il valore del raggio - in questo esempio ho digitato sulla tastiera 54.3 (la virgola viene indicata con il punto) - il programma fornisce il valore dell'area: 

  Ciao
Se vuoi l'area inserisci la misura del raggio in cm: 54.3
Risultato: l'area è di 9262.946699099999 cm

E questo è proprio, solamente, l'inizio.

Sono grato a Guido Van Rossum perché ora ho capito come nasce un linguaggio.


Andrea Mameli, blog Linguaggio Macchina, 22 Gennaio 2021



Informazioni ufficiali nel sito ufficiale: python.it


Libri utili ne esistono parecchi. Io consiglio questo di Marco Buttu: Programmare con Python


Di tutorial per imparare il linguaggio Phyton è pieno youtube. 
Per chi ha bisogno di iniziare, proprio da zero, suggerisco questo:

Commenti

Post popolari in questo blog

Ogni cosa è collegata: Gabriella Greison a Sant'Antioco il 24 giugno (e non è un caso)

La tavoletta di Dispilio. Quel testo del 5260 a.C. che attende di essere decifrato

Solar system genealogy revealed by extinct short-lived radionuclides in meteorites. Astronomy & Astrophysics, Volume 545, September 2012.