Wadler's Blog

8.12.04

Scottish Programming Language Seminar

Yesterday was the inaugural meeting of the Scottish Programming Language Seminar. Three cheers to Simon Gay at Glasgow for hosting! Scotland is home to some of the best programming language researchers in the world, and I am hoping big things will come from gathering together regularly. James Cheney at Edinburgh will host the next meeting, in a few months time. (Thank you, James!)

Quick reviews of the talks:

David Watt looked at the relationship between subtyping and mutability. His examples were simple and clear, making the presentation a pleasure to follow. But the talk was marred because he wasn't aware of "wildcard types" in Java 1.5 (one of the twists added since my own contribution to the design of generics for Java). At first I thought wildcards could do everything David wants to do, but he showed that Wildcards and his approach provide complementary capability. Apart from mutability, Watt has some interesting ideas about building a language which is suited both for scripting (as in Python) and for static compilation (as in Java). I've been thinking along similar lines, wondering whether one way to sell my new language Links is to claim that functional languages blur the line between scripting and programming.

Phil Trinder spoke on higher-level abstractions for communication. Some interesting ideas, but way too much crammed into the time available. He now needs to do a series of talks, expanding each segment of this one!

James McKinna on applying Epigram to compiling. He claims that dependent types offer a simpler approach to some aspects of proof carrying code -- interesting if true, but requires further demonstration! Regardless of that, Epigram is clearly interesting, an attempt to finally bring dependent types to the masses.

John Reynolds on grainless concurrency. His recent work, with O'Hearn and others, on Separation Logic is a huge advance in the way we reason about programs with state. Here John cuts a Gordian Knot in which the semantics community has been tangled for many years. Rather than try to work out all the possible ways in which things can go wrong when concurrent threads access the same variable without benefit of locking, he simply defines all such accesses as "wrong" -- the sort of idea that is obvious when you see it, but takes years to surface.