In these lectures Kevin Hammond will introduce the new programming language Hume, which is based on a combination of concurrent finite state automata and functional programming technologies. Transitions on finite automata mediated by patterns and polymorphic functions.
Hume is a domain-specific language for resource-constrained systems, such as real-time embedded systems. It combines an asynchronous process layer with a purely functional expression layer, structured by levels of costability from HW-Hume (Hardware-Hume) through FSM-Hume (Finite-State-Machine-Hume) to PR-Hume (Primitive-Recursive-Hume) to full-Hume. Moreover formal properties of programs are determined by the choice of types on interconnections between boxes, and of control structures in transitions. Thus, time and space behaviour are decidable for the minimal hardware-oriented HW-Hume, and are strongly bounded for the more expressive embedded systems-oriented FSM-Hume and PR-Hume, while full Hume is Turing complete.
In the first lecture Kevin Hammond introduces the Hume language, providing motivation, background examples and an extended case study: a mine drainage controller application that has also been implemented using Ada-95. In the second lecture, he considers the underlying Hume Abstract Machine, and describes cost modelling techology that can be used to determine accurate costs for FSM-Hume, and which has been extended in a prototype implementation for costing primitive recursive definitions in PR-Hume. The analysis is defined using a type-and-effect system, and grounded in a formal operational semantics. The lecture describes the analyses and discusses recent results.
The lectures are supported by a series of practical laboratory sessions and resources including worked example programs, programming exercises, language and software documentation, and compilation systems for Hume.