Am 20. Februar 1991 veröffentlichte Guido van Rossum in der Gruppe alt.sources die erste Version der Programmiersprache Python, an der er seit Dezember 1989 im Rahmen eines Projekts zur Entwicklung einer Skriptsprache für Systemadministrationsaufgaben im Betriebssystem Amoeba gearbeitet hatte, welche eine höhere Abstraktion als C bieten sollte, jedoch im Gegensatz zur Bourne-Shell einen benutzerfreundlicheren Zugang zu den Systemaufrufen des Betriebssystems bietet.
Der Name für das Projekt wurde zu Ehren der Comedy-Gruppe Monty Python gewählt. In der ersten Version wurden Unterstützung für Klassen mit Vererbung, Ausnahmebehandlung, ein Modulsystem und die grundlegenden Typen list, dict und str implementiert. Die Umsetzung der Module und der Ausnahmen wurde aus der Sprache Modula-3 übernommen, während der Einrückungsstil aus der Sprache ABC stammte, an deren Entwicklung Guido zuvor beteiligt war.
Bei der Erstellung von Python folgte Guido den folgenden Prinzipien:
- Prinzipien, die Zeit bei der Entwicklung gespart haben:
- Nützliche Ideen aus anderen Projekten übernehmen.
- Streben nach Einfachheit, jedoch ohne übermäßige Vereinfachung (Einsteins Prinzip: "Alles sollte so einfach wie möglich, aber nicht einfacher erklärt werden").
- Befolgung der UNIX-Philosophie, gemäß der Programme eine bestimmte Funktionalität umsetzen, dies jedoch gut tun.
- Sich nicht zu sehr um die Leistung kümmern; Optimierungen können nach Bedarf hinzugefügt werden, wenn sie benötigt werden.
- Nicht versuchen, gegen bestehende Gegebenheiten anzukämpfen, sondern mit dem Strom schwimmen.
- Perfektionismus vermeiden; normalerweise reicht ein Niveau, das "gut genug" ist.
- Manchmal können Ecken abgeschnitten werden, insbesondere wenn etwas später erledigt werden kann.
- Die übrigen Prinzipien:
- Die Implementierung sollte nicht an eine bestimmte Plattform gebunden sein. Einige Funktionen können möglicherweise nicht immer verfügbar sein, aber die grundlegende Funktionalität sollte überall funktionieren.
- Die Benutzer nicht mit Details belasten, die die Maschine übernehmen kann.
- Unterstützung und Förderung plattformunabhängigen Nutzercodes, jedoch ohne den Zugang zu plattformspezifischen Möglichkeiten und Besonderheiten einzuschränken.
- Große komplexe Systeme sollten mehrere Ebenen zur Erweiterung bieten.
- Fehler dürfen nicht fatal und unbemerkt bleiben – der Benutzer-Code sollte in der Lage sein, Fehler abzufangen und zu verarbeiten.
- Fehler im Benutzer-Code sollten die Funktionalität der virtuellen Maschine nicht beeinflussen und nicht zu undefiniertem Verhalten des Interpreters oder zum Absturz von Prozessen führen.
Quelle: opennet.ru
