Python è oggi utilizzato per scripting di sistema, applicazioni Web, data science, formazione, automazione, intelligenza artificiale e calcolo scientifico. La sua versatilità può far pensare che sia stato progettato fin dall’inizio come linguaggio universale.
Le origini furono più modeste. Alla fine degli anni Ottanta Guido van Rossum iniziò al CWI, centro di ricerca olandese, un progetto personale: una lingua piacevole da usare, leggibile, estensibile e sufficientemente potente per la programmazione quotidiana.
Prima di Python: l’esperienza ABC
Al CWI van Rossum lavorò con il team di ABC, un linguaggio pensato per essere facile da imparare, con sintassi chiara e astrazioni di alto livello. ABC fu influente sul piano delle idee ma poco diffuso.
Python ne conservò leggibilità e pratici tipi di dati integrati, correggendone però la scarsa estensibilità e la difficile integrazione con Unix e librerie scritte in altri linguaggi.
Natale 1989: un progetto personale
Durante le vacanze di Natale del 1989 van Rossum iniziò a scrivere un nuovo interprete. Voleva colmare il divario tra script shell e programmi più grandi, mantenendo una sintassi leggibile e una facile interazione con sistema operativo e codice esistente.
L’estensibilità divenne fondamentale. L’implementazione di riferimento CPython è scritta in C e supporta estensioni native.
Perché si chiama Python?
Il nome non deriva dal serpente. Van Rossum era appassionato del gruppo comico britannico Monty Python e desiderava un nome breve, distintivo e leggermente irriverente.
1991: la prima versione pubblica
Nel febbraio 1991 van Rossum annunciò Python su Usenet. Il linguaggio conteneva già funzioni, eccezioni, moduli, liste e dizionari.
Era interpretato e interattivo: gli sviluppatori potevano provare subito un’espressione e usare poi gli stessi concetti in programmi più grandi. Questa breve distanza tra idea e risultato divenne un vantaggio per esplorazione, debugging, insegnamento e automazione.
L’indentazione come sintassi
Una caratteristica evidente è l’indentazione significativa. Molti linguaggi delimitano i blocchi con parentesi o parole chiave; Python usa l’indentazione stessa.
La struttura visiva deve quindi corrispondere alla struttura logica. Un’indentazione errata non è soltanto brutta: cambia il significato o rende il codice invalido. Python trasforma una convenzione di leggibilità in una regola del linguaggio.
“Batteries included”
La libreria standard offre moduli per file, testo, date, protocolli di rete, formati dati, compressione, test, processi e molte altre attività.
La filosofia “batteries included” significa che un’installazione Python dovrebbe già contenere strumenti utili per problemi comuni senza richiedere subito dipendenze esterne.
Moduli, pacchetti e riuso
Un file Python può diventare un modulo importabile e i moduli possono essere organizzati in pacchetti. Questo modello semplice incoraggiò il riuso e facilitò la crescita di un ecosistema esterno.
Un progetto può iniziare come singolo file e strutturarsi gradualmente in moduli e pacchetti man mano che cresce.
Python 1.0, CNRI e i PEP
Python 1.0 fu pubblicato nel 1994. Nel 1995 van Rossum passò dal CWI alla Corporation for National Research Initiatives (CNRI) negli Stati Uniti, mentre la comunità continuava ad espandersi.
Nel 2000 furono introdotti i Python Enhancement Proposals (PEP), documenti che descrivono proposte importanti sul linguaggio, la libreria, i processi o la governance. I PEP conservano non solo le decisioni ma anche le motivazioni.
Tra i più noti, PEP 8 definisce convenzioni di stile e PEP 20, lo Zen of Python, include il principio “Readability counts”.
Python 2.0 e la Python Software Foundation
Python 2.0 uscì nell’ottobre 2000, introducendo tra l’altro list comprehension e una migliore gestione dei cicli di riferimenti.
Nel 2001 nacque la Python Software Foundation (PSF), organizzazione non profit che tutela la proprietà intellettuale legata a Python, sostiene la comunità e fornisce una base istituzionale indipendente da un singolo datore di lavoro o dal creatore.
PyPI e l’ecosistema dei pacchetti
Il Python Package Index (PyPI) divenne il repository centrale dei pacchetti. Insieme a pip, rese semplice installare framework Web, librerie scientifiche e strumenti di automazione.
Si creò un potente effetto rete: più pacchetti rendevano Python più utile e più utenti producevano nuovi pacchetti. Il successo portò anche complessità nella gestione di dipendenze, ambienti virtuali e standard di build.
Python sul Web
Django, reso open source nel 2005, offrì un framework completo per applicazioni Web. Flask diffuse un approccio più minimale e FastAPI uno stile moderno per le API con uso esteso delle annotazioni di tipo.
Python non prese il ruolo storico di JavaScript nel browser, ma divenne una delle principali scelte lato server.
Python 3: rompere consapevolmente la compatibilità
Il principale punto di svolta tecnico arrivò nel dicembre 2008 con Python 3.0. Gli sviluppatori corressero incoerenze storiche accettando alcune incompatibilità con Python 2.
print divenne una funzione e la gestione del testo fu riorganizzata intorno a Unicode. Il linguaggio risultò più coerente, ma la migrazione fu molto più lenta del previsto.
Python 2 contro Python 3
Per oltre un decennio le due generazioni coesistettero. Applicazioni e librerie rimasero su Python 2 perché la migrazione richiedeva tempo e comportava rischi.
Il supporto ufficiale di Python 2.7 terminò il 1º gennaio 2020. La transizione divenne una lezione classica sulla compatibilità: correggere un progetto può essere tecnicamente desiderabile ma molto costoso per un ecosistema maturo.
Calcolo scientifico
Il calcolo scientifico divenne uno dei principali motori di adozione. Python puro non è sempre rapido nei cicli numerici intensivi, ma è eccellente come livello di orchestrazione sopra librerie native ottimizzate.
NumPy offre array multidimensionali, SciPy algoritmi scientifici e Matplotlib visualizzazione. I kernel ad alte prestazioni possono essere scritti in C, C++ o Fortran mentre l’utente lavora con un’interfaccia Python leggibile.
Jupyter e calcolo interattivo
IPython e poi Jupyter permisero di combinare codice eseguibile, testo, equazioni e visualizzazioni nello stesso documento. Il modello si adatta particolarmente bene a ricerca, didattica e analisi esplorativa.
I notebook cambiarono anche il modo di comunicare il lavoro computazionale: risultati, spiegazioni, grafici e passaggi eseguibili possono viaggiare insieme.
pandas e data science
pandas introdusse strutture dati per tabelle e serie temporali. Con NumPy, Jupyter e le librerie di visualizzazione contribuì a rendere Python una piattaforma centrale per la data science.
Un analista può caricare dati, pulirli, aggregarli, visualizzarli e prepararli per un modello nello stesso ambiente.
Python e intelligenza artificiale
scikit-learn, TensorFlow e PyTorch hanno reso Python un’interfaccia dominante per molti workflow di machine learning e IA. Il calcolo pesante viene spesso eseguito da componenti native ottimizzate o GPU.
Python agisce come linguaggio di coordinamento. Tutorial, articoli scientifici, modelli, notebook e librerie hanno rafforzato ulteriormente l’effetto rete.
Come può essere veloce senza esserlo sempre
CPython esegue generalmente il codice Python puro più lentamente di C o C++ ottimizzati. Le applicazioni possono però delegare operazioni costose a librerie native. NumPy, per esempio, elabora milioni di valori senza eseguire un ciclo Python per ogni elemento.
Questa architettura combina produttività ad alto livello e prestazioni a basso livello dove servono.
Il GIL
CPython utilizza storicamente il Global Interpreter Lock (GIL). Semplifica alcuni aspetti della gestione della memoria ma limita l’esecuzione simultanea di bytecode Python da parte di più thread nello stesso processo.
Ciò non significa che Python non possa gestire concorrenza o parallelismo: può usare processi multipli, I/O asincrono ed estensioni native. Le versioni moderne stanno inoltre sviluppando modelli opzionali di esecuzione free-threaded.
Un linguaggio per formazione e automazione
La leggibilità rende Python particolarmente adatto all’insegnamento. Un principiante può stampare un valore, manipolare una lista o definire una funzione con poca sintassi.
La stessa lingua supporta però servizi Web professionali, pipeline di dati, software scientifico e automazione. Rinominare migliaia di file, chiamare API, trasformare JSON, automatizzare un deployment o generare un report può richiedere solo un breve script.
La governance dopo Guido van Rossum
Van Rossum fu a lungo definito Benevolent Dictator For Life (BDFL). Nel 2018 lasciò quel ruolo decisionale.
La comunità adottò un nuovo modello. PEP 13 definisce uno Steering Council eletto, responsabile delle principali questioni di governance e dell’evoluzione a lungo termine.
Un progetto nato come esperimento personale dispone così di istituzioni capaci di farlo evolvere oltre il suo creatore.
Perché Python ha avuto tanto successo
Il successo non dipende da una sola caratteristica. La leggibilità abbassa la barriera d’ingresso; l’estensibilità collega Python al codice nativo; la libreria standard fornisce una base comune; PyPI crea un enorme ecosistema; PEP e governance offrono un processo documentato.
La forza è la combinazione: un linguaggio accessibile che può iniziare in piccolo e crescere fino a grandi ecosistemi professionali e scientifici.
Domande frequenti
Chi ha creato Python?
Guido van Rossum iniziò a svilupparlo alla fine del 1989 al CWI e pubblicò la prima versione nel 1991.
Perché si chiama Python?
Il nome è un riferimento al gruppo comico britannico Monty Python, non al serpente.
Perché usa l’indentazione come sintassi?
Per fare in modo che la struttura visibile del codice corrisponda alla struttura logica, trasformando la leggibilità in una regola del linguaggio.
Cosa significa “batteries included”?
La libreria standard dovrebbe fornire già strumenti per molte attività comuni senza richiedere immediatamente pacchetti esterni.
Perché il passaggio da Python 2 a Python 3 fu difficile?
Python 3 corresse decisioni storiche con cambiamenti incompatibili. Applicazioni e librerie di un grande ecosistema dovettero quindi migrare nel corso di molti anni.
Chi decide oggi l’evoluzione di Python?
Lo sviluppo è comunitario e documentato tramite PEP. Uno Steering Council eletto secondo PEP 13 svolge le principali funzioni di governance.
Scopri come Guido van Rossum ha creato Python partendo dall'esperienza di ABC, ne ha guidato l'evoluzione e ha trasformato un progetto personale in un bene della comunità.