3 ms·
Hopefully never. All the new changes might make Python better in the view of a computer language consistency fetishist (or maybe for web apps). But for practica
by sprash 14y ago
Hopefully never. All the new changes might make Python better in the view of a computer language consistency fetishist (or maybe for web apps). But for practical purposes in data analysis things got worse not only because of the broken backward compatibility.
Letting major APIs return iterators or views instead of lists just introduces unnecessary complication. Most people doing data analysis don't even know what these structures are but they definitely know lists.
Scientists have to deal a lot with bytes or strings of bytes but never Unicode. Python3 treats Unicode as first class citizen as opposed to raw strings of bytes like in Python2.
Sometimes you have to convert a lot of clear text data formats and needing to use 'print(x, end=" ")' instead of a simple 'print x,' makes me cringe every time. Printing something is substantial why shouldn't be a statement.
Finally the loss of performance in Py3k is the straw to break the camel's back. I use numpy because it is usually faster than the stuff I wrote myself in C. I use python because I got the best performance without having to care much about programming.
I want to be able to reproduce results I or other people did 10 years ago. Maybe poeple in 100 years want to do that. A language that breaks backward compatibility for trivial consistency issues is definitely not suited for that. The easiest solution would be to stay with 2.x for ever or choose a more stable language.
- GeorgeTirebiter 14y agoI agree. "Python" to me means "Python 2.4" -- all the rest is just sugar. I have no reason to "upgrade". However, one way to get people to upgrade is to have BACKWARD COMPATIBILITY. Yes, I know, Python developers consider backward compatibility some sort of noose, but it is the only thing that permits forward-going change without losing the existing user base. It would be easy, too: at the beginning of each file, have """Python 2.4""" (etc) and everything would "just work". There would be no need to wait for anybody to make libraries compatible with new versions. The Python developers have done us all a huge disservice by ignoring full backward compatibility. And while I appreciate all of the time and effort they have donated to the community, I believe this one single issue, backward compatibility, matters most.
- zurn 14y ago> Python3 treats Unicode as first class citizen as opposed to raw strings of bytes like in Python2. Python 2 Unicode support is not like that at all. Unicode strings themselves work pretty much like they do in Python 3. The problem with Unicode & Python 2 is that there is also a non-Unicode string type that is used for legacy reasons in many places and mixing the two is error prone because of the implicit str<->unicode conversions that only work for ascii chars.