Just ran across this enjoyably bitter anonymous comment from 2011:
Anonymous (June 5, 2011 7:43 PM) “It’s very cool” — It’s not cool at all; it indicates insufficient search of the literature, which one can see throughout the design of Go. Experienced language designers look at Go and just shake their heads.
(The context is a post on Go’s interfaces, in which the author asks for pointers to previous work, which readers kindly supplied.)
This comment is so typical of the academic programming language community that it makes me nostalgic. It’s completely out of touch with reality and hypocritical to boot (most academic papers do a poor job citing related work, possibly due to page limits but also possibly not).
The field of academic programming language research is 60+ years old, which makes it a very well-established area of computer science. It’s difficult nowadays to come up with really significant, new results.
Let’s say we’ve discovered about a thousand important features of programming languages, and we continue to find one or two a year. (Fill in your own estimates; the exact numbers won’t matter, as you’ll see.) It may seem like there’s not much hope for the field to progress, but consider that with a thousand features to choose from, there are 21000 possible combinations of features, more than we can hope to explore in our lifetimes. And choosing a combination of features is exactly what you need to do to design a programming language. Most of the progress and excitement in the field will therefore come from remixing.
Most academic papers start from an existing language (ML, Haskell, etc.) and add one or two features. It’s hard to see what makes this so much more worthwhile than creating a new language through remixing only existing features.
When a new language starts to get some traction you can’t dismiss it for not having any new features; the choice of features is itself a contribution. And a good feature or choice of features is good no matter who thought of it, or whether someone gets credit for it.