In the latest version of Dr. Dobbs (January 2006) Guy Steele Jr. has
an article
named, "Thoughts on Language Design." In summary he seems
to be saying, that language design is driven by context more than we
realize. That is, for all the ideals that exist in the language
design community, the things that are held as most important often are
quashed in the face of the facts of the environments in which we
program.
In the early paragraphs he gives the example of how the '*' character
has come to represent multiply mostly because on the early IBM
punchcard machines, lacked standard mathematical symbols other than
'+' and '-'. This statement early in the article then set's up the
question , "What if a numerical programming language actually looked
like the stuff that mathematicians and physicists use on their
blackboards?" Yes, what if? Does unicode present a context in which
programming can gain productivity? From Steeles own examples
I think we can glean the hint of an answer. Until, there is a
dramatic shift in the way we enter text into our computers, No. While
a special user interface designed for scientists and engineers may
provide gains in productivity and expressivness for a few scientists
and engineers, how can we overcome the cultural fixed point that is
the qwerty keyboard? Unicode alone does not provide the context for
the leap to unicode editing of our programming languages.
Some of the more interesting parts of the short article are the
personal tidbits that Steele discloses about how his early exposure to
the GOTO debate (at age 17!) lead to the first lambda paper ("Lambda
the Ultimate Goto"). He even gives us a passage from his public
comments at debate whose existence alone is intersting. Also are his
comments that he still mostly agrees with his 17 year old self, and
his admittance that he now feels the titles of his papers slightly
pretentious. Outside of its historical worth, steele uses the ideas
of the goto debate and the lambda papers to back up his argument of
the importance of context in choosing language features. He argues
that his work on turning function calls into branches was important,
as was the introduction of structured programming (if-else, do-while)
over the use of goto,
but architectures have changed and what we have to do now is to
find the ideas that are important to add to programming languages