Breaking the Snake: How Python went from 2 to 3
deusinmachina.net
deusinmachina.net
No matter what anyone says about how it finally succeeded: taking a decade is just plain disastrous. Saying "a language has to evolve" is vapid and meaningless. "Change" per se is not good OR bad in itself.
To start with, 3 fixed a lot of things that were not really broken. As Jasper_ says below, "Python 2.8 would have been a much smarter idea."
(I’m being hyperbolic, a little).
Courageous transition!
A language that doesn't evolve and is scared of change is a dead language
That's true for programming languages, but also for spoken languages too
I hope the D community gets it right when they design the version 3 of their language
A lot to learn from Python's successful transition
If the 2-to-3 transition hadn't left so many scars, the idea to switch to a different language for cross-platform command line tools wouldn't even enter my mind. Python 2.x was just perfect for this use case, and Python3 didn't add anything of value for such scripts.
Maintainers don't like changing things, so that didn't help either
Not everything is perfect, but the transition allowed it to get a new birth, that's why i see it as a positive thing
Java, C# and C++ have improved in the domains where D might have had the upper hand back when Andrei Alexandrescu's book came out.
D3 would be worse than Tango vs Phobos on D1.
I suffer from that at work (I have 200 users on .NET and dozens of servers needing some python): we dont have the runtime for .NET 5 installed on windows yet, and we dont have python 3 on many older servers. There is one part where we suffer immensely, and another where we barely care: I let you guess which one.
#!/usr/bin/env pythonI was just getting into programming and thought Python would be a good place to start, but ended up being put off by the schism between the two versions. It seemed like everything I looked at was filled with caveats about not being compatible with one version or the other. I thought 3 sounded like the better choice since it was newer, but so many learning resources were stuck on 2 with no plans to upgrade, but I didn't want to be stuck on an old version, and I didn't have enough experience to make an informed decision.... So I eventually ended up dropping Python entirely.
Maybe now is a good time for me to revisit Python if that isn't an issue anymore.
Even though he considers things like `require('./something')` defaulting to either `./something.js` or `./something/index.js` a mistake, he also admits these are not possible to change at this point.
I think Python made a mistake trying to correct design problems in 2. The cost of change simply wasn't worth the price of migration. Is `print("text")` really that much of an improvement over `print "text"`?
I use Co-Pilot, it's super helpful but, god it's good at bullshitting. Sometimes you think "wow" but then stop and look what it's done and it's all very wrong, but looks very right. Although that's only like 10% of the time.
Im looking forward till they combine Co-Pilot with the static analysis tools you have with statically typed languages, that is going to be so much better.
i am shocked to see this level of PHBS (pointed head boss syndrome) in this space. Aren't you people supposed to be technical and whatnot?
It's a Stochastic Parrot (https://dl.acm.org/doi/10.1145/3442188.3445922) and as such , it can't be trusted with software (nor with anything else bug I digress).
Wonder if that would lead to regulations around language model "strength tiers," and whether certain industries will even allow Copilot or ChatGPT-like code.
It honestly makes me feel a little nihilistic about versioning and upgrades. I know there were many legitimate technical challenges for many people in moving from Python 2 to 3. But I now feel that versioning is always going to be bumpy, regardless of the technical issues, because a substantial number of users will make strange decisions.
- I heard it is a lot of work to switch over (must be pretty different!).
- Learning more about it is on my todo list, but I haven't had a chance to get around to it yet.
That's not to excuse their decisionmaking from a do-the-right-thing standpoint, because they weren't doing right by their clients, but I feel it's totally understandable. I remember speaking to conscientious engineers a few years before that who only knew a smattering of Python from the 2.7 era and were apprenhensive about starting a new project in 3.x. Sometimes you just have to hold people's hands a little. Maybe not a "good" reason, but so it goes.
In fact a lot of my frustration with C++ evolution is due to the committee’s experience of having made a couple of bad decisions that had to be undone (like auto_ptr), or which are unrepairsble (overconstrained unordered_map). Which is a great example of why you shouldn’t have someone like me on the committee!
Obviously this didn’t go well for Perl, but Perl did the rename ridiculously too late.
I know how: badly.
"Badly" would be if Python 3 had died after a prolonged death bed (I see you, Perl 6), but instead Python actually got there, in spite of all the haters.
(initially justified haters, of course, but that just makes it all the more impressive that 3 wasn't abandoned before it got all the polish it needed before it could prove it was worth the effort)
It doesn't help that the early versions of Python 3 were really opinionated and terrible. Python 3 only took off after they walked back a lot of the strong opinions that made them do a language break in the first place.
Knowing what is known now about the transition, Python 2.8 would have been a much smarter idea.
Isn't opinionated kind of Python's thing? I can understand "terrible" being bad, but like, "terrible and unopinionated" sounds bad as well. As someone who never really bought into "there should be only one way to do it", it's kind of hard not to be amused at the thought of the Python community suddenly realizing that maybe being too opinionated can sometimes be a bad thing.