Ether-Dimensional Programming Paradigm
The Paradigm
Ether-dimensional programming paradigm (EDPP) was originally designed as an experiment. This website provides basic information on it and the Aetherlang programming language made to demonstrate basic concepts.
Main features of the EDPP:
- Easy parallelism through nested dimensions
- Global namespace ("ether") fully accessible at any given moment from any dimension
- Any name defined outside ether (in dimensions) is constant
- Safe "goto" statements
Other ideas that consequently occur:
- EDPP languages can also be functional
- Concepts of dimensions and functions can be blended
- There might be multiple ethers (for different data types) in strongly typed languages
How it works
Here are some illutrations of how program flow in the paradigm looks like (I hate UML, flow-style diagrams are much more representative for this).
The flow of a regular program without parallelism could look like this:
simple flow
flow with a condtion Φ and a loop L
However, in EDPP you can easily construct nested parallel dimensions for the interpreter or compiler, which allows you to have multiple flows that you can manage with primitive tools. Most importantly, when running a new dimension from the current one, its namespace gets carried further via namespace hierarchy. Note that in Aetherlang, after a namespace is created any changes to it do not result into changes in other namespaces in the hierarchy.
use :base
dim D0
dim D1
dim D11
...
enddim D11
enddim D1
dim D2
dim D12
...
enddim D12
J = timepoint void
if [cond] :(gotime J)
dimwait :D21
enddim D2
dimwait :D1
dimwait :D2
dimwait :D11
enddim D0
EDPP example with dimensions Dx and a loop J.
Languages
For now, there's only one language designed specifically for the EDPP. You can help to spread this experimental idea by creating more or by writing new interpreters and libraries for the existing one. Contact me and I'll put your creation on the list.
- Aetherlang (wiki/interpreter)