What is Expressiveness in a Computer Language

Ken Tilton 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
>>Felleisen, 1990.
>>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
> equivalence.
> 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".


Cells: http://common-lisp.net/project/cells/

"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 mailing list