Lightweight Languages 2003

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 ACME talk, about a "lightweight testing framework for distributed systems", was pretty vacuous. The net takeaway for me was "we like jabber". I've written a lightweight language for controlling distributed systems, and there are some interesting problems in that space (I didn't solve any of them, but I had hoped they might). However, no interesting problems were even mentioned during this talk.

    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.

  • The WASH/CGI talk was mildly interesting. I had previously looked at CGI programming libraries for haskell but had been turned off by the coupling of CGI handling with HTML generation. In my mind, these are distinctly different operations. WASH/CGI at least has the advantage that it's based on four different sublanguages (of which CGI handling and HTML generation are but two), so you can ignore the HTML part if you like. Or at least I think you can (depends on whether they actually implemented it "the right way" or not).

    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.

  • The "lisp on lego mindstorms" talk was amusing and entertaining, but not really interesting to me personally.

  • The Bluespec talk was very interesting to me, in a philosphical way. They've created a language that has two distinct phases: at compile-time you have very sophisticated concepts like higher-order functions and numeric types, while at run-time you have state-machines that use rule rewriting to control their execution. I'm personally very interested in meta-description of programs, and so I found the distinction between static elaboration and dynamic execution interesting in an abstract way. For example, I'd like to be able to write underspecified programs. That kind of thing requires making a distinction between the static specification and the runtime operation. Unfortunately, while the approach is abstractly similar, none of the details seem directly applicable to my own interests.

  • The talk on the implementation of Lua was probably the most apropos for the conference, since it discussed the efficient implementation of a data structure that is both a list and a hashtable, as well as the pros and cons of stack versus register machines. It was pleasant and mindless in the same way as reading a favorite book for the tenth time.

  • The talk on embedding Lua in O'Caml was mildly interesting, mostly as a demonstration of how to use a domain-specific-language for describing (and then auto-generating) the necessary glue code to bridge two languages. Since O'Caml has good support for DSL's, the result is quite concise and maintainable.

  • My favorite talk, by far, was the talk on "functional reactive programming". This is exactly what I was talking about when I wrote the Dataflow Languages post. I'm going to write another post to elaborate on just this one talk, so I won't go into it too much here. I'll just mention that I talked with Shriram just before that talk, and I pointed out that once you have dataflow, you very quickly want transactions. He agreed and responded that they currently have a PhD student working on exactly that problem. I was so excited during this conversation that I was literally jumping up and down. He seemed to take this in stride.

  • The boundaries talk was too long. One could say it needed a more clearly defined end boundary. By his own admission, Dan only finished writing the talk twenty minutes before giving it, and it showed. If he wanted to talk off-the-cuff, he should have talked about Parrott instead.

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

Comments

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 PM

Too bad you couldn't make it. I wanted to ask you how Needle was going.

Posted by: kim at November 11, 2003 05:36 PM

Nice 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 AM

I 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 PM

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.

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 PM

Ah, 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
Post a comment









Remember info?




Prove you're human. Type "human":