I just had Guido van Rossum’s blog pointed out to me, and on it, he’s just made an announcement about the next “major” version of Python, for which they’re going to do some massive internal changes, and (god forbid), break backward compatability. So, firstly, you may want to read the post, which you can get here and then take a look at some of my thoughts.
- Firstly, removing “print” as a keyword (and rebirthing it as a function, a la C) is something that should have been done years ago — truly it is an abomination and deserves to die a slow and painful death.
- Many functions useful to the building of for loops have had their entire internal structure revamped; instead of building lists and iterating over these lists, they simply use an iteration function — from an algorithmist’s point of view, this is truly wonderful (technical details follow). The current python model implies that to initiate a for loop, you would need to go through an O(n)-time process of constructing a list, and then use that list to get an iteration variable (which has an O(n) space overhead) — clearly not very efficient. The new version of range acts like Python’s xrange(), which simply uses an iteration function. The time and memory increase will be enourmous.
- Division (where necessary) is now floating-point by default; so 1/2 will now equal 0.5 instead of 0. From a teaching point of view, it’s going to be wonderful.
- A Java-like Class hierarchy now exists, which, despite my great hatred of Java, is one of its OO-related strong points. So, all in all, I think Python 3K is going to be very interesting, indeed, and am looking forward to trying out some of the alphas when they’re out (August)