Hacker News new | past | comments | ask | show | jobs | submit login
Céu: Structured Synchronous Reactive Programming (ceu-lang.org)
66 points by flippyhead on July 8, 2015 | hide | past | favorite | 23 comments



The 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


What 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.


Esterel is not Turing complete, and it doesn't allow dynamic allocation.


Neither does Céu (not counting the C code you link against)


Your 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.


Oh, didn't know that!


I can't be the only person wondering: how do you pronounce it? Kay-you/Say-you? Kyuh/Syuh?


Assuming 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


The 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/


Ceu (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.


Which 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.


Is the 'e' skipped [soul] ? almost silent [s_oul] ? or a transition like [s~woul] ?

ps: forgot about https://translate.google.com/#en/ko/seoul, according to them it's not entirely silent.


어 (transliterated as either "eo" or "uh") is a vowel that I would describe as like the "u" sound in the word "fun" but with the mouth open a bit wider.

It's nothing like any of the sounds an "e" can represent in English.

Europeans tend to pronounce it "See-OOL" which is just completely wrong.


It's a bit longer, always morphemic version of a schwa I believe.


In International Phonetic Alphabet it's [sʰʌ.ul].

The vowel ʌ is described as "between pearl and pull, with spread lips"


I thought Seoul was pronounced as 'soul'


A tiny reboot of Oracle:Sun VS IBM:Eclipse.


I 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.


One 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)


Naming things is hard, but this seems like a total punt. :) Help us out!


Discovered 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.


My favorite singer is Céu. https://en.wikipedia.org/wiki/C%C3%A9u


I have flashbacks to Occam.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: