Main page What is Vimms? System requirements Screen shots Original documentation Get Vimms Automation Corner

What is Vimms?


Why doing everything over and over again? When someone writes a small program doing for example some numeric calculation, he always has to care about things like "How can I display the result of my calculation" or "How can I interactively change the parameters of my calculation?" Often it requires more time to program the necessary input / output interface than solving the problem itself. Especially in research environments people often loose a lot of time because they have to care about things they don't want to do.

The solution for that is Vimms: Here you can in a very simple way define input and output variables for your program and you can at once connect it to something like a graphic plot or file I/O and you can get your input parameters from a scroll bar or and input field etc. Vimms comes with a many predefined standard objects.

Basic principle

Vimms is an environment that simplifies the reuse of program modules, called objects. Each object communicates with other objects by a set of input and output variables. The Vimms environment already contains a number of objects providing standard tasks like file I/O, displays and user interaction.

One of the main objects is the Calculator object that allows native execution of C++ code. Here the user can write a small C++ program which is then compiled and loaded as a shared library when the main program is started. Vimms cares about all this. This way of programming feels like programming a script, but with the advantage that one has the execution speed and all possibilities one has in a standalone C program.

Vimms also seamlessly integrates in the unix environment because it allows on the fly creation and execution of shell scripts and other user defined text files which can act as input to other programs. Program flow and variable connections between objects are done with the mouse and appear as a kind of block diagram. Multithreaded programs with thread synchronization are created effortlessly. Some objects can have a separate control window that appears on a separate viewer panel, where the object can display data or create control elements for user communication. The control windows are arranged with the mouse during design time

Vimms is no graphical programming language, but it combines advantages of graphical and conventional programming: The basic program pieces are written in C++ and the communication between different objects is drawn with the mouse. As the communication interface is automatically generated code, even unexperienced C programmers or "C newbie" can use Vimms to provide a graphical user interface for their programs. The power of this functionality can be seen using the nonlinear fitter for data modeling: The model function is given as a C++ line, compiled to machine code and loaded as a shared library. So the fitting speed is much higher than in conventional interpreting fitters.

Vimms is devided in two parts, the GUI which is needed for creating Vimms programs and manages user interaction during execution and the execution process which executes the user program. Programs created with Vimms can run with or without a user interface.

The first version of vimms was created for controlling measurement equipment in university labs and online evaluation of measurement data. The new multitasting and synchronizing features make Vimms also suited for superior controlling tasks. The native C++ speed of the user program object "Calculator" and the integrated data presenting objects make Vimms also a proper environment for numerical applications which use the full power of native code. The scripting features also add professional data presenting for example by automatic creation of LaTeX files and postscript graphics.

The newest Vimms version can be downloaded from


The Vimms user manual
F. Hitzel, 2006