
On Sat, 19 Jun 2010 11:55:29 pm Stephen J. Turnbull wrote:
If you want to do Python 3 a favor, make sure that they understand that Python 3 is *not* an "upgrade" of Python 2. [...] Python 3 is a Python-2-like language, but even though it's built on the same design principles, and uses nearly identical syntax, there are fundamental differences. And it is *very* young. So it's a new language and should be approached in the same way as any new language.
I haven't written any large projects in Python3, so take this with a grain of salt, but I just don't see that Python3 is a "new language" as most people understand the term. It might be splitting hairs, but I see it as a new dialect *at worst*, and probably not even that, in the sense that any half decent human coder who can read Python 2.x code should be able to make sense of Python 3.x code, and vice versa. As I see it, the changes to the language and syntax between 2.x and 3.x are much smaller than those between 1.x to 2.x: Python 2.x introduced a brand new object model (new style classes). Python 3.x does not. Python 2.x introduced radically new syntax, namely list comprehensions, while 3.x merely extends the same idea to set and dict comprehensions. Python 2.x introduced lexical scoping AND closures. Python 3.x does nothing as radical. Python 2.x introduced a new (to Python) programming model, namely iterators, complete with TWO extensions to syntax (generator functions including yield, generator expressions), *and* then went and made yield a function so as to introduce coroutines as well. Python 3.x merely uses iterators in more places. Python 2.x introduced Unicode strings. Python 3.x merely makes them the default. The only major difference is that Python 3 takes away as well as adding, but even there, Python 2 did the same, e.g. there is no provision to get the old scoping behaviour except to go back and use 2.1 or older. Frankly, I believe that pushing the meme that "Python 3 is different" is a strategic mistake. People hate and fear change. I should know this. I resisted Python 2.x and stuck with 1.5 until Python 2.3 was released, and then was amazed at how *easy* the transition was. Of course, I wasn't using third party libraries that hadn't been ported to 2.3, if I had my experience would have been different. It's bad enough to have to tell people "Python 3 is currently lacking some critical libraries, particularly third-party libraries" without also telling them (wrongly IMO) "oh, and it's a new language too". -- Steven D'Aprano