Reactive programming is an emerging discipline which achieves concurrency using events-based programming. Today, It is mostly used for writing very scalable web services that can achieve high concurrency levels even on a single thread.
The concept is simple - make a system that is fully event-based, and look at events not as isolated instances, but as streams. When we have streams, we can manipulate them as if they were simple ranges. We can filter them, modify them, combine multiple streams into one etc.
Reactive programming is not only applicable to the web services, it can be used in any event-based environment. In our case, in normal Qt applications, to enrich the power of signals and slots.
The talk will consist of two parts. In the first part, ranges will be explained (through the boost.range library, and Eric Niebler's range library proposal for C++17). We will show that ranges, and range transformations are a natural extension to the
The second part will deal with what reactive streams are, and their relation to ranges. We will show how to create streams using Qt's signals and slots mechanism, how to manipulate them, and connect the transformed streams back to the UI or other application components.
We will show a multitude of examples of how this can make the code more composable, clean and more declarative.
The examples will require some prior C++11/14 knowledge, while the features needed from the forthcoming C++17 standard will be explained.
Speaker Bio:
Ivan is a long time KDE contributor mainly working on the Plasma workspace, and lower-level frameworks for tracking and managing user actions. Maintainer and main developer of the KActivities framework, Contour daemon and Lancelot. He is an active advocate of modern C++ practices, mixed with functional programming concepts. He is a doctoral candidate (PhDc) at the Computer Science department of the Faculty of Mathematics, University of Belgrade with main research revolving around the programming language design.
Speaker:
Ivan Čukić, KDE
Session type:
Qt application development and device creation
Date:
Wednesday, October 7, 2015 -
From 13:30 to 14:30
Room:
A05-06