Název:
Reactive Programming with Events
Překlad názvu:
Reactive Programming with Events
Autoři:
Petříček, Tomáš ; Syme, Don (vedoucí práce) ; Hric, Jan (oponent) Typ dokumentu: Diplomové práce
Rok:
2010
Jazyk:
eng
Abstrakt: [eng][cze] The reactive programming model is largely different to what we're used to as we don't have a full control over the application's control flow. As a result, reactive applications need to be structured differently and need to be written using different patterns. We build an easier way for developing reactive applications. Our work integrates declarative and imperative approach to reactive programming and uses the notion of event as the unifying concept. We discuss the problem of memory management in this scenario and develop a technique for collecting not only events that are not reachable, but also events that cannot trigger any action. Next, we present a language extension that makes it possible to wait for occurrences of events that match some defined pattern. The extension isn't bound to the reactive programming model and can be used for concurrent and parallel programming scenarios as well. Finally, we develop a reactive programming library that builds on top of the ideas discussed earlier and we present semantics of the library to enable formal reasoning about reactive programs.Programovací model pro reaktivní aplikace je v mnoha ohledech neobvyklý, protože nemáme plnou kontrolu nad řízením běhu aplikace. Z toho důvodu mají reaktivní aplikace jinou strukturu a musí být psány pomocí jiných návrhových vzorů. V této práci prezentujeme snazší způsob pro vývoj reaktivních aplikací. Naše práce propojuje deklarativní a imperativní přístup pomocí sjednocujícího konceptu událostí. V první části práce se zaměříme na správu paměti a prezentujeme techniku pro automatické uvolňování objektů reprezentujících událost nejen v situaci kdy událost není referencována z programu ale také v situaci kdy událost již nemůže způsobit žádnou reakci. Dále prezentujeme rozšíření jazyka, které umožňuje zápis kódu čekajícího na několik událostí. Toto rozšíření není pevně vázané na reaktivní programování a je tedy možné využít ho například i pro paralelní programování. Na závěr prezentujeme knihovnu pro reaktivní programování, která využívá všechny výše uvedené myšlenky a popíšeme sémantiku jazyka, která umožňuje formální dokazování vlastností reaktivních programů.