johnson@p.cs.uiuc.edu (08/19/89)
Browsers are very nice (I use Smalltalk a lot) but they are also easy to write. A student of mine built a nice browser for C++ using GNUEmacs. She wrote a version of tags that would scan all your source files and build a cross-reference file. The browser would use this file to answer questions like "find all uses of this function" and "find the definition of this function", as well as "display all superclasses" and "display all subclasses". It worked nicely for awhile, but something broke in a later version of GNUEmacs, and I am not a GNUEmacs Lisp hacker, so I haven't tried to fix it. Also, extremely large comments (over 1000 characters) cause the tags processor to break, because it uses lex and I don't know how to change one of the buffer sizes. I would be glad to give this to someone who promises to try to fix these problems. Browsers are very nice, but the best part of Cynergy (ObjectWorks is an aweful name. Cynergy is a great name. Even worse, ParcPlace is going to call BOTH Smalltalk and Cynergy "ObjectWorks"!) is incremental compilation. Each a.out file is represented by an object that is able to patch in a newly compiled procedure. Thus, if you change a small procedure in your huge program then you will get a new version of the a.out file in just a few seconds. The number I saw was about 15 seconds, which includes compilation time. The purpose of Cynergy is to make as good a copy of the Smalltalk environment as possible for C++. Thus, the debugger, browser, object inspector, etc. are all tightly integrated. Don't expect to run Cynergy on a small Sun. Don't expect to run it on a 4 meg Mac II. It will be very nice, but top of the line programming environments require lots of memory. By the way, Cynergy was demonstrated at OOPSLA'88. OOPSLA'89 is coming up. It's the place to go to see what is happening with object-oriented programming. Ralph Johnson - University of Illinois at Urbana-Champaign
sidney@saturn.ucsc.edu (Sidney Markowitz ) (08/21/89)
In article <77300032@p.cs.uiuc.edu> johnson@p.cs.uiuc.edu writes: [quote is edited] >Browsers are very nice, but the best part of [ObjectWorks for C++] [...] > is incremental compilation. [...] Thus, if you change a small >procedure in your huge program then you will get a new version of the >a.out file in just a few seconds. The number I saw was about 15 seconds In a talk I attended recently by a ParcPlace spokesperson, the quoted design goal was to compile and link in a change in under 1 minute. However, they are building ObjectWorks for C++ around the existing compiler (in this case Cfront 2.0 on the Sun). They simulate the effect of incremental compilation by generating a file containing the preprocessor directives (e.g. #include) and the function being modified. That means that if you are working with a coding style that leads to files #including a lot of source code, any change you make will cause all that included code to be recompiled, losing much of the benefits of true incremental compilation. The speaker did not describe any details of the link process. I interpreted what was said as implying that ParcPlace wrote a linking facility to handle it. -- sidney markowitz <internet: sidney@ai.mit.edu or sidney@saturn.ucsc.edu>