This thesis is the first translation of full Lucid into code for von Neumann machines ("imperative code"). It demonstrates that it is possible to produce efficient code even in the presence of advanced features such as "currenting", recursive functions or operators whose semantics favour concurrency. Earlier compiled implementations stopped well short of this. Lucid is a family of non-procedural programming languages, invented by Wadge and Ashcroft. Lucid is neither tied to any particular data algebra, nor to a particular implementation technique. However. Data Flow (with its variants) lends itself particularly well to the implementation of Lucid. Message Passing Actors is an imperative programming technique which leaves scope for cooperating concurrency. This benefits hardware (multi—computers, transputers'') and software technology alike. In this thesis, LUX. a PASCAL-like language with Message Passing Actors, has been chosen as the target language. It is shown that there is a subset of Lucid (a "nucleus") which has the same expressive capacity as full Lucid. The nucleus is easier to implement than full Lucid. As a prerequisite for the translation, a LUX actor equivalent is formulated for each operator of the nucleus, once and for all. The design of these operator—actors is strongly guided by the execution strategy of demand driven Data Flow (''lazy evaluation"). Their data storage is based on FIFO queues ("pipelines"). The actors operate concurrently, but they harmonise their actions by exchanging messages which follow an agreed protocol. The translation is carried out in successive stages. First the Lucid program is transformed to make it lie entirely within the nucleus. The program is then mapped into LUX, where each operator is represented by an operatoi—actor and the references to the variables are manifested in the environment setup of these actors. Finally, the LUX code is made more efficient by the application of a variety of analysis and optimisation methods. Lucid programs can be analysed for various properties, and the resulting information can assist the code optimisation (while also revealing program errors). Particularly important among these program analyses is a queue length determination based on Wadge’s Cycle Sum Test.
Identifer | oai:union.ndltd.org:bl.uk/oai:ethos.bl.uk:279973 |
Date | January 1983 |
Creators | Pilgram, Paul Theo |
Publisher | University of Warwick |
Source Sets | Ethos UK |
Detected Language | English |
Type | Electronic Thesis or Dissertation |
Source | http://wrap.warwick.ac.uk/107519/ |
Page generated in 0.0115 seconds