Intentional Programming
Intentional Programming is a former research program at Microsoft, led by Charles Simonyi, which seems to have the same objectives as Mozart, albeit with a different (and arguably better) implementation. Two years ago, they seemed very advanced, and were even "close to productization" at some point. But the project has been cancelled at Microsoft. And they are still not Free Software :-) A new company has just been created to support that effort, but the web site is quite uninformative at this point.
Other links for IP:
Lutz Roeder's Page
Omniscium
Edge
IP Wiki
Yahoo Group
C++ Resources
Open C++ is a reflective environment offering compiler plug-ins for C++. There is also an OpenJava. The general objective appears to be the same, the implementation details appear vastly different. Definitely worth a look if you need Mozart-like tools for C++.
In C++, the best known generic library is the
Standard Templates Library which
is at the core of the C++ Standard Library.
Alex
Stepanov's formalized numerous ideas regarding type information
and really demonstrated the power of generic programming. It also made
some limits of C++ visible.
Blitz++
is a very powerful and high-performance numeric library, which even
sometimes beats Fortran. Blitz++ demonstrated how users can direct the
(C++) compiler to generate efficient code using appropriate techniques,
rather than rely on the (Fortran) compiler to recognize and optimize
numerical patterns.
Expression
templates and
template metaprogramming are advanced techniques to
let C++ compilers perform some symbolic computations for you.
Unfortunately, they push the limits on what is practical with C++, and
require a frightening amount of work from the poor C++ compiler. But
they are neat.
The GCC Introspector project intends to add support for introspection in GCC itself. I sure hope that they succeed, if only because it would allow me to get rid of the tone preprocessor completely :-) See also the log.
Java Resources
Recoder is a Java source-to-source translator API, similar to Moka. At first sight, it seems more difficult to program than Mozart, but the concepts are quite close.
Aspect
Oriented Programming is a way to deal with distributed aspects of
programs in large applications, such as error checking strategies,
synchronization policies, etc. I think Mozart is a valid tool to
implement aspect-oriented programming.
Project ACE is a Java-centric automatic code generation thingie. Graphical. Talks about "intents" (a la Intentional Programming, no doubt). At first sight, it doesn't seem anywhere as revolutionary as IP, however.
Non-textual Program Representations
The SCID page has a good deal of information on non-textual program representations, and many interesting links.
|