On Mar 31, 5:40 pm, Rui Maciel <[EMAIL PROTECTED]> wrote: ... > So far the decision seems to be a no brainer. Yet, Python 3000 will arrive > in a few months. As it isn't backwards compatible with today's Python, > there is the risk that no matter what I learn until then, I will end up > having to re-learn at least a considerable part of the language. To put it > in other words, I fear that I will be wasting my time.
Not at all. The lead developers have a plan for migrating older scripts to 3000 automatically (or at least semi-automatically). This can be done because the core syntax and builtin's are remaining largely the same. The sort of thing that is changing in a way that breaks backward compatibility are things such as removing the print statement (e.g. >>> print "Hello world") with a print function (e.g. print("Hello world")) and rearranging the standard library. As Terry said, the major changes are additions and deletions - to expand on this, the deletions are generally likely to be modules that are rarely used or are unmaintained. In any case, the python developers have a very good policy of making the upgrade path to new versions of Python smooth. Generally new features are released into the __future__ module in a release ready for inclusion in the next release. This allows time to play with new features before the "official" release of the feature comes out. Module deletions usually hang around for a few releases as "deprecated" before being permanently removed - again giving time to catch up. I believe that the deprecation speed may come rather abruptly with 3000, however the 2.6 release will contain a PyLint program for identifying changes that will need to be made before migrating to 3k. In addition, the 2.x branch is AFAIK going to be maintained up to (but no further than) a 2.9 release. So there will be plenty of time to adjust! In short, any time invested in learning Python at this stage (except perhaps old-style classes as pointed out above) will be time well spent, as learning Python 3000 will be minor tweaks to what you'll already know. And for what it's worth, I've programmed in Haskell, C, Java (Java's my profession), Javascript and Perl, and dabbled with Ruby, Lisp, Groovy (and probably others), and Python is by far my favorite language, not just for the clean syntax, rapid development, readability 5 years down the line etc, but also for the community, which is very helpful and knowledgeable. BTW. I have to disagree with Andrew's comment: "With Perl, once you get the core syntax down, you don't need to master Perl. Instead you just look up the module/feature you want to use and just use it.". This may be true for knocking up Perl scripts, but for reading *other peoples* code in any language you need to have a good mastery of the core language. In Perl this is a quagmire of strange syntax, special cases, multiple ways to do the same thing and esoterica/magic, whereas Python's design to make whitespace significant and its "One (obvious) way to do things" philosophy makes reading other peoples code much easier. (Of course other peoples code always sucks, but hey ;-) -- http://mail.python.org/mailman/listinfo/python-list