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].
10 comments
[ 2.1 ms ] story [ 34.1 ms ] thread[0] https://github.com/ziutek/emgo/blob/master/doc/spec.md
Nope.
This mcu has 4kb, which is not a lot of ram.
8bit controllers are sometimes 16kb - 32kb
I wish I knew about this when dealing with MIB520 and MicaZ
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:
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/
[1] http://fsantanna.github.io/ceu/out/manual/v0.30/
[2] http://johnicholas.github.io/2018/03/24/Hello_Ceu.html
[3] https://github.com/Johnicholas/learn_ceu_030