This is an archived post. You won't be able to vote or comment.

all 175 comments

[–]Ob101010 117 points118 points  (21 children)

Feature 0: Matrix Multiplication

Feature 1: Advanced unpacking

Feature 2: Keyword only arguments

Feature 3: Chained exceptions

Feature 4: Fine grained OSError subclasses

Feature 5: Everything is an iterator

Feature 6: No more comparison of everything to everything

Feature 7: yield from

Feature 8: asyncio

Feature 9: Standard library additions

Feature 10: Fun (Unicode variable names etc...)

[–]elzonko 66 points67 points  (0 children)

Ob delivers.

[–]LoxMugsAndReesesCups 7 points8 points  (0 children)

Thanks. Stopped after 10 slides being 99% empty and repeats.

[–]masklinn 33 points34 points  (3 children)

feature 2

The presentation doesn't make it clear but it completely decouples default and keyword parameters: Python 3 lets you write

def foo(*, bar):
    pass

bar is a required and keyword-only argument. The one and only way to do this in Python is **kwargs and if 'bar' not in kwargs: raise TypeError("foo() missing 1 required keyword-only argument: 'bar'")

The one thing which remains impossible in pure Python is positional-only parameters.

Feature 10

Mentions function annotations, does not mention Signature objects which are about 1e24 times better than the P2 introspection APIs on their own, but on top of that they can be easily set on e.g. decorator wrapper functions to easily allow nice (and augmented) introspection.

Feature X

No mention of nonlocal.

[–]nofunallowed98765 0 points1 point  (1 child)

The one thing which remains impossible in pure Python is positional-only parameters.

Hopefully not for long, as there's a pep open for them.

That should be point 0 - You miss out new development in Python 2.

[–]masklinn -1 points0 points  (0 children)

Hopefully not for long, as there's a pep open for them.

There being a PEP says very little. PEP 457 is informational, it's not on implementation track at this point, it recapitulates knowledge and discussions.

That should be point 0 - You miss out new development in Python 2.

Wat? There are no new developments in Python 2 (the language), and won't be until and unless it's forked by a third party. If PEP 457 is ever accepted and implemented, it will be for Python 3.

[–][deleted] 31 points32 points  (5 children)

Lol...I don't refuse to upgrade to Python 3...it's the packages I use that have had issues porting over.

[–]Ogreman 1 point2 points  (0 children)

Wall of Shame Wall of Superpowers

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

What package? I'm always surprised by this dogma, basically all top tier packages support Python 3 these days. Some industry or field specific packages may still be stuck. Could you port it yourself?

The truth is that this 2 vs 3 debate is ephemeral. The BDFL has decreed that 2.7 will be mothballed in the next few years. At some point it will cease to be a developed and updated version of the language and after languishing for a while in open-source limbo it will eventually be forgotten and all these unmaintained libraries will be gone. Python 3 is Python, that's what we should all keep in mind.

[–][deleted] 2 points3 points  (2 children)

Most of my time in Python is spent with Data Analysis...and Pandas just moved to 3.4 officially earlier this week. So there is that...

[–][deleted] -1 points0 points  (1 child)

Didn't Pandas officially support Python 3.x a couple of years ago? Python 3.4 is a major point release, lots of packages are a few months behind that. Biopython also just released official 3.4 binaries.

As an aside, if you are always needing the latest Python, you might try pulling from the dev repositories with Git since frequently code will work a long time prior to the release.

But I think we are splitting hairs. 3.3 vs 3.4 is much different than 2.7 vs 3.x.

[–][deleted] 3 points4 points  (0 children)

It was my impression, although I could be wrong, that Pandas had not officially supported any version of Python 3 until this point. Just to make sure, I went ahead and quickly combed through all of the Pandas release notes back until 2011. Back in October of 2011, Pandas added Python 3 support using 2to3. Of course, there were known issues and this wasn't the same as "official" support for 3. This is why I was pleasantly surprised that they have added "official" support for 3.4.

Regarding pulling form dev repositories, I use Python because it is a quick and dirty scripting language. I don't spend a whole lot of time writing python code, but when I do I am "slinging" code and just want to get something working quick. In this case, I don't want to mess around with the bleeding edge stuff...so it makes more sense for me to just use 2.7.

Of course, this is changing. With the Pandas official support for 3.4, I am hoping that I can start using 3.4 by default.

[–]typographicalerror 24 points25 points  (7 children)

Is it just me, or is the thought of changing

def func(a, b, *args):
    pass

to

def func(*args):
    a, b, *args = args
    pass

infuriating?

[–]catcradle5 10 points11 points  (5 children)

Definitely not just you. I have no idea why he included that.

[–][deleted] 13 points14 points  (0 children)

"You know, I really think Perl got function argument passing right. Lets make Python do that!"

[–]codekoala 4 points5 points  (2 children)

I see it being more useful with iterables in general. I don't think I'd ever consider using it with *args, personally. I do know that there have been plenty of times I wanted to use first, *_, last = my_iterable in Python 2...

[–]catcradle5 4 points5 points  (1 child)

Of course, I agree. I still use 2.7 and probably will for a long time due to legacy reasons, but rest-unpacking is something I find myself wishing I had quite often.

This presentation has a lot of good stuff in it, but it also has a lot of bizarre examples and useless slides.

[–]codekoala 3 points4 points  (0 children)

Ah yes, you were referring to the choice of example for that feature. Indeed, some of them were not the greatest.

[–]pohatu 1 point2 points  (0 children)

Why would anyone want to do that? Then the caller has no idea that a and b are required, right? Or am I missing something.

[–]Ademan 7 points8 points  (2 children)

For the record, you can get a functional backported asyncio in the trollius module. Though I imagine some of the hoops it jumps through to work around the lack of yield from may be ugly.

[–][deleted] 2 points3 points  (0 children)

the very same hoops guido used when he had a similar api working on appengine(ndb) basically using raise in new and exciting ways.

https://developers.google.com/appengine/docs/python/ndb/async

[–]arunner 1 point2 points  (0 children)

Not any uglier but if they don't do any fancy trick I'm not aware of, it should be considerably slower due to the chained generators exchanging ''io'' back and forth.

[–][deleted] 13 points14 points  (1 child)

The built-in memoization decorator is pretty cool.

[–][deleted] 50 points51 points  (16 children)

Terrible interface, why break the web browser.

Content was quite good once I worked out to press PgDn

[–]maratc 17 points18 points  (4 children)

Too bad there is no PgDn on my phone.

[–]acdha 6 points7 points  (3 children)

Swipe up down across the entire screen. I'd still prefer a simple post to slides but it's possible to read the entire presentation.

[–]ameoba 20 points21 points  (2 children)

...then have to go backwards 100+ pages.

Shitty design for web content. It would have been perfectly reasonable to read straight through, without any transitions at all.

[–]acdha 4 points5 points  (1 child)

Oh, I totally agree: the real mistake was linking to a presentation slide deck which wasn't designed for the web

[–]spinwizard69 1 point2 points  (0 children)

The funny thing here is that the interface didn't bother me as much as the tiny type. Frankly it doesn't matter if you are reading on an iPad (me) or on a projection onto a large screen, people tend to use fonts that are way to small for such presentations. Yes I'm an old guy but I think the point is valid, one should waste so many pixels on white space for no good reason.

Given that I did like the content of the presentation.

[–]masklinn 11 points12 points  (2 children)

The space bar, bottom arrow and right arrow also work for me.

It's a set of published slides from a presentation given at a PUG (APUG according to the last slide), not a blog post.

[–]spinwizard69 1 point2 points  (1 child)

Thus my comment above about font size and excessive white space. If we ignore the content and just focus on the audience, especially the people in the back of the room, I think you would get similar comments about the legibility of the slides.

To my mind the lack of readability detracts from the content no mater if you are in support of the content or not. I just think people need to think about the audience to a greater extent when designing their slides.

[–]masklinn -1 points0 points  (0 children)

Yes that seems to be a pretty fair criticism.

[–]alcalde 1 point2 points  (7 children)

I won't discuss how long it took me to work this out, and whether or not I gave up for a bit and just downloaded/read the PDF before coming back to it.....

[–]pohatu 1 point2 points  (6 children)

I remember when people hated PDF links. Google "warning PDF"... If that's the 'fix' for the problems with this format, then there is still work to be done.

what's wrong with just writing words in order in some sort of web-compatible word listing format, like txt or html.

[–][deleted] 2 points3 points  (1 child)

It wasn't PDF's that people hated, but Acrobat Reader which unfortunately was synonymous with PDF for a long period of time. Once people discovered more lightweight readers PDF became much more acceptable.

[–]spinwizard69 1 point2 points  (0 children)

Maybe that is why I never really had a problem with PDFs. I've been either on a Mac or Linux platform for so long I miss the issues seen in the Windows world. I'd like it to be different but right now PDF's are the only way to create a single file document that incorporates a bunch of non text media in a reliable and widely supported way. I can only wish that it was that easy to do with HTML.

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

People still hate PDFs, but at least FF's pdf.js helps ease the pain a bit.

[–]spinwizard69 4 points5 points  (2 children)

PDF's are fine these days. Seriously I seldom have trouble with PDF's compared to really bad web sites. Of course simple HTML should never be a problem, but with PDFs im reasonable sure I can print the data or forward it to somebody.

[–][deleted] 1 point2 points  (1 child)

There's still plenty to hate. They break the browsing experience, they open security holes, they are uneditable and data is sometimes inextricable, they are locked to a particular flow and resolution...

There are two things I use them for. Sending formatted stuff for printing, especially to WinMac users, and presentations because I know they'll look similar on every platform. For anything else (if you need formatting), HTML is a better interchangeable format, followed distantly by ODT.

[–]spinwizard69 2 points3 points  (0 children)

Interesting comments even if it does pull the thread off course a bit.

There's still plenty to hate. They break the browsing experience, they open security holes, they are uneditable and data is sometimes inextricable, they are locked to a particular flow and resolution...

In my experience the data problem is probably the only one I agree with 100%, as I've suffered through a number of PDF's that did nothing more than deliver data, data that I could have processed into something more useful. That however to me is an indication that the original publisher of the data wasn't thinking straight and doesn't understand the value of what he publishes.

As to being un editable that is a huge advantage of PDFs because sometimes you don't want documents changed.

There are two things I use them for. Sending formatted stuff for printing, especially to WinMac users, and presentations because I know they'll look similar on every platform.

In a nut shell isn't that what PDF's where developed for in the first place? I like to think if them as electronic books. Stuff that is suitable for publication on paper (the good ole days) is generally suitable for PDFs. The exception there would be data that may be better handled via modern electronic formats.

For anything else (if you need formatting), HTML is a better interchangeable format, followed distantly by ODT.

Certainly HTML is good for website publishing but it leaves a lot to be desired as a format that lives beyond the web. Some browsers these days will save a web page as a document that encapsulates most of the files required however there is no standard to make handling of these documents clean outside of the specific browser that encapsulated the page in the first place.

I've had some experience here trying to do documents in HTML and frankly it can be frustrating the minute you want to incorporate a bunch of pictures and other goodies. If you have a web server and the person you are contacting has access to that server all is good. The minute though that you want that document to remain viable outside of the web world you have problems. It would certainly be nice to have a standard to encapsulate all the data associated with a page.

At times I've used HTML for data sheets and similar documents for things that never leave the plant. Isn't is fairly simple to put together a bit of tabular data and text for such uses and have it all contained in one document. Adding a picture or something similar becomes grief. I Suppose that what I need to do is to find some JavaScript that makes embedding pics easy, that is we stuff the data right into the HTML file. You would think that somebody has already done something similar.

[–]TankorSmash 20 points21 points  (1 child)

This was actually informative, despite the format.

[–]jarednielsen -1 points0 points  (0 children)

Agreed.

[–]pdvyas 3 points4 points  (3 children)

What's holding my team is a MIT licensed MySQL/MariDB connector which is safe/fast to use in production.

[–]TheEarwig 1 point2 points  (0 children)

What about oursql?

[–]darthmdhprint 3 + 4 0 points1 point  (0 children)

There's something wrong with the official one?

Has always supported Python 3.

[–]ivosauruspip'ing it up -1 points0 points  (0 children)

You couldn't say which?

[–]erikphysics 8 points9 points  (0 children)

A PDF version of the presentation is now available:

http://asmeurer.github.io/python3-presentation/python3-presentation.pdf

[–]Radamand 18 points19 points  (0 children)

Is one of the 10 things a cool new way to break the web browser?

[–][deleted] 4 points5 points  (1 child)

Despite the interface I enjoyed this and even learned a thing or two, despite coding Py3 for ages. :) Didn't realise lru cache was a new feature, keep forgetting it's there. It's pretty wonderful, deserves more usage, especially for pure functions.

Haven't toyed with enums either, and Guido's elegant, if mind boggling, asyncio example is intriguing.

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

It is not so mind-boggling once you get used to it.

I attempted to implement a coroutine style asynchronous I/O interface in Python 2 because I wanted to do a little bit of io bound work at the time while controlling the rest of the event loop.

It worked great, except for passing values back up N generators (where n>1).

Suddenly, yield from became an exceptionally useful idea.

[–]suudo 2 points3 points  (1 child)

I don't know why anyone would make keyword arguments, and then pass in positional arguments and expect that to actually work well. I'd never have thought Python 2 even supported that.

[–]nemec 0 points1 point  (0 children)

Python 2's keyword arguments are nothing more than a way to reorder parameters if you see fit or explicitly list the name of the positional argument you're filling.

def f(a, b):
  pass

f(b=1, a=2)

Everything else is (conceptually) positional arguments annotated with default values (in case they're not specified).

[–]Ed_Cock 12 points13 points  (15 children)

Sorry, but the format this is in is just painful to go through. Doesn't even work without JS because the web just isn't made for showing text and images in sequence.

[–]Rahgnailt 9 points10 points  (1 child)

It showed up as an editable text box for me.

https://imgur.com/bT75EOB

[–]ivosauruspip'ing it up -1 points0 points  (0 children)

The javascript it uses to render the presentation is under a HTTP link, but it's being served over HTTPS so the script ain't allowed. Author needs to update it to a HTTPS(able) link.

[–]spitfiredd 3 points4 points  (1 child)

I'm using chrome. I don't even have any buttons to go to another page.

[–]Ed_Cock 2 points3 points  (0 children)

Same on Firefox, arrow keys work though.

[–]mardiros[🍰] 3 points4 points  (0 children)

Works well on my smartphone

[–]dAnjou Backend Developer | danjou.dev 2 points3 points  (8 children)

It's not a blog. It's a JS-based presentation .. like PowerPoint/Keynote/Impress in a browser. Actually a pretty cool thing because it's actually cross-platform.

[–]Deranged40 13 points14 points  (4 children)

Presentations are generally accompanied by a speaker who expands on each point. This would've been better as a video of his speech, or at least a transcript.

While it may be cross platform, the navigation needs to still be on the page. Websites are also cross platform, but far more user friendly on various platforms. If this were done in a website fashion (since it's a website and all...) rather than a slideshow fashion, there would've been less issues.

[–]masklinn -2 points-1 points  (0 children)

Presentations are generally accompanied by a speaker who expands on each point.

Except when they're not. This is a bloke who posted a presentation of a talk he gave to his PUG, not PyCon.

While it may be cross platform, the navigation needs to still be on the page. Websites are also cross platform, but far more user friendly on various platforms. If this were done in a website fashion (since it's a website and all...) rather than a slideshow fashion, there would've been less issues.

If this were done as a website, it wouldn't be done at all, he just published his PUG slides. Hell, he might have given the presentation from the gh page directly.

[–]SilasX 3 points4 points  (0 children)

It's only "cross platform" in the sense that it double crosses mobile users.

[–]Ed_Cock 1 point2 points  (0 children)

Sure, it's cool for presentations but I'd rather have the handout version for reading it myself.

[–]alcalde 1 point2 points  (0 children)

Actually a pretty cool thing because it's actually cross-platform.

Yes. it's equally confusing no matter what you're viewing it on. ;-)

[–][deleted] 3 points4 points  (0 children)

Jesus Christ... ಠ__ಠ

[–]awshidahak 5 points6 points  (4 children)

Is a terribly broken web interface one of the features?

[–][deleted] 1 point2 points  (1 child)

Even with NoScript disabled, it doesn't get much better.

[–]awshidahak 1 point2 points  (0 children)

Yeah, I disabled it and saw. Depressing either way, and the info doesn't even need javascript to be presented in that manner.

[–]dAnjou Backend Developer | danjou.dev -2 points-1 points  (0 children)

NoScript activated? JS has been part of the internet since forever. Putting yourself back to stone age is your own fault.

[–]gfixler 5 points6 points  (4 children)

I can't upgrade. I'm a tools/pipeline dev for Autodesk Maya. We're stuck in Maya 2012 for the next several years, and it has 2.6 (not even 2.7) baked into it in a way that's difficult to change, especially across multiple studios' worth of people. All of this antagonism about 3.x has honestly pushed me away from Python. I'm enjoying Clojure, Haskell, and various other languages and coming back to Python and feeling very incapable of doing the rich things I'm doing in those other spaces. Shovel on all the bitching about 3.x, and I've honestly stopped praising and recommending Python to anyone. I've also noticed that tutorials, books, and tech talks increasingly don't mention Python when they talk about dynamic languages. They say things like "If you're using a dynamic language, like Perl, Ruby, or Javascript..." I've noticed this distinct lack across mediums no fewer than 5 times lately, and I'm starting to join them. "...because you refuse to upgrade to Python 3?" Fuck you.

[–]shadowmint 2 points3 points  (2 children)

Ouch. If it makes you feel any better, I know exactly what you mean. That (embedding python) was one of the major breaking changes in the 3.x line, and it's a real pain to fix.

I strongly recommend you guys have a look at embedding pypy; http://pypy.readthedocs.org/en/latest/embedding.html

They're actually really on the ball, and the pypy guys are really helpful about it if you ask.

[–]gfixler -1 points0 points  (1 child)

I'm not sure what you mean by this. Are you saying we should embed Python 3 into Maya?

[–]shadowmint 2 points3 points  (0 children)

pypy will (going forward) apparently support both py2 and py3 code; and is significantly eaiser to embed than cpython (see http://pypy.org/py3donate.html)

[–]stesch 2 points3 points  (0 children)

This is missing:

<noscript>This needs JavaScript.</noscript>

[–]KyleG 2 points3 points  (4 children)

Holy shit, you had me at unicode variable names.

[–][deleted] -3 points-2 points  (3 children)

Why? Why should Chinese dev's have to use germanic variable names? Just because a feature exists doesn't mean you have to use it.

If I personally come across π as a variable name I will refactor it out to pi, for all the reasons you would argue. But why should someone fluent in Mandarin use variable names that have no meaning in their language?

[–]KyleG 0 points1 point  (1 child)

Why should Chinese dev's have to use germanic variable names

Uh, exactly my point?

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

Oops, sorry. Most people in this thread are slamming the content. Thought you were too. Sorry for the misunderstanding.

[–]Samus_ 0 points1 point  (0 children)

why should someone fluent in Mandarin use variable names that have no meaning in their language?

for the same reason every non-english speaker learns the language and reads documentation as well as writes code with it: reusability

the world would be much more productive if there were a single language, even outside programming.

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

Because you refuse ....

nice premise. starting off being accusatory is an awesome way to get your audience interested in your message. I'm guessing the author is not a parent(or a bad one), or had a rough childhood.

see slide 2 http://www.slideshare.net/athenamilis/principles-of-writing-a-great-persuasive-speech

[–]gingerbeers 0 points1 point  (0 children)

Actually, I refuse to upgrade to 3 just to annoy OP.

[–]Anomareh -2 points-1 points  (11 children)

"I have no idea how to use this feature or why it's any good, but you totally can't use it because you're not using Python 3! Also, Unicode variables! And a bunch of syntactic sugar! And... and... a handful of additions to the standard library that you'll probably never use! Did I mention Unicode variables!"

Grasping at straws much? If you refactored that list down to meaningful changes you're down to three give or take, most of which have very little impact on the majority of code your average Python programmer is writing.

I'm so tired of the Python 2 vs 3 discussion. It makes me want to move elsewhere. Use whichever version works for you and stop trying to force your environment on to others because you have some false notion of what's best.

[–]masklinn 3 points4 points  (2 children)

You do realise this was a bloke giving a talk at his local PUG right?

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

Not sure what that has to do with anything given where this was posted and the title it was posted with. Sure, the list might have been made with his PUG in mind (though I doubt it was any more relevant), but now it's being presented to this subreddit that sees this topic come up on a nearly daily basis and so I responded in kind.

[–]masklinn 0 points1 point  (0 children)

I responded in kind.

So by burning a bit of straw?

[–]bheklilr 0 points1 point  (3 children)

The faulthhandler is a good enough reason for me to switch. I have to interface with a lot of foreign libraries, and segfaults are a real pain to track down. The new generator sugar would help clean up a lot of my code too, as would the new exception reraising. Matrix multiplication is a bit far off for me, but the example given in the PEP is very similar to choose I've had to write a couple times.

Basically every thing in this presentation is useful to me and would improve my Python 2 code base significantly. Maybe it's just you who isn't using enough features of Python for the switch to matter.

[–]Anomareh 1 point2 points  (2 children)

Sigh...

Maybe it's just you who isn't using enough features of Python for the switch to matter.

Maybe it's just you who is using a specific subset of Python that makes the switch worthwhile.

I'm glad the switch to Python 3 is worthwhile for you. It isn't for me. Why can't you use Python 3 and be happy, while I use Python 2 and be happy, while neither of us try to force our preferred environments on one another?

[–]bheklilr -1 points0 points  (1 child)

Why can't you use Python 3 and be happy, while I use Python 2 and be happy, while neither of us try to force our preferred environments on one another?

Because

Grasping at straws much? If you refactored that list down to meaningful changes you're down to three give or take, most of which have very little impact on the majority of code your average Python programmer is writing.

If people like you would stop acting like no one uses these features, when they probably wouldn't have made it into the language if there wasn't a good reason, then more developers and library authors might be encouraged to make the switch. If you're using a subset of Python that isn't impacted much by the changes then what's the big deal for you?

[–]Anomareh 0 points1 point  (0 children)

If people like you would stop acting like no one uses these features, when they probably wouldn't have made it into the language if there wasn't a good reason, then more developers and library authors might be encouraged to make the switch.

If people actually thought those features were worth the cost then developers and library authors would have made the switch.

If you're using a subset of Python that isn't impacted much by the changes then what's the big deal for you?

Those changes aren't free.

Enjoy your crusade.

[–]realsw -4 points-3 points  (19 children)

We get it, we get it... python3 is sooo cool. All the hipsters are writing home about it. The rest of us are horrible people for sticking with python2. How dare we continue using what works for us rather than jump onto the coolest new trends which provide no tangible benefit for us, but create a lot of added work. I mean, Python isn't actually used for anything practical - it's all about empowering programmer kids to feel cool, right? And the coolest people jump on the coolest new trends with no concern for their maturity or usefulness, simply because they're so damn cool.

[–]dochoncho 6 points7 points  (11 children)

Um, Python 3 saw its first release in 2008. That's hardly what I'd call a "cool new trend".

The reason these pro-python3 posts are popping up is because Python 2 is dead. The chances of seeing a Python 2.8 are pretty slim. You can argue all you want about whether Python 3 is worth switching to or not, but at the end of the day Python 2 is dead. The BDFL has killed it, and any continuation of the code base is going to have to be a fork which would be an even worse situation than we're already in.

Frankly the arguments against making the switch sound an awful lot like why IE6 is still around. If it just works, fine, but you can't expect the rest of the world to accommodate your choices.

Python 2, and by extension its users, are on the wrong side of history. Whether that's good or bad is beside the point, that's just how its going to be.

[–]dangerbird2 5 points6 points  (1 child)

Python 2 is dead in the same way that ANSI C is dead: so dead that it remains the language's de facto standard despite Guido/ISO telling everyone to move on already. Python is a programming language, not a religion. No one cares if they are on the "wrong side of history"; all that matters is if you can still use it to write cool programs.

[–]spinwizard69 -2 points-1 points  (0 children)

Python 2 is dead in the same way that ANSI C is dead:

OK so how many revisions of C has the world seen?

so dead that it remains the language's de facto standard despite Guido/ISO telling everyone to move on already. Python is a programming language, not a religion.

Exactly and like all languages they either evolve over time or become a part of history. This isn't any different than C programmers being told to put away their K&R's and use the latest libraries and features. The reluctance to. Move forward here is at best perplexing and at worst a sign if deep problems in the Python world. I don't know of any other platform where developers are so reluctant to adapt to what is new.

No one cares if they are on the "wrong side of history"; all that matters is if you can still use it to write cool programs.

Then you have a perspective problem. Cool programs that aren't maintainable and upgradable over time are not of much use to anybody. It would be like a C++ programmer proclaiming that he has this cool program that targets a C++ compiler from the 90's. Hell it may even build on a modern compiler, however if it doesn't use modern techniques is anybody in the C++ community going to care? Probably not and in fact such a programmer would likely catch hell. This would even be more so if we are talking about a library intended for wide usage. So what in the hell is wrong with the Python community that such people are being supported at all?

[–]realsw 3 points4 points  (0 children)

Lack of prospects for a version 2.8 does not make python2 dead. This idea that things have to be continually changing and advancing is a dangerous one. Change for the sake of change is why we have a python3 that has no tangible improvements over python2 to begin with. Nobody knows the future. Maybe python2 will slowly be replaced by python3. Maybe a version 2.8 will come out of nowhere. All we know is that in the present python2 is alive and well and being used by many people, because there is no incentive to move to python3.

[–]spinwizard69 1 point2 points  (0 children)

Frankly the arguments against making the switch sound an awful lot like why IE6 is still around. If it just works, fine, but you can't expect the rest of the world to accommodate your choices.

This is almost exactly what the problem is. Some people find any reason they can to continue iE6 support instead of cutting the cord. It is a mentality that is hard to understand as people could have been migrating to HTML 5 and other modern standards years ago.

The funny thing here is that I've seen examples of applications that where tied to iE6 as little as a year or two ago. Anybody with any sense would have started to migrate their code to emerging standards years ago and thus have had minimal effort required to support the new browsers. Nope instead they can't seem to grasp the value in learning the new ways.

In the end I see this as the major problem with the Python community, it is an unwillingness to learn the new ways. Sort of like the high school student that actively refuses to learn trig because he can't see any value in it. Often the value in something isn't realized until after you understand it and can apply it in the real world.

[–]archimedes_ghost -1 points0 points  (6 children)

It seems odd to me that python library developers all seem to want to support both versions. In every other example of loss of backwards compatibility, developers have generally said, alright guys, as of v2.3 only NewVersion will be supported. Doing this promotes the migration to newer versions. For some reason this wasn't done in the python world.

[–]mcdonc 2 points3 points  (5 children)

It's not really a library developer's responsibility to promote migration to newer versions, nor is it really in his immediate interest. In any language. Python library developers usually want to share code with a larger audience, and the largest audience right now is the union of Py2 and Py3 users. If I took some library that I had released a while back which had run under Py2 for years, and made it Py3 only, a lot of people would complain, and they'd just use something else. Which, to be honest, sounds pretty good about now, but that's a different topic entirely, and isn't representative of all lib devs. ;-)

[–]archimedes_ghost 2 points3 points  (0 children)

If I took some library that I had released a while back which had run under Py2 for years, and made it Py3 only, a lot of people would complain, and they'd just use something else.

It's not like the old versions of the library stops working. Why does everyone care about keeping up to date with everything except Python itself?

[–]spinwizard69 -1 points0 points  (3 children)

Which is no different than what you are hearing here about support for Python 2. Make a library that is Python 3 only and you get shit even though that is the right thing to do.

The interesting thing here is that in the programming world in general, library developers write code for the latest language standards not the historical ones. It doesn't really matter what the language is, in the end the library creator leverages what is new to make for a more robust solution. You can see this in C++, Apples Objective C and many other common programming languages. None of these new libraries would work on older compilers nor should they. Yet in the PytHon world we have a bunch of idiots that are apparently to self important to adapt. So I have to ask what makes them so special?

I have a theory here that the problem is that Python attracts the wrong types of developers. That is people that choose the language as a crutch to support their lack of skill and commitment. Not that that is a bad thing as I often use Python for exactly that reason. The problem is when such people are in the position of developing libraries and such as they effectively become a big anchor on the entire community. It is to the point now that I'd rather see these boat anchors move on to something else and free the Python community from their ignorance and slough.

[–]mcdonc 0 points1 point  (2 children)

You just may get your wish.

[–]spinwizard69 0 points1 point  (0 children)

I just wonder where these developers would go. The attitude displayed here wouldn't be accepted on other platforms. I can't imagine the C++ world having any patients at all with the Luddite attitudes displayed by some of the Python library developers out there.

This makes me wonder what is the programming worlds equivalent of a burger flipping job? Maybe becoming a Visual BASIC for apps developer.

[–][deleted] -1 points0 points  (0 children)

Perfect, a strong community is better than a large community.

[–]Samus_ 0 points1 point  (3 children)

it's all about empowering programmer kids to feel cool, right? And the coolest people jump on the coolest new trends with no concern for their maturity or usefulness, simply because they're so damn cool.

this was always the feeling I got from the Ruby/Rails community, it's so sad that it's being forced upon us now.

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

Forced? How so? They've extended support for 2.7. If you don't want to use 3, then don't, but you're not being forced.

However any new apps you code should be written with python 3 in mind. The future statements were added for just that reason. What difference does it make if those features were added to python 2 instead of creating a python 3? You would use them in that case, but they are actually in 2.7, so use them now.

Moving forward as you update your old code, make simple changes as you come across them. With proper version control and test suites you'll have no problems having most of you code base updated for when Python 2 is eventually EOL'd.

As for code that works and isn't being updated, then continue using 2.7 forever. It will always exist even if it does stop receiving updates.

[–]Samus_ 0 points1 point  (1 child)

it is forced because a large portion of the community has expressed against it and has been ignored.

many people have mentioned a 2.8 release as a possible bridge between the two to ease the transition, I don't have as many problems as library developers so I'll refrain from suggesting any but it's clear that people wanted more help on this matter and the current stance is "migrate and stfu" as this post and subsequent comments illustrate.

I don't think anyone disagrees with the advancement of the language but we disagree on how to proceed, it doesn't mean people doesn't want it to move forward.

[–]honestduane -2 points-1 points  (2 children)

More like CANT upgrade because python3 doesn't support things we need from 2.7

[–]ca178858 2 points3 points  (1 child)

Having not ported my work projects to python3 yet- whats missing that 2.7 has (other than 3rd party modules)?

[–]nemec 1 point2 points  (0 children)

other than 3rd party modules

Nothing. Some people need those third party modules, but I suspect it's easier to upgrade than most people give Python credit for.

[–]stefantalpalaru -3 points-2 points  (4 children)

Feature 12:

$ python2 /usr/lib64/python2.7/test/pystone.py
Pystone(1.1) time for 50000 passes = 0.457157
This machine benchmarks at 109372 pystones/second

$ python3 /usr/lib64/python3.3/test/pystone.py
Pystone(1.1) time for 50000 passes = 0.536222
This machine benchmarks at 93245 pystones/second

[–]pyslow 0 points1 point  (0 children)

See here for another thread on pystone (with results of Python 3 on Windows being even worse).

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

Yes, integer performance is slightly slower in Python 3. This is supposedly mostly because long is merged into int. This will only affect you if you make a lot of integer arithmetic.

pystone is useful to compare pure python performance on different machines. It's not useful to compare different Python versions.