Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

I'm using Python 3.4. All the libraries I need are available, including the world's best database library, SQLAlchemy. It's a more pleasant experience than Python 2.x. And I have the peace of mind knowing that I'm not stuck on a legacy, deprecated platform.

I used to stick up for Python 3 on HN and other places but I've given up. I have no interest in converting people going to Go. And no matter what Python (or any other language) does, they are going to lose users to JavaScript.

Also, my experience is that people who feel passionate about Python 2.x will shout down people who are using Python 3 with "nobody uses Python 3." Who has time for that?



sort by: page size:

Thanks for the reply.

I'm kind of torn. It would be nice to switch and forget about it, but Python is the language that works with absolutely everything. That's the biggest attraction. Libraries for everything, bindings for everything, APIs for everything. There are always purer and/or faster languages?, so why Python 3 over those if compatibly is poor?

?"There are only two kinds of languages: the kind everybody bitches about, and the kind nobody uses."


Except I know plenty of experienced Python 2 users (like myself) who moved to 3.x and like it. The point being made, I believe, is that the only reason to prefer 2 is if you are locked into it for historical reasons.

The differences are small, and all the arguments against 3 are really just 'breaking changes suck' - yes, they do, but it turns out that we aren't perfect and language designs aren't perfect - you either make breaking changes or live with bad designs forever.

Python made those breaking changes - the alternative just means that in X years we'll move to an entirely different language that does things better instead of moving to Python 3, and at least having an upgrade path.


This is the only compelling reason I've seen to switch to Python 3.

There's nothing that will convince the Python 3 haters. So silly. I use nothing but Python 3 and I rarely if ever find I can't move ahead for lack of a library. The Python2 only libraries are just being replaced with more up to date alternatives. This article is total FUD and garbage from yet another Python 2 ideological holdout dogmatist.

This article would have you believe that if you tried to use Python 3 that within hours you would hit a library roadblock that would be a showstopper. Completely wrong, and you have to ask why the author wants to create this perception.

Python 3 works beautifully and is a pleasure to program.

If you WANT to hate Python 3 then you'll find no lack of ways to hate on it for the next 20 years (HEY! I found some package built by a fellow Python2 holdout! See, it simply is not possible to write the code to upgrade it! PYTHON 3 IS FINISHED! THE SKY IS FALLING!) etc etc ...

If you want to succeed with Python 3 then that's easily done, you just get on with it.

No one using Python 3? Flat out lie. Prove me wrong by scientifically explaining your assertion that no one uses Python 3. Lies, spoken to back the wishes of the Python2 holdouts to sabotage Python 3 - they hate Python 3 and will say any lie to bring it down and spread the FUD. I'm wrong? Prove it in detail with science. Alternatively make vague, handwavey statements about downloads, as though that defines how many people are writing code today with a language.


Personally I use Python 2. I'll move to Python 3 when I think it's ready for prime time for my needs. I'm in no rush.

None of this deters me from thinking that Python 3 was the right thing to do.


Agreed, Python 3 is in almost all aspects better and I really prefer 3 over 2. Most of the bigger 3rd libraries are already ported, at least all the ones I care about.

Numpy seems to be the biggest issue for most, but I guess it must be in some special area, I never found a need for it doing web development.

The unicode support removes so many of our problems, although I can understand the issues strings vs. bytes that a some people run into.


Python 3 is a seriously misguided project. It's got tons of newer-to-Python fans (your HN downvoter demographic), and tons of silent-majority "real-world" users especially in scientific programming who just don't like it. I moved to 3.4 a year ago and, as a data scientist, I have to say I find nothing in 3 to be better than 2, other than the extremely marginal default float arithmetic. I may be wrong for web development etc with asyncio whatever, but for me all I get from 3 is Unicode and xrange cruft that simply complicates my code for zero benefit. Personally am hoping that something new emerges that will take over from Python altogether as the default in data science, or that some big entity will sponsor a fork of 2.7 to shutdown this ridiculous "eol" dictatorship.

You should avoid making technical decisions based on emotional impulses.

Technically Python 3 is superior, IMO, to Python 2.7 and barring any setbacks such as unported libraries (which are becoming increasingly scarce) I wouldn't start a new project in Python 2.7.

The reason libraries have been taking so long is because so many people are resistant to change that they hadn't begun making any serious efforts to port to Python 3 until 2011 by my estimation.

Python 2 is so ass-backwards and broken that I find it painful to use on large code bases. It conflates strings and byte streams, has pathetic Unicode support, and its libraries are rife with bit-rotting code. For the batteries to continue being useful they need to be updated once in a while. Have you seen urllib? It's atrocious by today's standards! Python needed an update and I think that the core team made the right choices.

The challenge has been porting and the core team knew that. They made some poor decisions in hind-sight such as 2to3 and dropping u"", but otherwise the porting story is not as painful as it seems. Cherrypy did it ages ago and Django is finally getting around to it. SQLAlchemy supports Python 3. There are fewer reasons not to switch than ever before and yet articles like this still come up to this day.

Python is only going to fall by the way-side if the developers of the language decide to stop using it. The language hasn't gotten worse by any stretch of the imagination. It needs more contributors to make it better. If you like it so much, port your libraries, contribute to python core, and stop complaining! It's been like five years people!


As far as I am concerned, a mere user, hacking python for 'academic research' in multiple aspects of structural biology and bioinformatics, I have yet to see a single practical argument for switching to or even investing time in learning Python 3 'right now'. Maybe in six years it'll be a different story, but from where I stand, python vs python 3 is a remote and ephemeral distinction, created by the grand poobahs, of zero to little significance for me.

Why should I even bother with Python 3?


I thought about this, as someone with reasons to prefer Python2. But then I quit worrying. Python2 isn't going anywhere, for starters. But more to the point, if lots of people move to Python3, some of them will share my issues. They'll make noise, push for resolution, offer solutions, etc. Widespread adoption makes it more likely that my concerns will be addressed.

I was a die-hard 2.x Pythonista, and as Python 3 started to reach 3.[4/5] releases, in my view it started to get really good in terms of new (and actually useful, not just bloated) features. I for instance love the way you can properly type everything, and that equates to proper interfacing, expectancy between object interactions and also (ofc!), better and smarter IDEs.

Also, at the 3.5 release, most "big" libraries and frameworks were already supporting Py3.x in a stable manner, so more and more the point about being at 2.x "because I have this huge library support" got fragile in my head, and I knew what that meant: "Someday, I will actually have to migrate!"

I started getting worried that the 2.x ways were too entrenched in me and that I'd never be able to migrate, that my Python (2.x) skills would become something as forgotten as my former self (childhood) Turbo Pascal antics and etc. Nonsense!

Here's what happened: I was asked to work on the backend of a new website that was aiming for a fully "portable" (desktop, mobile, and whatever comes next) experience. They wanted me to write an API for it, and I started studying what framework I could use that was simple enough for an API (flask!) and for sane backend storage definition (sqlalchemy!)

- Flask on 3.x -> The more I searched about flask on 3.x, the more I found how it was really stable and production-ready. Also, using 3.x would be really nice on the whole Unicode thing, as I would not be able to make the same string/bytestring mixing assumptions I used to do so carelessly in 2.x (until something blew up...) I would actually have to enforce and handle proper Unicode throughout the api.

- SQLAlchemy on 3.x -> Really, the same. Production-ready, used throughout.

These two convinced me to try to get the initial API study on 3.x, and oh boy, besides stumbling here and there with some changed syntax (mostly, simple print()'s during early stages), migrating to 3.x went real smooth!

As I advanced in my 3.x studies, I started to see benefits in typing everything properly, specially between layers/borders, and it meant less typing and more intelligent autocomplete for my pycharm.

Seriously, If you find yourself struggling or anxious about migrating to 3.x, just find yourself a new project and start doing it on 3.x in the most non-pretentious manner. You'll find yourself just as 'at home' as you felt in 2.x, but you'll still feel something changed for the better...you won't feel strange more than 3 days I promise you :DD


It's not about the language. Languages are easy to learn. I can learn one between breakfast and lunch and be productive by dinnertime.

I use Python 2 because of the massive ecosystem of libraries that have been written, work, and will continue to work.

It's shortsighted and more than a little irresponsible to shame or muscle people into switching. Code that works is valuable. Code that has been tested for a decade is valuable. What's not valuable is forcing an upgrade to a platform that nobody wants to upgrade to while forcing us to abandon third-party code with years of field testing that the authors aren't ever going to port to python 3.


I haven't migrated to Python 3 simply because I see no reason to go the the pain and hassle of porting my existing Python code. Python 3 doesn't give me anything that I want or need badly enough to put that much work into it.

People still stuck in python2 and arguing that python2 is better than python3 is weird.

I get it, more features does not mean better and newer does not mean better but seriously, just do the jump to python3. It's not that much work and the language is much nicer to work with.

I've built a library with python2/3 support and do most of my work in python3. Maybe my web dev background biases me somehow, but I can't remember the last time I had problems with a major library not supporting python3.

To me this seems more like tradition/age/generation -related. Those who started back in python1/2 are the ones with problems moving to python3, while young people who started with python 3.x are already running 3.5/3.6.

ps. like the author said, there will always be large corporations stuck in very old techs - that doesn't mean the rest of the world too has to use Cobol or MUMPS.


I like Python 3. I prefer it. It is better to program in than 2.x. Iterators everywhere, no more unicode/encoding vagueness, sub-generators and more. It is a much better language and it's hard to see how it could have evolved without a clean break from its roots.

However it has been interesting to follow over the last five years. It has been a sort of, "what if p5 broke the CPAN," scenario played out in real-life. Breaking compatibility with your greatest resource has a painful trade-off: users.

Everything I work on is not even considering a migration to Python 3. OpenStack? A tonne of Django applications that depend on Python 2-only libraries? A slew of automation, monitoring and system administration code that hasn't been touched since it was written? Enterprise customers who run on CentOS in highly restrictive environments? A migration to Python 3 is unfathomable.

However my workstation's primary Python is 3. All of my personal stuff is written in 3. I try to make everything I contribute to Python 3 compatible. I've been doing that for a long time. Still no hope that I will be working on Python 3 at my day job.

Sad state of affairs and a cautionary tale: "Never break the CPAN."


In large part because python 3 just wasn't worth using for the first few (probably five or six) years. The big reason so many of us use python is because of the wide range of libraries and modules that no longer worked.

And when selling it to people, it was usually "Oh, just do X, Y, and Z and you can port this library to Python 3". Not to mention all of the "Just write your python scripts to be backwards compatible".

So, as a user, I saw no reason to push it. A lot of hassle to not even really take advantage of anything to stay backwards compatible. And the moment we found a library that wasn't ported, we were back to 2.x.

Not to mention the zealots who would then explain to me how I was horribly wrong and that my firm is wrong and that we are bad people and blah blah blah blah blah.

These days it is a much easier sell in terms of compatibility as most (not all) major libraries have migrated. My personal work tends to be in python 3 and we try to make our in-house tools work for both (but 2.x is the priority). But most of our users are still going to use 2.x simply because there is no compelling reason to migrate (even if the migration is "Put parentheses after 'print'").

And the zealots are still annoying as hell.

And if 2.x really stops getting supported? I hope we'll migrate to 3, but there will be a lot of research and soul-searching first. Because now there are other languages with similar capabilities and if we are going to have to teach everyone something new, we might as well do it right.


I've found exactly the same thing.

As someone writing applications using Python 3, I found the switch to be easy and I haven't had any problems with libraries. I've switched from some of the old ones I was using to more modern alternatives that are being actively developed.

It annoys me that there are people on Python 2 that haven't really tried to make the switch and stand on the sideline shouting insults at Python 3. It's a tremendously self destructive thing to do for all involved.

To anyone looking to get started with Python, there's no real reason to start with Python 2 these days.


I didn't get the "Python is doomed" attitude from it. To me, it's more of a rant that maintaining code that works on both 2.x and 3.x is far from optimal, and that we can and should fix this.

I think he's right in that there needs to be less of a gap, possibly with a Python 2.8. Migrating to 3 isn't the problem, it's maintaining the versions until 3 becomes dominant and 2.x support can be dropped. The Python core team is essentially deferring the difficulty of compatibility to library maintainers. And since Python 3 is essentially a new language, why not just use a py2js if/when it emerges? It'd be just as difficult. And with the additional benefit of entering a more mainstream community. So yes, let's lessen the gap.

I also agree with you in that Python 3 just needs time. And once 2.x is no longer supported, let's also remember this lesson: don't make such big leaps in language evolution.


Why?

What does Python 3 offers in terms of : performance, or improved libraries, safety, other major improvements to justify spending time switching production code to it, breaking library dependencies (could be transitive as well).

I don't see a company with a large Python code base justifying switching to Python 3. Yeah personal toy Github projects, sure, Python 3 is nice, but it is simply not enough rewards justifying all the downsides of switching for many projects.

Looking back, how Python 3 was handled was a mistake. There should not have been a Python 3 when it happened. It should have happened a lot earlier. But if it was going to happen, it should have offered some drastic benefits -- GIL is gone, LLVM JIT 30x numerical code crunching improvements, integration with PyPy, ... I don't know, awesome new built-in libraries like "requests", Flask integrated in. Things like that.

What do we have instead?, unicode improvements, generator code improvements, a Twisted-like async library (don't get me started on that). Iterator cleanups around dicts... That is just not enough, sorry.

next

Legal | privacy