|
OOPSLA again, lots of conference and all sorts of ideas. It's
impossible to do a proper write-up of this conference - there's too
much for any one human to attend, let alone take in. So these are
scattered thoughts. It was nice to see the return of Jonathon Edwards and the Subtext
project in the Onward! track. Subtext is one of the the most
fascinating ideas about a development environment that I've run
across, and also one what is difficult to describe (go to the site
and watch the videos). Like Language
Workbenches, it avoids using text as source, preferring an abstract
representation that's projected for editing. However, unlike general purpose
workbenches it is a specific language environment with a particular
emphasis on showing both code and example executions
simultaneously. I like it because it is so different and is an
example of the kind of very different programming environment that
language workbenches are striving for. Since it was in the same session, I also caught the X10
session that described a research language specifically at
concurrency. With the growing emphasis on multicore processors and the
view that this leads to a fundamental
change in software towards concurrency, it's important to think
about how concurrency can be handled in a way that mortals (ie people
other than Doug Lea) can handle. I have no idea whether X10's approach
is correct, after all I'm a muppet when it comes to concurrency, but
language based approaches to the problem seems interesting. (I'd
better mention Erlang before the
reproachful emails begin.) While I'm on the topic of concurrency I
should mention my far too brief chat with Doug Lea. He commented that
multi-threaded Java these days far outperforms C, due to the memory
management and a garbage collector. If I recall correctly he said
"only 12 times faster than C means you haven't started optimizing". I caught a few interesting developments on the refactoring front.
Frank Tip's
been working on using type inference techniques to help implement
refactorings. He was also involved on a paper that uses refactorings
to automatically migrate client code on a library change - in this
case removing the old Java 1.0 collection classes. I talked about this
with John Brant
and Don
Roberts, and they said they've been doing this kind of migration
for quite a while. Most of it is migrating between Smalltalk
implementations (not a trivial problem) but also some cross-language
migrations. Sadly none of this has been written up yet, although they
did mention their key tool for this work is SmaCC.
In another corridor chat Jennitta Andrea observed that in teams she was
working with she noticed that refactoring tools changed they way people
thought about the chunks of programming. My colleague Ivan Moore and Nat Pryce ran the Scrapheap
Challenge. The idea is to give out a problem and let people have
90 minutes to build a solution by downloading bits of software off
the internet and gluing them together. Essentially it's an
exploration of PostModernProgramming. It was a small workshop,
probably a good idea given the fact that it was one of the first
times it was done. It seems like an idea that would work well for
other conferences: active, different and interesting. Brian Foote's talk on a history of dynamic language development
got a large audience, after all he has one of the best joke/minute
averages in software. Amongst the one-liners ('Java is Diet Cobol', 'XML
is lisp with [devil's] horns') my attention was caught by his request
to spend some of the proceeds of Moore's law on better self-monitoring
of systems, so we can more easily find and fix the inevitable problems
that we get when we deploy software. Just because you think you can
prove that the opposition can't score a goal is no reason to not play
a good goalkeeper. Mary Beth Rosson had a
keynote suggesting that we think about ditching our notion of 'users'
and thinking instead about 'use-developers': people who build their
own tools such as mail filters and spreadsheets. These use-developers
require a different approach to thinking about usability and features.
These use-developers need better tools (hello Language Workbenches)
and better practices that incorporate much of what we've learned about
software development. Amongst all this I was taken by her mention of a teaching system
based on Alice where children were
introduced to a simulation that included a flaw and were asked to fix
it. Should more teaching be done this way? Ask students to fix a
program with a bug; or in a more tricky vein to refactor an ugly
program that works correctly. I won't say much about my own talk, other than the best bit was
probably Brian Foote's introduction. I missed the evening party at San Diego Zoo to attend a BOF
on Grady Booch's effort to create a Handbook of Software
Architecture. His aim is to look at a whole mass of different
software systems and provide a brief overview of their
architecture. The resulting tome will provide lots of examples for
people to learn from. It's a huge and necessary effort. There are
masses of lessons learned in systems that have spent time in
production; we don't learn enough from them.
OOPSLA's a funny conference. At the beginning I was very struck by
the difference between it and RubyConf. RubyConf is the young
conference, focused and confident. Like any adolescent it knows
everything and refuses to believe that anything is impossible. OOPSLA
is the flabby middle-aged conference with no guiding purpose any more
- after all objects have (at least on the surface) won their quest to
be the dominant decomposition of software. So there's no longer any
reason to advocate objects and push them on the unwilling software
development community. We're all OOers now. So my opening conversation on the first night was to moan that
OOPSLA hadn't disbanded in 2000 - we've won - goodbye. After all
wasn't the fact that I was giving a keynote proof of how low OOPSLA
had sunk? Yet as the conference went on I found myself enjoying it
more and more. More than anything OOPSLA is a community, and
although advocating OO is old hat, the people in that community move
on to plenty of other interesting things. OOPSLA is a chance to
catch up on all this stuff. How this works for someone new I'm not so sure. There was an item
in the conference bulletin from someone complaining about the OOPSLA
in-clique. I suspect that's a necessary consequence of a long
running conference community. This is the chance for friends to catch
up, so they spend a lot of time together. I hope that newcomers find
the side-effects to be fun, but I suspect OOPSLA can never avoid the
in-crowd effect. I don't think other long-running conferences do either. Other write-ups are available including: Ivan Moore, Eugene
Wallingford, Travis Giggs. (All quotes are from memory and thus approximate.)
Dynamic types are stronger than static types, as they don't flee
the field at runtime.
--Brian Foote
Eclipse has a 'guess the button' user interface.
--James Noble
Static types give me the same feeling of safety as the
announcement that my seat cushion can be used as a floatation device.
--Don Roberts
|