20 lutego 1991 roku Guido van Rossum opublikował w grupie alt.sources pierwsze wydanie języka programowania Python, nad którym pracował od grudnia 1989 roku w ramach projektu stworzenia języka skryptowego do rozwiązywania problemów z administracją systemem w system operacyjny Amoeba, który byłby na wyższym poziomie niż C, ale w przeciwieństwie do powłoki Bourne'a zapewniałby wygodniejszy dostęp do wywołań systemowych systemu operacyjnego.
Nazwa projektu została wybrana na cześć grupy komediowej Monty Python. Pierwsza wersja wprowadziła obsługę klas z dziedziczeniem, obsługę wyjątków, system modułowy oraz podstawową listę typów, dict i str. Implementację modułów i wyjątków zapożyczono z języka Modula-3, a styl kodowania oparty na wcięciach z języka ABC, do którego wcześniej przyczynił się Guido.
Tworząc Pythona, Guido kierował się następującymi zasadami:
- Zasady, które zaoszczędziły czas podczas programowania:
- Zapożyczanie przydatnych pomysłów z innych projektów.
- Dążenie do prostoty, ale bez nadmiernych uproszczeń (zasada Einsheina „Wszystko powinno być powiedziane możliwie najprościej, ale nie prościej”).
- Kierując się filozofią UNUX, zgodnie z którą programy realizują jedną funkcjonalność, ale robią to dobrze.
- Nie martw się zbytnio o wydajność, w razie potrzeby można dodać optymalizacje.
- Nie próbuj walczyć z dominującymi rzeczami, ale idź z prądem.
- Unikaj perfekcjonizmu, zazwyczaj wystarczy poziom „wystarczająco dobry”.
- Czasami można ciąć narożniki, zwłaszcza jeśli można coś zrobić później.
- Inne zasady:
- Implementacja nie musi być specyficzna dla platformy. Niektóre funkcje mogą nie zawsze być dostępne, ale podstawowa funkcjonalność powinna działać wszędzie.
- Nie obciążaj użytkowników częściami, które mogą być obsługiwane przez maszynę.
- Wsparcie i promocja kodu użytkownika niezależnego od platformy, ale bez ograniczania dostępu do możliwości i funkcji platform.
- Duże, złożone systemy muszą zapewniać wiele poziomów rozbudowy.
- Błędy nie powinny być krytyczne i niewykryte — kod użytkownika powinien być w stanie wychwycić i obsłużyć błędy.
- Błędy w kodzie użytkownika nie powinny mieć wpływu na funkcjonalność maszyny wirtualnej i nie powinny prowadzić do niezdefiniowanego zachowania interpretera i awarii procesów.
Źródło: opennet.ru