Python 3 vs. Python 2 debate

4 points by bwooceli ↗ HN
I love the utility of Python, and though I'm not a professional developer I use it frequently at work for small projects and have done a number of sites using Django. I was sitting down to start putting a plan together to get my son started programming, and went back to "learn Python the Hard Way" to see if that would be a good starting point for him. I've been using Python 3 for my most recent stuff (a Django app at work), and quickly realized "LPTHW" was all still Python 2. Then I looked at his rant arguing that Python 3 was just a dead-end and essentially not worth learning (and this page was updated in November of 2016).

I know I'm opening a can of worms, but in pro circles, what is the general consensus on the state of Python these days? Is our dear friend Zed just a cranky outlier, or have I been under a rock and everybody just hates Python 3??

8 comments

[ 1.5 ms ] story [ 24.3 ms ] thread
Python made the unfortunate but understandable decision to split the community. It's really hard to make a non-backwards compatible change in an open source community because you can't make anybody move.

My $0.02 is that Python 3 is clearly better, and that if you'd use python for something new it should be 3. But I also think it's unfortunate that the community is in the sort of state where people ask this as a legitimate question in 2017.

Progress requires python 2 die, but it's taking its sweet time.

Can anyone point me in the direction of information of why is would be so hard to have a

    from __ancient_history__ import print_statement, etc.
...especially now that most of the big projects that are ever going to get converter have been converted? Even if it was slower / used more memory / etc. for those programs that did use that pragma.
Because python 3 made hundreds of small changes here and there. Supporting them all would not be possible. The problem is not speed and memory, but complexity of the interpreter.
I was more thinking that the compatibility layer would maybe suck in a whole python 2 parser, and potentially even the interpreter, operating on potentially common objects in memory. But just how different are the bytecodes for 2 vs. 3? Even if they were very different, I guess my question is, how hard would it be to transpile 2 bytecode into 3 bytecode. I'd think it would be loads simpler than what Jython does on the JVM for what I can only imagine must be a radically different virtual machine and memory model.

I guess the real answer is probably more political rather than technical.

If you start a new project now, use Python 3 unless you have a strong specific reason not to. It's the nicer language, and most of the library ecosystem has been ported over by now.

The big issue (understandably) are existing projects in Python 2, where porting them means a lot of work that could go into other things instead.

Agree. My main point of curiosity is whether Zed is an outlier in his dark view on the language overall in pro circles
I think so, but, I suspect, partly because the pro-2 people have moved to other languages (I've moved to Common Lisp for personal projects, for example)
Also, /r/python has stopped recommending LPTHW, fwiw