▲ | earthboundkid 7 months ago | ||||||||||||||||
It's really important to be clear about the lessons to be learned from Python 3. 1. Forward compatibility is more important than backward compatibility. 2. Automated refactoring tools don't help with 1. The problem wasn't that they broke a lot in Python 3. It was that you couldn't write your Python 2 in such a way as to be compatible with it until well into the transition process as the six package got popular and the devs fixed needlessly broken things in Python 2. | |||||||||||||||||
▲ | samatman 7 months ago | parent [-] | ||||||||||||||||
I would suggest languages facing the same problem learn from Perl 5's success, rather than the various failures of Python 3. Every† minor point release of Perl 5 creates backward-incompatible changes. These can be opted into individually, or on a per-file basis by simply specifying the version of Perl used. It all works. Differently-versioned Perl code can call each other as much as it likes. There was never any reason why Python 3 needed to be anything other than Python 2 with this at the top of the file:
For various values of `n`. Perhaps when enough time passes, that's just Python now, and you have to copy-paste this into all the legacy code:
That's it. Any language can do this, they just have to decide not to make life hard for everyone.[†] Perhaps not literally every, but it may as well be. | |||||||||||||||||
|