4 ms·
I agree with the analysis of the problem, but disagree with the solution: while it's true that increased expressiveness in a system tends to increase the cognit
by slx26 6y ago
I agree with the analysis of the problem, but disagree with the solution: while it's true that increased expressiveness in a system tends to increase the cognitive burden of understanding it, what you want is to maximize expressiveness at the smallest cognitive cost possible, not to limit expressiveness.
I mean, sure, sometimes it's a good trade-off to limit expressiveness, but most often than not we could make a lot of progress by making certain features simpler, more accessible, or following a model that's easier to understand for humans (matching better human intuition, or more accessible, so it's easy to get easy things done, and you are not hit by complexity unless you really need it). I argue that we can still make a lot of progress and create better models for many things related to programming languages, including (but not limited to): unicode, interprocess communication (and in general compatibility of data across programs and languages), access to graphics and audio APIs, pass by value vs pass by reference, mutability vs immutability, transparency of memory models, cross-compatibility, database accessibility, etc.
- pydry 6y agoThat's a nice idea in theory but making something Turing complete with loops and conditionals etc. simply can't have the same low cognitive cost as decent languages which do not have such features.
- Geminidog 6y agoThere are problems outside of cognitive burden. More expressiveness actually leads to a higher error surface area. The more power you have the more opportunities you also have to shoot yourself in the foot. Removing mutability as a feature from a language also removes all mutable logic errors from a language. Removing null values from the language removes all null related runtime errors from a language.