I attended the Vancouver Python Workshop this weekend and had a great time. What follows is a brief chronological discussion about the talks I attended:
Guido van Rossum's Key Note presentation: Guido talked about Python 3000 and the various things he has in mind for it. He has a clear idea for what kinds of changes he want to fix, but a lot is still up in the air. Some of this is documented in PEP 3100. Here are some of the things I wrote down (that seemed important to me):
range won't return lists anymore,
xrange will be killed. I use
xrange all the time so I will have to stop!
range will return an iterator so I assume one will have to do something like list(range(n)) to create a list now.
- All strings will become unicode. Whereas now there are string objects and a unicode string is a different beast, in Python 3000 what we now call strings will just be like byte arrays and what we now call unicode strings will just be strings (because unicode will be default).
<> will be dropped as a not-equal-to operator.
print will become functions. This is great because now you can easily replace occurences of the print command in your code with a custom function like
apply, filter, map, reduce will all be removed.
- list comprehensions will no longer leak into the surrounding scope. I've noticed this recently and it will be nice when this is gone.
lambda will stay. Guido has been convinced to keep it in the language.
raise E, arg: in favour of
- The ability to use
`x` as an alternative to
repr(x) will be removed
- Guido said something about perhaps allowed function to be overloaded by definining the types of the expected arguments but I didn't catch everything he said on this and I dont' see it written in PEP 3100.
Code migration from PyChecker or PyLint for 80% of the work and version of Python 2.x that warn about "doomed code."
Overall I really enjoyed Guido's talk and I instead of talking about it anymore, you can basically watch the entire speech here:
It is pretty much the same slides with maybe a few changes. He admitted that it was the same talk he gave at OSCON 2006 but that he improvises a lot.
Jim Hugunin's Key Note: Jim (created of Numeric, Jython, and now IronPython (.NET)) gave us all an overview of IronPythono and what it can do. It is pretty amazing. Imagine accessing all of .NET's libraries and framework without having to code in C#. Or to code up a bottleneck in C# and call it from python code. Iron Python has released a 1.0 release candidate and it is released under a BSD-style license. I was very interested in the possibility of using IronPython as a language for numerics with some C/C++/C# running the time-consuming stuff. Jim loves the CLR and actually mentioned that he would love to port NumPy to the CLR if he could get 6 months time off to work on it. It was an awesome presentation and Jim went through a lot in 45 minutes.
Q&A with Guido van Rossum:
The most interesting question was something along the lines of "what is your favourite GUI toolkit/wrapper for Python" and Guido's answer was Tkinter. The interesting part was when Guido said he thought GUI toolkits were on the way out and that web apps are instead the way to go. He said using the web model where half the work can be done on the server and half on the client and things can be shared over the network is the way of the future. He also said that we have good GUI frameworks for the web already.
The other thing I found out from the Q&A was that Python has an education special interest group, the Python EDU-SIG. Apparently some schools are already starting to teach Python in introductory computer science courses. I think Python would be a great course for high school students as well as for university students in many courses, in fact any course that doesn't absolutely require another language for some reason.
Jim Hugunin: more about .NET, great presentation
Bradley Lawrence (from Rapid): Great information on how to convince your boss that Python is the right tool for the job (rapid development time, easy to bring new hires up to speed, mature and stable, support (ActiveState), license not viral). He talked about their RapidData application
Tom Weir: Good presentation about SWIG; however, it had the side-effect of convincing me that I should avoid SWIG at all costs unless I really need to use it.
For the rest of the afternoon I attended two panel discussions where a learned a little more about Zope, Plone, general web services using Python, and embedding Python in C, C++, Objective C, Java, and other languages.
Jim O'Leary's Object-Oriented Basics with Python: I expected this to be an introduction to Object-Oriented Python for programmers, instead it turned out to be an Introduction to Object-Oriented Basics. I already know OO in Python but there are some niggly details about inheritance that I am still a bit fuzzy on. Nothing against Jim though. It did seem like there were a lot of programming newbies in the room.
Wilson Fowlie: A great talk all about pyparsing. If you need to parse anything, check out this module. Sounds awesome.
James Thiele: A good talk about embedding domain-specific languages in Python. It was a great tutorial, he built up his code slowly slide-by-slide explaining exactly how do go about adding syntax to python for defining syntax for a edge for a weighted graph (such as n1->n2). He slides should be on his website soon.
Anthony Howe (from Voice Mobility: Interesting application called WebFeeds that sends you RSS feeds to your voice mail. The ascii to voice translation was done using NeoSpeech and it sounded so good that I didn't realize it was not a real voice at first.
Lightning talks: A quick talk about Django (which I am really excited about) and many, many other talks (5 minutes each). The work going on at rPath sounds interesting.
Ian Caven: Great talk showing off the movies his company has restored over the years. The bulk of all the algorithms that he coded for restoring movies is done in Python with Numeric, most likely with an old version of Numeric. They have something like 50000 lines of Python code and about the same amount of legacy C++ sharp code which I assume is called from Python.
Overall I really enjoyed the conference and I made a couple contacts. The slides of all the presenters should be on the web soon and I look forward to having a second look at some of them and a first look at others that I wasn't able to attend.