[comp.lang.c++] A little more info on ParcPlace Obj

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>