[IDE features]

Richard A. O'Keefe ok@atlas.otago.ac.nz
Thu, 4 Feb 1999 11:57:53 +1300 (NZDT)


Erik Zurrbier wrote

	My original idea was to support tidying up a program.
	So I would not strive for an IDE to support *any* change.
	
Are you suggesting _different_ interfaces for adaptive maintenance
and perfective maintenance?  I don't think I'd like that.  I'm not
sure that I can draw a neat line between "tidying up" and other
changes to a program; certainly when I've _thought_ I was tidying
up I've run into bugs more often than I care to recall.

	>If I edit a function and change the type of one of the
	>parameters, what should the IDE do about the callers then?
	>The best it can do is _find_ all the callers (in Interlisp:
	>.EDIT WHERE ANY CALLS <function name>
	>) and give you the chance to change them.
	
	Sounds good. Does that also expose the callers in other projects?
	
"Project" is not a concept in Interlisp, and indeed you have exposed one
of the fatal problems with the 'project' concept.  An IDE _might_ be able
to keep track of the internal interfaces in a cluster of related units,
but it _cannot_ help you with external interfaces; the code that needs
changing to match the changed interface might not exist yet, someone
might be designing it three continents away from the current documentation.

Suppose I have a public interface that I want to implement in Clean, but
it is convenient to split the implementation into several files.  For
simplicity, let's consider
    foo.dcf   exports X and Y
    foo_x.icf:  implements X using C (shared with foo_y) and D (private)
    foo_y.icf:  implements Y using C (shared with foo_x) and E (private)
I know how to do that in Ada; how do I do it in Clean?