1.2.2 Python's design philosophy

There is often a disparity between the aim of a piece of software and what it is actually capable of. Nevertheless, it is instructive to consider the aims of Python's author in creating and maintaining it.

Python's original author and its current principal maintainer is Guido van Rossum[#!faq!#]. Python is based on a teaching language called ABC that was in use in the 1980s. Van Rossum created Python with the aim of removing the restriction that prevented ABC's more widespread use: its inextensibility. ABC was like Pascal: a good teaching language, but relatively useless outside simple classroom applications.

So Python was designed to be suitable for educational use from the ground up, but with more advanced programming constructs, a feature-packed standard library, and the ability to interface easily with programs written in other languages (especially C) so it could be used outside education.

It has always been Van Rossum's desire to see Python used for teaching, and he has taken a particular interest in this project. I have received several emails from him offering solutions to specific problems encountered and more often general advice. The Python FAQ entry ``Is Python a good language in a class for beginning programmers?''[#!faq!#] goes to great lengths to justify Python's suitability as a teaching language. It's claims are discussed in Chapter 4, ``Discussion''.

Python is still relatively little-used in education. However, there is an active SIG mailing list and web page that discusses its use and attempts to coordinate the teaching programs that have begun to appear over the last few years[#!edusig!#].

Python's success is commonly attributed to its standard library; it is often described as coming with ``batteries included''. The library allows the rapid creation of relatively complex and highly modularised programs. Python is often seen as a direct competitor to Perl, which is most commonly used for systems administration tasks, generating dynamic web pages and other string parsing and manipulation tasks. Because of this Python is sometimes described as a ``scripting language'', although this term is often used disparagingly, and Python's supporters attempt to avoid it.

Python programs are syntactically extremely clean and consistent. The syntactic structure of the language was designed with great care. Contrast this with Perl, which is notoriously difficult to read.

For most experienced programmers, the striking visual difference between Python and almost any other language is the use of indentation. Code blocks such as those following if statements are delimited by their indentation, and not by, e.g. BEGIN and END statements or braces:

    print "This program prints the integers from one to ten..."
    while i < 10:
        print i
    print "Done"