"Expressiveness" is not the right word; how can I define this then?

I actually think the term “expressiveness” is appropriate. The colloquial definition of the word is “effectively conveying thought or feeling” and it seems to me that is what you are trying to communicate.

The Wikipedia article on expressive power in computer science explains that there are two senses in which the term is used. One describes the theoretical capabilities of a language and is used in formal descriptions of languages, and the other describes a language’s practical effectiveness and is common in informal discussions. Just because the second definition is informal doesn’t mean it’s invalid, however. (In fact, the article even notes that there have been efforts to formalize this second definition of the term.)

In practical discussions of programming languages, we take it for granted that the systems we’re discussing are Turing complete. In this context, the question of whether it is possible to solve any arbitrary computing problem in the given environment is not relevant. We are instead concerned with how much effort is required to solve the subset of problems which we commonly encounter.

As Edwin Brady, the creator of Idris, notes:

Turing completeness is kind of overrated. […] Sendmail configuration files are apparently Turing complete, PostScript is Turing complete, but you wouldn’t write Pac-Man in any of these languages. They’re not really geared up for writing actual practical software, stuff that interacts with the outside world.

So I think it’s totally valid to use “expressiveness” to describe the relative effort of solving problems in one language versus another. I agree with Evan, however, that we should try to be specific about the sorts of problems we have in mind and be open to solutions which are slightly different but accomplish the same thing.

8 Likes