63 results on '"Reactive programming"'
Search Results
2. LoRe: A Programming Model for Verifiably Safe Local-First Software (Artifact)
- Author
-
Julian Haas and Ragnar Mogk and Elena Yanakieva and Annette Bieniusa and Mira Mezini, Haas, Julian, Mogk, Ragnar, Yanakieva, Elena, Bieniusa, Annette, Mezini, Mira, Julian Haas and Ragnar Mogk and Elena Yanakieva and Annette Bieniusa and Mira Mezini, Haas, Julian, Mogk, Ragnar, Yanakieva, Elena, Bieniusa, Annette, and Mezini, Mira
- Abstract
Local-first software manages and processes private data locally while still enabling collaboration between multiple parties connected via partially unreliable networks. Such software typically involves interactions with users and the execution environment (the outside world). The unpredictability of such interactions paired with their decentralized nature make reasoning about the correctness of local-first software a challenging endeavor. Yet, existing solutions to develop local-first software do not provide support for automated safety guarantees and instead expect developers to reason about concurrent interactions in an environment with unreliable network conditions. We propose LoRe, a programming model and compiler that automatically verifies developer-supplied safety properties for local-first applications. LoRe combines the declarative data flow of reactive programming with static analysis and verification techniques to precisely determine concurrent interactions that violate safety invariants and to selectively employ strong consistency through coordination where required. We propose a formalized proof principle and demonstrate how to automate the process in a prototype implementation that outputs verified executable code. Our evaluation shows that LoRe simplifies the development of safe local-first software when compared to state-of-the-art approaches and that verification times are acceptable.
- Published
- 2023
- Full Text
- View/download PDF
3. LoRe: A Programming Model for Verifiably Safe Local-First Software (Extended Abstract)
- Author
-
Julian Haas and Ragnar Mogk and Elena Yanakieva and Annette Bieniusa and Mira Mezini, Haas, Julian, Mogk, Ragnar, Yanakieva, Elena, Bieniusa, Annette, Mezini, Mira, Julian Haas and Ragnar Mogk and Elena Yanakieva and Annette Bieniusa and Mira Mezini, Haas, Julian, Mogk, Ragnar, Yanakieva, Elena, Bieniusa, Annette, and Mezini, Mira
- Abstract
Local-first software manages and processes private data locally while still enabling collaboration between multiple parties connected via partially unreliable networks. Such software typically involves interactions with users and the execution environment (the outside world). The unpredictability of such interactions paired with their decentralized nature make reasoning about the correctness of local-first software a challenging endeavor. Yet, existing solutions to develop local-first software do not provide support for automated safety guarantees and instead expect developers to reason about concurrent interactions in an environment with unreliable network conditions. We propose LoRe, a programming model and compiler that automatically verifies developer-supplied safety properties for local-first applications. LoRe combines the declarative data flow of reactive programming with static analysis and verification techniques to precisely determine concurrent interactions that violate safety invariants and to selectively employ strong consistency through coordination where required. We propose a formalized proof principle and demonstrate how to automate the process in a prototype implementation that outputs verified executable code. Our evaluation shows that LoRe simplifies the development of safe local-first software when compared to state-of-the-art approaches and that verification times are acceptable.
- Published
- 2023
- Full Text
- View/download PDF
4. ReactiveMP.jl: A Julia package for reactive variational Bayesian inference
- Author
-
Bagaev, Dmitry, van Erp, Bart, Podusenko, Albert, de Vries, Bert, Bagaev, Dmitry, van Erp, Bart, Podusenko, Albert, and de Vries, Bert
- Abstract
Variational Bayesian (VB) inference has become an increasingly popular method for approximating exact Bayesian inference in model-based machine learning. The VB approach provides a way to trade off accuracy versus computational complexity and scales better to large-dimensional inference problems than sampling solutions. The Julia package ReactiveMP.jl implements and automates reactive VB inference by minimization of a constrained Bethe Free Energy functional through message passing on a factor graph representation of a probabilistic model. Moreover, through support for specification of explicit constraints on the Free Energy functional, ReactiveMP.jl allows for comparative analysis of different variational cost function proposals.
- Published
- 2022
5. Vocal Reactive Programming: Enabling RxJava
- Author
-
Eknefelt, Gustaf, Nilsson, Stefan, Eknefelt, Gustaf, and Nilsson, Stefan
- Abstract
Previous research has shown that the reactive paradigm is suitable for programming by voice, due to its frequent use of expressions used in common English. However, the software used in the previous research (Talon) does not support reactive programming. To our knowledge, no other programming-by-voice software has built-in support for RxJava. The main focus of this study is the development and testing of a vocal programming environment that recognizes RxJava operators and commands. This is done by writing custom scripts that form a RxJava-adapter for a software called Serenade. The purpose of the adapter is to determine to what degree customization can improve the programming-by-voice experience, in terms of reduced cognitive and vocal load. The testing process also reveals challenges related to programming-by-voice in reactive Java, as well as challenges related to creating custom voice commands for Serenade. The results indicate that Serenade is superior to Talon, requiring on average 45\% fewer words to produce the same code. When the default version of Serenade is compared to the custom version with custom voice commands, the improvement is 19\%. The study also concludes that there are many challenges facing speech recognition when used in a programming environment. The custom script feature in Serenade, while still having some limitations, is advanced and allows the user to create complex custom voice commands.
- Published
- 2022
6. Performance and Cyclomatic Complexity Correlation in Java Reactive Frameworks
- Author
-
Cervin, Anton, Trenter, Christian, Cervin, Anton, and Trenter, Christian
- Abstract
Software performance is of interest to all who want to lower their hardware costs and provide services with speedy responses to users, to this end reactive programming can be employed. Therefore it is important to measure the performance of tools such as reactive frameworks and to compare and contrast them with each other in order to improve the development of these tools, and help provide developers with the information they need when searching for a reactive framework that suits their project. To achieve this the study will aim to indicate the reproducibility of the research on reactive framework performance conducted by Ponge et al. on three commonly used reactive frameworks. Further, a root cause analysis to identify the sources of the identified bottlenecks will be carried out and complemented by suggestions for improving the performance of those parts in the reactive frameworks that are causing performance issues. An analysis of how performance correlates with the cyclomatic complexity of the frameworks will also be presented. We find, that in some test cases, the performance of the frameworks differs depending on the machine used, and that the latest framework versions do not show a marked performance increase. Further, we discover hotspots in the Mutiny framework and reason about potential synchronization bottlenecks. We attempt to find a novel use case for cyclomatic complexity as an indicator for performance but find that no correlation exists between cyclomatic complexity and performance for reactive frameworks.
- Published
- 2022
7. Performance and Cyclomatic Complexity Correlation in Java Reactive Frameworks
- Author
-
Cervin, Anton, Trenter, Christian, Cervin, Anton, and Trenter, Christian
- Abstract
Software performance is of interest to all who want to lower their hardware costs and provide services with speedy responses to users, to this end reactive programming can be employed. Therefore it is important to measure the performance of tools such as reactive frameworks and to compare and contrast them with each other in order to improve the development of these tools, and help provide developers with the information they need when searching for a reactive framework that suits their project. To achieve this the study will aim to indicate the reproducibility of the research on reactive framework performance conducted by Ponge et al. on three commonly used reactive frameworks. Further, a root cause analysis to identify the sources of the identified bottlenecks will be carried out and complemented by suggestions for improving the performance of those parts in the reactive frameworks that are causing performance issues. An analysis of how performance correlates with the cyclomatic complexity of the frameworks will also be presented. We find, that in some test cases, the performance of the frameworks differs depending on the machine used, and that the latest framework versions do not show a marked performance increase. Further, we discover hotspots in the Mutiny framework and reason about potential synchronization bottlenecks. We attempt to find a novel use case for cyclomatic complexity as an indicator for performance but find that no correlation exists between cyclomatic complexity and performance for reactive frameworks.
- Published
- 2022
8. Vocal Reactive Programming: Enabling RxJava
- Author
-
Eknefelt, Gustaf, Nilsson, Stefan, Eknefelt, Gustaf, and Nilsson, Stefan
- Abstract
Previous research has shown that the reactive paradigm is suitable for programming by voice, due to its frequent use of expressions used in common English. However, the software used in the previous research (Talon) does not support reactive programming. To our knowledge, no other programming-by-voice software has built-in support for RxJava. The main focus of this study is the development and testing of a vocal programming environment that recognizes RxJava operators and commands. This is done by writing custom scripts that form a RxJava-adapter for a software called Serenade. The purpose of the adapter is to determine to what degree customization can improve the programming-by-voice experience, in terms of reduced cognitive and vocal load. The testing process also reveals challenges related to programming-by-voice in reactive Java, as well as challenges related to creating custom voice commands for Serenade. The results indicate that Serenade is superior to Talon, requiring on average 45\% fewer words to produce the same code. When the default version of Serenade is compared to the custom version with custom voice commands, the improvement is 19\%. The study also concludes that there are many challenges facing speech recognition when used in a programming environment. The custom script feature in Serenade, while still having some limitations, is advanced and allows the user to create complex custom voice commands.
- Published
- 2022
9. ReactiveMP.jl: A Julia Package for Reactive Message Passing-based Bayesian Inference
- Author
-
Bagaev, Dmitry, de Vries, Bert, Bagaev, Dmitry, and de Vries, Bert
- Abstract
ReactiveMP.jl is a native Julia implementation of reactive message passing-based Bayesian inference in probabilistic graphical models with Factor Graphs. The package does Constrained Bethe Free Energy minimisation and supports both exact and variational Bayesian inference, provides a convenient syntax for model specification and allows for extra factorisation and form constraints specification of the variational family of distributions. In addition, ReactiveMP.jl includes a large range of standard probabilistic models and can easily be extended to custom novel nodes and message update rules. In contrast to non-reactive (imperatively coded) Bayesian inference packages, ReactiveMP.jl scales easily to support inference on a standard laptop for large conjugate models with tens of thousands of variables and millions of nodes.
- Published
- 2022
10. ReactiveMP.jl: A Julia package for reactive variational Bayesian inference
- Author
-
Bagaev, Dmitry, van Erp, Bart, Podusenko, Albert, de Vries, Bert, Bagaev, Dmitry, van Erp, Bart, Podusenko, Albert, and de Vries, Bert
- Abstract
Variational Bayesian (VB) inference has become an increasingly popular method for approximating exact Bayesian inference in model-based machine learning. The VB approach provides a way to trade off accuracy versus computational complexity and scales better to large-dimensional inference problems than sampling solutions. The Julia package ReactiveMP.jl implements and automates reactive VB inference by minimization of a constrained Bethe Free Energy functional through message passing on a factor graph representation of a probabilistic model. Moreover, through support for specification of explicit constraints on the Free Energy functional, ReactiveMP.jl allows for comparative analysis of different variational cost function proposals.
- Published
- 2022
11. Signal Classes: A Mechanism for Building Synchronous and Persistent Signal Networks
- Author
-
Tetsuo Kamina and Tomoyuki Aotani and Hidehiko Masuhara, Kamina, Tetsuo, Aotani, Tomoyuki, Masuhara, Hidehiko, Tetsuo Kamina and Tomoyuki Aotani and Hidehiko Masuhara, Kamina, Tetsuo, Aotani, Tomoyuki, and Masuhara, Hidehiko
- Abstract
Signals are principal abstraction in reactive programming languages and constitute the basics of reactive computations in modern systems, such as the Internet of Things. Signals sometimes utilize past values, which leads to space leak, a problem where accumulated past values waste resources such as the main memory. Persistent signals, an abstraction for time-varying values with their execution histories, provide a generalized and standardized way of space leak management by leaving this management to the database system. However, the current design of persistent signals is very rudimental. For example, they cannot represent complex data structures; they can only be connected using pre-defined API methods that implicitly synchronize the persistent signal network; and they cannot be created dynamically. In this paper, we show that these problems are derived from more fundamental one: no language mechanism is provided to group related persistent signals. To address this problem, we propose a new language mechanism signal classes. A signal class packages a network of related persistent signals that comprises a complex data structure. A signal class defines the scope of synchronization, making it possible to flexibly create persistent signal networks by methods not limited to the use of pre-defined API methods. Furthermore, a signal class can be instantiated, and this instance forms a unit of lifecycle management, which enables the dynamic creation of persistent signals. We formalize signal classes as a small core language where the computation is deliberately defined to interact with the underlying database system using relational algebra. Based on this formalization, we prove the language’s glitch freedom. We also formulate its type soundness by introducing an additional check of program well-formedness. This mechanism is implemented as a compiler and a runtime library that is based on a time-series database. The usefulness of the language is demonstrated through the v
- Published
- 2021
- Full Text
- View/download PDF
12. An Evaluation of Spring WebFlux : With focus on built in SQL features
- Author
-
Dahlin, Karl and Dahlin, Karl
- Abstract
In today’s society the need for more hardware efficient software since some people think that the doubling of computer power for the same price that Moore’s law predicted is no more. Reactive programming can be a step in the right direction, this has led to an increase in interest in reactive programming. This object of this thesis is to evaluate the possibility of using reactive programming and R2DBC in Java to communicate with a relation database. This has been done by creating two Spring applications one using the standards JDBC and servlet stack and one using R2DBC and the reactive stack. Then connecting them to a MySQL database and selecting and inserting values in to and from it and measuring the CPU usage, memory usage and execution time. In addition to this the possibilities to handle BLOBs in a good enough way were researched. The study shows that there are both advantages and disadvantages with using R2DBC it has basic support and it is based on good idea but at the time of this thesis it still needs more development before it can be used fully.
- Published
- 2020
13. Blocking violations in reactive Java frameworks
- Author
-
Vallin, Morgan, Sundström, Robin, Vallin, Morgan, and Sundström, Robin
- Abstract
Concurrency in programming is a way of interleaving tasks in order to enhance the performance of an application. Previous research has found that concurrency errors are hard to avoid, hard to find, and that they often degrade performance of the application. Reactive programming provides an abstraction, to make it easier to implement complex concurrent and asynchronous tasks. When programming reactively in Java, it is often done with a reactive framework, where RxJava and Project-Reactor are two of the more popular choices. Blocking a thread that is not supposed to be blocked will result in concurrency errors, without the Java compiler providing a warning. In order to find incorrect blocking, a tool called BlockHound can be used. BlockHound wraps the original code, intercepts any blocking calls, and provides an error if the blocking call was used incorrectly. In this study, BlockHound was used to detect erroneous blocking calls in open source projects which use RxJava or Project-Reactor. A JavaAgent was created to automate the process of adding BlockHound to a project. The selection of projects to test was done by evaluating the community usage, and selecting the projects with the most amount of stars and forks, as this indicates that the projects are widely used. The projects were tested with BlockHound, and the errors were saved to external log files for analysation. The study found that a considerable percentage of the projects investigated exhibited blocking violations. These violations were all caused by a low number of system calls, made from methods in threads that forbid blocking. Generalizable solutions to the violations were applied, and considered successful., Samtidighet (concurrency) inom programmering är ett sätt att kombinera olika uppgifter, för att få utökad prestanda i ett program. Tidigare forskning har visat att concurrencybuggar är svåra att undvika, svåra att upptäcka och att dem ofta försämrar programmets prestanda. Reaktiv programmering skapar en abstraktion som gör det enklare att implementera komplexa samtidiga och asynkrona uppgifter. Reaktiv programmering i Java används ofta med hjälp av ett reaktivt ramverk, där två av de mer populära är RxJava och Project-reactor. Att blockera i en tråd som inte tillåter blockering kommer skapa concurrency buggar, som Javas kompilator inte varnar för. För att upptäcka felaktiga blockeringar kan ett verktyg som heter BlockHound användas. BlockHound omsluter den ursprungliga koden, fångar eventuella blockeringar, och skickar ett felmeddelande om en felaktig blockering har upptäckts. I den här studien har BlockHound använts för att hitta felaktiga blockeringar i open source projekt som använde sig av antingen RxJava eller Project-reactor. En JavaAgent skapades för att automatisera processen att lägga till BlockHound i projekten. Processen att välja projekt för testning gjordes genom att utvärdera hur stor användningen av projekten var, samt genom att välja de projekt med mest antal stjärnor och forks, eftersom de ger en bra indikering på att projekten används brett inom området. Projekten testades sedan med BlockHound, och loggarna sparades manuellt till externa loggfiler för analys. Studien fann att en betydande procent av projekten som undersöktes innehöll felaktiga blockeringar. Orsaken till dessa var ett fåtal systemanrop som kallades från trådar som inte tillåter blockering. Generaliserbara lösningar till dessa buggar testades, och ansågs vara lyckade.
- Published
- 2020
14. The impact of reactive programming on code complexity and readability: A Case Study
- Author
-
Holst, Gustaf, Gillberg, Alexander, Holst, Gustaf, and Gillberg, Alexander
- Abstract
Reaktiv programmering är ett programmeringsparadigm som har utvecklats för att underlätta byggande av händelsedrivna reaktiva applikationer. Dess förespråkare hävdar att det kan leda till ökad kodkvalitet, men få studier har utförts för att underbygga dessa påståenden empiriskt. Denna studie syftade till att undersöka skillnaden i kodkomplexitet och kodläsbarhet mellan traditionell imperativ programmering och reaktiv programmering. En fallstudie utfördes där koden för ett befintligt öppen källkodsprojekt omstrukturerades, vilket resulterade i en imperativ version och en reaktiv version av samma kod. Verktyg för statisk källkodsanalys användes för att undersöka om några förändringar i kodläsbarhet och kodkomplexitet kunde upptäckas. Vidare diskuteras huruvida resultaten av den senaste teknikens läsbarhetsmätvärden ger en exakt förutsägelse av kodläsbarheten i reaktiva kodbaser, eller om kanske dessa mätvärden behöver modifieras för att göra dem tillämpliga på det reaktiva paradigmet. Våra resultat visar att läsbarheten påverkades negativt av reaktiv programmering när den mättes med senaste teknikens läsbarhetsmätvärden, men kodkomplexiteten minskades betydligt., Reactive programming is a programming paradigm that has been proposed to facilitate building eventdriven reactive applications. It is claimed by its proponents to increase code quality, but few studies have been performed to substantiate these claims empirically. This study aimed to explore the difference in code complexity and code readability between traditional imperative programming and reactive programming. A case study was performed where the code of an existing open source project was restructured, resulting in an imperative version and a reactive version of the same code. Static analysis tools were used to investigate if any changes in code readability and code complexity could be detected. Furthermore, it is discussed whether the results of the state-of-the-art readability metrics give an accurate prediction of code readability in reactive code bases, or if perhaps these metrics need to be modified to make them applicable to the reactive paradigm. Our findings show that the readability was negatively affected by reactive programming when measured with state-of the-art readability metrics, however code complexity was decreased significantly
- Published
- 2020
15. An Evaluation of Spring WebFlux : With focus on built in SQL features
- Author
-
Dahlin, Karl and Dahlin, Karl
- Abstract
In today’s society the need for more hardware efficient software since some people think that the doubling of computer power for the same price that Moore’s law predicted is no more. Reactive programming can be a step in the right direction, this has led to an increase in interest in reactive programming. This object of this thesis is to evaluate the possibility of using reactive programming and R2DBC in Java to communicate with a relation database. This has been done by creating two Spring applications one using the standards JDBC and servlet stack and one using R2DBC and the reactive stack. Then connecting them to a MySQL database and selecting and inserting values in to and from it and measuring the CPU usage, memory usage and execution time. In addition to this the possibilities to handle BLOBs in a good enough way were researched. The study shows that there are both advantages and disadvantages with using R2DBC it has basic support and it is based on good idea but at the time of this thesis it still needs more development before it can be used fully.
- Published
- 2020
16. Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model (Artifact)
- Author
-
Sam Van den Vonder and Thierry Renaux and Bjarno Oeyen and Joeri De Koster and Wolfgang De Meuter, Van den Vonder, Sam, Renaux, Thierry, Oeyen, Bjarno, De Koster, Joeri, De Meuter, Wolfgang, Sam Van den Vonder and Thierry Renaux and Bjarno Oeyen and Joeri De Koster and Wolfgang De Meuter, Van den Vonder, Sam, Renaux, Thierry, Oeyen, Bjarno, De Koster, Joeri, and De Meuter, Wolfgang
- Abstract
This artefact provides runnable versions of the code samples given in the main publication. An interpreter for the Stella language is provided together with a basic web-based IDE (syntax highlighting + running programs) which is able to run all Stella code given in the main publication. Also included are runnable implementations of the running example from the main publication (a simple wind turbine simulator) implemented in Stella and 6 other languages and frameworks (Akka, Flapjax, FrTime, ReactJS, REScala, and RxJS). While we do not discuss how these other technologies work, we highlight the interesting parts of the implementations of the running example: the difficulties we had, and any particular points of interest related to the claims made in the main publication.
- Published
- 2020
- Full Text
- View/download PDF
17. Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model
- Author
-
Sam Van den Vonder and Thierry Renaux and Bjarno Oeyen and Joeri De Koster and Wolfgang De Meuter, Van den Vonder, Sam, Renaux, Thierry, Oeyen, Bjarno, De Koster, Joeri, De Meuter, Wolfgang, Sam Van den Vonder and Thierry Renaux and Bjarno Oeyen and Joeri De Koster and Wolfgang De Meuter, Van den Vonder, Sam, Renaux, Thierry, Oeyen, Bjarno, De Koster, Joeri, and De Meuter, Wolfgang
- Abstract
Reactive programming is a programming paradigm whereby programs are internally represented by a dependency graph, which is used to automatically (re)compute parts of a program whenever its input changes. In practice reactive programming can only be used for some parts of an application: a reactive program is usually embedded in an application that is still written in ordinary imperative languages such as JavaScript or Scala. In this paper we investigate this embedding and we distill "the awkward squad for reactive programming" as 3 concerns that are essential for real-world software development, but that do not fit within reactive programming. They are related to long lasting computations, side-effects, and the coordination between imperative and reactive code. To solve these issues we design a new programming model called the Actor-Reactor Model in which programs are split up in a number of actors and reactors. Actors and reactors enforce a strict separation of imperative and reactive code, and they can be composed via a number of composition operators that make use of data streams. We demonstrate the model via our own implementation in a language called Stella.
- Published
- 2020
- Full Text
- View/download PDF
18. Blocking violations in reactive Java frameworks
- Author
-
Vallin, Morgan, Sundström, Robin, Vallin, Morgan, and Sundström, Robin
- Abstract
Concurrency in programming is a way of interleaving tasks in order to enhance the performance of an application. Previous research has found that concurrency errors are hard to avoid, hard to find, and that they often degrade performance of the application. Reactive programming provides an abstraction, to make it easier to implement complex concurrent and asynchronous tasks. When programming reactively in Java, it is often done with a reactive framework, where RxJava and Project-Reactor are two of the more popular choices. Blocking a thread that is not supposed to be blocked will result in concurrency errors, without the Java compiler providing a warning. In order to find incorrect blocking, a tool called BlockHound can be used. BlockHound wraps the original code, intercepts any blocking calls, and provides an error if the blocking call was used incorrectly. In this study, BlockHound was used to detect erroneous blocking calls in open source projects which use RxJava or Project-Reactor. A JavaAgent was created to automate the process of adding BlockHound to a project. The selection of projects to test was done by evaluating the community usage, and selecting the projects with the most amount of stars and forks, as this indicates that the projects are widely used. The projects were tested with BlockHound, and the errors were saved to external log files for analysation. The study found that a considerable percentage of the projects investigated exhibited blocking violations. These violations were all caused by a low number of system calls, made from methods in threads that forbid blocking. Generalizable solutions to the violations were applied, and considered successful., Samtidighet (concurrency) inom programmering är ett sätt att kombinera olika uppgifter, för att få utökad prestanda i ett program. Tidigare forskning har visat att concurrencybuggar är svåra att undvika, svåra att upptäcka och att dem ofta försämrar programmets prestanda. Reaktiv programmering skapar en abstraktion som gör det enklare att implementera komplexa samtidiga och asynkrona uppgifter. Reaktiv programmering i Java används ofta med hjälp av ett reaktivt ramverk, där två av de mer populära är RxJava och Project-reactor. Att blockera i en tråd som inte tillåter blockering kommer skapa concurrency buggar, som Javas kompilator inte varnar för. För att upptäcka felaktiga blockeringar kan ett verktyg som heter BlockHound användas. BlockHound omsluter den ursprungliga koden, fångar eventuella blockeringar, och skickar ett felmeddelande om en felaktig blockering har upptäckts. I den här studien har BlockHound använts för att hitta felaktiga blockeringar i open source projekt som använde sig av antingen RxJava eller Project-reactor. En JavaAgent skapades för att automatisera processen att lägga till BlockHound i projekten. Processen att välja projekt för testning gjordes genom att utvärdera hur stor användningen av projekten var, samt genom att välja de projekt med mest antal stjärnor och forks, eftersom de ger en bra indikering på att projekten används brett inom området. Projekten testades sedan med BlockHound, och loggarna sparades manuellt till externa loggfiler för analys. Studien fann att en betydande procent av projekten som undersöktes innehöll felaktiga blockeringar. Orsaken till dessa var ett fåtal systemanrop som kallades från trådar som inte tillåter blockering. Generaliserbara lösningar till dessa buggar testades, och ansågs vara lyckade.
- Published
- 2020
19. The impact of reactive programming on code complexity and readability: A Case Study
- Author
-
Holst, Gustaf, Gillberg, Alexander, Holst, Gustaf, and Gillberg, Alexander
- Abstract
Reaktiv programmering är ett programmeringsparadigm som har utvecklats för att underlätta byggande av händelsedrivna reaktiva applikationer. Dess förespråkare hävdar att det kan leda till ökad kodkvalitet, men få studier har utförts för att underbygga dessa påståenden empiriskt. Denna studie syftade till att undersöka skillnaden i kodkomplexitet och kodläsbarhet mellan traditionell imperativ programmering och reaktiv programmering. En fallstudie utfördes där koden för ett befintligt öppen källkodsprojekt omstrukturerades, vilket resulterade i en imperativ version och en reaktiv version av samma kod. Verktyg för statisk källkodsanalys användes för att undersöka om några förändringar i kodläsbarhet och kodkomplexitet kunde upptäckas. Vidare diskuteras huruvida resultaten av den senaste teknikens läsbarhetsmätvärden ger en exakt förutsägelse av kodläsbarheten i reaktiva kodbaser, eller om kanske dessa mätvärden behöver modifieras för att göra dem tillämpliga på det reaktiva paradigmet. Våra resultat visar att läsbarheten påverkades negativt av reaktiv programmering när den mättes med senaste teknikens läsbarhetsmätvärden, men kodkomplexiteten minskades betydligt., Reactive programming is a programming paradigm that has been proposed to facilitate building eventdriven reactive applications. It is claimed by its proponents to increase code quality, but few studies have been performed to substantiate these claims empirically. This study aimed to explore the difference in code complexity and code readability between traditional imperative programming and reactive programming. A case study was performed where the code of an existing open source project was restructured, resulting in an imperative version and a reactive version of the same code. Static analysis tools were used to investigate if any changes in code readability and code complexity could be detected. Furthermore, it is discussed whether the results of the state-of-the-art readability metrics give an accurate prediction of code readability in reactive code bases, or if perhaps these metrics need to be modified to make them applicable to the reactive paradigm. Our findings show that the readability was negatively affected by reactive programming when measured with state-of the-art readability metrics, however code complexity was decreased significantly
- Published
- 2020
20. Програмна бібліотека обміну даними між процесами
- Author
-
Черниш, Андрій Анатолійович and Черниш, Андрій Анатолійович
- Abstract
Актуальність теми. Реалізація обміну даними між комп’ютерними системами була завжди нетривіальною задачею для інженерів. При побудові коректної та оптимальної архітектури програмних продуктів важлива чітка читабельність коду програми та швидкість розробки. У сучасний період мають неабияку популярність програмні додатки для онлайн спілкування. Головна їхня суть – швидкий та надійний обмін повідомленнями між користувачами. Процес реалізації обміну даними комп’ютерних систем безупинно розвивається в плані швидкодії та швидкості розробки, проте він також повинен бути зрозумілим для всіх інженерів. В магістерській дисертації описується програмна бібліотека обміну даними між процесами, яка має на меті оптимізацію швидкодії, швидкості розробки, якості та чистоти програмного коду. Об’єктом дослідження є обмін даними між процесами Предметом дослідження є методи та способи обміну даними між процесами засобами реактивного програмування. Мета роботи полягає у розробці програмної бібліотеки обміну даними між процесами засобами реактивного програмування. Методи дослідження. Одним з найважливіших методів дослідження у роботі є аналіз та власне розробка, оскільки магістерська дисертація присвячена вивченню великих об'ємів накопичених знань у питаннях обміну даними між процесами, їх обробці та пошуку шляхів їх вдосконалення. Також, було використано метод абстрагування, що дозволяє виділяти для використання лише певний набір властивостей об'єкта, ігноруючи інші, не важливі для користувача зв'язки та відношення. Наукова новизна роботи полягає в тому, що розроблена програмна бібліотека має вищий рівень абстракції програмного коду обміну даними між процесами, а також містить ширшу функціональність, порівняно з аналогами, завдяки використанню парадигми реактивного програмування. Практична цінність отриманих в роботі результатів полягає в тому, що запропонована програмна бібліотека реалізована для використання реальними програмними продуктами, що можуть бути впроваджені для реальних комп’, Actuality of theme. The implementation of data exchange between computer systems has always been a non-trivial task for engineers. Constructing the correct and optimal software architecture, there are very important readability of the program code and the performance of development. Nowadays, software applications for online communication are very popular. Their main essence is fast and reliable messaging between users. The process of implementing computer data exchanging is constantly evolving in terms of performance and development speed, but it should also be understandable for all engineers. The master's dissertation describes a software library for exchanging data between processes, which aims to optimize performance, speed of development, quality and cleanliness of the code. The object of the study is data exchange between processes. The subject of the study is methods of data exchange between processes by means of reactive programming. The purpose of the work: to develop a software library for data exchange between processes by means of reactive programming. Scientific novelty of the work is that the software library has been developed in master’s dissertation has a high level of abstraction of the code of data exchange between processes. In addition, it contains a wide functionality in comparison with analogues, because of reactive programming paradigm. The practical value of the results obtained in the work is that the proposed software library is developed for use by real software products that can be deployed to real computer systems. Test work. The proposed software library was presented and discussed at the conferences: Scientific conference of undergraduates and postgraduates "Applied Mathematics and Computing", PMK-2018 (Kyiv, November 14-16, 2018) V International Scientific and Technical Internet Conference "Modern Methods, Information, software and technical support of control systems for organizational, technical and technological complexes", h, Актуальность темы. Реализация обмена данными между компьютерными системами была всегда нетривиальной задачей для инженеров. При построении корректной и оптимальной архитектуры программных продуктов важна четкая читабельность кода программы и скорость разработки. В современный период имеют большую популярность программные приложения для онлайн общения. Главная их суть – быстрый и надежный обмен сообщениями между пользователями. Процесс реализации обмена данными компьютерных систем непрерывно развивается в плане быстродействия и скорости разработки, однако, он также должен быть понятным для всех инженеров. В магистерской диссертации описывается программная библиотека обмена данными между процессами, которая имеет целью оптимизации быстродействия, скорости разработки, качества и чистоты кода. Объектом исследования является обмен данными между процессами. Предметом исследования являются методы и способы обмена данными между процессами средствами реактивного программирования. Цель работы заключается в разработке программной библиотеки обмена данными между процессами средствами реактивного программирования. Методы исследования. Одним из важнейших методов исследования в работе является анализ и собственно разработка, так как магистерская диссертация посвящена изучению больших объемов накопленных знаний в вопросах обмена данными между процессами, их обработке и поиска путей их совершенствования. Также, был использован метод абстрагирования, позволяющего выделять для использования только определенный набор свойств объекта, игнорируя другие, не важны для пользователя связи и отношения. Научная новизна работы заключается в том, что разработана программная библиотека, имеет высокий уровень абстракции программного кода обмена данными между процессами, а также содержит широкую функциональность по сравнению с аналогами, благодаря использованию парадигмы реактивного программирования. Практическая ценность полученных в работе результатов заключается в том, что предложенная программн
- Published
- 2018
21. Functional and imperative reactive programming based on a generalization of the continuation monad in the C++ programming language
- Author
-
Mitić, Nenad, Živković, Miodrag, Malkov, Saša, Filipović, Vladimir, Porkolab, Zoltan, Čukić, Ivan, Mitić, Nenad, Živković, Miodrag, Malkov, Saša, Filipović, Vladimir, Porkolab, Zoltan, and Čukić, Ivan
- Abstract
Постоји велики број проблема који захтевају писање програмских система који имају компоненте које се извршавају међусобно асинхроно једне од других..., There is a big class of problems that require software systems with asynchronously executed components...
- Published
- 2018
22. Functional and Reactive Patterns in Idiomatically Imperative Programming Languages
- Author
-
Sandström, Jesper and Sandström, Jesper
- Abstract
Functional and reactive programming patterns provide powerful sets of tools for dealing with complexity and scalability. These stand in stark contrast to the imperative programming patterns which permeate the industry. This report seeks to investigate the extent to which a set of common imperative programming languages can be used to implement such functional and reactive patterns, and what the implications of doing so are. This is done by implementing and using a framework based on such patterns in Java, Kotlin, Objective-C, and Swift. The results show that this is possible in all of these languages, but the extent to which this can be considered idiomatic is questionable. Upholding immutability and referential transparency is highlighted as the main source of concern in this regard., Funktionella och reaktiva programmeringsmönster förser utvecklare med kraftfulla abstraktioner för att hantera komplexitet och skalbarhet. Dagens industri förlitar sig dock till en majoritet på imperativa programspråk, där dessa mönster inte nödvändigtvis kan utnyttjas. Syftet med denna rapport är därför att undersöka hur sådana mönster kan tillämpas i imperativa programspråk. Detta görs genom att studera implementationen och användandet av ett ramverk för funktionell och reaktiv programmering i fyra programspråk: Java, Kotlin, Objective-C och Swift. Rapporten finner att de mönster undersökta i denna rapport går att implementera med existerande språkfunktioner för alla dessa språk, men frågan om detta kan anses idiomatiskt är oklar. Det huvudsakliga problemet är att säkerställa att funktioner skrivs utan sidoeffekter och att datastrukturerna som används inte är muterbara.
- Published
- 2018
23. Debugging Data Flows in Reactive Programs
- Author
-
Banken, Herman (author), Meijer, H.J.M. (author), Gousios, G. (author), Banken, Herman (author), Meijer, H.J.M. (author), and Gousios, G. (author)
- Abstract
Reactive Programming is a style of programming that provides developers with a set of abstractions that facilitate event handling and stream processing. Traditional debug tools lack support for Reactive Programming, leading developers to fallback to the most rudimentary debug tool available: logging to the console. In this paper, we present the design and implementation of RxFiddle, a visualization and debugging tool targeted to Rx, the most popular form of Reactive Programming. RxFiddle visualizes the dependencies and structure of the data flow, as well as the data inside the flow. We evaluate RxFiddle with an experiment involving 111 developers. The results show that RxFiddle can help developers finish debugging tasks faster than with traditional debugging tools., Web Information Systems, Software Engineering
- Published
- 2018
- Full Text
- View/download PDF
24. Fault-tolerant remote execution operators for the Reactive Extensions library
- Author
-
Vodă, Mircea (author) and Vodă, Mircea (author)
- Abstract
The continuous shift of various industries towards internet-based services have caused an exponential growth in the amount of data produced over the past few years. On top of this, the increasing need for real-time analytics and the increase in data velocity have made asynchronous, event-driven applications the norm. In this context, the reactive programming paradigm has gained much traction as it focuses on the propagation of change and composing/transforming streams of data. The industry standard reactive programming library for the JVM, .NET and Javascript ecosystems is the Reactive Extensions (Rx) library. However, despite being well equipped to deal with asynchronous data, it does not offer any way of scaling the computation on multiple machines. In this thesis, we attempt to lay the groundwork for a scalable Rx library by implementing infrastructure and operators for remote execution of Rx streams.
- Published
- 2018
25. Debugging Data Flows in Reactive Programs
- Author
-
Banken, Herman (author), Meijer, H.J.M. (author), Gousios, G. (author), Banken, Herman (author), Meijer, H.J.M. (author), and Gousios, G. (author)
- Abstract
Reactive Programming is a style of programming that provides developers with a set of abstractions that facilitate event handling and stream processing. Traditional debug tools lack support for Reactive Programming, leading developers to fallback to the most rudimentary debug tool available: logging to the console. In this paper, we present the design and implementation of RxFiddle, a visualization and debugging tool targeted to Rx, the most popular form of Reactive Programming. RxFiddle visualizes the dependencies and structure of the data flow, as well as the data inside the flow. We evaluate RxFiddle with an experiment involving 111 developers. The results show that RxFiddle can help developers finish debugging tasks faster than with traditional debugging tools., Web Information Systems, Software Engineering
- Published
- 2018
- Full Text
- View/download PDF
26. Fault-tolerant remote execution operators for the Reactive Extensions library
- Author
-
Vodă, Mircea (author) and Vodă, Mircea (author)
- Abstract
The continuous shift of various industries towards internet-based services have caused an exponential growth in the amount of data produced over the past few years. On top of this, the increasing need for real-time analytics and the increase in data velocity have made asynchronous, event-driven applications the norm. In this context, the reactive programming paradigm has gained much traction as it focuses on the propagation of change and composing/transforming streams of data. The industry standard reactive programming library for the JVM, .NET and Javascript ecosystems is the Reactive Extensions (Rx) library. However, despite being well equipped to deal with asynchronous data, it does not offer any way of scaling the computation on multiple machines. In this thesis, we attempt to lay the groundwork for a scalable Rx library by implementing infrastructure and operators for remote execution of Rx streams.
- Published
- 2018
27. Fault-tolerant Distributed Reactive Programming
- Author
-
Ragnar Mogk and Lars Baumgärtner and Guido Salvaneschi and Bernd Freisleben and Mira Mezini, Mogk, Ragnar, Baumgärtner, Lars, Salvaneschi, Guido, Freisleben, Bernd, Mezini, Mira, Ragnar Mogk and Lars Baumgärtner and Guido Salvaneschi and Bernd Freisleben and Mira Mezini, Mogk, Ragnar, Baumgärtner, Lars, Salvaneschi, Guido, Freisleben, Bernd, and Mezini, Mira
- Abstract
In this paper, we present a holistic approach to provide fault tolerance for distributed reactive programming. Our solution automatically stores and recovers program state to handle crashes, automatically updates and shares distributed parts of the state to provide eventual consistency, and handles errors in a fine-grained manner to allow precise manual control when necessary. By making use of the reactive programming paradigm, we provide these mechanisms without changing the behavior of existing programs and with reasonable performance, as indicated by our experimental evaluation.
- Published
- 2018
- Full Text
- View/download PDF
28. Functional and Reactive Patterns in Idiomatically Imperative Programming Languages
- Author
-
Sandström, Jesper and Sandström, Jesper
- Abstract
Functional and reactive programming patterns provide powerful sets of tools for dealing with complexity and scalability. These stand in stark contrast to the imperative programming patterns which permeate the industry. This report seeks to investigate the extent to which a set of common imperative programming languages can be used to implement such functional and reactive patterns, and what the implications of doing so are. This is done by implementing and using a framework based on such patterns in Java, Kotlin, Objective-C, and Swift. The results show that this is possible in all of these languages, but the extent to which this can be considered idiomatic is questionable. Upholding immutability and referential transparency is highlighted as the main source of concern in this regard., Funktionella och reaktiva programmeringsmönster förser utvecklare med kraftfulla abstraktioner för att hantera komplexitet och skalbarhet. Dagens industri förlitar sig dock till en majoritet på imperativa programspråk, där dessa mönster inte nödvändigtvis kan utnyttjas. Syftet med denna rapport är därför att undersöka hur sådana mönster kan tillämpas i imperativa programspråk. Detta görs genom att studera implementationen och användandet av ett ramverk för funktionell och reaktiv programmering i fyra programspråk: Java, Kotlin, Objective-C och Swift. Rapporten finner att de mönster undersökta i denna rapport går att implementera med existerande språkfunktioner för alla dessa språk, men frågan om detta kan anses idiomatiskt är oklar. Det huvudsakliga problemet är att säkerställa att funktioner skrivs utan sidoeffekter och att datastrukturerna som används inte är muterbara.
- Published
- 2018
29. UniRx and Unity 5 : Working with C# and object-oriented reactive programming
- Author
-
Westberg, Johannes and Westberg, Johannes
- Abstract
Gameplay programming is vital for video game development and benefits from good tools and techniques. However, techniques are still used in the industry that involves describing how the computer operates. Reactive programming is a way to describe eventful and stateful computer programs declaratively, focusing on what the program should accomplish. This thesis uses the reactive library UniRx with the game engine Unity 5 to create an FPS with reactive techniques, and discusses the advantages and disadvantages of these. Object-oriented reactive programming is used to combine reactive objects with Unity’s component-based framework without using wrappers for non-reactive objects. The results include static methods for observable user input, patterns when defining game components with reactive content, and communication between game objects through interface components. It can be concluded that reactive programming for game programming enables the programmer to describe and understand game logic in a declarative manner. However, combining UniRx and Unity 5 led to complex patterns. Suggestion for future work is using reactive programming with game engines that allows to design game objects that are fully reactive., Gameplay-programmering är avgörande för utveckling av videospel och har nytta av bra verktyg och tekniker. Dock används tekniker i spelbranschen som kräver att programmeraren beskriver hur datorn utför uppgifter. Reaktiv programmering är ett sätt att beskriva händelserika och föränderliga datorprogram med fokus på vad programmet ska utföra. Denna avhandling använder det reaktiva biblioteket UniRx med spelmotorn Unity 5 för att skapa en FPS med reaktiva tekniker, samt diskuterar fördelarna och nackdelarna med dessa. Objektorienterad reaktiv programmering används för att kombinera reaktiva objekt med Unity’s komponentbaserade ramverk utan att använda wrappers för icke-reaktiva objekt. Resultaten inkluderar statiska metoder för observerbar användarinput, programmeringsmönster för definition av spelkomponenter med reaktivt innehåll och kommunikation mellan spelobjekt via gränssnittskomponenter. Man kan dra slutsatsen att reaktiv programmering för spelprogrammering gör det möjligt för programmeraren att beskriva och förstå spellogik på ett deklarativt sätt. Kombinationen av UniRx och Unity 5 ledde emellertid till komplexa mönster. Förslag till framtida arbete är att använda reaktiv programmering med spelmotorer som gör det möjligt att designa spelobjekt som är helt reaktiva.
- Published
- 2017
30. Debugging Data-Flows in Reactive Programs
- Author
-
Banken, Herman (author) and Banken, Herman (author)
- Abstract
Reactive Programming is a way of programming designed to provide developers with the right abstractions for creating systems that use streams of data. Traditional debug tools lack support for the abstractions provided, causing developers to fallback to the most rudimentary debug tool available: printf-debugging. In this work, we design a visualization and debugging tool for Reactive Programming, that aids comprehension and debugging of reactive systems, by visualizing the dependencies and structure of the data flow, and the data inside the flow. We present RxFiddle, a platform for the visualization as well as the required instrumentation for RxJS in the ReactiveX-family of Reactive Programming libraries. Evaluation based on an experiment with 111 subjects, shows that RxFiddle can outperform traditional debugging in terms of debug time required., Computer Science | Software Technology
- Published
- 2017
31. Reactive programming and its effect on performance and the development process
- Author
-
Hochbergs, Gustav and Hochbergs, Gustav
- Abstract
The focus of this master’s thesis is to evaluate the effect of reactive programming on Playtech BGT Sports content server. The effect is evaluated mainly from a performance aspect, but a development process aspect is also taken into consideration. The content server is working in real-time and is required to have low latency and high throughput of processing of data. These characteristics are important to supply customers with the latest information. A comprehensive theoretical research was conducted in order to be able to implement reactive prototypes correctly and to avoid common pitfalls. Three types of reactive prototypes of the content server were implemented with different execution contexts. The prototypes were tested and the results were compared to the results of a fully synchronous solution. The results showed that reactive programming can increase the performance during high loads. The solutions performed similarly during low load. During high load one prototype stood out with 100% of throughput and low latency. This prototype had an execution context in the thread which subscribed to the result from the executed callback methods. Reactive programming did in this case increase performance during high loads, but it is worth noting that the execution context is important for the performance. The development process did not change significantly, but reactive programming added complexity to the code and the need for a developer with extensive knowledge in reactive programming.
- Published
- 2017
32. Reactive programming and its effect on performance and the development process
- Author
-
Hochbergs, Gustav and Hochbergs, Gustav
- Abstract
The focus of this master’s thesis is to evaluate the effect of reactive programming on Playtech BGT Sports content server. The effect is evaluated mainly from a performance aspect, but a development process aspect is also taken into consideration. The content server is working in real-time and is required to have low latency and high throughput of processing of data. These characteristics are important to supply customers with the latest information. A comprehensive theoretical research was conducted in order to be able to implement reactive prototypes correctly and to avoid common pitfalls. Three types of reactive prototypes of the content server were implemented with different execution contexts. The prototypes were tested and the results were compared to the results of a fully synchronous solution. The results showed that reactive programming can increase the performance during high loads. The solutions performed similarly during low load. During high load one prototype stood out with 100% of throughput and low latency. This prototype had an execution context in the thread which subscribed to the result from the executed callback methods. Reactive programming did in this case increase performance during high loads, but it is worth noting that the execution context is important for the performance. The development process did not change significantly, but reactive programming added complexity to the code and the need for a developer with extensive knowledge in reactive programming.
- Published
- 2017
33. Debugging Data-Flows in Reactive Programs
- Author
-
Banken, Herman (author) and Banken, Herman (author)
- Abstract
Reactive Programming is a way of programming designed to provide developers with the right abstractions for creating systems that use streams of data. Traditional debug tools lack support for the abstractions provided, causing developers to fallback to the most rudimentary debug tool available: printf-debugging. In this work, we design a visualization and debugging tool for Reactive Programming, that aids comprehension and debugging of reactive systems, by visualizing the dependencies and structure of the data flow, and the data inside the flow. We present RxFiddle, a platform for the visualization as well as the required instrumentation for RxJS in the ReactiveX-family of Reactive Programming libraries. Evaluation based on an experiment with 111 subjects, shows that RxFiddle can outperform traditional debugging in terms of debug time required., Computer Science | Software Technology
- Published
- 2017
34. Programming Language Techniques for Incremental and Reactive Computing (Dagstuhl Seminar 16402)
- Author
-
Camil Demetrescu and Sebastian Erdweg and Matthew A. Hammer and Shriram Krishnamurthi, Demetrescu, Camil, Erdweg, Sebastian, Hammer, Matthew A., Krishnamurthi, Shriram, Camil Demetrescu and Sebastian Erdweg and Matthew A. Hammer and Shriram Krishnamurthi, Demetrescu, Camil, Erdweg, Sebastian, Hammer, Matthew A., and Krishnamurthi, Shriram
- Abstract
Incremental computations are those that process input changes faster than naive computation that runs from scratch, and reactive computations consist of interactive behavior that varies over time. Due to the importance and prevalence of incremental, reactive systems, ad hoc variants of incremental and reactive computation are ubiquitous in modern software systems. In response to this reality, the PL research community has worked for several decades to advance new languages for systems that interface with a dynamically-changing environment. In this space, researchers propose new general-purpose languages and algorithms to express and implement efficient, dynamic behavior, in the form of incremental and reactive language systems. While these research lines continue to develop successfully, this work lacks a shared community that synthesizes a collective discussion about common motivations, alternative techniques, current results and future challenges. To overcome this lack of community, this seminar will work towards building one, by strengthening existing research connections and by forging new ones. Developing a shared culture is critical to the future advancement of incremental and reactive computing in modern PL research, and in turn, this PL research is critical to developing the efficient, understandable interactive systems of the future.
- Published
- 2017
- Full Text
- View/download PDF
35. UniRx and Unity 5 : Working with C# and object-oriented reactive programming
- Author
-
Westberg, Johannes and Westberg, Johannes
- Abstract
Gameplay programming is vital for video game development and benefits from good tools and techniques. However, techniques are still used in the industry that involves describing how the computer operates. Reactive programming is a way to describe eventful and stateful computer programs declaratively, focusing on what the program should accomplish. This thesis uses the reactive library UniRx with the game engine Unity 5 to create an FPS with reactive techniques, and discusses the advantages and disadvantages of these. Object-oriented reactive programming is used to combine reactive objects with Unity’s component-based framework without using wrappers for non-reactive objects. The results include static methods for observable user input, patterns when defining game components with reactive content, and communication between game objects through interface components. It can be concluded that reactive programming for game programming enables the programmer to describe and understand game logic in a declarative manner. However, combining UniRx and Unity 5 led to complex patterns. Suggestion for future work is using reactive programming with game engines that allows to design game objects that are fully reactive., Gameplay-programmering är avgörande för utveckling av videospel och har nytta av bra verktyg och tekniker. Dock används tekniker i spelbranschen som kräver att programmeraren beskriver hur datorn utför uppgifter. Reaktiv programmering är ett sätt att beskriva händelserika och föränderliga datorprogram med fokus på vad programmet ska utföra. Denna avhandling använder det reaktiva biblioteket UniRx med spelmotorn Unity 5 för att skapa en FPS med reaktiva tekniker, samt diskuterar fördelarna och nackdelarna med dessa. Objektorienterad reaktiv programmering används för att kombinera reaktiva objekt med Unity’s komponentbaserade ramverk utan att använda wrappers för icke-reaktiva objekt. Resultaten inkluderar statiska metoder för observerbar användarinput, programmeringsmönster för definition av spelkomponenter med reaktivt innehåll och kommunikation mellan spelobjekt via gränssnittskomponenter. Man kan dra slutsatsen att reaktiv programmering för spelprogrammering gör det möjligt för programmeraren att beskriva och förstå spellogik på ett deklarativt sätt. Kombinationen av UniRx och Unity 5 ledde emellertid till komplexa mönster. Förslag till framtida arbete är att använda reaktiv programmering med spelmotorer som gör det möjligt att designa spelobjekt som är helt reaktiva.
- Published
- 2017
36. Solving the Overproduction Problem in Reactive Programming using Feedback Control
- Author
-
Van Heest, R. (author) and Van Heest, R. (author)
- Abstract
In an interactive program the consumer requests data from the producer and therefore has control over the speed at which data is consumed. This is opposite to a reactive program, where the producer emits data to the consumer at its own pace. This forms a problem if the producer emits more data than the consumer can deal with. Solving this 'overproduction' problem requires a good understanding of the nature of a reactive program, as well as the various behaviors it can have. Several solutions have been proposed and implemented, though they turn out to not work under all circumstances. We classify these solutions based on the type of reactive programs they can be applied to. We further develop a new solution for the case in which the producer can actually be controlled. Our solution involves the notion of feedback control, which is a technique that is not well-known in computer science. For this technique to be applied, we develop an API to compose and execute feedback systems in production level systems. Based on this API we develop our solution to the overproduction problem., Electrical Engineering, Mathematics and Computer Science, Software Technology, Software Engineering Research Group
- Published
- 2016
37. Data streams in spreadsheets with reactive extensions
- Author
-
Willems, L. (author) and Willems, L. (author)
- Abstract
The amount of collected data increases exponentially and this exponential growth comes with a demand to analyze big volumes of data and to process the data fast and in real time. Business analysts have the expertise in the domain of the desired stream processing applications, but often lack the technical skills to create these kind of applications. Advanced software engineering skills are required in the development of these applications. This thesis aims to make real time stream processing available for the millions of spreadsheets users around the world. The thesis presents a novel spreadsheet model, that turns a spreadsheet into an effective integrated development environment for stream processing. The spreadsheet model is built upon the reactive extensions framework, a library for asynchronous programming with push based data streams. The spreadsheet model is implemented both as add-in for Microsoft Excel and as underlying part of a newly created spreadsheet application that was written in Scala., Electrical Engineering, Mathematics and Computer Science, Software Technology
- Published
- 2016
38. Reactive programming. Building a hybrid mobile App
- Author
-
Universitat Politècnica de Catalunya. Departament d'Enginyeria Telemàtica, Università di Bologna, Muñoz Tapia, José Luis, Mirri, Silvia, Barceló Castell, Carlos, Universitat Politècnica de Catalunya. Departament d'Enginyeria Telemàtica, Università di Bologna, Muñoz Tapia, José Luis, Mirri, Silvia, and Barceló Castell, Carlos
- Abstract
Desarrollo de una aplicación móvil híbrida utilizando native-reactive, un framework que permite desarrollar aplicaciones nativas programándolas en JavaScript y utilizando la nueva tendencia de la programación: la programación reactiva., This thesis is based on how to design and develop a hybrid mobile app using the new Facebook?s framework called React Native. It is capable to run both in android and iOS, and uses a new programming paradigm oriented around data flows and the propagation of change: reactive programming. The app is intended for international students who arrive to a new city, who through the app will be pushed in an incidental way to learn the culture and language of the destination city. Thanks to the geolocation, the app knows where the user is, so it will provide not only useful information about the situations surrounding the user, but also some language tips which the user will be able to use in that precise moment., Esta tesis trata sobre cómo diseñar y desarrollar una aplicación móvil híbrida que hace uso del nuevo framework de Facebook llamado React Native. La aplicación es compatible tanto con Android como con Ios, y utiliza un nuevo paradigma de la programación orientada al flujo de datos i a la propagación del cambio: la programación reactiva. La aplicación está orientada a estudiantes internacionales que llegan a una nueva ciudad, los cuáles serán impulsados a aprender la lengua y la cultura de la ciudad de destino. Mediante la geolocalización, la aplicación será capaz de saber dónde se encuentra el usuario, de modo que no sólo facilitará información sobre todo lo que le rodea, sino que también le proporcionará pistas sobre el lenguaje que le ayudarán a comunicarse en el momento necesario., Aquesta tesi tracta sobre com dissenyar i desenvolupar una aplicació mòbil híbrida que fa ús del nou framework de Facebook anomenat React Native. L’aplicació és compatible tant amb Android com amb iOS, i utilitza un nou paradigma de la programació orientada al flux de dades i a la propagació del canvi: la programació reactiva. L’aplicació està orientada a estudiants internacionals que arriben a una ciutat nova, els quals seran impulsats a aprendre la llengua i la cultura de la ciutat de destí. Mitjançant la geolocalització, l’aplicació és capaç de saber on es troba l’usuari, de manera que no només facilitarà informació sobre tot el que l’envolta, sinó que també li aconsellarà pistes sobre el llenguatge que l’ajudaran a comunicar-se en el moment necessari.
- Published
- 2016
39. Solving the Overproduction Problem in Reactive Programming using Feedback Control
- Author
-
Van Heest, R. (author) and Van Heest, R. (author)
- Abstract
In an interactive program the consumer requests data from the producer and therefore has control over the speed at which data is consumed. This is opposite to a reactive program, where the producer emits data to the consumer at its own pace. This forms a problem if the producer emits more data than the consumer can deal with. Solving this 'overproduction' problem requires a good understanding of the nature of a reactive program, as well as the various behaviors it can have. Several solutions have been proposed and implemented, though they turn out to not work under all circumstances. We classify these solutions based on the type of reactive programs they can be applied to. We further develop a new solution for the case in which the producer can actually be controlled. Our solution involves the notion of feedback control, which is a technique that is not well-known in computer science. For this technique to be applied, we develop an API to compose and execute feedback systems in production level systems. Based on this API we develop our solution to the overproduction problem., Electrical Engineering, Mathematics and Computer Science, Software Technology, Software Engineering Research Group
- Published
- 2016
40. Data streams in spreadsheets with reactive extensions
- Author
-
Willems, L. (author) and Willems, L. (author)
- Abstract
The amount of collected data increases exponentially and this exponential growth comes with a demand to analyze big volumes of data and to process the data fast and in real time. Business analysts have the expertise in the domain of the desired stream processing applications, but often lack the technical skills to create these kind of applications. Advanced software engineering skills are required in the development of these applications. This thesis aims to make real time stream processing available for the millions of spreadsheets users around the world. The thesis presents a novel spreadsheet model, that turns a spreadsheet into an effective integrated development environment for stream processing. The spreadsheet model is built upon the reactive extensions framework, a library for asynchronous programming with push based data streams. The spreadsheet model is implemented both as add-in for Microsoft Excel and as underlying part of a newly created spreadsheet application that was written in Scala., Electrical Engineering, Mathematics and Computer Science, Software Technology
- Published
- 2016
41. Stream my Models: Reactive Peer-to-Peer Distributed Models@run.time
- Author
-
Hartmann, Thomas, Moawad, Assaad, Fouquet, François, Nain, Grégory, Klein, Jacques, Le Traon, Yves, Hartmann, Thomas, Moawad, Assaad, Fouquet, François, Nain, Grégory, Klein, Jacques, and Le Traon, Yves
- Abstract
The models@run.time paradigm promotes the use of models during the execution of cyber-physical systems to represent their context and to reason about their runtime behaviour. However, current modeling techniques do not allow to cope at the same time with the large-scale, distributed, and constantly changing nature of these systems. In this paper, we introduce a distributed models@run.time approach, combining ideas from reactive programming, peer-to-peer distribution, and large-scale models@run.time. We define distributed models as observable streams of chunks that are exchanged between nodes in a peer-to-peer manner. lazy loading strategy allows to transparently access the complete virtual model from every node, although chunks are actually distributed across nodes. Observers and automatic reloading of chunks enable a reactive programming style. We integrated our approach into the Kevoree Modeling Framework and demonstrate that it enables frequently changing, reactive distributed models that can scale to millions of elements and several thousand nodes.
- Published
- 2015
42. Declaratively Programming the Mobile Web with Mobl
- Author
-
Hemel, Z. (author), Visser, E. (author), Hemel, Z. (author), and Visser, E. (author)
- Abstract
A new generation of mobile touch devices, such as the iPhone, Android and iPad, are equipped with powerful, modern browsers. However, regular websites are not optimized for the specific features and constraints of these devices, such as limited screen estate, unreliable Internet access, touch-based interaction patterns, and features such as GPS. While recent advances in web technology enable web developers to build web applications that take advantage of the unique properties of mobile devices, developing such applications is not a clean, well-integrated experience. Developers are required to use many loosely coupled languages with limited tool support and application code is often verbose and imperative. We introduce mobl, a new language designed to declaratively construct mobile web applications. Mobl integrates languages for user interface design, data modeling and querying, scripting and web services into a single, unified language that is flexible, expressive, enables early detection of errors, and has good IDE support. We illustrate the design of the language with the implementation of ConfPlan, an application for keeping track of the schedule of conference events., Software Technology, Electrical Engineering, Mathematics and Computer Science
- Published
- 2011
43. Declaratively Programming the Mobile Web with Mobl
- Author
-
Hemel, Z. (author), Visser, E. (author), Hemel, Z. (author), and Visser, E. (author)
- Abstract
A new generation of mobile touch devices, such as the iPhone, Android and iPad, are equipped with powerful, modern browsers. However, regular websites are not optimized for the specific features and constraints of these devices, such as limited screen estate, unreliable Internet access, touch-based interaction patterns, and features such as GPS. While recent advances in web technology enable web developers to build web applications that take advantage of the unique properties of mobile devices, developing such applications is not a clean, well-integrated experience. Developers are required to use many loosely coupled languages with limited tool support and application code is often verbose and imperative. We introduce mobl, a new language designed to declaratively construct mobile web applications. Mobl integrates languages for user interface design, data modeling and querying, scripting and web services into a single, unified language that is flexible, expressive, enables early detection of errors, and has good IDE support. We illustrate the design of the language with the implementation of ConfPlan, an application for keeping track of the schedule of conference events., Software Technology, Electrical Engineering, Mathematics and Computer Science
- Published
- 2011
44. The Kiel Esterel Processor - A Semi-Custom, Configurable Reactive Processor
- Author
-
Li, Xin, von Hanxleden, Reinhard, Li, Xin, and von Hanxleden, Reinhard
- Abstract
The synchronous language Esterel is an established language for developing reactive systems. It gives an abstract, well-defined and executable description of the application, and can be synthesized into hardware and software. Typically, an Esterel program is first translated into other, lower-level languages (such as VHDL or C), and then compiled further. However, there is also the alternative of executing Esterel-like instructions directly. For example, in the REFLIX and RePIC projects, Roop et al. have augmented traditional processors with custom hardware to execute Esterel instructions. This patch strategy is a convenient approach, but has some shortages. We present the Kiel Esterel Processor (KEP), a semi-custom, configurable reactive processor for the direct execution of Esterel programs. It consists of a reactive core and scalable peripheral elements. KEP supports standard Esterel statements directly, except (so far) for the concurrency operator. Valued signals and counter functions in Esterel statements are supported by KEP. Due to its control path and its cooperation with elements, KEP obeys exact Esterel (preemption and priority) rules, including for example abort/weak abort (nests).
- Published
- 2005
- Full Text
- View/download PDF
45. The Kiel Esterel Processor - A Semi-Custom, Configurable Reactive Processor
- Author
-
Xin Li and Reinhard von Hanxleden, Li, Xin, von Hanxleden, Reinhard, Xin Li and Reinhard von Hanxleden, Li, Xin, and von Hanxleden, Reinhard
- Abstract
The synchronous language Esterel is an established language for developing reactive systems. It gives an abstract, well-defined and executable description of the application, and can be synthesized into hardware and software. Typically, an Esterel program is first translated into other, lower-level languages (such as VHDL or C), and then compiled further. However, there is also the alternative of executing Esterel-like instructions directly. For example, in the REFLIX and RePIC projects, Roop et al.\ have augmented traditional processors with custom hardware to execute Esterel instructions. This patch strategy is a convenient approach, but has some shortages. We present the Kiel Esterel Processor (KEP), a semi-custom, configurable reactive processor for the direct execution of Esterel programs. It consists of a reactive core and scalable peripheral elements. KEP supports standard Esterel statements directly, except (so far) for the concurrency operator. Valued signals and counter functions in Esterel statements are supported by KEP. Due to its control path and its cooperation with elements, KEP obeys exact Esterel (preemption and priority) rules, including for example abort/weak abort (nests).
- Published
- 2005
- Full Text
- View/download PDF
46. Vytváření mobilních aplikací metodou reaktivního programování
- Author
-
Hrubý, Martin, Peringer, Petr, Hrubý, Martin, and Peringer, Petr
- Abstract
Programování mobilních aplikací v systému iOS zavádí nebo doporučuje používání asynchronních volání procedur a paralelismus. Bývá obtížné v takovýchto aplikacích udržet přehled o toku událostí v programu. Zavádí se různé metodiky návrhu aplikací založených na asynchronnosti a paralelismu. Jednou z nich je tzv. reaktivní programovaní. Ve své práci se inspiruji metodikou nazývanou ReactiveX a odvozuji z ní metodiku podobnou, o níž se domnívám, že vystihuje metodiku ReactiveX v podstatných ohledech, je však jednodušší., iOS development is built on asynchronous calls and parallelism. Keeping the asynchronous code clear and consise becomes increasingly more difficult with the size of an application. Multiple methodologies emerged to combat this problem. One of them is the reactive programming methodology. In my thesis I focused on creating a reactive methodology inspired by the core ReactiveX concepts with a simpler, more streamlined implementation.
47. Návrhové vzory architektury OS Android s využitím jazyka Kotlin
- Author
-
Zeman, Kryštof, Ilgner, Petr, Zeman, Kryštof, and Ilgner, Petr
- Abstract
Cílem této diplomové práce je popis návrhových vzorů a dalších ověřených programátorských praktik využívaných při vývoji aplikací pro OS Android. V rámci teoretické části je proveden rozbor návrhových vzorů, programovacího jazyka Kotlin, dependency injection, reaktivního programování a automatického testování aplikací. Praktická část se zabývá návrhem a implementací aplikace, na které jsou demonstrovány výhody využívání návrhových vzorů a ověřených programátorských praktik popsaných v teoretické části., The aim of this thesis is to describe design patterns and other programming best practices used in the development of Android applications. The theoretical part analyzes design patterns, Kotlin programming language, dependency injection, reactive programming and automatic testing. The practical part deals with the design and implementation of a sample Android application, which demonstrates the advantages of using design patterns and other proven programming practices described in the theoretical part.
48. Vytváření mobilních aplikací metodou reaktivního programování
- Author
-
Hrubý, Martin, Peringer, Petr, Hrubý, Martin, and Peringer, Petr
- Abstract
Programování mobilních aplikací v systému iOS zavádí nebo doporučuje používání asynchronních volání procedur a paralelismus. Bývá obtížné v takovýchto aplikacích udržet přehled o toku událostí v programu. Zavádí se různé metodiky návrhu aplikací založených na asynchronnosti a paralelismu. Jednou z nich je tzv. reaktivní programovaní. Ve své práci se inspiruji metodikou nazývanou ReactiveX a odvozuji z ní metodiku podobnou, o níž se domnívám, že vystihuje metodiku ReactiveX v podstatných ohledech, je však jednodušší., iOS development is built on asynchronous calls and parallelism. Keeping the asynchronous code clear and consise becomes increasingly more difficult with the size of an application. Multiple methodologies emerged to combat this problem. One of them is the reactive programming methodology. In my thesis I focused on creating a reactive methodology inspired by the core ReactiveX concepts with a simpler, more streamlined implementation.
49. Distribuovaný repositář digitálních forenzních dat
- Author
-
Rychlý, Marek, Burget, Radek, Rychlý, Marek, and Burget, Radek
- Abstract
Tato práce se zabývá návrhem distribuovaného repositáře zaměřeného jako úložiště rozsáhlých digitálních forenzních dat. Teoretická část práce pojednává o forenzní analýze digitálních dat a co je jejím cílem. Současně také vysvětluje Big data, vhodné úložiště, jejich vlastnosti, výhody a nevýhody. Hlavní část práce se pak zabývá návrhem a implementací distribuovaného úložiště pro digitální forenzní data. Návrh se rovněž zaměřuje na vhodnou indexaci uložených dat a rozšiřitelnost pro podporu nových druhů digitálních forenzních dat do budoucna. Implementovaný systém byl otestován z hlediska výkonnosti pro vstupní data PCAP soubory., This work deals with the design of distributed repository aimed at storing digital forensic data. The theoretical part of the thesis describes digital forensics and what is its purpose. There are also explained Big data, suitable storages, their properties, advantages and disadvantages, in this part. The main part of the thesis deals with the design and implementation of distributed storage for digital forensic data. The design is also focused in suitable indexing of stored data, and supporting new types of digital forensic data. The performance of implemented system was evaluated for chosen type of digital forensic data PCAP files.
50. Vytváření mobilních aplikací metodou reaktivního programování
- Author
-
Hrubý, Martin, Peringer, Petr, Hrubý, Martin, and Peringer, Petr
- Abstract
Programování mobilních aplikací v systému iOS zavádí nebo doporučuje používání asynchronních volání procedur a paralelismus. Bývá obtížné v takovýchto aplikacích udržet přehled o toku událostí v programu. Zavádí se různé metodiky návrhu aplikací založených na asynchronnosti a paralelismu. Jednou z nich je tzv. reaktivní programovaní. Ve své práci se inspiruji metodikou nazývanou ReactiveX a odvozuji z ní metodiku podobnou, o níž se domnívám, že vystihuje metodiku ReactiveX v podstatných ohledech, je však jednodušší., iOS development is built on asynchronous calls and parallelism. Keeping the asynchronous code clear and consise becomes increasingly more difficult with the size of an application. Multiple methodologies emerged to combat this problem. One of them is the reactive programming methodology. In my thesis I focused on creating a reactive methodology inspired by the core ReactiveX concepts with a simpler, more streamlined implementation.
Catalog
Discovery Service for Jio Institute Digital Library
For full access to our library's resources, please sign in.