The Lightweight Languages 2003 conference happened on Saturday. Here's my take, presented in chronological order. Skip to the parts on bluespec and Father Time for the interesting parts.
The best part of this talk were the questions fired at the presenter from the PLT Scheme group (sic 'em Shriram!). The questions were merely a thinly disguised version of "our scheme is better than your testing framework", but they managed to raise the level of discourse, despite that. Besides which, I'm now curious to find out what Mattias meant when he talked about the "shape" of a computation.
On the other hand, the presenter for the WASH/CGI talk seemed to think that having your language statically guarantee that you generate valid XHTML was a useful thing -- indeed a driving motivation. To me, that's almost irrelevant, since it's easily verified, and any error would presumably be caused by a simple, localized bug in the program. What's much more interesting to me is language support for writing web applications and dealing with the statelessness of HTTP.
WASH/CGI has some support for dealing with statelessness, but as was pointed out by Shriram after the talk, it forces you to write your entire program in continuation-passing-style. The PLT Scheme webserver, on the other hand, is based on transparent continuations. This allows you to write programs in the usual stateful manner, instead of transforming the whole thing to CPS.
I'd be interested to see a discussion (or paper) on whether transparent continuations can fit into Haskell's mindset of side-effect-free evaluation.
After LL1, I remember thinking "I should check out Scheme". After LL2, I remember thinking "I should really check out Scheme some more". And after LL3, I find myself thinking "Those PLT Scheme folks are doing some of the best programming language research around". They recognize what it takes for a language to actually be useful, and they're putting in the work it takes to get there. For example, they're playing around with type systems, but only because they're useful. This is contrast to most other language researchers who seem to think that their job is not so much language design as computability proofs.
I also met Jay McCarthy, and Ben, both of whom I had met in blogspace but never seen before. Ben left a dodecahedron in my car. Jay has posted his own notes on the conference.
Posted on November 10, 2003 06:26 PM
More languages articles
Thanks for posting this! I couldn't make it to LL3, since I now live in Pittsburgh. So I'm glad to read about how people reacted to it.
Posted by: Neel Krishnaswami at November 11, 2003 05:07 PMToo bad you couldn't make it. I wanted to ask you how Needle was going.
Posted by: kim at November 11, 2003 05:36 PMNice notes! I meant to say hi to you at the conference but didn't get a chance. I've been taking Norman Ramsey's course this semester and I was curious: were you thinking about joining the class, or did you just start posting to the Wiki?
Anyway, I agree with a lot of your reactions, especially about PLT. Not that I'm biased or anything, sharing an office with Matthias and friends... :)
(And I'm glad you were able to see past the snarkiness of Matthias's comments. Some take offense at his style, but those who know him understand that he's just "raising the level of intellectual discourse," as you describe it.)
If you are intending to start playing with Scheme, I recommend Dorai Sitaram's "Teach Yourself Scheme in Fixnum Days" (although the chapter on macros uses an older, deprecated style of macros).
Posted by: Dave Herman at November 12, 2003 12:54 AMI don't have time to join the class proper, although I may drop in sometime (looking less and less likely though, to be honest). Mainly I'm just using the class for my own purposes :) To wit: getting a tour through various FP papers in an order that makes sense, and getting some context to go along with those papers which explains why I should be reading them (in case it's not immediately obvious), and what their impact was on the rest of the world. When I spoke with him at the conference, NR invited me to come in person, so I'll try to convince myself that I should.
I've played with scheme before, and in fact one of my favorite books ever ever ever is "The Seasoned Schemer". I read it about six years ago. When I got to the part that used kar, kdr, and kons to create closures that acted like cons cells, it literally blew my mind. I spent three whole days trying to understand as many pages, before it finally clicked and I was enlightened. I use the word "enlightened" in all seriousness -- that feeling was probably the closest I have ever come to a religious experience. Trying to recapture that experience is what made me start focusing on programming languages as an area of inquiry.
Posted by: kim at November 12, 2003 12:02 PMWhen I got to the part that used kar, kdr, and kons to create closures that acted like cons cells, it literally blew my mind.
Ouch! ;)
I spent three whole days trying to understand as many pages, before it finally clicked and I was enlightened. I use the word "enlightened" in all seriousness -- that feeling was probably the closest I have ever come to a religious experience.
Amen! I have had similar experiences of enlightenment with SICP. And I'll never forget the day I achieved the monad nature...
I still haven't gotten around to reading The Seasoned Schemer, but if you enjoyed simulating lists with closures, you'll really love building all of core Scheme on top of the lambda calculus. I like Don Blaheta's notes from Shriram's PL course a couple years ago.
The part on recursion (the Y combinator) is also what the chapter "And Again, and Again..." from The Little Schemer is about. It took me several attempts for this one to sink in.
Posted by: Dave Herman at November 12, 2003 11:43 PMAh, me! I was actually holding a copy each of "The Little Schemer" and "The Seasoned Schemer" last Sunday (and, of course, SICP), and managed to convince myself not to buy any of them because I had so little space left in my bag. With that recommendation, I now /have/ to get a copy. I'm very much looking forward to reading through it now, even more so than before.
I had a similar "aha!" experience when I finally grokked the Y combinator - it was a wonderful feeling of so many things just clicking together.
I had a similar, though less dramatic, experience just a couple of days ago while reading about Forth execution tokens in chapter 9 of Marcel Hendrix's reimplementation of Leo Brodie's "Starting Forth".
Admittedly, at first glance an execution token seems just like a C function pointer, but when paired with the ability to access the parser directly (ala "eval") and taken in the context of Forth, where a word operating on the top stack value could be swapped for another operating on the top two (or three, or four...), it suddenly acquires an entirely new set of ramifications (for example, I'm looking forward to another such minor revelation when I've read enough to understand the advanced macro example presented in the gforth manual (warning, ~1meg link)).
Any other "revelation" moments to share?
Posted by: Gnomon at November 13, 2003 02:19 PM