1.1 The Python Language
The
Python language, while not minimalist, is rather spare, for good
pragmatic reasons. When a language offers one good way to express a
design idea, supplying other ways has only modest benefits, while the
cost in terms of language complexity grows with the number of
features. A complicated language is harder to learn and to master
(and to implement efficiently and without bugs) than a simpler one.
Any complications and quirks in a language hamper productivity in
software maintenance, particularly in large projects, where many
developers cooperate and often maintain code originally written by
others.
Python is simple, but not simplistic. It adheres to the idea that if
a language behaves a certain way in some contexts, it should ideally
work similarly in all contexts. Python also follows the principle
that a language should not have convenient shortcuts, special cases,
ad hoc exceptions, overly subtle distinctions, or mysterious and
tricky under-the-covers optimizations. A good language, like any
other designed artifact, must balance such general principles with
taste, common sense, and a high degree of practicality.
Python is a general-purpose programming language, so
Python's traits are useful in any area of software
development. There is no area where Python cannot be part of an
optimal solution. "Part" is an
important word here—while many developers find that Python
fills all of their needs, Python does not have to stand alone. Python
programs can cooperate with a variety of other software components,
making it an ideal language for gluing together components written in
other languages.
Python is a very-high-level language. This means that Python uses a
higher level of abstraction, conceptually farther from the underlying
machine, than do classic compiled languages, such as C, C++, and
Fortran, which are traditionally called high-level languages. Python
is also simpler, faster to process, and more regular than classic
high-level languages. This affords high programmer productivity and
makes Python an attractive development tool. Good compilers for
classic compiled languages can often generate binary machine code
that runs much faster than Python code. However, in most cases, the
performance of Python-coded applications proves sufficient. When it
doesn't, you can apply the optimization techniques
covered in Chapter 17 to enhance your
program's performance while keeping the benefits of
high programming productivity.
Python is an object-oriented programming language, but it lets you
develop code using both object-oriented and traditional procedural
styles, mixing and matching as your application requires.
Python's object-oriented features are like those of
C++, although they are much simpler to use.
|