C++ is all very well for applications that have to be fast, deliverable and, above all, written in C++. But what about casual programmers, prototypers, and those who want something a little more high-level?
Naturally, wxWindows, in collaboration with NASA, can supply the answer---wxCLIPS. CLIPS is NASA's expert system shell consisting of a LISP-like functional language, a rule interpreter, an object system, and the crucial characteristic of portability. It's implemented as a C library, can be embedded in any C or C++ application with no royalty payments, and is free within the United States, available at low cost elsewhere.
As a language, CLIPS has several advantages over C++. It requires no explicit memory management, since it has garbage collection; it's interpreted, so no long compilations; and it has a rule interpreter, useful for knowledge based system projects, or just occasional pattern matching and searching. So it's useful for prototyping applications, or for non-C++ programmers. From the C++ developer's point of view, it makes a great embedded language for user-extensible applications.
wxCLIPS adds a library of GUI CLIPS functions to CLIPS; the intention is to cover all of wxWindows functionality eventually, though presently, only the most important functionality is covered. wxCLIPS comes as both a library and an executable, so it can be used straightaway to develop GUI programs, and it can also be linked into applications to provide a built-in language. Within AIAI, wxCLIPS has proven popular amongst students and professionals for rapid-prototyping and customization.
A program called CLIPS2C has been written to translate a subset of CLIPS into C++, to combine the advantages of interactive development with efficient delivery. CLIPS2C knows about the wxCLIPS extensions.
See the wxCLIPS manual and NASA's CLIPS manuals for further details.
wxCLIPS and CLIPS2C are now distributed separately, to save space in the wxWindows distribution. They are now available from the /pub/wxclips directory of AIAI's ftp site.