Hacker News new | comments | ask | show | jobs | submit login

I think this has been the ugliest, most badly managed update for a major language since Perl6. And this is not completely over, yet. Over the next 5 years I still expect to see people complaining about this Python3 thing. I hope the designers have learned a lesson.

People used to complain about the way Python changes were breaking their code. So it was decided to restrict all the non-reverse compatible changes to a separate version called 3 and to stop breaking things in 2. That probably allowed Python to become more popular than it would of otherwise, but at the cost of a significant fork.

So what are you going to do? Either way has downsides.

And it isn't like developers really have a lot of power to guide the course of a language. Lua is an excellent example of this. If you want to write a Lua program you probably want to target version 5.1 . The developers have released 5.2 and 5.3 but uptake has been fairly minimal and it's a problem because 5.3 is a Python3 like fork. You can lead but that doesn't mean that anyone will follow. The Python 3 thing could of gone a lot worse (or better) depending on what you think of Python 3.

Ultimately the issue is that different people have different ideas about where a language should go (if anywhere) and no faction of developers or users have ultimate control. It isn't anyone's fault, it is everyone's fault.

Seems like the best approach here is to not introduce breaking changes to begin with. Go has done a very good job at this. And AFAIK most of the breaking changes in Java have been the introduction of new keywords and have been relatively easy to manage.

Python is a dynamic language; adding a new method or member to an existing class is a breaking change. You don't have that problem with Go and Java.

Perl6 isn't an update to Perl5. It's a completely unrelated language with a misleading name.

They may not be compatible but they certainly seem at least related.

You could easily argue the same is true with Python2 and Python3.

With one main difference being that we are perfectly content to let people continue to use Perl 5. (Most of us anyway)

Another is that Perl 6 brings in many features from other very disparate languages while making them seem as if they always belonged together. It doesn't seem like Python 3 brings that many new features.

I think the process was run about as well as it could be. It's just very, very hard to change a language like this, particularly something as fundamental as the type of strings. In retrospect more time should have been put up front in transition frameworks like six and for some of the compatibility affordances added to Python 2.7 and ~3.3; it took awhile for folks to figure out the best way to write code that supports both languages.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact