Python is 30 years old

On February 20, 1991, Guido van Rossum published in the alt.sources group the first release of the Python programming language, which he had been working on since December 1989 as part of a project to create a scripting language for solving system administration tasks in the Amoeba operating system, which would be of a higher level, than C, but, unlike the Bourne shell, would provide more convenient access to OS system calls.

The name for the project was chosen in honor of the comedy group Monty Python (Monty Python). The first version introduced support for classes with inheritance, exception handling, a module system, and the base types list, dict, and str. The implementation of modules and exceptions was borrowed from the Modula-3 language, and the indentation-based coding style from the ABC language, which Guido previously contributed to.

In the process of creating Python, Guido was guided by the following principles:

  • Principles that saved time during development:
    • Borrowing useful ideas from other projects.
    • The desire for simplicity, but without oversimplification (Einstein's principle "Everything should be stated as simply as possible, but not simpler").
    • Following the philosophy of UNUX, according to which programs implement some one functionality, but do it well.
    • Don't worry too much about performance, optimizations can be added as and when needed.
    • Don't try to fight the way things are, but go with the flow.
    • Avoid perfectionism, usually enough and the level of "good enough".
    • Sometimes you can cut corners, especially if something can be done later.
  • Other principles:
    • The implementation should not be tied to a specific platform. Some features may not always be available, but the basic functionality should work everywhere.
    • Do not burden users with details that a machine can handle.
    • Support and promotion of platform-independent user code, but without restricting access to the capabilities and features of platforms.
    • Large complex systems must provide multiple layers for expansion.
    • Errors should not be fatal and undetected - user code should be able to catch and handle errors.
    • Bugs in user code should not affect the functionality of the virtual machine and should not lead to undefined interpreter behavior and process crashes.

    Source: opennet.ru

Add a comment