22 gennaio 2021

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:

19 gennaio 2021

Un viaggio verso l'ignoto e la scoperta del proprio ruolo nel mondo nel romanzo di Giacomo Mameli Hotel Nord America

Mesi fa ho letto avidamente due libri: "La ghianda e una ciliegia" (CUEC, 2005) e "La chiave dello zucchero" (Il Maestrale, 2019). Ci ho trovato le storie di chi è sopravvissuto alla seconda guerra mondiale, raccontate da Giacomo Mameli. Storie incredibili, ma vere, che mostrano l'orrore della guerra e insieme la capacità delle persone di sapersi districare in mezzo anche al più immane disastro.

Giorni fa ho divorato "Hotel Nord America" (Il Maestrale, 2020). Qui la storia è raccontata in prima persona da una sola persona. Ma il risultato non è meno intenso degli altri due volumi. Anzi, questa storia di una levatrice "spedita in Sardegna", ha qualcosa di molto significativo. In un tempo e in luoghi in cui la mortalità infantile era molto elevata, l'arrivo di Ida Naldini a Perdasdefogu ha qualcosa di salvifico. Ma questo viaggio verso l'ignoto e la scoperta di un proprio ruolo nel mondo (non a caso nel delicato compito di aiutare le nascite) sono caratteri di grande potenza, quasi senza luogo e senza tempo. Non è (solo) una storia della Sardegna e dell'Italia di quel tempo: è una storia universale. 

Ovviamente c'è tutta la bravura di Giacomo Mameli nel fare in modo che la storia possa girare bene: c'è una storia forte, ma senza una magistrale narrazione a sostenerla non si reggerebbe. Ma c'è anche il fatto (che esce dal romanzo per farsi vero) che la storia di questa coraggiosa ostetrica toscano-campana è autentica. Certo, Hotel Nord America è un romanzo, ma a volte il vero può sembrare più romanzato del vero. Come la storia dell'albergo, che ha originato il titolo del libro, in cui le ospiti arrivate dal Continente ignoravano che normalmente vi si svolgessero le attività tipiche del bordello (e invece gli uomini, tenuti a bada dai Carabinieri, lo sapevano bene). O l'episodio del parto della moglie del pastore (analfabeta ma con i figli che si chiamavano Enea, Grazia, Omero, Virgilio) raggiunta con elicottero e campagnola può sembrare assurda e invece si basa su un fatto vero. 

Questo lavoro di Giacomo Mameli è stato premiato come Libro del giorno di Fahrenheit il 30 luglio 2020 e il mese scorso ha vinto il Premio FiuggiStoria XI edizione (sezione Diari, Epistolari & Memorie) a cura della Fondazione Levi Pelloni. A questo punto immagino una bella sceneggiatura e un film. Sarebbe una grande sfida.

Andrea Mameli, Linguaggio Macchina, 19 Gennaio 2021