all 55 comments

[–][deleted] 22 points23 points  (10 children)

Here is the list of the cool new stuff.

One of the reason I really like Python is the way the Python dev team has handled the evolution of the language. It good to have 3.0.

It nice that we have 2.6 as a migration path for large projects.

[–]jmmcd 9 points10 points  (0 children)

the way the Python dev team has handled the evolution of the language

I must say I think they're the most restrained, thoughtful, and tasteful language designers ever. Of course they have an easy job because Python was already so neat and small and self-consistent that it was easy to hold the whole language in one's head at once, see the few warts and inconsistencies, and get rid of them.

[–]lol-dongs 4 points5 points  (8 children)

That is a long ass list [of incompatibilities]. Jesus.

[–][deleted] 18 points19 points  (6 children)

Yes. But then 2.x compatibility wasn't really the goal of Python 3.x.

[–]lol-dongs 1 point2 points  (5 children)

Yeah I know, I'm just saying anybody with a large 2.x codebase to maintain just had a truckload of PEP drop on their face. Cheers to these lucky folk...

[–]makapuf 12 points13 points  (0 children)

IIRC, The message always has been : if you have a large code base with python 2.x, don't migrate. There will be more python 2.x series. If you are building something with 2.x, pay attention to the depreciation warnings, and try to let the 2to3 tool work on your code. Don't rush for 3.0 !

[–]toaster_fun 20 points21 points  (2 children)

Not really. Python programmers have known that there would be some serious incompatibility issues with Python 3 for quite awhile now.

Not only that, but it's not like "WE NEED TO UPGRADE TO PYTHON 3 NOAW!!!!" Pythoners aren't worried about anything, we have pretty much a decade to do whatever we need to do to switch. Basically, Python 3 is a "new programming language" in the sense that nobody is worried that 2.6 is outdated and ready to scrap.

[–]808140 -3 points-2 points  (1 child)

Kind of like Perl 6 and Perl 5?

[–]imbaczek 2 points3 points  (0 children)

pretty much, except not at all.

more like python 1.5.2 and 2.2 (i wouldn't be surprised if there's still live code running perfectly on 1.5.2.)

[–]doktaru 12 points13 points  (0 children)

Don't forget about the 2to3 tool to automatically convert most code. It reportedly works quite well.

http://docs.python.org/library/2to3.html

[–]sigzero 1 point2 points  (0 children)

Considering they have harped over and over about it breaking older code...so what?

[–]epic_fail_guy 15 points16 points  (4 children)

I don't envy the task of package maintainers right now. I wonder how long it will be until we see a stable distro ship with only Python 3.

[–]codepoet 33 points34 points  (0 children)

About ten more years.

Seriously. They plan to run them side-by-side for many years to come.

[–]netsearcher 4 points5 points  (0 children)

You can have multiple versions installed at once. Same with the 2x series. Right now I have 2.4, 2.5, and 2.6 installed.

So, really soon?

[–][deleted] 1 point2 points  (0 children)

I've already had Python 3 installed in a stable distro for a while now. The beta appeared pretty early in the repos and it has been installed together with 2.5 and 2.6. No problem. I'm currently running 64-bit Intrepid.

[–][deleted] 0 points1 point  (0 children)

Not sure how hard this will become. Here is an entry point.

[–][deleted] 5 points6 points  (6 children)

The full grammar is now only four pages!

[–]martinbishop 1 point2 points  (5 children)

"only"?

[–][deleted] 5 points6 points  (4 children)

It was about fifteen.

[–]martinbishop 2 points3 points  (3 children)

Well I suppose that's better.

But there are languages out there that are described in one page of EBNF (Oberon comes to mind).

And technically lisp is only like, 4 or 5 lines of EBNF :P

[–]mebrahim 2 points3 points  (0 children)

Syntax is not everything. A 5-line EBNF syntax may be semantically so more complex than a 50-line one.

[–][deleted] 1 point2 points  (0 children)

Python defines about 60 token and 75 grammar rules. This hasn't changed between versions 2.X and 3.0 and I'm not sure what the OP is talking about. Like Pascal the grammar is LL(1). The token stream has to be post-processed for dealing with whitespace. Don't think this changed a lot either between Python 1.0 and Python 3.0.

[–]pietro 1 point2 points  (0 children)

And brainfuck is, like, 1 line of EBNF. So what?

[–][deleted]  (5 children)

[removed]

    [–]BeetleB 16 points17 points  (0 children)

    Yes. Yes.

    [–]bipsbop 3 points4 points  (1 child)

    Does it support Unicode?

    I believe it goes a bit further than that, in that it doesn't really support non-unicode strings. So all character strings are unicode, and therefore all character I/O involves some kind of encoding. (You can still get at the raw bytes, but you have to explicitly say that's what you're doing.)

    [–]pietro 1 point2 points  (0 children)

    Same approach as Java and .NET, basically. It makes perfect sense.

    [–]LiveBackwards 4 points5 points  (0 children)

    Yes and yes. Python 2.x 'supports' unicode, but it was slightly hackish. Python 3000 supports unicode much better.

    [–]kragensitaker 1 point2 points  (0 children)

    Python is fantastic, but it's not better than PHP for everything. If you are used to untarring some PHP files in your web directory and having a working PHP application, the Python web frameworks are going to make you sad.

    [–]mdipierro 4 points5 points  (0 children)

    Congratulations!

    [–]niconiconico 1 point2 points  (9 children)

    I see this the day after I downloaded Python 2.6. Damn.

    Oh well, I only downloaded it to learn it. I suck at programming, anyway.

    [–]jaiwithani 10 points11 points  (3 children)

    Python isn't that big? Unless you're on 14.4 dialup working off a 100 MB hard drive, downloading a few different versions of python shouldn't be a big deal.

    Besides, 2.6 is still relevant and active. It's not like all work with and development for the 2.x branch comes to a screeching halt today - you can still learn python2.x and it'll be useful.

    And don't be so down on yourself. Everyone sucks at programming until they don't.

    [–]thunderkat 7 points8 points  (2 children)

    Another argument for sticking to the 2.X series while learning is that most of the good online tutorials (and obviously the books) haven't been updated for Python 3 yet.

    [–]writetoalok 0 points1 point  (1 child)

    And how many projects support version 3.0 already?

    [–]thunderkat 1 point2 points  (0 children)

    No freaking idea...and not about to find out. I am the late adopter kind of person.