Stefan
04/24/2020, 4:47 PMWe language nerds have a tendency to fetishize minimalism. Personally, I think simplicity is only part of the equation. What we really want to give the user is power, which I define as:
power = breadth × ease ÷ complexity
None of these are precise numeric measures. I’m using math as analogy here, not actual quantification.
Breadth is the range of different things the language lets you express. C has a lot of breadth—it’s been used for everything from operating systems to user applications to games. Domain-specific languages like AppleScript and Matlab have less breadth.
Ease is how little effort it takes to make the language do what you want. “Usability” might be another term, though it carries more baggage than I want to bring in. “Higher-level” languages tend to have more ease than lower-level ones. Most languages have a “grain” to them where some things feel easier to express than others.
Complexity is how big the language is (and its runtime, core libraries, tools, ecosystem, etc.). People talk about how many pages are in a language’s spec, or how many keywords it has. It’s how much the user has to load into their wetware before they can be productive in the system. It is the antonym of simplicity.
Reducing complexity does increase power. The smaller the denominator, the larger the resulting value, so our intuition that simplicity is good is valid. However, when reducing complexity, we must take care not to sacrifice breadth or ease in the process, or the total power may go down. Java would be a strictly simpler language if it removed strings, but it probably wouldn’t handle text manipulation tasks well, nor would it be as easy to get things done.
The art, then is finding accidental complexity that can be omitted. Language features and interactions that don’t carry their weight by increasing the breadth or ease of using the language.
alltom
04/24/2020, 5:12 PMDoug Moen
04/24/2020, 7:26 PMDoug Moen
04/24/2020, 7:35 PMStefan
04/24/2020, 7:59 PMDoug Moen
04/24/2020, 8:20 PMsrini
04/24/2020, 11:11 PMIvan Reese
srini
04/25/2020, 2:57 PMIvan Reese