Import This: the Tenth International Python Conference
"Import This" was the slogan for the Tenth International Python Conference, ("It Fits Your Brain" was the motto of the ninth conference, which I wrote about in a previous article). The event took place February 4-7, 2002, at the Hilton Alexandria Mark Center in Alexandria, Virginia, a few miles from the Pentagon City station on the Washington, DC metro. According to the conference registrar, 244 people attended, 83% of last year's attendance. The decrease seems to be a result of companies' tighter travel budgets this year and the fact that the conference wasn't held in California.
The keynote talks were unusual this year because both were delivered by Python outsiders. What they did have was experience in other relevant areas, allowing them to give us fresh ideas that we in the Python community may not have been able to come up with ourselves. The two speakers were Andrew König, who played a key role in the standardization of C++, and Tim Berners-Lee, father of the World Wide Web. Besides the keynotes, there were four tracks of seminars: Refereed Papers, Zope, Python Tools, and Web Services and Protocols.
Andrew has been programming since 1967 and has used many programming languages. He compared Python with four of them--Fortran, APL, Snobol and ML--that are each quite different from Python and from each other.
Every language has an underlying theme: a specific set of problems it was designed to solve, often because the existing languages weren't adequate for the task. Fortran is designed for efficient numerical computations. APL is good with arrays. Snobol has exceptional string and regular-expression handling. ML is efficient for functional programming. But as Andrew demonstrated by showing the same program in different languages, one language's strength is another's weakness. Snobol, for instance, is weak in data structures.
Surprisingly (or not so surprisingly), Python came out well on all counts. It has good mathematical capability (it was created by a mathematician), especially with the Numeric Python module, good array support, good string and regular-expression handling (now using Perl-style regular expressions with an engine written in C), and good support for functional programming. I pressed Andrew to list some weaknesses in Python. He didn't know any off the top of his head, and he was unwilling to venture any because his knowledge of the language is limited. It's nice to know Python doesn't have any glaring holes somebody with his experience would immediately notice and curse over.
Those of us who have been in the Python community for a few years know about Python's not-easily-fixable problems: slow dictionary lookups (and thus slow lookups of non-local variables), the Global Interpreter Lock (which prevents multiple threads from executing Python code simultaneously), etc., but these are implementation issues rather than language issues. On the language front, we mostly have requests for minor features such as an irange function (returning (index, item) pairs), interfaces, etc. Perhaps the biggest problem Python has in the language area is the tabs-vs-spaces debate, and that's only a problem depending on who you talk to. Many former requests have been implemented or are being implemented, such as the unification of types and classes, the super keyword (currently a function), garbage collection, etc. I won't even bother mentioning the indentation-vs-braces debate because that's a religious issue, and most Pythoneers realize indentation is the One True Way once they get used to it.
Andrew encountered Python via Mailman, a mailing-list system written in Python. He looked at the source and liked the way it was designed. Issues such as indentation vs braces, or the fact that assignment (a = b) copies a reference rather than data, are superficial in Andrew's opinion. What is not superficial is that Python:
has good library support.
can do introspection (which is what makes Idle possible).
allows you to change data structures dynamically. You can add attributes to existing instances simply by assigning to them.
Another major advantage of Python over these other four languages is it has an active and supportive user community and the fact that the language developers actively solicit suggestions from the community. Python is the only language out of these five that was developed by an open group. Python strikes a good balance between central control and user control.
Python also avoided many of the standardization traps C++ fell into. C++ standardization should have been delayed two years, he said, to allow the initial proposals to mature before they fossilized. Another difference is that C++ standardizes itself via bureaucratic decision; Python standardizes itself by somebody making a reference implementation and convincing people to use it.