We present a new approach to the control of versions of software and other hierarchically structured entities. Any part of a system, from the smallest component to a complete system, may exist in different versions. The set of all possible versions under the refinement relation forms a partial order (in fact, a lattice). The fact that version V approximates version V in this order means that V is relevant to V in this sense: when constructing version V of a system, we can sometimes use version V of a component if nothing more appropriate is available. More precisely, a particular version of an entire system is formed by combining the most relevant existing versions of the various components of the system. We call this the variant-substructure principle; it makes precise the idea that components of a given version of the system can be inherited by more refined versions of the system. We give an algebraic version language which allows histories (numbered series), subversions (or variants), and joins. In particular, the join operation is simply the lattice least upper bound. The join operation, together with the variant-substructure principle, provide a systematic framework for recombining divergent variants. We demonstrate the utility of this approach through Lemur, a programming environment for modular C programs, which was developed using itself. Finally, we show how this notion of versions is related to the possible-world semantics of intensional logic.
We present the Eager TransLucid language, an intensional programming language in which the value of a variable is a function mapping multidimensional contexts -the "possible worlds" of intensional logic -to ground values or, equivalently, that variables define multidimensional arrays of arbitrary dimensionality.The Eager TransLucid language is a natural generalisation of Wadge and Ashcroft's Lucid dataflow language. Given a specific set of equations and a context, the operational semantics determines the value taken by a variable in that context, which may depend both on the values of dimensions within the context and the values of variables in other contexts. The contexts correspond to tags in tagged-token dataflow systems.The key contribution of the paper is to prove that it is possible to create a warehouse caching the values of already computed (identifier , context) pairs in such a way as to ensure that no reference is made to unnecessary dimensions. The method consists of storing demands for relevant dimensions in the current context as these are needed.
We present the development of the Lucid language from the Original Lucid of the mid-1970s to the TransLucid of today. Each successive version of the language has been a generalisation of previous languages, but with a further understanding of the problems at hand.The Original Lucid (1976), originally designed for purposes of formal verification, was used to formalise the iteration in while-loop programs. The pLucid language (1982) was used to describe dataflow networks. Indexical Lucid (1987) was introduced for intensional programming, in which the semantics of a variable was understood as a function from a universe of possible worlds to ordinary values. With TransLucid, and the use of contexts as firstclass values, programming can be understood in a Cartesian framework. (2000). 68N15. Mathematics Subject Classification
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
customersupport@researchsolutions.com
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.