4 ms·
How would you define expressiveness (as its commonly used, so a definition where Turing complete languages can have different expressiveness) if not as how much
by ImprobableTruth 5y ago
How would you define expressiveness (as its commonly used, so a definition where Turing complete languages can have different expressiveness) if not as how much something can be simplified and thus aiding comprehension, rather than detracting from it?
>Programming languages are not theoretical things. They're concrete, practical tools that _enable_ other stuff. Engineering, not science.
You can't escape theory, engineering is applied science.
- preseinger 5y agoIncreasing expressiveness of a language necessarily increases its complexity. Comprehension is important but it's a function of "the whole stack" -- language and program both. > engineering is applied science. Absolutely. But the metrics are different.
- matt_kantor 5y agoI'm not the person you replied to, but here's an analogy: it's easier to learn how to drive a car with an automatic transmission than a manual one, even though the latter is "more expressive".
- ImprobableTruth 5y agoHeh, I would actually consider automatic transmission to be the more expressive one, since to me expressive means how easy it is to express something. Analogously e.g. C++ (manual) is more efficient and allows finer control, but makes it harder to express the same thing as in a 'higher level' (automatic) language. Otherwise, since Assembly provides the most control out of all, would you consider it the most expressive? ;-)
- matt_kantor 5y agoI guess in my head "expressiveness" is some fuzzy combination of what you are able to do plus how easy it is to do those things. I'd consider a calculator that supports real numbers to be more expressive than one which only supports integers, all else being equal. Maybe this definition is idiosyncratic, though. It's certainly not objective.
- ImprobableTruth 5y agoI'd agree that "what you are able to do" seems like it's intuitively part of expressiveness, but due to Turing completeness you don't have any situation where language A can compute something that language B can't. So the only difference in capabilities seems to be in how easy it is to compute something, rather than if one is able to do something.