But why?
But why?
http://python-future.org/compatible_idioms.html
Python3 is a different language than Python 2.7 and there is no compelling reason to move from 2.7 to 3.
Most of what would have been compelling reasons are being handled in PyPy. PyPy is the present and future of Python and that future is 2.7.
Working in open source, there is going to be a time when I stop supporting Python 2.x, and already I and others are building libraries that are Python 3.x first, are developed on Python 3.x and Python 2.x is an after thought in testing.
PyPy will eventually have to catch up to 3.x, and no, the future is definitely not 2.7.
Python 2 gets all the better runtimes. Long after the end of life of the official CPython 2.7, we will still be running 2.x programs, and doing it on much better runtimes than CPython.
We've been hearing the same tirades of Python 3's future over and over again by its partisans ever since its release in 2008. 8 years have passed since then. 8 years will pass and Python 3 will still have nothing but a minority of vocal open source users. Python will be treated as a legacy language the way COBOL and BASIC are treated before py3 starts picking up any steam. That's kinda what some companies are already doing, like Dropbox. Switching to Go here and there, while keeping the maintenance of their very large 2.7 python codebase with absolutely no intention whatsoever of moving that behemoth to 3.x. Why bother? they could write new software features, fix bugs and so on instead of waste time on porting. Why waste so much time on porting when it brings so little benefits? Programming is ultimately about problem solving. Porting to python 3 doesn't make my software better. It's certainly not running any more efficient either, that's PyPy and Pyston territory (Using PyPy can allow you, under some circumstances, to seriously cut down the amount of hardware you need). It doesn't magically add new features, or fix the bugs.
Python 3 will go down in history as the best example of what you should never do while growing a language. People like to complain about C++'s complexity, but unlike Python 3, C++ isn't threatened by its own past selves, and that's despite adding features that are arguably far more compelling to look into than the various differences between Py2 and 3. It's also very hard to regain lost trust. The trust that was lost after what was done to Python with Python 3 can never be fully regained. I can write software in C++, Java, C#, Javascript, Lisp, Perl 5 (which is still being worked on) and so on and have an expectation not to have to go through something like Py3. To a lesser extent, even Ruby, although it breaks compatibility from time to time, it never went through anything as major in a one time fashion as Py3 did, which is why the ruby ecosystem hasn't self destructed.
With moore's law being utterly dead, the fact that all the interesting improvements to language implementation are happening only to 2.x rather than 3.x really contradicts your idea that the future lies in 3.x.
That's just not true at all. Asyncio is a perfect example.
https://pypi.python.org/pypi/trollius
Or, better, gevent:
No compelling reason. That is why 8 years later 2.7 is still used by the majority.
You should point to: https://trollius.readthedocs.org/ which states that it is discontinued and you should just move on to Python 3.
I think you should give asyncio a try first (especially on Python 3.5 with async/await keywords) before stating there's no compelling reasons. Another strong (for me) reason to go with Python 3 is that it has bunch of old warts removed. The code is just easier to maintain.
> http://python-future.org/compatible_idioms.html
It's bit a BS, majority and I would say 90% of that you can simply use the Python 3 syntax and both Python 2 and 3 will accept it.
Also many people who program in Python 2.7 already use the new syntax without even realizing it.