What is Expressiveness in a Computer Language
kentilton at gmail.com
Fri Jun 9 23:27:35 CEST 2006
Joe Marshall wrote:
> Xah Lee wrote:
>>in March, i posted a essay "What is Expressiveness in a Computer
>>Language", archived at:
>>I was informed then that there is a academic paper written on this
>>On the Expressive Power of Programming Languages, by Matthias
>>Has anyone read this paper? And, would anyone be interested in giving a
> The gist of the paper is this: Some computer languages seem to be
> `more expressive' than
> others. But anything that can be computed in one Turing complete
> language can be computed in any other Turing complete language.
> Clearly the notion of
> expressiveness isn't concerned with ultimately computing the answer.
> Felleisen's paper puts forth a formal definition of expressiveness in
> terms of semantic
> equivilances of small, local constructs. In his definition, wholescale
> program transformation is
> disallowed so you cannot appeal to Turing completeness to claim program
> Expressiveness isn't necessarily a good thing. For instance, in C, you
> can express the
> addresses of variables by using pointers. You cannot express the same
> thing in Java, and
> most people consider this to be a good idea.
Thanks for the summary.
Me, I would like to see a definition of expressiveness that would
exclude a programming mechanism from "things to be expressed".
If the subject is programmer productivity, well, I write programs to get
some behavior out of them, such as operating an ATM cash dispenser. If I
need to keep a list of transactions, I need to express the abstraction
"list" in some data structure or other, but below that level of
abstraction I am just hacking code, not expressing myself -- well, that
is the distinction for which I am arguing.
heck, in this case I will even give you as "thing to express" getting
back multiple values from a function. That comes up all the time, and it
can be an aggravation or a breeze. But then I would score C down because
it does not really return multiple values. One still has some heavy
lifting to do to fake the expressed thing. But I would still give it an
edge over java because Java's fakery would have to be a composite object
-- one could not have a primary return value as the function result and
ancillary values "somewhere else".
"I'll say I'm losing my grip, and it feels terrific."
-- Smiling husband to scowling wife, New Yorker cartoon
More information about the Python-list