[comp.lang.c++] Generating C++ from a prototype -- examples

dag@control.lth.se (Dag Bruck) (02/27/91)

I will refrain from commenting the entomologist's latest posting.  I
will instead give a few examples of what I mean by:

>1.  If the the design is well-understood and verified, for example by
>implementing a prototype, we can generate header files and stubs from
>the prototype. 

The first example is Ibuild, a user interface builder that is part of
InterViews 3.0 (currently in alpha-release).  The user composes
several predefined graphical and interactive objects with a graphical
editor.  When the design is complete, Ibuild can generate a set of .h and
.c files that implements this user interface.  The code is not complete
-- the behaviour of interactive objects must be added afterwards, for
example.  Ibuild will also generate a small "main" program so you can
test drive the user interface.

The second example is TeleUse, another user interface management
system, although for C and X11.  This is a rather more mature
(commercial) product.  I believe the output of TeleUse requires much
less hand-crafting than the Ibuild output.

The third example is not directly related to C++, but perhaps the most
interesting because it goes beyond computer programming.  Simnon is a
simulator package for non-linear systems.  It provides a complete
interactive environment for simulation of models based on non-linear
differential equations.  Simnon is a useful package, for example for
designing a control system.  There is an additional package that takes
Simnon code as input and produces Modula-2 code suitable for
implementing a controller on an IBM PC (there is also a small runtime
library that provides initialization and a simple graphical user
interface).

Dag M Bruck
--
Department of Automatic Control		E-mail: dag@control.lth.se
Lund Institute of Technology
P. O. Box 118				Phone:	+46 46-104287
S-221 00 Lund, SWEDEN			Fax:    +46 46-138118

rfg@NCD.COM (Ron Guilmette) (03/03/91)

In article <1991Feb26.202515.28688@lth.se> dag@control.lth.se (Dag Bruck) writes:
>
>>1.  If the the design is well-understood and verified, for example by
>>implementing a prototype, we can generate header files and stubs from
>>the prototype. 
>
>The first example is Ibuild, a user interface builder...

>The second example is TeleUse, another user interface management system...

>The third example is not directly related to C++, but perhaps the most
>interesting because it goes beyond computer programming.  Simnon is a
>simulator package for non-linear systems...

These three examples are indeed good examples of a category of systems
which are sometimes refered to as "Fourth Generation Languages", i.e.
"automatic programming" systems designed to minimize the amount of
specification and effort needed to create some hunk of software for
some very narrow applications area.

I have to admit that Dag's examples do (to some extent) disprove my
contention that you can't get an implementation from a mere specification
(where the "specification" could be loosely viewed as a sort of "interface"
and vise versa).  Obviously, there *are* systems which can "build" the
implementation for you as long as you are only dealing with some narrow
applications area where there exists a known "pattern" for the typical
sorts of implementation code needed.

My contention was for the general case however.  As of now, I know of no
system, either experimental or commercial, which can do a reasonably
good job of intelligently selecting data structures and algorithims
to solve random problems which span various application areas.  (If there
was such a system, I might be out of a job! :-)

Perhaps when those fellows working on "Deep Thought" get their machine
to win the World Chess Championship they will become bored with chess
and move along to this separate (but equally interesting) problem.

-- 

// Ron Guilmette  -  C++ Entomologist
// Internet: rfg@ncd.com      uucp: ...uunet!lupine!rfg
// New motto:  If it ain't broke, try using a bigger hammer.