Many of our posts on this blog are essentially answers to one basic question: what is Python good for? As we’ve shown over the past nearly three years, the answer is, “a lot!”. From providing the software foundation of key cloud infrastructure to expanding the creative applications of microcontroller boards to enabling the latest VR advances, the Python programming language has proven itself to be a powerful tool across many domains.
But why is Python is able to succeed at all these applications, even displacing other capable and technically mature languages? We often mention several key attributes of Python: its easier learning curve, open development and active developer community, robust ecosystem of third-party modules such as NumPy and alternative implementations (e.g. PyPy and MicroPython).
Surely all those have contributed to the language’s success, but there is one piece we haven’t discussed: Python was created by Guido van Rossum as a general solution to a specific problem, a solution which liberally borrowed ideas about programming language design from other languages.
Beginning with ABC
Python’s origin story begins with an earlier programming language called ABC. The creator of Python, Guido van Rossum, was part of the group at the Dutch research center CWI which developed ABC. This experience taught him a lot about language design.
Van Rossum liked several features in ABC (e.g. high level data types and the use of whitespace for statement grouping). These features and others would eventually end up in Python.
From his perspective, though ABC left plenty of room for improvement. Perhaps the biggest problem with ABC was the fact that the language wasn’t extensible, meaning ABC couldn’t be modified by developers to overcome its shortcomings.
Guido van Rossum was also very familiar with Modula-2+ and Modula-3. Exceptions in Python are largely based on how they work in Modula-3. Python’s use of “self” in method definitions and calls also comes from Modula-3.
A Scripting Solution for SysAdmin Problems
In a story which shares many parallels to the creation of Linux by Linus Torvalds, Van Rossum explains how his day to day system admin work in the Amoeba operating system group at CWI forced him to take these ideas and create his own language:
“We needed a better way to do system administration than by writing either C programs or Bourne shell scripts, since Amoeba had its own system call interface which wasn’t easily accessible from the Bourne shell. My experience with error handling in Amoeba made me acutely aware of the importance of exceptions as a programming language feature.
It occurred to me that a scripting language with a syntax like ABC but with access to the Amoeba system calls would fill the need. I realized that it would be foolish to write an Amoeba-specific language, so I decided that I needed a language that was generally extensible.”
In our next post, we’ll explain how the core ideas behind Python have propelled it from just solving sysadmin problems in a Dutch research lab to helping children break through economic and societal barriers.
Copyright © Python People