The SDL forums have moved to discourse.libsdl.org.
This is just a read-only archive of the previous forums, to keep old links working.


SDL Forum Index
SDL
Simple Directmedia Layer Forums
Videos for the reactive programming language "Céu"
Francisco Sant'anna
Guest

Hello,

I created some videos to illustrate the programming style of the programming language Céu:

http://www.ceu-lang.org/wiki/index.php?title=Videos

Céu is a reactive programming language designed to implement control patterns in a safe and high-level style.
Games and GUIs are examples of reactive applications with plenty of control patterns (e.g. animations), which could take advantage of Céu.

The videos use SDL as the underlying platform and explore the following peculiarities of the language:
  • reactive and synchronous execution model (in contrast with threads and actors)
  • lock-free and deterministic concurrent execution
  • an object system that encapsulates state *and* lines of execution (i.e. properties and "threads")
  • first-class timers
  • an internal notification mechanism
  • safe interaction with C through finalization blocks

Although Céu was originally designed for constrained embedded systems (e.g. Arduino), I believe it can also be applied to larger systems.
Hence, this is my first attempt with SDL-2 (many thanks for this library!).

Please, I'll be happy with feedback regarding the videos and, of course, the language Céu itself.
(I'm a subscriber of this list.)

Best regards,
--
Francisco
Nathaniel J Fries


Joined: 30 Mar 2010
Posts: 444
Sort-of reminds me of Concurrent-C, except it doesn't appear to directly associate data with a task, and it doesn't appear to allow waiting on multiple events at a time (but also the runtime does more work).
Nathaniel J Fries


Joined: 30 Mar 2010
Posts: 444
nvm: no watching a later video. Basically Concurrent-C with a different syntax.
Videos for the reactive programming language "Céu"
Francisco Sant'anna
Guest

Hello Nathaniel,

- You can wait on multiple events with a "par/or":

par/or do
   await A;
with
   await B;
end

or use the sugar:

await A or B;

Lines of execution are very cheap in Céu.
We have applications with tens of them that use around 1K of RAM and 10K of ROM (on a 16-bit platform).

- The 3rd and 4th videos show how data can be associated with a task (sorry, the videos are a bit long).

- About Concurrent-C, AFAIR, it follows a rendez-vouz asynchronous style (non-deterministic w/ a very different semantics).
Céu is actually based on Esterel (a language from the 80'), with many differences enumerated in the previous e-mail.

--
Francisco

On Sun, May 12, 2013 at 5:18 PM, Nathaniel J Fries wrote:
Quote:
Sort-of reminds me of Concurrent-C, except it doesn't appear to directly associate data with a task, and it doesn't appear to allow waiting on multiple events at a time (but also the runtime does more work).



Nate Fries


_______________________________________________
SDL mailing list

http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Nathaniel J Fries


Joined: 30 Mar 2010
Posts: 444
Yes, execution order was non-deterministic with Concurrent-C.

the await e1 or e2 syntax is very nice.