[FoRK] Versioned Literate Aspect-Oriented Programming
Stephen D. Williams
sdw at lig.net
Mon Mar 15 21:40:36 PST 2004
I disagree about one thing: refactoring IS done to add functionality.
If you read the original eXtreme Programming books (which I seem to have
internalized), you refactor as you add features and you find that you
need to reorganize the code to make 'room for' the new features or when
you find that there is a much better way to organize the code for future
changes. The general rule is to do the simplest solution that works at
each step, which is at odds with planning ahead for sophistication. I
can see opportunities where both make sense. Application coding is more
the former, library/system coding is nearly always the latter.
Aspect oriented programming is cool. It's perfect for debugging, and
there are a lot of other interesting uses.
I feel like it is a good idea that is necessarily limited by
James Tauber wrote:
>On Mon, 15 Mar 2004 10:13:38 -0500, "Stephen D. Williams" <sdw at lig.net>
>>Extreme/Agile makes the assumption that you would refactor rather than
>>add aspects. I see a need for both; only good foresight can make room
>>for the latter.
>I definitely think refactoring is another aspect (no pun intended) that
>would need to be included. Thanks for reminding me of it.
>I wouldn't compare refactoring with adding aspects, though, given the
>former is not about adding functionality and, at least in my context, the
>But maybe I'm overstating the value of AOP for a project like this. I
>guess I'm more generally thinking of distinctly called-out additions (and
>deletions) to various points of code with the purpose of adding a single
>unit of functionality. In some cases you could indicate in advance where
>those points are but in many cases not.
>The key is that at one point you need to say that a particular class has
>certain methods and later on in the literate program you need to say
>you've added some methods and added (or removed) particular code. This is
>where I suspect current literate programming systems fall down for this
>kind of project. For something like what I'm talking about one would need
>the ability to indicate an insertion, deletion or (at the very least) a
>replacement with perhaps the weaving including a code diff in the
>>James Tauber wrote:
>>>As I've been developing my first Eclipse GEF (Graphical Editor Framework)
>>>application, I've been thinking about turning it into a tutorial. I
>>>immediately wondered if it might be a great project for literate
>>>I could write a web and then tangle it to generate the GEF application
>>>and weave it to get the tutorial. But as features are incrementally added
>>>to the application over the course of the tutorial, conventional literate
>>>programming might not be enough. At the very least, some kind of
>>>versioning would need to be included.
>>>But then it occurred to me that it's perhaps best thought of not just as
>>>a versioning issue but as an aspect-oriented one. For example, if step
>>>four of the tutorial is adding undo support then that would involve not
>>>only new classes but the insertion of code at points in existing methods.
>>>Anyone come across anything like this before?
>>swilliams at hpti.com http://www.hpti.com Personal: sdw at lig.net
>>Stephen D. Williams 703-724-0118W 703-995-0407Fax 20147-4622 AIM: sdw
swilliams at hpti.com http://www.hpti.com Personal: sdw at lig.net http://sdw.st
Stephen D. Williams 703-724-0118W 703-995-0407Fax 20147-4622 AIM: sdw
More information about the FoRK