News for hackers. Stuff that matters.
Re:Pattern matching accepted for Python by not_knuth on Tuesday February 09, 2021 @04:10PM (#26082417)
Obligatory Bjarne Stroustrup quote:

"There are only two kinds of languages: the ones people complain about and the ones nobody uses."

I think it's an interesting point you make, because Python is actually one of the few languages that tried to break away from its past (the whole 2.7 to 3.7 fiasco), but it seems the need for a language to be stable is just much, much greater – so features are just piled onto the existing standard instead.

If COBOL taught me one thing, it's that I'm pretty sure in 60 years time there will still be critical infrastructure running on Python 2.7.

Re:Pattern matching accepted for Python by chriswarbo on Tuesday February 09, 2021 @06:14PM (#26083807)
> There are only two kinds of languages: the ones people complain about and the ones nobody uses.

My old boss used to say this thought terminating cliche whenever I encountered a problem with PHP. It's a rather useless form of binary thinking, since it completely ignores scale and severity.

It's similar to statements like "all politicians are bad", which put the likes of Nick Clegg in the same bag as, say, Pol Pot. It's counter-productive to any meaningful discussion.

Re:Pattern matching accepted for Python by not_knuth on Wednesday February 10, 2021 @01:50AM (#26086294)
I also think using any quote as a thought terminating cliché is flawed. In that case I wouldn't blame the quote though, but the person using it. (I assume your boss probably had an interest in terminating thought. Perhaps the project was invested in the language and it was just not feasible to change? Perhaps he didn't have an answer to your valid criticism? Just speculation...)

In most cases I have encountered people uttering this quote they were using it as a mere observation of the statistical fact that a large group of users will inevitably lead to a larger amount of complaints. And the conclusion was usually something like: "Don't blindly disregard a language, because many people hate it. Always take a closer look if the tool is up to the job."

Re:Pattern matching accepted for Python by cat199 on Tuesday February 09, 2021 @11:29PM (#26085756)
> It's a rather useless form of binary thinking, since it completely ignores scale and severity.

You may also be interested in: "there are 10 kinds of people - those who understand binary, and those who do not"

Re:Pattern matching accepted for Python by neysofu on Tuesday February 09, 2021 @04:15PM (#26082469)
That quote is seriously overused, to the point where valid criticisms will be met with disapproval simply because the language falls under condition (1).
Re:Pattern matching accepted for Python by rrdharan on Tuesday February 09, 2021 @06:58PM (#26084203)
There are quotations people complain about and ones that no one recognizes.
Re:Pattern matching accepted for Python by im3w1l on Tuesday February 09, 2021 @06:57PM (#26084191)
The issue was not the breaking changes, the issue was that it was done poorly. In particular that v2 and v3 code could not coexist in the same project.
Re:Pattern matching accepted for Python by nostrademons on Tuesday February 09, 2021 @08:47PM (#26084928)
I think that they did it about as well as they could given the driving motivation behind the change. The semantics of existing syntax changed with Python 3: 'foo' is a string of ascii bytes in Python2, but a string of unicode characters in Python3. Treating a string as both ASCII and Unicode within the same project, depending on which codebase it originated in, seems like a recipe for disaster.

Java => Kotlin is an example of a migration that's relatively painless, by design, and lets you incrementally convert projects over, source file by source file. But the Kotlin designers intentionally left alone certain misfeatures of Java to make that happen. It's still UCS-2 rather than UTF-8, for example, and it syntactically papered over nulls rather than actually fixing them with a true Optional monad like more recent languages, and its coroutine/async/await semantics aren't as elegant as Go or ES6 or Python 3.6. Changing runtime semantics of an existing language ecosystem is hard.