Il 20 febbraio 1991 Guido van Rossum pubblicò nel gruppo alt.sources il primo rilascio del linguaggio di programmazione Python, su cui aveva lavorato dal dicembre 1989 come parte di un progetto per creare un linguaggio di scripting per la risoluzione di problemi di amministrazione di sistema nel sistema operativo Amoeba, che fosse di livello superiore rispetto a C, ma, a differenza della Bourne shell, fornisse un accesso più comodo alle syscall del sistema operativo.
Il nome del progetto è stato scelto in onore della troupe comica Monty Python. Nella prima versione, è stata implementata la supporto per classi con ereditarietà, gestione delle eccezioni, un sistema di moduli e i tipi fondamentali list, dict e str. L'implementazione di moduli ed eccezioni è stata presa dal linguaggio Modula-3, mentre lo stile di codifica basato sugli spazi è stato tratto dal linguaggio ABC, a cui Guido aveva precedentemente partecipato allo sviluppo.
Nel processo di creazione di Python, Guido si è attenuto ai seguenti principi:
- Principi che hanno permesso di risparmiare tempo nello sviluppo:
- Prendere idee utili da altri progetti.
- Un impegno per la semplicità, ma senza semplificazioni eccessive (principio di Einstein: «Tutto deve essere presentato nella maniera più semplice possibile, ma non più semplice»).
- Seguire la filosofia UNUX, secondo cui i programmi realizzano una singola funzionalità, ma la fanno bene.
- Non preoccuparsi eccessivamente delle prestazioni; le ottimizzazioni possono essere aggiunte se necessario, quando si rendono necessarie.
- Non cercare di combattere le situazioni esistenti, ma seguire il flusso.
- Evitare il perfezionismo; generalmente è sufficiente un livello di «abbastanza buono».
- A volte è possibile fare dei compromessi, specialmente se qualcosa può essere fatto in un secondo momento.
- Principi aggiuntivi:
- L'implementazione non deve essere vincolata a una piattaforma specifica. Alcune funzionalità potrebbero non essere sempre disponibili, ma la funzionalità di base deve funzionare ovunque.
- Non sovraccaricare gli utenti con dettagli che possono essere gestiti dalla macchina.
- Supportare e promuovere codice dell'utente indipendente dalla piattaforma, senza limitare l'accesso alle funzionalità e alle peculiarità della piattaforma.
- Grandi sistemi complessi devono fornire diversi livelli di estensibilità.
- Gli errori non devono essere fatali e trascurati — il codice dell'utente deve essere in grado di intercettare e gestire gli errori.
- Gli errori nel codice dell'utente non devono influenzare la funzionalità della macchina virtuale e non devono portare a comportamenti indesiderati dell'interprete e a crash dei processi.
Fonte: opennet.ru
