Mitar Milutinović (2011) A nondeterministic and lazy framework for data-flow computation. EngD thesis.
We have developed a nondeterministic and lazy framework for data-flow computation called Etage. We implemented it in Haskell programming language. Programs in the developed framework are networks of operations and connections over which data is transmitted and where operations are triggered when all required data is available. The execution order of operations is nondeterministic and depends on the data arrival order. Etage is a lazy framework as it computes only the data really used by operations. The proposed approach is suitable for development of software systems which are connected to the physical world. An example of such a system is real-time robot control. The nature of sensory data processing and robot control is similar to data-flow computing and can be successfully translated into a program. In the thesis we tested such coupling of the physical machine and Etage by developing a robot, a system for capturing its position in a testing polygon, and software for communication with its control system. We found that the developed framework is very suitable for such systems. Additionally, we tested the performance of the framework on the problem of cheapest path search in a graph. Our Etage-based search programs performed slower than state-of-the-art solutions, but were more suitable for parallelization. The presented framework is by our knowledge the first one of its kind. We have also developed the first programming interface for robot's control system in Haskell programming language. The developed open-source code is freely accessible on the web. Alongside the framework itself the main contribution is a showcase for utility of functional languages for development of practical data-flow systems.
Actions (login required)