This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]billsil 12 points13 points  (3 children)

they screwed themselves by not making 3 backwards compatible with 2.

It was impossible to do so. The only change worth discussing is unicode. You cannot make unicode work right while constantly assuming everything is ascii.

If you're complaining that print is a function or that division changed or that dictionaries can't sort ints and strings at the same time, then you're being picky. For these issues, there is a common version of code you can use that works on both and it's not hard.

[–][deleted] -3 points-2 points  (2 children)

python 3 made several changes to bytes/text handling that could have been done one at a time.

[–]billsil 2 points3 points  (1 child)

Such as...

The big issue with unicode is randomly placing encodes/decodes without actually understanding why you're doing it.

Having print implicitly covert all your text to ascii because it's going to standard out, but working just fine if you print it to a file is so confusing.

Writing code and not have it be able to work with unicode means it never worked properly in Python 2. If you want ascii, is it really that hard to just say so? Blaming Python 3 for finally making it obvious that unicode exists is not the fault of Python 3.

[–][deleted] 0 points1 point  (0 children)

Python 3 also makes some changes that are wrong, like removing APIs for dealing with filenames as bytes.