Information Links
Related Work
-
http://www.bayfronttechnologies.com/
Bayfront Technologies is among
several sites that demonstrate generation used commercially.
The CAPE translator has been used to generate ROM code for
various protocols (e.g., Digital Subscriber Line and fiber optic
protocols), business applications for process models, general
communications protocols (e.g., ethernet), etc. This is one of
the best, most mature and most practical generation efforts. It
is rumored that CAPE was used to bring a DSL chip to market in a
stunningly short time, before any of the chip competitors could.
CAPE is based on the DRACO generation system (originally Dr.
Neighbor's PhD work). The site includes copious documentation, a
demonstration of CAPE, and commercial information on the
product. This is a good example of what can be done with
generation.
-
http://www.semdesigns.com
Semantic Designs, Inc. is not focused on generation of
software from scratch per se but rather on the related task of
managing, evolving, re-hosting and re-engineering existing
industrial scale applications (e.g., millions of lines of code
in multiple languages, in thousands of source files and often
hosted on multiple machines). The largest system they have
worked on is 35 MLOC. They have industrial strength parsers for
20 plus languages including C, C++, C#, COBOL, Java, JCL, and
many others.
This work shows the power of reusing generative knowledge in the
form of source-to-source program transformations and
metaprograms across a broad spectrum of software engineering.
The foundation of the work is a commercial, scalable program
transformation system called the DMS Software Reengineering
Toolkit. The scaling is along a number of axes,
including compound notational systems operating at multiple
levels of abstraction ("the Draco paradigm"), procedural
escapes, highly tuned infrastructure (cache-aligned nodes) and
parallel implementation on SMP systems using an in-house
language, PARLANSETM, enabling the handling of
million-line applications.
Commercial applications of DMS include code analysis (clone
detection, test coverage tools and detection of dead code), code
generation (mapping a factory control DSL into "Ladder Logic"
using a strong propositional code optimizer),
modification (preprocessor simplification) and with Northrop
Grumman, the large-scale porting of flight management software
for the B-2 Spirit Bomber from JOVIAL to C. Interestingly, the
B-2 port had to be done without Semantic Designs ever seeing the
actual Jovial input code or the C output code! Future applications are intended to
include problem-domain oriented reverse engineering by
abstraction with human guidance. An interesting property of DMS
is that much of it is constructed using itself and the various
methods listed above.
- http://scicomp.com/
Scicomp Inc. tools generate
code from systems of
equations using finite difference, Monte Carlo, and similar
methods. This technology is related to DSLGenTM
in several ways. First via the DSLs. SciComp's
equation-based DSL and DSLGenTM's Image Algebra both
share the benefits of domain specific mathematical equation
languages. Specifically, the equations can be easily
manipulated (e.g., for the purpose of optimization) without the
difficulties introduced by operational constructs such as
programming control structures. Secondly, both systems
generate optimized control structures -- DSLGenTM by
algorithmically developing a logical architecture (LA) that
guides the customization, assembling and merging the control
elements introduced by individual DSL operators and operands,
SciComp's system by merging equations into a network of
algorithm templates (chosen from alternative algorithms
appropriate to the domain) and then custom designing data
structures and applying optimizing operator and control
structure transformations.
SciComp's system has applicability to a rich set of problem
domains (such as various types of wave modeling). A commercial
version of the system, SciFinanceTM, is used by
investment banks to automatically generate a wide variety of
codes for pricing derivative securities.