3.5.06

Gilad Bracha pointed me to these slides of an invited talk he gave at the Dynamic Languages Symposium (associated with OOPSLA) in 2005. There are interesting ideas here, and some overlap with Links. I'm not at all convinced by his main thesis, that dynamic updating of software works better with dynamic types. But I like some of the other ideas (build code to work with dynamic updating, build dynamic updating to work around synchronization). I'm not sure what he means by 'No Static' toward the end, but it looks like he's pushing what Odersky, in his work on Scala, refers to as 'The Principal of Demeter', which is to enhance reusability by replacing global variables with a pointer to a suitable object; I'm not sure what is 'No Static' about that.

Regarding "No Static", if your interpretation is correct, Bracha might be referring to the fact that in Java, the "static" keyword is used to mark methods and fields that can be called on a class rather than on an instance. Since classes are globally defined and named, this effectively makes any state accessible through "static" methods/fields global.

This is very difficult to avoid in Java without immense sacrifices of convenience, and Odersky's "Scalable Component Abstractions" solution is among the best I've ever seen.

The idea of synchronisation and dynamic update is very nice, particularly as we move towards software as services. It solves one big problem of "Web2.0", namely that web apps aren't much use when you're not on the web - and for those of us that travel, web access is often unavailable (e.g. while on the plane).

The slide on modules is distinctly akin to ML functors done properly. But I didn't see a similar note about inheritance, which is just as much a local dependence as is importing.

Finally, I do not believe his view about versioning, at least with regard to libraries. If we really did have an interconnected web (or grid!) of dynamically interconnected services, his suggestion would require teams of programmers devoted to nothing but chasing each others changes. (Or maybe that's the goal - jobs for life for programmers!).