Sunday, July 20, 2008

holy kitchen sink, Batman!

I really wanted to be a programming-language researcher. Actually, that's what I was for several years of my extended Ph.D. program at the University of Arizona, where I worked for the late Ralph Grizwold who was quite famous in that field. However, Ralph and I had a falling out, or rather Ralph took a dislike to me for reasons that I never understood (and now, I suppose, never will), and so I moved on to language implementation, working for Saumya Debray. Language implementation was very cool also, but my first love was always language theory and design. After I got my Ph.D., I decided not to pursue an academic position for several reasons: first I was a poor teacher (which would have been a minor nit at a good research department). Second, I'd heard that Ralph was saying uncomplimentary things about me to others in the field and since he was well-respected and I was unknown, I knew that was a fight that I couldn't win. And third, it took me ten years to get my degree, which doesn't look good on a CV.

I've been keeping up, more or less, with language research but not with actual production languages. Then I chance to read a paper on ES4 --the latest design for Javascript (aka ECMASCRIPT, aka Jscript), and ... holy cow. They have included every cool and/or useful language concept of the last forty years except for the kitchen sink. By kitchen sink, I mean continuations --and they felt like they had to explain why they didn't include continuations. If I were to design my dream language, it would look a lot like the latest Javascript, only more elegant. That's part of the problem with languages designed by committee, of course --they all have cool ideas that they want to include and there isn't time and motivation to come up with simpler abstractions to subsume the collection.

Also, of course, there is a trade-off between the elegance of your abstractions and the useability of the language. As abstractions get more concise and powerful, they get harder to use by average programmers.

Anyway, if you last programmed in Javascript ten years ago like I did, there is a lot of new stuff in the language. I'm not even sure it is properly still a scripting language since it has static typing and other sorts of compile-time checks that are not typical of scripting languages. But it's cool.

No comments: