Hi David: Good to hear from you! >From DWAGSTAF@novell.com Mon May 3 18:31:49 1999 >From: "David Wagstaff" >To: >Subject: Re: DJ and traversal-visitor-style programming > >Hi Karl, > >Wow, DJ has much of what I was looking for when I did my own Java Great. I remember your project after the fall 1997 course. Sorry, we lost touch for a while. I left a permanent record of some of our earlier exchange at: http://www.ccs.neu.edu/research/demeter/related-work/novell I think I asked for your permission. I have added you to our internal mailinglist to make sure we stay in touch. >implementation of traversal-visitor. I'm very interested in comparing >the two. Much of the implementation is identical (I'm flattered) and >some is widely different. I'm really impressed with Reflection building >a default class graph. > >What I'm really interested in is the values reversal: a year ago, Doug >(and ?Ivan?) didn't like trading "simplicity, flexibility and ease of >use with the powerful and faster features of Demeter/Java." Why the >change? Doug and Johan. The reason for the change is that experiences like yours have worked on me long enough. It is better to have a very easy-to-use less-powerful system than a harder-to-use powerful system. > >I'm truly sad I can't join your seminar to discuss DJ. So from remote >Utah, I send these suggestions: We will be thinking of you! > >1) "Strategy" is confused with the GoF's Strategy Pattern. "Traversal >Strategy" is a little better, but still not completely satisfying. I >think of Strategy as an "Iterator". It's only job is to get the next >object to be visited. Even Iterator lacks clarity because it doesn't >connote order. Yes, you can think of a strategy as a specification of an iterator through a structure more complex that a collection. I have added a note to the DJ home page. > >2) As impressed as I am with the strategy class being provided for you, >Strategy as a class is just a String holder. I want more control over >Strategy. Using the capacity-checking example, I'd like to choose >between prefix, postfix, and infix traversals. Makes a lot of sense, except infix. Josh, please can you add preorder/postorder capability. Where does this belong? As an argument to compute? TraversalGraph tg_postorder = TraversalGraph.compute(cg,sg,"postorder"); TraversalGraph tg_preorder = TraversalGraph.compute(cg,sg,"preorder"); TraversalGraph tg = TraversalGraph.compute(cg,sg); tg_preorder should be = tg. > >I'll have more feedback when I try my own examples. > >I've made several subtle improvements in my java implementation. I'll >send the latest, greatest code soon. Feel free to incorporate anything >of value. I'm sad the conversation broke down. Doug had challenged me >with handling inheritance towers and data-driven traversals. I solved >them and responded, but never heard anything. >I appreciated the >correspondence because it made my understanding and implementation more >sound. It's time to start back up again. > Yes, by all means. We should start again. Yes, we want to incorporate your good ideas into DJ. How big is your user community of your Java tool at Novell? In how many projects has your tool been used? Can you do a comparison between DJ and your tool? I have added an acknowledgement section at the end of the DJ page. >~David > > >David Wagstaff, >Novell, Inc > -- Karl