Dynamic Languages Wizards panel videos (rerun)

We have previously mentioned these videos of a series of panel discussions that were hosted by the MIT Dynamic Languages group in 2001. I just watched them again and I thought they were great, so I'm re-posting them for people who missed them the first time around and as a reminder for anyone who'd like to watch them again.

There are three separate panels on different topics: compilation, runtime, and language design. The panelists are distinguished people mostly from the Lisp/Scheme/MIT world. These panels were a precursor to the Lightweight Languages workshop series.

The videos are in QuickTime format. To play them on Linux I used VLC. mplayer wasn't able to synchronize the audio and video.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

My notes and comments

Compilation:
  1. The sort of concurrent programming that I like got a bad rap from some panelists:

    Martin Rinard dumped on CSP-esque message-passing as difficult and awkward. I can't relate to the problems he mentioned and I don't think he made his case. It's a pity the discussion of CSP ended on that note.

    David Detlefs suggested that Concurrent Pascal's concurrency is isomorphic to Java's. It's true that the mechanisms are about the same, but Brinch Hansen's paradigm is completely different. He uses processes as the primary abstraction and a small number of monitors (the only shared state) to allow communication. The result is very similar to CSP-style message-passing.

  2. Will Clinger is great!
Runtime:
  1. Lots of time spent saying "keep it simple", but what did they mean? Only Scott McKay defined what he meant by "simple" and that is The Right Thing, i.e. simplicity and generality of interface no matter what the cost in complexity of implementation. That's totally different to Hoare/Wirth-brand simplicity of interface and implementation over generality and/or clever optimization.
  2. Tucker Withington thinks it's a shame that the Lisp Machine code has been lost due to proprietary interests and he hopes that open-source will be the way forward. I found it comforting to hear this from a Symbolics person.
  3. Real-time garbage collection works!
Language design (this was my favourite):
  1. Guy Steele and Jonathan Rees agreed that Haskell is good and also plugged Monads and category theory. This kind of cross-discipline (sic!) endorsement is really important and it sparked my initial curiosity about Haskell and Monads. (I missed the category theory endorsement the first time around so I've been studiously ignoring that for a few years.)
  2. Guy Steele suggested that many worthy languages (in the Perlis sense) are based on some piece of mathematics that is interesting in itself. He suggested APL (linear algebra), SNOBOL (regexps), Prolog (logic), and TECO (finite state machines).
  3. Paul Graham uses vi, but in other respects he came across very well. :-) I believe he came across so well because he was addressing people as smart or smarter than himself, and that in his writing he is perhaps subconsciously addressing people who he thinks are not as smart as he is.
Guy Steele also offered the definition that a dynamic language is one that defers as many decisions as possible to runtime.

Hoare/Wirth-brand simplicity

"In order to find the optimal cost/benefit ratio, Wirth used a highly intuitive metric, the origin of which is unknown to me but that may very well be Wirth’s own invention. He used the compiler’s self-compilation speed as a measure of the compiler’s quality. Considering that Wirth’s compilers were written in the languages they compiled, and that compilers are substantial and non-trivial pieces of software in their own right, this introduced a highly practical benchmark that directly contested a compiler's complexity against its performance. Under the self compilation speed benchmark, only those optimizations were allowed to be incorporated into a compiler that accelerated it by so much that the intrinsic cost of the new code addition was fully compensated."

"Oberon: The Overlooked Jewel" pdf

Oberon

Oberon really is amazing. I have "Project Oberon," "Programming in Oberon," "The Oberon System," and "Object-Oriented Programming in Oberon-2," and seeing this prompted me to download MacOberon and take it for a spin in Mac OS 9 again. It holds up surprisingly well, and it certainly is fast. I've long thought that the industry has overlooked Wirth's post-Pascal work to its detriment; I think the document that you quote makes the point extremely well.

Re: My notes and comments

Martin Rinard dumped on CSP-esque message-passing as difficult and awkward. I can't relate to the problems he mentioned and I don't think he made his case.

I had trouble following a lot of Martin's philosophical points. They seemed pretty fuzzy to me, although I'm sure his opinions were informed by experience. I just couldn't see where he was coming from. I agree that he didn't make much of a case. At least Will was on your side! :)

I'm speculating, but it sounded like maybe his experience was coming from an older model of message-passing languages where you had a fixed set of processes, i.e., no dynamic process creation. Which would indeed be a pretty stilted way of programming.

David Detlefs suggested that Concurrent Pascal's concurrency is isomorphic to Java's.

Mitch Wand told me to watch for reductionist statements like "oh, X is just Y" -- they usually mean "X is equivalent to Y if you ignore all the ways X is different from Y," even if they don't realize that's what they mean.

Being different

A pity that the latest .Net implementations have yet to be made public. (And it seems like I have to install BlueBottle OS to get a proper look at Active Oberon.)

And then there's stuff like this: "A Tree-Based Alternative to Java Byte-Codes"

Juice!

Juice rocks. Talk about the road not taken. I think the notion of slinging around ASTs is gaining steam, though, and I don't just mean XML-as-s-expressions!