Sunday, April 10, 2005

Papers on Language Evolution

These past two weeks I've read two fantastic papers on language evolution: the first was written in 1998, and is really phenomenal: Growing a Language, by Guy Steele of Sun Microsystems, followed by Rules of thumb for the design of C++0x [pdf] [html], by Bjarne Stroustrup, now at Texas A&M. I was given the second paper to read, I can't find a link on the net just yet.

Both papers emphasised the importance of library growth over rapid language evolution. Guy Steele mentioned three things which he wanted to see added to Java: generic types, operator overloading, and lightweight user-defined types. The rest could come from libraries initiated by the user community. Bjarne Stroustrup said "Not every library should be a standard."

The thing which I really wanted to mention was a section written by Bjarne in a section called
"Experts and Novices":

C++ has drifted towards becoming an "expert-friendly" language. In a gathering [...] of experts, it is hard to build a consensus (or even interest) for something that "just" helps novices. The general opinion (in such a gathering) is typically that the best we can do for novice is helping them to become experts. But it takes time to become an(sic) expert and most people need to be reasonably productive during the time it takes.
That hit me as a trend I noticed in my work. I don't write languages, but I have had the occasion to write material which someone else needed an expert knowledge to understand. This is not uncommon, of course. All too often we find languages, libraries and tools which tend to require more of our understanding than we reasonably would expect to give.

I don't have a nice conclusion, just some jumbly thoughts.

No comments: