Thursday, 25 October 2007

OOPSLA: Ownership session

3 very interesting talks on ownership:
  1. Inferring aliasing and encapsulation properties for Java by Foster/Ma
  2. Multiple ownership by Cameron/Drossopoulou/Noble/Smith
  3. Ownership transfer in universe types by Mueller/Rudich

I especially enjoyed Nicholas Cameron's talk: he has his mojo (sic)! They use an interesting form of existential over ownership annotations (written using a wildcard syntax). I wonder if you could encode their stuff into sep logic where their o&? constraints would be encoded as EXISTS b.o&b formulae? At the very least it would provide some sort of semantics. Yet another thing to discuss with James Noble!

OOPSLA: Second Life/LSL

I must now be the coolest person in MSRC. I went to William Cook's tutorial on Linden Scripting Language (LSL) so I have now written some LSL scripts!!

Possibly more impressive - in terms of street cred - I did have breakfast and a lengthy chat with Babbage Linden. He's driving the Linden Labs effort to migrate to mono (.NET on Linux). Super cool stuff. Wow.

OOPSLA Panel: 40 years of languages

[Grrr...the hotel wireless is dying under the strain of several hundred oopsla attendees attending to read email. I wrote a lengthy piece about the panel, but after clicking the post button, my machine lost its connection and I lost the blog entry. Damn.]

On the panel were Guy Steele, James Gosling, Betrand Meyer, Anders Hejlsberg and Ole Lehrman Madsen. It was quite interesting. The panellists got five minutes to talk about the influence of Simula 67 and the future of PL. Highlights:

Steele: He quoted Alan Perlis quite amusingly. He also stated that there would be more functional programming in the future but you can't hide state everywhere. He was still worried about the 5% of state manipulating glue.

Gosling: He had an early job maintaining a Simula 67 compiler. He spoke about "drivers" for languages. For Java it was the network. He also mentioned in-memory databases [I've been talking about these recently - I'd like to work some more on these as I think they're going to become very important.]

Meyer: He promoted Eiffel (of course). He mentioned that people still used imperative languages because Hoare and Dijkstra had provided us such great reasoning tools. (ha!) He urged people to look at the concurrency model in Eiffel.

Hejlsberg: Anders spoke about the growing importance of functional programming in the context of multi-core. He mentioned the (wonderful) news of the productization of F# by Microsoft.

Madsen: Ole spoke about the importance of history - people should know more about what has been done in other languages.

Some further points arising from questions from the floor:

1. On functional programming:
Bertrand: FP is good but won't take over. We have to reconcile Angel and Beast. Hoare told us how to reason about messy imperative languages.
James: problem with FP is that it's too difficult. Humans are imperative.
Guy: More FP in future, but never 100%. Big problem is state - what about the remaining 5% code that shifts state around?

2. Can we change programmers through language?
MEYER: nice features of Eiffel: type system and pre/post/object invariants
OLM: teach higher level stuff. Not endless discussions about e.g. multiple inheritance. Should learn from other fields - no more "XXX extensions of Java"
GUY: What about PL features to boost programmer's self esteem? :-)
[Gosling: Isn't that what Perl's about?]

3. Is OO necessary but not sufficient? (Quote from Nygaard)
OLM: Teaching too technical - COOL. Simula closed world - need more, e.g. distributed programming, global ubiquituous programming. Time and location now matter.

4. Is programming hard?
GOSLING: Boeing spend 3kdollar per line because its so hard to reason about code. (And its assembly code)

5. Meta programming?
ANDERS: Meta programming is what makes Ruby nice, not lack of types.

6. Why dont we have co-routines a la Simula? (And build other concurrency primtives on top of it?) ANDERS: Never going to be a single model of concurrency.
GUY: Fundamental commitment to stacks is the enemy of concurrency. (They give an ordering)

Tuesday, 23 October 2007

oopsla 2007

I'm attending OOPSLA 2007, which is in Montreal, Canada. I have a paper in the "language specification" session of the research track. It' s a huge conference and there are a huge number of talks/tutorials/workshops to attend at any one time. I'll blog what I attend if possible...

Wednesday, 17 October 2007

F# productization

Finally one of the most exciting pieces of news is out. Today it was announced that Microsoft intends to productize F#! F# is a functional language originating from the ML family (actually it's a close relation to OCAML) that was designed to be .NET language. It was designed and implemented by my colleague Don Syme in MSRC. Many congratulations to Don who has worked incredibly hard to get F# to the stage where it can be transferred over to the product team.

Wednesday, 10 October 2007

OOF not OOO

I've finally solved one of the Microsoft mysteries. No, not that one! Inside Microsoft people abbreviate the phrase "Out of office" as "OOF". In my three and a half years here I've not found anyone who could explain it. Catching up with Nadyne's blog, I've now discovered what it means. Somehow I feel better for knowing - I should get out more often I guess!

SQL code injection joke

A nice cartoon highlighting one of the problems addressed by Cw/LINQ can be found here. [Thanks to Nick Benton for spotting this!]