FLOC 2018: FEDERATED LOGIC CONFERENCE 2018
A software system should be declarative except where it interacts with the real world

Author: Peter Van Roy

Paper Information

Title:A software system should be declarative except where it interacts with the real world
Authors:Peter Van Roy
Proceedings:LPOP Position Papers
Editors: K. Tuncay Tekle and Marc Denecker
Keywords:declarative programming, imperative programming, functional programming, nondeterminism, software design, lambda calculus, programming paradigm
Abstract:

ABSTRACT. We propose a system design principle that explains how to use declarative programming (logic and functional) together with imperative programming. The advantages of declarative programming are well known; they include ease of analysis, verification, testing, optimization, maintenance, upgrading, and distributed implementation. We will not elaborate on these advantages here, but rather focus on what part of the software system should be written declaratively. Declarative programming cannot interface directly with the real world since it does not support common real-world concepts such as physical time, named state, and nondeterminism. Other programming paradigms that support these concepts must therefore be used, such as imperative programming (which contains named state). To optimize the system design, we propose that real-world concepts should only be used where they are needed, namely where the system interfaces with the real world. It follows that a software system should be built completely declaratively except where it interfaces with the real world. We motivate this principle with examples from our research and we give it a precise formal definition.

Pages:2
Talk:Jul 18 17:00 (Session 129D: Logic and Constraints in Applications)
Paper: