All Things Pythonic

A Response to Bruce Eckel

by Guido van van Rossum

September 11, 2007



Summary

Bruce Eckel blogged about "Python 3K or Python 2.9?". A lively discussion ensued. Here's my response.


I'll address each section of Bruce Eckel's blog entry Python 3K or Python 2.9? briefly.

Concurrency: It seems we're now happily out exploring here. I'm looking forward to benchmarks showing that PP or similar (or dissimilar!) solutions actually provide a performance gain. Another route I'd like to see explored is integrating one such solution into an existing web framework (or perhaps as WSGI middleware) so that web applications have an easy way out without redesigning their architecture.

Eggs and Easyinstall standardized: From the response it's pretty clear why these particular solutions aren't standardized yet -- they are at best controversial. In any case this is a library issue and not tied to 3.0. I'm hoping someone improves upon Phillip Eby's work. I'll gladly accept something into the standard library but I don't have the time to write it myself: for several reasons I'm not in the primary audience for such a tool.

Better application deployment support: Again, a library issue, I cannot do much about -- I don't have time to do it myself and I don't like telling other people what to do (nor do I like to be told what to do myself, as should be obvious by now).

Get rid of self: I think this has been addressed in the responses; it's not as easy as you'd think, and there are important advantages to the uniform interpretation of methods as "just functions that get called in a funky way". In Ruby, everything is a method, or an anonymous block, and there are no "free functions". Python uses the complimentary approach, treating functions as first-class citizens. Both approaches are complete; they are however incompatible, and you can't easily morph one into the other. (Personally, I find that the criticm of explicit self has about as much merit as the criticism of Python's use of whitespace.)

Transparent connections to UI languages: Again, a library issue. I agree that Tk is antiquated, but it still has a following, and IDLE is actively being supported. The alternatives that are readily available, like PyQt, PyGTK, or wxPython, all have their specific advantages and disadvantages, making it hard to pick one (plus, the political impact of putting one in the standard library could be damaging both to Python and to the alternatives that weren't picked). However, it looks like Bruce believes that these are all antiquated, and we should be looking forward to the next generation of solutions. But which one to pick? IMO it's way too early to know; these things are about to evolve dramatically, and some are likely to die.

That requires someone dedicated who is willing to put out a quick series of experimental releases, and a user base who are interested in living on the bleeding edge. It's not an appropriate project for Python 3000 -- despite the whimsical name, it is primarily a very conservative overhaul of the language, focused on fixing some of the moer tenacious warts that can only be fixed by breaking backwards compatibility. (Those warts that can be fixed without breaking compatibility are getting fixed in an evolutionary way, but some things just can't be changed that way.)

Library support ("smart libraries"): This is a pretty rambling section that mostly just leaves me mystified. Never having to look up documentation again? That sounds like wishful thinking. There is no substitute for understanding what you are trying to do, and "smart" here seems to be synonymous with clairvoyance. However, Bruce guessed one thing right: I am encouraging people who want to explore such things to make the most of argument annotations, which are waiting to be used.

Component support: I guess this section is referencing a context I'm unfamiliar with (not having used Java much) since the tie with event handling under this heading completely baffled me. I seem to recall that Java had several misguided attempts at supporting "heavy" components -- but maybe there's a consensus in that world now? I think it would be a useful experiment to try to create whatever it is you want as an add-on library, which I believe is mostly the status it has in Java.

Support for DSL creation: This means different things to different people. Personally, I believe the Ruby folks are abusing the term. The gentleman who pointed out that Python has DS Libraries instead of DS Languages hit the nail exactly on the head IMO; this is another example of two different ways to solve the same problem that are complementary and won't easily converge.

A parting remark Python 3000 is mostly the work of a handful of people, who mostly care about the core language (which is the hardest thing to evolve). Bruce's post (apart from the anti-self rant) is mostly about issues around the language, like libraries and components. These things can easily be added by motivated individuals. It's open source. What are you all waiting for?!

Talk Back!

Have an opinion? Readers have already posted 32 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Guido van van Rossum adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Guido van Rossum is the creator of Python, one of the major programming languages on and off the web. The Python community refers to him as the BDFL (Benevolent Dictator For Life), a title straight from a Monty Python skit. He moved from the Netherlands to the USA in 1995, where he met his wife. Until July 2003 they lived in the northern Virginia suburbs of Washington, DC with their son Orlijn, who was born in 2001. They then moved to Silicon Valley where Guido now works for Google (spending 50% of his time on Python!).

This weblog entry is Copyright © 2007 Guido van van Rossum. All rights reserved.