7 ms·
I'm kind of surprised people are surprised that upgrading to 3.x has gone slowly. You can't upgrade a major installed base overnight unless there's incentive.
by trimbo 15y ago
I'm kind of surprised people are surprised that upgrading to 3.x has gone slowly. You can't upgrade a major installed base overnight unless there's incentive. Windows Vista, for example?
Additionally, it has stumbling blocks towards achieving the upgrade. Packages you're using aren't upgraded, you have a lot of code dealing with strings, and so on. I worked on a project that tried to use Python 3.x and it was a nightmare in both regards.
In my view, Python 3 doesn't offer any major reasons to upgrade other than we've been told to. Someone tell me: what is it that's so compelling about Python 3? For instance, when you click on "What's new in Python 3" on this page, the first thing in the list is "print is a function". Seriously? The FIRST thing in the list is something that breaks code and has very little impact. Unicode has a lot more impact, breaks a lot more stuff, and is doable in 2.x anyway, yet is the 5th or 6th thing in the list.
So I'm not really sure what the devs were thinking with Python 3.x. It broke a lot of stuff but didn't break enough to make Python notably better. I was around and a heavy Python user for the 1.x -> 2.x upgrade. That was far easier, had some features I could really use, and there was a much smaller installed base. This time around, I just don't see the reason I should upgrade. Eventually, I imagine I will when support is so far gone that there's no choice, or there's some amazing feature that requires it.
For those of you who will respond: "So don't upgrade, or switch off Python". One of those is mission accomplished. The other one remains to be seen, though if Tiobe is at all believed, Python is declining sharply in interest.
- sho_hn 15y agoI haven't written any code that doesn't run on Python 3 since 2010. I'm in the comfortable position of generally getting to use Python 3 for new projects (my library dependencies are met), and when I don't, the shared subset of Python 2.7 and 3 is useful enough to get the job done. There's lots of reasons I find coding in Python 3 more enjoyable and productive. Unicode by default, removing x*() functions and returning generators where appropriate instead, removing old-style classes, improved consistency in standard object interfaces/protocols, standard lib cleanups, etc. Yes, even print() - keyword args are a lot nicer than the old hackish syntax for things like the output file. These are often called minor and "no compelling reason to upgrade", but I'd submit that when a language does more often what you expect it to do, when the number of gotchas you need to keep in mind is reduced significantly, that's not minor. It might not be a reason to switch a large existing codebase over, but it's certainly a reason to write the next large codebase in it, and that's what Python 3 aims at: The future of Python and its future users. No, that doesn't make for a fast transition, but indeed, it was never expected to be ("five years" is the plan, we're not there yet, and things look to be on track). Eventually, there just won't be any reasons left not to use Python 3, but plenty of reasons to do so (the better core language, the sum of improvements in the standard lib, the continued maintenance), and then it'll be done.
- trimbo 15y agoHonest question though: do you think that, given all of the breaking changes and toughness of upgrading, _even more_ should have been broken in this release to improve the language? I guess that's my most major beef with it. The upgrade has been tough, and a lot of the most inconsistent aspects of Python weren't fixed. (A good example: "len()") BTW, I tried using Python 3 on that project in 2010, if that helps anyone gauge my opinion on it.
- sho_hn 15y ago> Honest question though: do you think that, given all of the breaking changes and toughness of upgrading, _even more_ should have been broken in this release to improve the language? Yeah, sure, there are still some things in there that make me wonder why they didn't go one step further to fix it too. Little things even, like the names of the special methods to intercept attribute access: __getattr__ and __getattribute__ should have been swapped for consistency, since __getattribute__ is closer in behavior to __setattr__ and __delattr__, making the current __getattr__ the behavioral outlier. But meh, any language has its odd little warts, and so has Python 3. It does have significantly less than Python 2, though.
- chrismsnz 15y agoI think that len() is not a good example, it was actually designed that way for a very good reason. [0] [0]. http://lucumr.pocoo.org/2011/7/9/python-and-pola/ http://lucumr.pocoo.org/2011/7/9/python-and-pola/
- rictic 15y agoI love python. It took a while but it has won me over, and I've come to appreciate its commitment to legibility and consistency. At this point it only loses out to javascript in my heart because javascript is universally deployed on users' machines. However this is complete and utter bullshit. Other languages are inconsistent? The answer is not to be inconsistent, and you can be consistent as a method or as a builtin function. Don't know if it should be a method or an attribute? Python has properties now, the user doesn't have to care. The 'special meaning' section that follows seems a bit confused as well. Why is it so special to get the length of a collection? Sorry for going off on a rant, please correct me if I'm wrong here. I just get so frustrated with the eagerness of the Python community's apologetics for things that no longer make sense to be in the language. I can feel it working within me too, I'm more and more on the fence about explicit self.
- drats 15y agoI am not sure about now, but another point is that when Python 3 was released it was slower as well, so there was hardly a reason to swap for very minor changes and no libraries. Python 3 should have been something radical like PyPy or large changes to the standard library.
- sho_hn 15y agoThere were large changes to the standard library :). The big io rewrite, for example (which was also one of the reasons for the slowdown initially as it was implemented in pure Python; it eventually got rewritten in C and should be faster than before now). Anyway, I think it makes more sense to major-version language than implementation changes. In theory CPython vs. PyPy shouldn't matter to code.
- nessus42 15y agoI'm kind of surprised people are surprised that upgrading to 3.x has gone slowly. I'm kind of surprised that people think people are surprised that the upgrade to Python 3 has gone so slowly. After all, Guido himself has stated on numerous occasions that the migration would take many years to complete. The time to complete this transition is not so much of a problem for a language that plans to be around for the indefinite future. After all, the future is much longer than the past.
- kamaal 15y agoThis still doesn't solve the problem of users who wish to start a project in Python now. Should they work with 2.x which is going to go away, or 3 whose ecosystem is not ready yet.
- dagw 15y agoUse python 2.x, but write it in such a way that the code will run on python3 is the semi-official answer.
- kamaal 15y agoPeople who are supposed to make decisions on choosing technology are not going to think that way. There are better things to worry than to maintain two parallel versions of the same code supposed to run on two different versions of Python. Its either going to be one of them or some other language.
- icebraining 15y agoI think the point is that you don't have to keep two parallel versions of the same code, since it's possible to write a single version that it's both compatible with 2.7 and 3.X.
- kamaal 15y agoAs I said people have better issues to worry about than walking on a string trying to balance not falling on either side. They are either going to use one of them fully or neither.
- smeg 15y agoCoudlent agree more. Py3 was/is a shocking disaster. All this work and effort for nothing...except crap that most people dont care or know about...like how Unicode strings a dealt with internally and stuff. Things that would have made Py3 enticing to me: - JIT - Real GIL improvements (no changing from op-slicing to time-slicing is not a real improvement) - Better OO. Roles, traits, enough with the duck-typing. - Anonymous subroutines/multiline lambdas. Creating closure generators is too much work in Python compared to Perl. - Tail recursion - More stuff that will come to me after I click "submit"
- Daishiman 15y agoWhoa whoa, Unicode is huge for users of internationalized libraries and internationalization packages. I think you're underestimating the importance of this. JIT and GIL are not language features, they're implementation details. Once alternative implementations catch up, many will look at this again. The other things are considered to be language features by many, have been discussed to death by developers and users alike, and are unlikely to be changed or modified any time soon.
- trimbo 15y agoThe unicode change is net-even functionally with 2.x. Unicode everywhere is a nice goal, but let's not pretend that 2.x can't do unicode and that 3.x is the only solution.
- dagw 15y agoSure python2 can do Unicode, but it's a pain and it's far too easy to introduce bug if you're not paying attention. Unicode everywhere is probably the only python3 feature I miss with any regularity when using python2.
- maaku 15y agoNot to mention that 3.x breaks many things about strings and unicode that were perfectly fine under 2.x. Things like forcing separate codecs for str/unicode (double the work!) and the elimination of basestr (what? why?). Armin did a great article on this a while back.
- kamaal 15y agothough if Tiobe is at all believed, Python is declining sharply in interest. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html http://www.tiobe.com/index.php/content/paperinfo/tpci/index.... Java script seems to be going strong. Python has fallen by 3 places and has the maximum drop in ratings among top 20 languages. Python is right next to Perl. Since according to many Pythonistas and the references they used to point to in the past when they talked of Perl, Perl was dead for the same metrics which Python has now. 1. A major revision whose ecosystem isn't ready. 2. Current stable widely deployed version is going to go away soon. 3. Fall in ratings. 4. Fall in usage. 5. Rise of new languages like clojure. And since now Python has the same metrics and is next to Perl. Can we say Python is dead? It must be since TIOBE says so!
- kamaal 15y agoTo everybody who is downvoting this, this is heights of hypocrisy and fanboy'ism. I am just applying the same principles to Python what used to be applied to Perl. And more importantly there is data to back up everything that I said.
- reinhardt 15y agoI'd guess the downvotes are thanks to sloppy and/or biased dataanalysis rather than fanboyism. For one thing Perl has been dropping almost steadily for the last 7 years, Python just one.
- Estragon 15y ago> I am just applying the same principles to Python what > used to be applied to Perl. No, there are some significant differences between the two which your commentary misses, like the fact that python3 ecosystem and the path for migration to it is far more mature than perl6's is (or likely ever will be, the way things are going.)
- reinhardt 15y agoTIOBE also says Delphi/Object Pascal is more popular than Ruby. Also where do you get the "Rise of new languages like clojure" from? Certainly not from TIOBE, it's not even in the top 50, which sounds about right (btw it's not that hard to have 1000% rise if your starting point is like 0.0001%)
- gbog 15y ago> Python is declining sharply in interest Maybe it is only me, but I feel the number of Python-related articles is higher than ever on HN.
- trimbo 15y agoYou took what I wrote out of context. I wrote "if Tiobe is at all believed, Python is declining...". I wasn't postulating that I have evidence of it other than to say Tiobe has indicated that. Though, it'd be interesting to write some code to pull language interests off HN. It would be an interesting experiment. Granted, HN is a tiny subset of the programming community, but it would be interesting nevertheless.