Dana 20. veljače 1991. Guido van Rossum objavio je u grupi alt.sources prvo izdanje programskog jezika Python na kojem je radio od prosinca 1989. kao dio projekta stvaranja skriptnog jezika za rješavanje problema administracije sustava u operativni sustav Amoeba, koji bi bio više razine od C-a, ali bi za razliku od Bourneove ljuske omogućio praktičniji pristup pozivima OS sustava.
Naziv za projekt odabran je u čast komičarske grupe Monty Python. Prva verzija uvela je podršku za klase s nasljeđivanjem, rukovanje iznimkama, sustav modula i popis osnovnih tipova, dict i str. Implementacija modula i izuzetaka posuđena je iz jezika Modula-3, a stil kodiranja temeljen na uvlačenju iz jezika ABC, kojem je Guido prethodno sudjelovao.
Prilikom stvaranja Pythona Guido se vodio sljedećim načelima:
- Principi koji su uštedjeli vrijeme tijekom razvoja:
- Posuđivanje korisnih ideja iz drugih projekata.
- Težnja za jednostavnošću, ali bez pretjeranog pojednostavljivanja (Einsheinovo načelo „Sve treba izraziti što jednostavnije, ali ne jednostavnije“).
- Slijedeći UNUX filozofiju prema kojoj programi implementiraju jednu funkcionalnost, ali je rade dobro.
- Ne brinite previše o izvedbi, optimizacije se mogu dodati po potrebi kada je potrebno.
- Ne pokušavajte se boriti protiv prevladavajućih stvari, već pustite tok.
- Izbjegavajte perfekcionizam; obično je dovoljna razina "dovoljno dobro".
- Ponekad se kutovi mogu smanjiti, pogotovo ako se nešto može učiniti kasnije.
- Ostala načela:
- Implementacija ne mora biti specifična za platformu. Neke značajke možda neće uvijek biti dostupne, ali osnovne funkcije trebale bi raditi posvuda.
- Ne opterećujte korisnike dijelovima kojima stroj može rukovati.
- Podrška i promicanje korisničkog koda neovisnog o platformi, ali bez ograničavanja pristupa mogućnostima i značajkama platformi.
- Veliki složeni sustavi moraju osigurati više razina proširenja.
- Pogreške ne bi smjele biti fatalne i neotkrivene—korisnički kod bi trebao moći uhvatiti i obraditi pogreške.
- Pogreške u korisničkom kodu ne bi trebale utjecati na funkcionalnost virtualnog stroja i ne bi trebale dovesti do nedefiniranog ponašanja tumača i rušenja procesa.
Izvor: opennet.ru