A Mathematical Concept evolves into a Programming Technique
Tabular forms of expressing logic go back to ancient civilisations but the structure that we use is based on the science of the 1950-60s and has been used by NASA. Decision Tables are an excellent way of expressing logic and analysing problems. Many universities still teach the theory as part of their mathematics or computer science degrees. Systems and Business analysts often express their processing logic and problems using decision tables. These would then be coded by programmers. We at RapidGen have combined this process so that the analyst has virtually written his own program logic.
Simple forms of Decision Tables
People are often unaware that they have used decision tables in everyday life. Bus times and train times tables and multiple-choice questions are varieties of Decision tables.
Decision Tables are structured yet very flexible. In their most common form, they give details of initial actions which are to be performed, conditions which are to be tested and actions which are to be taken dependent on the result of any condition tests. It is also possible just to have a list of actions to be performed without any condition.
In theory it is possible to have a very large number of conditions and actions. However, in practice it is best to try and keep things simple and we are, with our programming language, constrained by the processor the software is running on. In fact this constraint is larger than most practical decision tables and even then the constraint can be overcome by linking decision tables together.
Very complex logic can be simply expressed; even disconnected conditions and actions can be handled simultaneously. The way the decision tables are named and the conditions and actions listed can help with documenting the process logic.
You could even say that the writing of the program is self-documenting.
For the Technically inclined: powerful processing capabilities
RapidGen software is implemented in RPL, a fully-featured programming language which compiles decision tables directly into executable machine code programs, using a compiler which is itself written in RPL. Compiled programs are stored for reuse and mapped directly into memory for execution under the control of a low-footprint, highly-portable runtime system.
The compiled code is highly efficient and performs most conditions and actions inline, making calls into the runtime system only for more complex operations such as file system I/O, database access etc.
Decision table rules are stored in a machine register and manipulated using bitwise logic instructions for maximum efficiency.