3 ms·
Time to plug one of my favourite (semi-academic) programming languages targeting the embedded space: Céu[0]. It uses a Structured Synchronous Reactive Programm
by vanderZwan 9y ago
Time to plug one of my favourite (semi-academic) programming languages targeting the embedded space: Céu[0].
It uses a Structured Synchronous Reactive Programming paradigm. Synchronously concurrency means that it is single-core, and not parallel. More accurately, it awaits events in parallel (hence "synchronous reactive programming"), using "trails" instead of threads.
An example from the documentation[1] below:
> The example in Céu that follows blinks a LED every second and terminates on a button press:
input none BUTTON;
output on/off LED;
par/or do
await BUTTON;
with
loop do
await 1s;
emit LED(on);
await 1s;
emit LED(off);
end
end
par/or do ... with ... end is an example of two parallel trails, each of which much have one or more await statements, meaning the block on these events. The or in par/or means that if either trail finishes, the whole section ends. In this case, the second trail has an infinite loop (which isn't a problem due to the await statements yielding control to the scheduler), so the program only ends if the first trail ends after a button press.
A more elaborate example by fellow Céu enthusiast Johnicholas can be found here[2][3].
[0] http://ceu-lang.org/ http://ceu-lang.org/
[1] http://fsantanna.github.io/ceu/out/manual/v0.30/ http://fsantanna.github.io/ceu/out/manual/v0.30/
[2] http://johnicholas.github.io/2018/03/24/Hello_Ceu.html http://johnicholas.github.io/2018/03/24/Hello_Ceu.html
[3] https://github.com/Johnicholas/learn_ceu_030 https://github.com/Johnicholas/learn_ceu_030