4 ms·
I've got nothing against Python3. But recognize that Python3 got itself into this mess by being incompatible with Python2. It's different language, albeit super
by tnat0r 10y ago
I've got nothing against Python3. But recognize that Python3 got itself into this mess by being incompatible with Python2. It's different language, albeit superficially similar to Python2. Python3 should have been given another name like "Bob" or something. Ditto for Perl6 vs Perl5 and Angular2 vs Angular1.
- throwawayish 10y agoEveryone is running around talking about semver, but then tell you that you're supposed to rename your project when you do breaking changes? Sure. And it's not like there was no early announcement that it won't be 100 % compatible. That was officially announced 10+ years ago.
- tnat0r 10y agoIt's not a matter of lead time in announcing it. If it's not backwards compatible then it's a different language. I can still run 20 year old C code in a modern C compiler.
- teddyh 10y agoIn languages, this is accepted practice. Was Perl 5 backward compatible with Perl 4? Or C11 with C99? Or even C99 with C89, or K&R C? If you use reasonable and forward-looking language constructs, it will be runnable – or at least very easy to port to – newer major versions of the language. This is also true for the transition from Python 2 to Python 3. The problem is that a lot of people used (and still use) Python 2 badly.
- tnat0r 10y ago> Was Perl 5 backward compatible with Perl 4? Or C11 with C99? Or even C99 with C89, or K&R C? Yes.
- throwawayish 10y agoActually, no. There are many differences between K&R/UNIX C and C89. For example, in K&R string constants could be modified, and repitions of the same constant would be different strings. This is not the case in C89. Variadic functions are different. Octal numbers were changed. Arithmetic works differently. And so on. I can't comment on Perl 4 vs 5 vs 6.
- tnat0r 10y ago> in K&R string constants could be modified Every compiler has a writable strings flag for backwards compatibility. Everything else you cited is backwards compatible. You are confusing forward compatibility with backwards compatibility.
- b2gills 10y agoThe latest version of Perl 5 is almost entirely backwards compatible with every earlier versions of Perl 5. ( There are some features which almost no-one used, that also should never be used that were eventually removed ) Perl 5 is backwards compatible with Perl 4 Perl 4 is just a renamed version of Perl 3 to coincide with the release of the book "Learning Perl" Perl 3 is backwards compatible with Perl 2 Perl 2 is backwards compatible with the original Perl Many of the problems that new Perl programmers have with learning Perl is that every new feature had to be added in a way that it didn't break existing code. That is why for example you have to add "use strict" and "use warnings" to every Perl source file, even though that should be the default. Perl 6 exists because we "wanted to break everything that needs breaking", so it is very different than any previous version. That is why both Perl 5 and Perl 6 will both continue to be supported languages. Imagine taking good ideas from every high level modern programming language, bringing them all together, while making the features seem like they have always belonged together. That is Perl 6. I like to say that as Perl 4 is to Perl 5 is to Perl 6, C is to C++ is to Haskell,C#,smalltalk,BNF,go, etc
- pvg 10y agoPython 'got itself into this mess' by having a broken string handling design. Python 3 fixes it - the incompatibility is not there for the sake of incompatibility.
- throwawayish 10y agoTo be fair, broken string handling is extremely abundant.
- orf 10y agoWell that's OK then
- throwawayish 10y agoOh, not at all. I'm just saying that no one did string handling right when Python was conceived. (And, evidently, much of the brokenness persists).
- stOneskull 10y agomaybe 2020 also brings python4