Observation: Why Relational Programming Works
Relational programming expresses “code” in a declarative manner.
Relational programming divides “coding” into two main tasks:
- relations (code)
- engine.
The relational engine is divorced from the “code”.
A programmer cannot express “how” to do something, the engine decides.
This is the key — divide a problem into sub-parts, remove all inter-dependencies between the parts.
Other Examples:
- CPUs hide the gory details of how various kinds of rust interact electrically. CPUs are opcode engines, programmers write code in HLLs, and these are divorced from the inner workings of the hardware.
- Peter Lee approached an otherwise hoary notation — Denotational Semantics — and managed to build practical compilers using D.S. by subdividing the notation into sub-notations.