Subtext, etc.

I don't propose any resolution to the tension between names and links here, because I suspect the ultimate requirement is going to be to have characteristics of both.

That's from an interesting blog post from Roly Perera, in response to Jonathan Edwards's recent OOPSLA talk/paper. And here's Jonathan's response.

Both the original post and the reply are long, and there were several additional comments from others in various places that were a bit less interesting to me. So I'm going to try not to add much here, but I want to make a few notes, as much for my future self as for anyone else.

I feel that there are some exciting things happening here, and that a number of things are beginning to come together. In addition to the above, this is very closely related to Jonathan's earlier work on explicitly clone-oriented programming, as well as to the themes of Gregor Kiczales' OOPSLA keynote (which, for the record, was by far the best talk of the conference, and frankly the best talk I've seen in a long time).

Beneath all the talk about syntax, it seems that both Roly and Jonathan (and myself) are really interested in binding. Of course binding is fundamental: I would even go so far as to say that the essence of programming is binding. (In fact, I defy anyone to challenge that.) A common theme of this work is the negotiation of different notions of binding, along several axes. I'll mention just two:

  • The first relevant dimension is computational stage, that is, compile-time, run-time, etc., and recent work encourages us to take seriously the idea of programming-time as well as eval-time as stages.
  • The second dimension is what Gregor Kiczales calls effectiveness in a very technical sense, going back at least to 1992. This is very closely related to the naming/pointing distinction that Roly makes. Direct pointing is somewhere close to the absolutely effective end of the spectrum, while naming is a somewhat looser, sloppier form of binding. (Anyone who has chosen between names, de Bruijn indices and pointers begins to understand this trade-off, but of course the problem is pervasive.)

Of course the question is how to navigate this space. I agree with Roly in believing that no final resolution of this tension is possible. In fact, I believe this very strongly, and in fact, I also believe something stronger: I believe that even in a particular situation, no resolution of this tension is likely to be final or universally appropriate. I believe we need to develop approaches to programming that allow more of these choices to be made differently by different people and/or at different times, according to their roles and goals. And I believe this needs to be supported by robust interactive tools, and by a promotion of programming-time to a computational stage in its own right, complete with rich and expressive notions of binding and abstraction.

Recent work points in this direction, some of which has been recently cited in this connection (Fluid AOP, Mylar/Mylyn), other of which, to my knowledge, has not (Subtext, Linked Editing).

People complain about AOP breaking modularity, but unfortunately it seems that modularity is, as largely a matter of perspective, always already broken. AOP tries to (partially) reconcile conflicting notions of modularity, and like it or not, this problem isn't going away. From that point of view, AOP as traditionally understood barely scratches the surface.

All of this is very sketchy, but I hope to have much more to say about this in the near future. In any case, I'm extremely sympathetic to Roly's original post, and I look forward to seeing more from him in this area.


Kiczales' OOPSLA keynote

Submitted by Roly Perera on Mon, 01/07/2008 - 13:29.


I meant to reply a long time ago to your posting, but decided to check out Kiczales' talk first, since both you and Jonathan Edwards had mentioned it. That led to a rather hastily written and unclear blog post (of mine), which I've since rewritten substantially (posted today).

It's a rather long post, but I'd really appreciate your comments. The topics Kiczales' raises are very important, but I think he's off on the wrong track, mainly due to the unfortunately influence of Brian Smith. So I guess we may have some disagreement here...however I hold out with the hope that most of the disagreement will be cosmetic. Either way, I'd be interested in your thoughts.