What is Relational Programming?Ordinary programming languages calculate functions. Sometimes a function is inappropriate. For example, 4 has two square roots, +2 and -2, but an ordinary programming language provides a sqrt function that returns only one of the roots. So if we want to find both roots of a quadratic equation, we have to deal with each root separately. In a relational language, we need only to specify one solution, and the program will find both. This is because it will treat sqrt as a binary relation. A binary relation is similar in concept to a function, but can map an argument to any number of values (including zero).
Relations have many uses in computer science. The Z Specification Language makes heavy use of relational algebra notation. One reason is that programs are usually required to establish an input-output relationship, but there are often many outputs that are allowable. For example, a program may be asked to find any solution to a problem, or it may be asked to list all solutions, but in no particular order. A functional specification is bound to specify some particular solution or some particular order. A functional specification is usually an over-specification.
You can find out more about Relational Methods in Computer Science from the RELMICS site.
Libra is a relational programming language that explores the different values yielded by relations by back-tracking rather than parallel execution. Click here to download Libra.
Since back-tracking is a feature of Prolog, the initial version of Libra is implemented in it. You can download a very good free Prolog system for a 68000 Macintosh, called Open-Prolog.
Computer Science Technical Report 95-10