Richard C. H. Connor
University of St Andrews
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Richard C. H. Connor.
POS | 1993
Graham N. C. Kirby; Richard C. H. Connor; Quintin I. Cutts; Ronald Morrison; Alan Dearle; Alex Farkas
The traditional representation of a program as a linear sequence of text forces a particular style of program construction to ensure good programming practice. Tools such as syntax directed editors, compilers, linkers and file managers are required to translate and execute these linear sequences of text. At some stage in the execution sequence the source text is checked for type correctness and its translated form linked to values in the environment. When this is performed early in the execution process confidence in the correctness of the program is raised, at the cost of some flexibility of use.
ACM Transactions on Programming Languages and Systems | 1991
Ronald Morrison; Alan Dearle; Richard C. H. Connor; Alfred L. Brown
Polymorphic abstraction provides the ability to write programs that are independent of the form of the data over which they operate. It has proved difficult to provide efficient implementations of polymorphism. This paper addresses this problem and describes a new technique which can implement all forms of polymorphism, use a conventional machine architecture and support non-uniform data representations. Furthermore, the method ensures that any extra cost of implementation applies to polymorphic forms only and allows such polymorphic forms to persist over program invocations.
Archive | 2000
David W. Stemple; Leo Fegaras; Robin B. Stanton; Tim Sheard; Paul Philbrow; Richard Cooper; Malcolm P. Atkinson; Ronald Morrison; Graham N. C. Kirby; Richard C. H. Connor; Suad Alagic
Reflective systems allow their own structures to be altered from within. In a programming system reflection can occur in two ways: by a program altering its own interpretation or by it changing itself. Reflection has been used to facilitate the production and evolution of data and programs in database and programming language systems. This paper is concerned with a particular style of reflection, called linguistic reflection, used in compiled, strongly typed languages. Two major techniques for this have evolved: compile-time reflection and run-time reflection. These techniques are described together with a definition and anatomy of reflective systems using them. Two illustrative examples are given and the uses of type-safe reflective techniques in a database programming language context are surveyed. These include attaining high levels of genericity, accommodating changes in systems, implementing data models, optimising implementations and validating specifications.
The Computer Journal | 1995
Ronald Morrison; Richard C. H. Connor; Quintin I. Cutts; Vivienne S. Dunstan; Graham N. C. Kirby
This paper examines some of the advantages of providing software engineering environments within a persistent object system with strong typing and referential integrity. Persistent linkage allows persistent objects to be included in the binding process. Strong typing guarantees that objects are only manipulated in a manner consistent with their type system descriptions. Referential integrity ensures that once a link (reference) to an object is established, its identity is unique and it persists over time. As a consequence no object can be deleted while another refers to it. It is shown how the integration of system specifications, programs, configuration management tools and documentation all within a single persistent environment leads to powerful new techniques. This new power is achieved by sharing structured persistent data across the hitherto enclosing boundaries of system components.
international workshop on persistent object systems | 1989
Richard C. H. Connor; Alfred L. Brown; Raymund Carrick; Alan Dearle; Ronald Morrison
The Persistent Abstract Machine is an integral part of a layered architecture model to support the Napier language. It interfaces cleanly with a persistent store, and allows persistence to be implemented without difficulty in a high-level language. The heap based storage mechanism of the Persistent Abstract Machine is designed to support the block retention nature of the Napier language. This allows the implementation of first ciass procedures and modules in programming languages with the minimum of effort. A primitive type system within the machine contains just enough information to allow machine instructions which behave differently according to the dynamic type of their operands. This type system, in conjunction with the block retention architecture, may be used to great effect to provide a fast implementation of polymorphic procedures, abstract data types, inheritance and bounded universal quantification.
international workshop on persistent object systems | 1989
Ronald Morrison; Alfred L. Brown; Raymund Carrick; Richard C. H. Connor; Alan Dearle; Malcolm P. Atkinson
Persistent programming is concerned with the construction of large and long lived systems of data. In designing and building persistent object systems, we are attempting to regularise the activities that are performed on data by programming languages, operating systems, database management systems and file systems. We have identified the following areas of research which we are investigating in the context of persistent systems. They are: controlling complexity, protection of data, orthogonal persistence, controlled system evolution and concurrent computation.
extending database technology | 1990
Richard C. H. Connor; Alan Dearle; Ronald Morrison; Fred Brown
In database management systems, viewing mechanisms have been used to provide conceptual support for the user and security for the overall system. By controlling the style of database use, views aid the user by concentrating on the area of interest, and the system by ensuring the integrity of the data.
international workshop on persistent object systems | 1994
David S. Munro; Richard C. H. Connor; Ronald Morrison; Stephan J. G. Scheuerl; David W. Stemple
The differing requirements for concurrency models in programming languages and databases are widely diverse and often seemingly incompatible. The rigid provision of a particular concurrency control scheme in a persistent object system limits its usefulness to a particular class of applications, in contrast to the generality intended by the provision of persistence. One solution is to provide a flexible system in which concurrency control schemes may be specified according to the particular task in hand, allowing the same data to be used in conjunction with different concurrency control schemes according to the needs of the application.
Software Engineering Journal | 1987
Ronald Morrison; Alfred L. Brown; Raymund Carrick; Richard C. H. Connor
The major requirements of a system for software re-use are that it must provide an abstraction mechanism for adequately describing the components, a mechanism for naming and storing the components, and a mechanism for composing new objects out of existing components. This paper describes a polymorphic type system that may be used to describe generic components and a persistence mechanism that may be used to name, store and compose components. By integrating the two, a strongly typed persistent environment that is an ideal base as a system for software re-use is obtained.
Archive | 2000
Ronald Morrison; Richard C. H. Connor; Graham N. C. Kirby; David S. Munro; Malcolm P. Atkinson; Quintin I. Cutts; Fred Brown; Alan Dearie
Persistent programming systems are designed as an implementation technology for long lived, concurrently accessed and potentially large bodies of data and programs, known here as persistent application systems (PASs). Within a PAS the persistence concept is used to abstract over the physical properties of data such as where it is kept, how long it is kept and in what form it is kept. As such it is seen as having a number of benefits in simplifying the task of PAS programming. Here, we describe the integrated design of the Napier88 persistent programming system and how Napier88 may be used to develop PASs.