← All Posts · ← Newer · Older →
Personal History - part 1, CWI
January 20, 2009 — originally posted on
The History of Python
Python’s early development started at a research institute in Amsterdam called
CWI, which is a Dutch acronym for a phrase that translates into English as Centre for Mathematics and Computer Science. CWI is an interesting place; funded by the Dutch government’s Department of Education and other research grants, it conducts academic-level research into computer science and mathematics. At any given time there are plenty of Ph.D. students wandering about and old-timers in the profession may still remember its original name, the Mathematical Centre. Under this name, it was perhaps most famous for the invention of
Algol 68.
I started working at CWI in late 1982, fresh out of university, as a programmer in the
ABC group led by
Lambert Meertens and
Steven Pemberton. After 4 or 5 years the ABC project was terminated due to the lack of obvious success and I moved to CWI’s
Amoeba group led by
Sape Mullender. Amoeba was a micro-kernel-based distributed system being jointly developed by CWI and the
Vrije Universiteit of Amsterdam, under leadership of
Andrew Tanenbaum. In 1991 Sape left CWI for a professorship at the
University of Twente and I ended up in the newly formed CWI multimedia group led by
Dick Bulterman.
Python is a direct product of my experience at CWI. As I explain later, ABC gave me the key inspiration for Python, Amoeba the immediate motivation, and the multimedia group fostered its growth. However, so far as I know, no funds at CWI were ever officially earmarked for its development. Instead, it merely evolved as an important tool for use in both the Amoeba and multimedia groups.
My original motivation for creating Python was the perceived need for a higher level language in the Amoeba project. I realized that the development of system administration utilities in C was taking too long. Moreover, doing these in the Bourne shell wouldn’t work for a variety of reasons. The most important one was that as a distributed micro-kernel system with a radically new design, Amoeba’s primitive operations were very different (and finer-grain) than the traditional primitive operations available in the Bourne shell. So there was a need for a language that would “bridge the gap between C and the shell.” For a long time, this was Python’s main catchphrase.
At this point, you might ask "why not port an existing language?" In my view, there weren’t a lot of suitable languages around at that time. I was familiar with Perl 3, but it was even more tied to Unix than the Bourne shell. I also didn’t like Perl’s syntax--my tastes in programming language syntax were strongly influenced by languages like
Algol 60, Pascal, Algol 68 (all of which I had learned early on), and last but not least, ABC, on which I’d spent four years of my life. So, I decided to design a language of my own which would borrow everything I liked from ABC while at the same time fixing all its problems (as I perceived them).
The first problem I decided to fix was the name! As it happened, the ABC team had some trouble picking a name for its language. The original name for the language,
B, had to be abandoned because of confusion with another language named B, that was older and better known. In any case,
B was meant as a working title only (the joke was that
B was the name of the variable containing the name of the language--hence the italics). The team had a public contest to come up with a new name, but none of the submissions made the cut, and in the end, the internal back up candidate prevailed. The name was meant to convey the idea that the language made programming “as simple as ABC”, but it never convinced me all that much.
So, rather than over-analyzing the naming problem, I decided to under-analyze it. I picked the first thing that came to mind, which happened to be
Monty Python’s Flying Circus, one of my favorite comedy troupes. The reference felt suitably irreverent for what was essentially a “
skunkworks project”. The word “Python” was also catchy, a bit edgy, and at the same time, it fit in the tradition of naming languages after famous people, like Pascal, Ada, and Eiffel. The Monty Python team may not be famous for their advancement of science or technology, but they are certainly a geek favorite. It also fit in with a tradition in the CWI Amoeba group to name programs after TV shows.
For many years I resisted attempts to associate the language with snakes. I finally gave up when O’Reilly wanted to put a snake on the front of their first Python book "Programming Python". It was an O’Reilly tradition to use animal pictures, and if it had to be an animal, it might as well be a snake.
With the naming issue settled, I started working on Python in late December 1989, and had a working version in the first months of 1990. I didn’t keep notes, but I remember vividly that the first piece of code I wrote for Python’s implementation was a simple LL(1) parser generator I called “pgen." This parser generator is still part of the Python source distribution and probably the least changed of all the code. This early version of Python was used by a number of people at CWI, mostly, but not exclusively in the Amoeba group during 1990. Key developers besides myself were my officemates, programmers
Sjoerd Mullender (Sape’s younger brother) and
Jack Jansen (who remained one of the lead developers of the Macintosh port for many years after I left CWI).
On February 20, 1991, I first released Python to the world in the
alt.sources newsgroup (as 21
uuencoded parts that had to be joined together and uudecoded to form a compressed tar file). This version was labeled 0.9.0, and released under a license that was an almost verbatim copy of the MIT license used by the X11 project at the time, substituting “Stichting Mathematisch Centrum”, CWI’s parent organization, as the responsible legal entity. So, like almost everything I’ve written, Python was open source before the term was even invented by
Eric Raymond and
Bruce Perens in late 1997.
There was immediately a lot of feedback and with this encouragement I kept a steady stream of releases coming for the next few years. I started to use
CVS to track changes and to allow easier sharing of coding responsibilities with Sjoerd and Jack (Coincidentally, CVS was originally developed as a set of shell scripts by
Dick Grune, who was an early member of the ABC group). I wrote a FAQ, which was regularly posted to some newsgroup, as was customary for FAQs in those days before the web, started a mailing list, and in March 1993 the
comp.lang.python newsgroup was created with my encouragement but without my direct involvement. The newsgroup and mailing list were joined via a bidirectional gateway that still exists, although it is now implemented as a feature of mailman – the dominant open source mailing list manager, itself written in Python.
In the summer of 1994, the newsgroup was buzzing with a thread titled “
If Guido was hit by a bus?” about the dependency of the growing Python community on my personal contributions. This culminated in an invitation from Michael McLay for me to spend two months as a guest researcher at
NIST, the US National Institute for Standards and Technology, formerly the National Bureau of Standards, in Gaithersburg, Maryland. Michael had a number of “customers” at NIST who were interested in using Python for a variety of standards-related projects and the budget for my stay there was motivated by the need to help them improve their Python skills, as well as possibly improving Python for their needs.
The
first Python workshop was held while I was there in November 1994, with NIST programmer
Ken Manheimer providing important assistance and encouragement. Of the approximately 20 attendees, about half are still active participants in the Python community and a few have become major open source project leaders themselves (
Jim Fulton of
Zope and
Barry Warsaw of
GNU mailman). With NIST’s support I also gave a keynote for about 400 people at the Usenix Little Languages conference in Santa Fe, organized by
Tom Christiansen, an open-minded Perl advocate who introduced me to Perl creator
Larry Wall and Tcl/Tk author
John Ousterhout.
Next installment: how I got a job in the US...
Comments (13)
Anonymous — January 21, 2009
Kudos, very interesting to read the history of my favorite language and it's creator.
NevilleDNZ — January 21, 2009
Consumers Guide to Programming Languages:
(from CS320 and NutWorks - October 1986)
* ALGOL 68 - An Astin Martin. An impressive car, but not just anyone can drive it. [...]
* Python - Nimbus 2000 broomstick.
Did the ALGOL 68 compiler at "Centrum voor Wiskunde en Informatica" ever get ported to Intel and/or does it's source code survive?
Intchanter — January 21, 2009
Out of curiosity, I searched the archives to see how old a version I could find. I managed to find 0.9.1, posted February 20/21, 1991. Since the sources were not yet available for download at python.org, I tarred them up and sent them to webmaster@python.org, so hopefully we'll soon see them there.
Juanjo Conti — January 26, 2009
Spanish translation:
hereBTW, Guido, in the mail artitle says "LL(1)" but there is no (1) footnote.
Juanjo Conti — January 26, 2009
Forget the LL(1) comment. My mistake.
Anonymous — February 09, 2009
Question: When did you choose the ">>>" prompt, and why that prompt?
Thank you!
Guido van Rossum — July 13, 2009
The >>> prompt was taken from ABC. I have no idea where they got it from.
Anonymous — July 25, 2011
When did you create "The Zen of Python"?
Guido van Rossum — July 25, 2011
@Vini: I didn't create the Zen of Python. Tim Peters wrote it. Barry Warsaw documented when:
http://www.wefearchange.org/2010/06/import-this-and-zen-of-python.html
Stroller — May 30, 2013
Took a compiler course in about 1978 from Robert Sibley. He gave us about 150 8.5 x 11 sheets memeographed titled QUASI. Many of the pages has large margins since they were originally 8 x 10. No collaborations at that time just reverse engineer with help of snoopy of generic pseudo assembler and machine code to produse language parsers for things in COBOL, PL/1 and FORTRAN then add some police box type add ons.
Forgnet — September 07, 2013
Very interesting to read as an young python programming lover. :)
Anonymous — October 08, 2013
Wonder if anyone from NSA was at the NIST conference.
Eko — November 03, 2013
Wow. Really interesting to read the history of _currently_ my favourite language. I am introduced to computer at the age of 14th. Never really interested, until I see the output of a DOS tree command. I am not sure why I was intrigued by that output!
I journey to many programming languages since, starting from gw basic,quick basic,pascal,c,java,c++,visual basic 6.0, visual c++ 6.0, .NET, php, cocoa/ios .. and finally.. Python. And I am loving Python the most!
I am not sure why I love Python. Maybe because you use a simple Indentation to denote a block of code. I never had that kind of thrilled in my entire lifetime!
And also, as Python is very active in web development, I am helped by it. Previously, I am not that interested in web development. But with Python... wow, I feel like travelling back to my 14th, and starting to learn to program.. again.
I also encourage/promote Python in my local communities in a CoderDojo activities, using this blog as tutorial blog : http://pythonthusiast.pythonblogs.com
Thanks Guido!
← All Posts · ← Newer · Older →