Thursday, October 28, 2004

Relationships between things

I'm currently reading Bertrand Russell's 'History of Western Philosophy'. It has prompted me to think about the activity of computer programming in a philosophical context. More on this in a later blog when I've read more of the book.

One thing that I've been thinking about a lot today is my bias towards approaching computer problems by tackling relationships between entities, rather than focussing on entities solely. Modularity is more a theory of relationships, particularly dependency relationships, rather than a theory of modules. I've tried to stress this in the modularity courses I've been giving.

Why do we have a tendency to focus on entities and ignore entity relationships? I think one reason may be that we are used to entities being visible solid objects, while relationships, such as forces, are usually invisible. For example, when we look at a bridge we can see girders, bolts, frames, concrete slabs, but not forces, stresses and strains between those objects which are just as important in the functioning of a bridge.

If our experience of the world is skewed towards dealing with individual objects while ignoring relatoinships it is no surprise that when we come to software modelling we retain the same bias.

Thursday, October 21, 2004

Java (J2SE 1.5) Annotations

Just been reading about the addition of annotations to Java in its latest J2SE 1.5 incarnation.
It's good to see Sun is prepared to borrow from .NET, returning the complement so to speak.
Attributes (the .NET equivalent) is one of the two things I really like about .NET. The other
is assemblies, which sadly have no equivalent in the new Java release.

There are two really cool things about assemblies that you just don't get with Java's jars:
  1. Assemblies support secure linking, you can't link against the wrong version of a dependency. For some interesting research on adding secure linking to Java, see http://www.cs.princeton.edu/sip/projects/modularity/.
  2. Assemblies support reflection. In Java, you can only reflect upon low-level classes and methods. However, just came across http://jpf.sourceforge.net, which might help get the ball rolling.

Wednesday, October 20, 2004

Why this blog?

I've become more than a little frustrated at how invisible my website is to Google, despite publishing lots of original content about a niche topic in software engineering. My guess is that Google's rating system is so biased towards link-backs that new and original content is ignored. Rather than blog on my own site (www.congeve.com) I feel it's better to blog on a site that has a chance of being indexed by Google ;)

Watch this space for my ongoing musings about software modularity...