ContRap
The symbolic tool for software rapid prototyping
Frequently asked questions
Summary

Use your browser search function to find the topic of your interest.

Here are some typical trouble shooting advices.

Why does ContRap exist?

ContRap can be seen as a front-end and as an intelligent debugger for C/C++ programs. Everything in ContRap is optimized in design to develop C/C++ library code efficiently. To our knowledge ContRap is the first system, which implements the above features that rigorously.

What does ''symbolic'' mean?

Symbolic computation means compting with symbols as opposed to computing with numbers. In ContRap this means that each unknown identifier evaluates to itself. Read more about the symbolic and strict modes here.

Is ContRap a computer algebra system (CAS)?

ContRap is not a CAS. However, it can be turned to one by loading a corresponding plugin library. Have a look at the plugin interface to the GiNaC library. When GiNaC is loaded, ContRap supports arbitrary precision numbers, polynomial algebra, a set of non-polynomial functions, and some basic integration and differentiation calculus.

Does ContRap aim to replace Java/Python/Perl/LLVM etc.?

Definitely not. The scripting language of ContRap is not designed to be a replacement for a full programming language like the above. In other words, the programs are never written exclusively in the ContRap language. ContRap is a means of speeding up prototype development. On the contrary, the language is designed to call C/C++ procedures and one takes lots of speed penalties to do this comprehensively.

Do I develop with ContRap for ContRap?

Definitely not. ContRap is a very small layer between the library code and the developer. It is a primary policy of ContRap, that you develop your libraries in a way that they work stand-alone without ContRap. You should use ContRap functions exclusively in the wrapper functions prefixed with the ContRap macros. This way you will never depend on future ContRap development.

Can i develop ContRap code in my favorite IDE?

ContRap does not aim to provide a complete IDE for C/C++ development, since there already exist excellent solutions. On the contrary, it is expected that you use your favorite IDE for C/C++ code development, even for ContRap plugins. ContRap and its plugins are mostly written with Eclipse.

I do not see any logging messages.

In the IDE there is a drawer on the bottom of the main window with a ''Logger'' tab. Check all the buttons on the bottom right of the embedded window. If you use ''crp'' then you can run it as follows to enable full logging:

crp -d all

A plugin library does not load.

You try to load a library with ''load(''name'')'' but ContRap says ''Interpreter:Warning: Can not find library 'name'.'' This can have several reasons, listed below.

  • The library is not in the search path: Add the path to the root installation folder of your library (without /lib or /lib/contrap) to your search paths in the IDE preferences.
  • The library fails the dependency check: Try to call

    crp -c file

    where ''file'' is the full file name with path to your library. The error message will probably tell you about the missing dependency. If no error message occurs you probably did not add the corresponding full path to your linker paths list. See the general installation instructions for more details.

  • The library fails the version check: Recompile the library with the current ContRap version. This might require to manually run ''svn up'' in the cmake-scripts directory, if you do not integrate your library into a Subversion tree. To check the current version, run

    contrap-config --version

  • If nothing of the above applies, try to restart all ContRap applications.