Is this a good time to start learning python?

Ant antroy at gmail.com
Mon Mar 31 23:57:36 CEST 2008


On Mar 31, 5:40 pm, Rui Maciel <rui.mac... at gmail.com> 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 ;-)



More information about the Python-list mailing list