5 ms·
Céu: Structured Synchronous Reactive Programming
- rwmj 11y agoI have flashbacks to Occam.
- pron 11y agoThe language is a less-restricted (and less verifiable) Esterel descnedant. Esterel and its derivatives have been used successfully by the industry, for many years, to write fully verifiable, safety-critical, real-time reactive systems. [1]: https://en.wikipedia.org/wiki/Esterel https://en.wikipedia.org/wiki/Esterel
- ufo 11y agoWhat kind of restrictions are you thinking about here? I don't know Esterel very well but Céu is very restrictive in order to ensure that responses to events don't loop. There are no recursive functions, no dynamic allocation, etc.
- pron 11y agoEsterel is not Turing complete, and it doesn't allow dynamic allocation.
- ufo 11y agoNeither does Céu (not counting the C code you link against)
- pron 11y agoOh, didn't know that!
- fsantanna 11y agoYour impressions about Céu are very accurate, but I would like to add some remarks. There are three possible perspectives about the language: the "static", presented in the SenSys'13 paper; the "dynamic", presented in the Modularity'15 paper; and also the actual compiler publicly available. The static version shares similar restrictions to Esterel, as you both pointed out. The dynamic version allows dynamic allocation inside lexical pools, keeping static memory management (no GC or "free"), but with possible unbounded memory usage. The actual compiler is even less restrictive and just gives warnings for unbounded loops, recursive calls, and so on.
- ufo 11y agoOne of the neat features of Céu is that it has Simula-like objects with coroutines. Method calls are asynchronous, can be paused while they wait for events and many objects can be simulated run concurrently. One of the students here in the lab is experimenting with using Céu to code the logic for some simple 2D games and according to him the event system allows you to write code in a very "natural" way. Another special feature of Céu is "strong abortion" with the par/or primitive. par/or lets you run two computations concurrently and if one of them completes the other one is aborted and all its resources are freed. Aborting asynchronous computations is not something that all asynchronous programming systems let you do very well. (btw, if anyone is wondering, Céu means sky in Portuguese)
- cschep 11y agoNaming things is hard, but this seems like a total punt. :) Help us out!
- flippyhead 11y agoI discovered this while struggling with C++ for an Arduino project. I'm really digging Ceu as an alternative that runs directly (and efficiently!) on the Arduino.
- biot 11y agoI can't be the only person wondering: how do you pronounce it? Kay-you/Say-you? Kyuh/Syuh?
- deleted 11y ago[deleted]
- deleted 11y ago[deleted]
- andlima 11y agoAssuming it's céu as in the Portuguese word for sky, it's pronounced as /sɛw/ (in Brazilian Portuguese, at least). It sounds similar to "sell", only ending in /w/ rather than /l/. http://pt.tfd.com/c%C3%A9u http://pt.tfd.com/c%C3%A9u
- personlurking 11y agoThe recording in the dictionary link is a bit harsh/off. Here are some native Portuguese speakers saying it http://www.forvo.com/word/c%C3%A9u/ http://www.forvo.com/word/c%C3%A9u/
- c4n4rd 11y agoCeu (Portuguese) means Sky in English. I think it is a take on Lua (the scripting language) which means moon. The pronunciation is like 'Seoul' (South Korean Capital), with the 'e' pronuonced slightly more open as in egg.
- kyllo 11y agoWhich pronunciation of Seoul is it like? The way Koreans pronounce it? The way Americans pronounce it? The way Europeans pronounce it? I'm confused because Seoul doesn't have an 'e' sound in it at all, in Korean.
- agumonkey 11y agoIs the 'e' skipped [soul] ? almost silent [s_oul] ? or a transition like [s~woul] ? ps: forgot about https://translate.google.com/#en/ko/seoul https://translate.google.com/#en/ko/seoul, according to them it's not entirely silent.
- tormeh 11y agoDiscovered this right after handing in my master thesis where I wrote an (extremely) prototype compiler for my own language which has a similar approach. Synchronous seems to be the way to go for multithreaded programs where optimal performance is not required.
- digsmahler 11y agoMy favorite singer is Céu. https://en.wikipedia.org/wiki/C%C3%A9u https://en.wikipedia.org/wiki/C%C3%A9u