Python Conference Report
Some of the ongoing shifts in the Python community were apparent at the Eighth International Python Conference (IPC8), held in Washington, DC this past January. [Note: the Spanish Inquisition was not in attendence.] For a start, the continued growth of the Python community was obvious. IPC7, the previous conference, attracted roughly a hundred attendees. IPC8 was more than twice as large, with around 250 attendees. Much of this growth came from the increasing popularity of the Zope application server, which had its own conference track for the first time. This track drew some 90 people who attended talks on Zope's architecture and features, designing applications for Zope, and saw demos of new products such as the Portal Toolkit.
One interesting new theme emerged at this conference, the idea of using Python to teach programming.
Randy Pausch of Carnegie-Mellon University gave a keynote talk about the Alice virtual reality system (http://www.alice.org/), a stunning talk that held out some hope that maybe, just maybe, these computer things can be useful to people without requiring them to master Cartesian coordinates or to adjust their thinking to match the machine's. Alice is a 3D VR system used in a course at CMU, whose audience is non-technical users without a background in engineering or computer science. Accordingly, the system has been carefully tested for usability throughout its development. Python had to be modified slightly to improve its suitability for novices, but only two serious changes were made: floating point is automatically used for all numbers in Alice, and the language was made case-insensitive so that names such as “Value” and “value” refer to the same variable. The talk concluded with an impressive video of four different projects done using Alice, ranging from a “Calvin and Hobbes”-inspired sled ride to computer-generated characters who follow a human aerobics instructor.
Unfortunately, Alice is available only for Windows, although a Playstation port is being worked on, and the resulting structural changes should also provide for a MacOS port. In answer to an audience member's question about using Alice on the Macintosh, Pausch replied that you'd have to purchase VirtualPC for the Macintosh; Alice is efficient enough to run acceptably under emulation. Therefore, instead of waiting for a Linux port, you should probably just buy VMware and a copy of Windows. Alice is exciting enough to be worth it!
Guido van Rossum's nascent “Computer Programming for Everybody” project aims to use Python for teaching by creating a sophisticated programming environment that helps out novices, writing a CS curriculum and perhaps modifying the Python language to make it easier to learn. At the moment, Van Rossum is gearing up to start work on CP4E, thinking about incremental parsing and type inferencing—and deciding what to teach in one semester. Van Rossum would like a spell-checker-style mode of operation for the teaching environment, so that as soon as one types a line of code, it would be checked and any possible problems noted.
A birds-of-a-feather session on education had 40 attendees and led to the creation of an Education SIG that will continue to discuss and develop teaching aids for Python.
Over the last five years, an increasing number of people have begun using Python for numeric work. The canonical story told in scientific programming papers at Python conferences usually runs something like this: a group has an existing body of numeric routines, usually written in Fortran or C/C++. To speed up prototyping, the group decides to write a scripting language that gives them an interpreted environment to experiment in. However, along the way, someone discovers Python, and rather than re-invent the wheel and maintain their own interpreter, they realize it's much easier just to write a Python interface to the number-crunching code.
Python's suitability for numeric work stems from three main reasons. First are the excellent Numeric Python extensions that provide powerful, multidimensional matrix types.
The second reason is SWIG, which can parse a C header or Fortran file and automatically generate a Python wrapper for the C or Fortran functions. SWIG also supports Perl and Tcl (XXX and Guile?), but here the third factor comes into play. Python's syntax is simple and relatively familiar, unlike the shell-influenced structures of Tcl and Perl, or the parenthesis-heavy Scheme/Lisp syntax that people either love or loathe.
An excellent example would be the talk “Using Python to Modernize Astronomical Software” by Richard White and Perry Greenfield. The authors work for the Space Telescope Science Institute in Baltimore, which is responsible for processing data from the Hubble Space Telescope. They use an astronomical software environment called IRAF, consisting of around a million lines of code. IRAF provides a portable, though not feature-rich, environment for writing analysis software, but the command language isn't very flexible or easy to use. They started down the path of writing their own new language, then discovered Python and decided to use it as the new IRAF command language. Because IRAF works by running subprocesses for each job, Python needs only to be able to speak IRAF's interprocess protocol in order to fit into the system. The Python interface, called PyRAF, will soon be going into beta testing at a few sites, with final release in a few months. It can also parse and emulate the old command language to provide backward compatibility.