2005-12-10 22:50:21

Guy Steele Jr. On Language Design

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 now; not just the step of adding multithreading support to a language, but what about a language who does not think in a single threaded way by default, whose structured components are not for loops (which force a single threadedness on us) but something else. Yes, maybe its parallel counterpart can be called the semi-for :-).


Posted by Bryce | Permanent Link