On February 20, 1991, Guido van Rossum published the first version of the Python programming language in the alt.sources group, which he had been working on since December 1989 as part of a project to create a scripting language for system administration tasks in the Amoeba operating system that was higher level than C, but unlike Bourne shell, provided easier access to OS system calls.
The project's name was chosen in honor of the comedy group Monty Python. The first version implemented support for classes with inheritance, exception handling, a module system, and basic types list, dict, and str. The implementation of modules and exceptions was borrowed from Modula-3, while the indentation-based coding style came from ABC, a language Guido had previously worked on.
During the creation of Python, Guido adhered to the following principles:
- Principles that saved time in development:
- Borrowing useful ideas from other projects.
- Aiming for simplicity without oversimplifying (Einstein's principle: 'Everything should be made as simple as possible, but not simpler').
- Following the UNIX philosophy, which states that programs should implement a specific functionality, but do it well.
- Not overly worrying about performance; optimizations can be added as necessary when they are needed.
- Not trying to fight established norms, but going with the flow.
- Avoiding perfectionism; usually, a level of 'good enough' is sufficient.
- Sometimes it's okay to cut corners, especially if something can be done later.
- Other principles:
- Implementation should not be tied to a specific platform. Some features may not always be available, but basic functionality should work everywhere.
- Not burdening users with details that the machine can handle.
- Supporting and promoting platform-independent user code, without restricting access to platform capabilities and features.
- Large complex systems should provide multiple levels for expansion.
- Errors should not be fatal or unnoticed — user code must be able to intercept and handle errors.
- Errors in user code should not affect the functionality of the virtual machine and should not lead to undefined behavior of the interpreter or process crashes.
Source: opennet.ru
