Sponsored Link •
Bill Venners: I have used Python as a scripting language, but I have met people who use it for more. For example, Bruce Eckel uses it as his main language.
Guido van Rossum: Zope Corporation, where I work, uses it as the main development language. All Zope software is written in Python.
Bill Venners: To manage mailing lists on my server I use Mailman, which is also written in Python.
Guido van Rossum: Yes, Mailman is pure Python.
Bill Venners: And Mailman is not a script. I would call it an application or a system.
Guido van Rossum: Absolutely.
Bill Venners: You said initially you intended Python to be a bridge between the shell and C. Did it surprise you that people would also use it to build apps and systems? Did something change over time?
Guido van Rossum: I can't say it surprised me because it happened so gradually. I thought we'd write small Python programs, maybe 10 lines, maybe 50, maybe 500 lines—that would be a big one. We figured we'd provide library modules that implement bits of functionality that kept being needed again and again. For example, one thing we added fairly early on was a low-level module implemented in C that gave you full access to sockets. We were lucky in a sense that the same socket API was also available on Windows as WinSock. So immediately we had platform-independent socket primitives. The socket primitives were pretty low level. They weren't quite as low level as in C, because we got away from the notion of a file descriptor as a small integer, and instead said, a socket is an object and it has a bunch of methods. All the methods correspond one to one to the system calls that operate on sockets, and the arguments are usually just strings representing some data, or occasionally a tuple of a host name and a port number.
In addition, the Internet was developing and growing more popular—this was the early 1990s. New protocols were being invented and HTTP arrived. It was easy to write implementations of all these protocols as pure Python modules by just using the socket module, as we did in C. Similar things happened in other areas, for example, with numeric Python. Numeric Python is also a core of C code that implements efficient numerical array operations, as well as links to existing numerical libraries. On top of that, it lets you write fairly serious numerical operations.