Saturday, May 09, 2009

Papers, papers, ...

I have had a few papers accepted to ECOOP workshops recently, they will be up on my website (which I know needs updating) in a week or so, once I have made the suggested changes. The papers are:

OGJ Gone Wild with James Noble at IWACO '09, we use wildcards to mimic the magic 'This' owner in OGJ, thus using only the Java type system (and a couple of coding patterns) to support parametric ownership types.

Comparing Universes and Existential Ownership Types with Werner Dietl at IWACO '09, we show that Universes and a restriction of Jo\exists are equivalent, and thus that the two systems reflect the same underlying hierarchy.

On Subtyping, Wildcards, and Existential Types with Sophia Drossopoulou at FTfJP '09, we use existential types to model both subclassing and wildcards, and show that the two mechanisms can be modelled in a unified way, and that wildcards are a natural mechanism for expressing subtype variance.

Friday, May 01, 2009

Things I like in a programming language

I posted a while back about things I dislike in programming languages, and it was a fairly long list, so in order to appear balanced and not too biased, here is a list of things I like in programming languages (perhaps not all at the same time):

Objects
Classes
Multiple inheritance with traits/mixins
Virtual Classes
Virtual Classes some more (with Tribe typing)
Static types
Dynamic typing
Higher order functions/closures
Readable syntax
Good error messages
Loads of other stuff that I can't think about right now...

Wednesday, April 29, 2009

Climbing the Coq learning wall

So I am currently trying to learn Coq, this is a monstrous and Herculean task. It is one of those things where the learning curve is so steep as to deserve a climbing grade (I reckon about v6 for the intersection of the bouldering and PLT communities).

I have the Coq art book winging its way to me, but due to my remote location at the end of the earth (from the perspective of shipping companies, to everyone else I am in the capital of a developed country a days flight from Europe), it hasn't arrive nearly a month after ordering.

But, I Benjamin Pierce teaches a course on Coq and has made the lecture notes (which are all Coq scripts) available online (link is to 07's course schedule which has the whole course, as opposed to the current one):

http://www.seas.upenn.edu/~cis500/cis500-s09/index.html

This is an excellent tutorial for learning Coq from a PLT perspective and I highly recommend it - more so than any of the other Coq resources I've found online.

So, although tough, learning Coq is actually fun, and I hope will be useful. At the moment doing full proofs for a full calculus seems too daunting, but I can see that it is not as bad as some people make out, and hopefully once I have the hang of things will not be too hard. Also seems like a very interesting place to do research - there are so many things crying out to be studied.

Friday, April 10, 2009

Busy, busy

Sorry for no ETAPS report thus far. It will be coming soon. I have been very busy, jetting around, having very interesting discussions in London and LA and writing papers for ECOOP workshops. I visited Todd Millstein et al at UCLA and I blog a little about that too, all after easter.

For now I am back in NZ and going to visit Taupo tomorrow morning....

Friday, March 27, 2009

ETAPS 09

So, I've now moved to New Zealand, and in time there will be a post about all that, but right now I am back in the UK, in fact back in York, my childhood home - weirdly this is the longest I've spent in York for about 8 years and I'll have circumnavigated the globe to do it.

Anyway, ETAPS is at York university, which is very pretty - lots of grass and a lake and some ugly old buildings. It also, apparently, has the highest duck to student ratio in the UK. The downside of the venue is that most of us are staying in student halls, which although cheap(-ish) are not particularly luxurious. Pokey is a word that comes to mind - I at first mistook the bathroom for a cupboard. They also have a temporal-tardis-like effect - they appear older on the inside than on the outside!

Anyway, the first two days had interesting sounding talks, but were well outside my area of knowledge and so I gained little. Once ESOP started, however, there were many interesting talks and I will describe these in the following blog posts (over a few days).

Sunday, January 25, 2009

ESOP paper

As I noted below (I think), my supervisor (Sophia) and I have had a paper accepted to ESOP 09 which is in march in York, England. The title is existential quantification for ownership variance and it can be downloaded here.

I'm moving to NZ tomorrow and looking forward to starting some proper research, as opposed to continuously correcting my thesis. Although not looking forward to the 27.5 hr flight so much.

Sunday, January 04, 2009

Busy, busy,...

A quick update: on the academic front I have submitted my thesis and passed the viva with minor corrections, which I am working on now. Sophia and I have a paper accepted at ESOP 09 (link coming soon) on existential ownership for variance. Other than that I've been trying to learn Coq, which turns out to be very difficult. On the personal side, I got married and have been busy saying bye-bye to relatives and friends before we head off to NZ; talking of which, I got my visa yesterday, so now all I need to do is finish my thesis corrections and pack.

Thursday, October 23, 2008

Things I don't like

Specifically, things I don't like in programming languages. When I design the world's perfect programming language, none of these things will be in it. I'm not going to justify any of these things, I am after all meant to be finishing my thesis.

arrays
overloading
pointers
inner classes
primitive types
raw types
private/protected/public annotations
Java-style reflection
non-reified generics
almost everything to do with concurrency
wildcards (the syntax, the underlying idea is nice)
packages
non-virtual inheritance
friend functions
\* *\ comments (rather then \\)

These are mainly OO/Java-ish things, I'm sure I could think of as many from other paradigms, but I'm a bit OO focused at the minute.

Some we just have to put up with because there is no neat, all round solution (eg primitive types). Others are not as good as they could be (reflection, concurrency support), and others just shouldn't exist (statics, arrays, most of the rest)

Wednesday, October 15, 2008

Feynman Quote

"Physics is like sex. Sure, it may give some practical results, but that's not why we do it."

Substitute "PLT" for "physics"...

Fun

Surprisingly, this is not going to be a post about functional programming, nor about the existential types calculus, Fun; but, about fun, as in "having fun" or something being fun to do. More specifically, programming.

OK, most people who know me will know that I hate programming. Well, that's not really true, I love programming, but I hate all the crap that goes with it. Writing neat, elegant code to achieve some task and see it work is more fun than most (but not all) things I can think of. However, testing, debugging, writing documentation, writing boiler plate code, maintaining code, all of these are about as much fun as a kick in the nuts.

I believe the fun aspect of programming is important, it motivates lots of people to write open source and free software and to code in their spare time "just for fun"! It pretty much explains why anyone would work in the games industry. Even in well paid development jobs, I think that tasks that are fun to do are given priority, done with more enthusiasm and concentration, and, therefore, done faster and with less mistakes.

So here's an idea for language design, how about making a language that maximises the fun in using it? It would maximise the time spent on fun things and try and make the not-fun things more fun, rather than more efficent or more safe or whatever other software-engineering-ey things are considered important nowadays.

Of course, you would need to find out precisely what was fun and why and how to put these ideas into a programming language, but maybe that will be fun to do itself.

How's that for a research project that will never get funded and will never happen?