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: |