3 ms·
> pointless features are added because maintainers are afraid I wouldn't have described language designers' feelings that way, but you're absolutely right. For
by pansa2 2y ago
> pointless features are added because maintainers are afraid
I wouldn't have described language designers' feelings that way, but you're absolutely right. For example, witness the recent features added to Python with little more justification than "other languages have it". It's pure FOMO - fear of missing out.
- diggan 2y agoAnother example from another language: `class` added to JavaScript. Addition that was made to the language for something that already was possible, didn't add anything fundamentally new and added just because developers from other languages were more used to that particular syntax.
- Cthulhu_ 2y ago"Other languages have it" is a disease that's struck many languages in the past decade+, notably Javascript which added partial OOP support (classes but initially no access modifiers), or Java which added functional programming constructs via Streams. I mean granted, Java needed some tweaks for developer ergonomics, and I'm glad they finally introduced value types for example, but I now find that adding entire paradigms to a language is a bad idea. In the case of Go, yes it needed generics, but in practice people don't use generics that often, so thankfully it won't affect most people's codebases that much. But there's people advocating for adding more functional programming paradigms and syntax like a function shorthand, which is really frowned upon by others, because new syntax and paradigms adding to the things you need to know and understand when reading Go. Plus at the moment / the way the language is designed, FP constructs do not have mechanical sympathy and are far slower than their iterative counterparts.
- deleted 2y ago[deleted]
- vbsd 2y agoWould you expand on the Python issue? I find recent Python additions either useful or non-intrusive, I wonder which ones you think are born out of FOMO.
- pansa2 2y agoThe `match` statement is the most obvious - its motivation [0] is "pattern matching syntax is found in many languages" and "[it will] enable Python users to write cleaner, more readable code for [`if isinstance`]". But `if isinstance` is bad Python! [1] `match` also breaks fundamental Python principles [2] and interacts badly with the language's lack of block scope: >>> a, b = 1, 2 >>> match a: ... case b: pass ... >>> a, b (1, 1) Not to mention that it also required large changes to the CPython implementation, including an entirely new parser(!) - which means other implementations may never support it [3]. Clearly `match` doesn't fill a gap in a coherent design for Python. It seems to have been added due to a combination of FOMO and/or resume-driven development. Another example is async-await - while the concept is fine (although I think stackful coroutines are a better fit for a high-level language), the syntax is just copy-pasted from other languages [4]. There seems to have been little thought as to why C# etc chose that syntax (to allow `async` and `await` to be contextual keywords), nor how `async def` contradicts existing Python syntax for generators. [0] https://peps.python.org/pep-0635/#motivation https://peps.python.org/pep-0635/#motivation [1] http://canonical.org/%7Ekragen/isinstance/ http://canonical.org/%7Ekragen/isinstance/ [2] https://x.com/brandon_rhodes/status/1360226108399099909 https://x.com/brandon_rhodes/status/1360226108399099909 [3] https://github.com/micropython/micropython/issues/8507 https://github.com/micropython/micropython/issues/8507 [4] https://peps.python.org/pep-0492/#why-async-and-await-keywords https://peps.python.org/pep-0492/#why-async-and-await-keywor...
- pansa2 2y agoHere's Guido himself expressing FOMO about what would happen if Python stopped continually accumulating new features (specifically including the `match` statement): > Essentially the language would stop evolving. I worry that that would make Python become the next legacy language rather than the language that everyone wants to use. https://discuss.python.org/t/pep-8012-frequently-asked-questions/487/2 https://discuss.python.org/t/pep-8012-frequently-asked-quest...
- deleted 2y ago[deleted]