20 lutego 1991 roku Guido van Rossum opublikował w grupie alt.sources pierwszy wydanie języka programowania Python, nad którym pracował od grudnia 1989 roku w ramach projektu stworzenia skryptowego języka do rozwiązywania problemów administracji systemowej w systemie operacyjnym Amoeba, który miał być językiem wyższego poziomu niż C, ale w przeciwieństwie do powłoki Bourne, zapewniałby bardziej wygodny dostęp do wywołań systemowych OS.
Nazwa projektu została wybrana na cześć grupy komediowej Monty Python. W pierwszej wersji zaimplementowano obsługę klas z dziedziczeniem, obsługę wyjątków, system modułów oraz podstawowe typy list, dict i str. Implementacja modułów i wyjątków została zapożyczona z języka Modula-3, a styl kodowania oparty na wcięciach z języka ABC, w którym Guido wcześniej brał udział.
Podczas tworzenia Pythona Guido kierował się następującymi zasadami:
- Zasady, które pozwoliły zaoszczędzić czas podczas rozwoju:
- Zapożyczanie przydatnych pomysłów z innych projektów.
- Dążenie do prostoty, ale bez nadmiernego uproszczenia (zasada Einsteina „Wszystko powinno być przedstawione tak prosto, jak to tylko możliwe, ale nie prościej”).
- Przestrzeganie filozofii UNIX, zgodnie z którą programy realizują jakąś jedną funkcjonalność, ale robią to dobrze.
- Niezbyt martwienie się o wydajność, optymalizacje można dodawać w miarę potrzeby, kiedy zajdzie taka potrzeba.
- Nie próbować walczyć z ustalonymi rzeczami, a płynąć z nurtem.
- Unikać perfekcjonizmu, zazwyczaj wystarcza poziom „wystarczająco dobrze”.
- Czasami można pójść na skróty, zwłaszcza jeśli coś można zrobić później.
- Pozostałe zasady:
- Implementacja nie powinna być uzależniona od konkretnej platformy. Niektóre funkcje mogą być dostępne nie zawsze, ale podstawowa funkcjonalność powinna działać wszędzie.
- Nie obciążać użytkowników szczegółami, które maszyna może obsłużyć.
- Wsparcie i promocja platformowo niezależnego kodu użytkownika, ale bez ograniczenia dostępu do możliwości i cech platformy.
- Duże, złożone systemy powinny oferować kilka poziomów rozszerzenia.
- Błędy nie powinny być śmiertelne i niezauważone — kod użytkownika powinien mieć możliwość przechwycenia i obsłużenia błędów.
- Błędy w kodzie użytkownika nie powinny wpływać na funkcjonalność maszyny wirtualnej i nie powinny prowadzić do nieokreślonego zachowania interpretera oraz awarii procesów.
Źródło: opennet.ru
