Guido van Rossum, creator of the Python programming language;, started with a short Q&A session before his real talk began.
Asked about the
He's not "afraid of jumping onto that bandwagon, but it looks like it's still in the garage."
That said, Guido maintained that he wasn't stuck on the current Python VM, and mentioned the work on getting Python to work on the .NET and JVM platforms.
Fielding another question in his black PYTHONLABS tee, Guido talked a bit about the process of integrating new code or libraries into the Python core, noting that changes should be useful across many application domains, mature, and have an active maintainer. It also may not make sense to integrate code that changes much more quickly than the realtively slower Python release schedule.
Guido also talked a bit about the optional static typing debate that's been flying around the programming languages blogosphere, calling it a "incredibly contentious subject".
When asked about languages like Haskell or ML, Guido said that Python would never end up evolving in that direction, in order to maintain Python's dynamic flexibility.
Asked about Ruby, Guido thought that it "seems like an accident attempt in cleaning up Perl". He disliked the perlesque parts of Ruby and claimed that the semantics of Ruby code blocks is not always clear.
One developer sitting on the floor made a feature request for continutations in Python, but Guido replied that "his head explodes" whenever he has tried to understand continuations. Instead, generators in Python, we were told, could do 90% of what you might want to do with continuations.
After that, Guido started his talk, titled "What's (Not) New in Python", his favorite talk. "What's New" talks, he told us, tend to degrade into too much "laundry-listness".
He breezed through a few slide describing his own Pythonic lifetime from his "first grlfriend :-1" at age 21 to his recent role as a relatively new father. I expected him to say that he teaches his kid Python algonside Dutch and English, but he said that he tried to keep his kid away from computers, except for looking at firetruck images on google.
As for teaching other kids programming languages, Guido told us that teachers of programming tell him that kids learn and "understand much better" if they see Python before Java.
Moving on to an older target audience, Guido asked how many of us were Python users. Maybe a quarter of the room raised their hands. And just as in Brian Aker did in his MySQL talk, Guido asked first how many of use his technology at work, and then asked second how many of those people told their boss :).
Guido seemed to think that a language like Python would have significant advantages at a place like Amazon, where you want to develop quickly and prototype software. At his workplace, he's doing enterprise security software these days.
But in his spare time, Guido acts as the benevolent dictator for life for Python, but provides a "PEP" mechanism for allowing everybody to give input on the Python language.
Guido went on to describe the evolution of iterators and generators, from simple loops to pseudo-sequences and iterators in Python 2.2. Along the way he took another friendly shot at the Perl community, for creating a whole new language for Perl 6 and calling it the same name.
He showed how Python 2.2's generators and iterators made it easier to write cleaner and even faster code, mentioning parsing/tokenizing, the standard library difflib module, and os.walk() as example uses.
[Insert picture of Guido's kid eating out of a big tub of cool whip.]
Guido next stepped through a few neat Python features such as generator expressions and told us about how methods can be added and called in a dynamic fashion.
In talking about function binding, lookup and currying, Guido had this to say. "In general, I don't like magic."
His next slide proclaimed "Magic Is Bad!" and subsequent slides described the "magic revealed: descriptors", to unify user-defined classes with built-in types.
Another slide told us that "If you take one thing away from this talk, it should be how to create simple properties", another one mentioned how to do schizophrenic things with classes and metaclasses, another slide of his cute little kid, and finally "Question Time", one last simple slide.
Q: Any practical suggestions for avoiding run-time debugging?
A: Try running PyCheck.
Someone suggested unit tests, and Guido mentioned that Python code is, anecdotally, a factor of five shorter.
Q: What's holding Python back?
A: It may take another generation of programmers to get over the prejudice for static typing.
Q: Are there languages out there that you want to take features from?
A: All the time. But I have to be careful... It's a balance.
He mentions Boo, which is 95% Python, but statically typed and thus feels completely different. Guido does not want Python to become Boo.
Q: Incremental garbage collection?
A: Referencing counting was good until you had cyclic references. Python still do reference counting, but there's an optional high-performance GC that kicks in when cycles exist -- it's not something you need to worry about. It'd be "incredibly tough" to compile with something like an incremental garbage collector, but there are things like Jython with the standard JVM GC.
Time is up and Guido says "Books!"
Three seconds later: "All gone."