Joe Marshall wrote: > Xah Lee wrote: > >>in March, i posted a essay "What is Expressiveness in a Computer >>Language", archived at: >>http://xahlee.org/perl-python/what_is_expresiveness.html >> >>I was informed then that there is a academic paper written on this >>subject. >> >>On the Expressive Power of Programming Languages, by Matthias >>Felleisen, 1990. >>http://www.ccs.neu.edu/home/cobbe/pl-seminar-jr/notes/2003-sep-26/expressive-slides.pdf >> >>Has anyone read this paper? And, would anyone be interested in giving a >>summary? > > > 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". kt -- 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 -- http://mail.python.org/mailman/listinfo/python-list