[BTW: MSR has nine papers and one invited talk at POPL!]
The conference started with my colleague, Tim Harris, giving the first keynote talk on language support for TM. As with all of Tim's talks, it was beautifully constructed and presented. The big picture is that Tim suggests that atomic blocks should be separated from transactional memory, i.e. they should be treated much more abstractly than they often are. I have to confess that I felt a little inadequate during the talk. Tim navigated the design space during the talk, and I just don't know enough about the choices and the consequences to really follow what Tim was saying, why some approaches make more sense than others, etc. Of course, this gives me something to talk about with Tim back in Cambridge!
Alexey gave a great talk about his work with Byron, Matt and Viktor on reasoning about non-blocking algorithms. I also enjoyed Martin's talk about co-operative threading. He had a very nice model, with very clear operational and denotational semantics (that's fully abstract).
Dana spoke about static contract checking for Haskell. She did a great job of the talk, although I confess to being a little confused. She seemed to be doing a symbolic evaluation (using call-by-name) of contracts written in Haskell (call-by-need). Hmmm...
I then heard about masked types which is an approach to avoiding the brutal "default initialization" technique employed by Java/C# to prevent access of uninitialized fields. This was quite nice - it reminded me of the work that Matt and I did on Java effects. (Although I don't quite know why Xin thinks the Java/C# approach is "unsound" - ugly, perhaps, but not unsound.)
Daan rounded off the morning with a really neat talk about his latest work on first-class polymorphism. Daan gets better and better about describing this stuff. He even survived some barbs from Karl on type inference :-)
I had a very jolly lunch, chatting with Donna, Matthias and Shane.
Later my colleague, Nikhil Swamy did an amazing job, giving a talk on SPEED - which is a tool that estimates the computational complexity of C programs - on behalf of the authors, none of whom could make the conference.
I really enjoyed the panel on "Grand challenges for programming languages".
- Simon Peyton Jones suggested the topic of controlling effects.
- Xavier Leroy emphasized the importance of verification; in particular what he referred to as "end-to-end verification".
- Unfortunately, Martin Rinard couldnt make it, but Arvind showed us his slides and did a great job of presenting them. Martin was typically outrageous - "all software is overengineered" - and suggested that we need to pay less attention to perfection in software. Beyond the obvious shock, I think that Martin's point is a good one. Really we need to figure out how to combine perfect and imperfect software and to keep them separated. Actually this was behind our work on UpgradeJ - we wanted to be able to write code that, e.g. call a method directly unless it is version n in which case we do something else...
- Kathryn McKinley made some nice criticisms of transactions (they lack decent communication). She encouraged us to look again at some of the ideas in high-performance fortran.
- Greg Morrisett encouraged us to work with architecture people - this area must change, and we have lots of expertise that we could apply to the problem of designing the next generation of computer architecture. (For example: what will the next generation instruction set look like? This is as much a language issue as an architecture question.) He also mentioned three supplementary issues: (1) How do we program the coming world of lots of robots (including biological robots); (2) The gap between PL and HCI worlds needs reducing; and (3) We need to think more about education. (For example, we have no standard textbook - hence no unified voice)
I then went for "shrimps and grits" with Peter, Francesco and Suresh. We spent much of this time trying to understand some of the aspects of Tim's keynote. I think we understand it a little better now...:-)
Anyhow, a nice start to POPL.