FUNCTIONAL AND IMPERATIVE REACTIVE PROGRAMMING BASED ON A GENERALIZATION OF THE CONTINUATION MONAD IN THE C++ PROGRAMMING LANGUAGE

eBiblioteka

 
 

FUNCTIONAL AND IMPERATIVE REACTIVE PROGRAMMING BASED ON A GENERALIZATION OF THE CONTINUATION MONAD IN THE C++ PROGRAMMING LANGUAGE

Show simple item record

dc.contributor.advisor Mitić, Nenad
dc.contributor.author Čukić, Ivan
dc.date.accessioned 2018-12-04T13:42:14Z
dc.date.available 2018-12-04T13:42:14Z
dc.date.issued 2018
dc.identifier.uri http://hdl.handle.net/123456789/4738
dc.description.abstract There is a big class of problems that require software systems with asynchronously executed components. For example, distributed computations have the distributed nodes that process the data asynchronously to one anot- her, service-oriented architectures need to process separate requests asynchrono- usly, and multi-core and heterogeneous systems need to have multiple separa- te tasks running concurrently to best utilize the hardware. Even ordinary GUI applications need asynchronous components – the user interface needs to be re- sponsive at all times which means that no matter in what state the program is in, it needs to process and react to the input events coming from the user. The necessity of concurrency and asynchronous execution brings in the added com- plexity of the Inversion of Control (IoC) into the system, either through mes- sage passing or through event processing. IoC makes code difficult to develop and reason about, it increases component coupling and inhibits clean functional or object-oriented software design. In this dissertation, a method for solving the problems that IoC introduces is presented. It presents a way to model both synchronous and different types of asynchronous tasks with the continuation monad. The continuation monad serves as a primitive to build more complex control flow structures that mimic the control flow structures of the host programming language. It also allows for building more complex control structures specialized for parallelism, transactional execution, and for simulating functional programming idioms with asynchronous tasks through a generalization of the continuation monad that allows the asynchronous tasks to generate results one at a time. This allows for writing programming systems with asynchronously executed components by writing seemingly synchronous imperati- ve or functional code while leaving it up to the compiler to do all the heavy lifting and convert the written code to asynchronously executed set of tasks. Another benefit of the presented method is that it allows for easier automatic handling of the data lifetime without the need for garbage collection. This method has been successfully applied and tested in several Free/Libre Open Source Software and proprietary real-world software projects used by hun- dreds of millions of people around the world. In this dissertation, an example of a secure project management system is described which is based on a similar system implemented as a part of the KDE Plasma project. This dissertation also contains the important parts of the implementation of the AsynQt library which extends the Qt library, and its concurrency primitive – QFuture class – with functional reactive programming patterns based on the method proposed in this dissertation. en_US
dc.description.provenance Submitted by Slavisha Milisavljevic (slavisha) on 2018-12-04T13:42:14Z No. of bitstreams: 1 ivan_cukic_phd.pdf: 1328958 bytes, checksum: bb28f1ad26f9f51c443042bf30f9840b (MD5) en
dc.description.provenance Made available in DSpace on 2018-12-04T13:42:14Z (GMT). No. of bitstreams: 1 ivan_cukic_phd.pdf: 1328958 bytes, checksum: bb28f1ad26f9f51c443042bf30f9840b (MD5) Previous issue date: 2018 en
dc.language.iso en en_US
dc.publisher Beograd en_US
dc.title FUNCTIONAL AND IMPERATIVE REACTIVE PROGRAMMING BASED ON A GENERALIZATION OF THE CONTINUATION MONAD IN THE C++ PROGRAMMING LANGUAGE en_US
mf.author.birth-date 1983-03-14
mf.author.birth-place Beograd en_US
mf.author.birth-country Srbija en_US
mf.author.residence-state Srbija en_US
mf.author.citizenship Srpsko en_US
mf.author.nationality Srbin en_US
mf.subject.area Computer Science en_US
mf.subject.keywords coordination, asynchronous task-oriented design, domain specific lan- guages, programming language design, functional programming, imperative pro- gramming, reactive programming, category theory, continuation monad en_US
mf.subject.subarea Software development en_US
mf.contributor.committee Živković, Miodrag
mf.contributor.committee Malkov, Saša
mf.contributor.committee Filipović, Vladimir
mf.contributor.committee Porkolab, Zoltan
mf.university.faculty Mathematics faculty en_US
mf.document.pages 173 en_US
mf.document.location Beograd en_US
mf.document.genealogy-project No en_US
mf.university Belgrade en_US

Files in this item

Files Size Format View
ivan_cukic_phd.pdf 1.328Mb PDF View/Open

This item appears in the following Collection(s)

Show simple item record