907 research outputs found
Approaches to Interpreter Composition
In this paper, we compose six different Python and Prolog VMs into 4 pairwise
compositions: one using C interpreters; one running on the JVM; one using
meta-tracing interpreters; and one using a C interpreter and a meta-tracing
interpreter. We show that programs that cross the language barrier frequently
execute faster in a meta-tracing composition, and that meta-tracing imposes a
significantly lower overhead on composed programs relative to mono-language
programs.Comment: 33 pages, 1 figure, 9 table
A principled approach to programming with nested types in Haskell
Initial algebra semantics is one of the cornerstones of the theory of modern functional programming languages. For each inductive data type, it provides a Church encoding for that type, a build combinator which constructs data of that type, a fold combinator which encapsulates structured recursion over data of that type, and a fold/build rule which optimises modular programs by eliminating from them data constructed using the buildcombinator, and immediately consumed using the foldcombinator, for that type. It has long been thought that initial algebra semantics is not expressive enough to provide a similar foundation for programming with nested types in Haskell. Specifically, the standard folds derived from initial algebra semantics have been considered too weak to capture commonly occurring patterns of recursion over data of nested types in Haskell, and no build combinators or fold/build rules have until now been defined for nested types. This paper shows that standard folds are, in fact, sufficiently expressive for programming with nested types in Haskell. It also defines buildcombinators and fold/build fusion rules for nested types. It thus shows how initial algebra semantics provides a principled, expressive, and elegant foundation for programming with nested types in Haskell
Proofs for free - parametricity for dependent types
Reynolds' abstraction theorem shows how a typing judgement in System F can be translated into a relational statement (in second order predicate logic) about inhabitants of the type. We obtain a similar result for pure type systems: for any PTS used as a programming language, there is a PTS that can be used as a logic for parametricity. Types in the source PTS are translated to relations (expressed as types) in the target. Similarly, values of a given type are translated to proofs that the values satisfy the relational interpretation. We extend the result to inductive families. We also show that the assumption that every term satisfies the parametricity condition generated by its type is consistent with the generated logic
Making object-oriented databases more knowledgeable (From ADAM to ABEL)
Tesis leida en la Universidad de Aberdeen. 178 p.The salient points of this thesis are as follows:
âą Object-Oriented Databases can help in solving the impedance mismatch problem
by introducing methods. However, methods have sometimes been overused in the
sense th at the code encapsulated refers not only to how the operation is implemented
but also to other kinds of knowledge that are implicit in the code. The
disadvantages of this approach for modelling integrity constraints, user-defined relationships
and active behaviour are pointed out.
âą The ADAM Object-Oriented Database has been extended to allow the designer
to specify integrity constraints declaratively. A constraint equation approach is
implemented th at supports the inheritance of constraints.
âą A need for semantic-rich user-defined relationships has been identified. In this thesis,
relationships are represented as objects. An approach to enhance the semantics
of relationships in both its structural and behavioural aspects is presented. The
most novel idea of the approach presented is the support of the inferred properties
and the operational semantics of relationships.
âą Active Databases have recently become an im portant area of research. This thesis
shows how to extend an Object-Oriented Database with active capabilities. The
principal contribution lies in representing as âfirst-classâ objects not only the active
rules but also the rule manager itself. Hence, besides handling active rules as
any other object in the system, future requirements can be supported just by
specialising the current rule manager.
âą Active rules have been proposed for several purposes. Several examples, are given
of the direct use of rules. However, higher level tools can be provided of which rule
Towards Trustworthy Refactoring in Erlang
Tool-assisted refactoring transformations must be trustworthy if programmers
are to be confident in applying them on arbitrarily extensive and complex code
in order to improve style or efficiency. We propose a simple, high-level but
rigorous, notation for defining refactoring transformations in Erlang, and show
that this notation provides an extensible, verifiable and executable
specification language for refactoring. To demonstrate the applicability of our
approach, we show how to define and verify a number of example refactorings in
the system.Comment: In Proceedings VPT 2016, arXiv:1607.0183
Encouraging and Supporting Teacher Research in the US and UK
Given the diversity of types of writing instructors in US and UK tertiary education and the range of their scholarly backgrounds, the likelihood is that most instructors have not participated in research in composition theory or pedagogy, rhetoric, academic literacies, or writing studies. The four projects reported here highlight the research opportunities and capacities of this diverse group, reflecting different types and levels of teacher or practitioner inquiry that involves teachers in studying significant questions arising from their own contexts. The article offers a brief history of practitioner inquiry research in its various forms and traditions; presents the projects themselves, including their aims and framing; and offers specific recommendations for the future of this invaluable form of inquiry. Definitions of action research vary greatly. The term in its broadest sense refers to research conducted in a field setting with those actually involved in that field, often along with an âoutsiderâ, into the study of questions influenced by practitioners, rather than solely by âexpertsâ (Noffke 1996: 2). At the end of the day as teachers, we are often left wondering: Are we doing enough? How do we know? These are the essential questions that occupy the hearts and minds of so many of us as we walk into our classrooms (Goswami, Lewis and Rutherford 2009: 2).Teacher research just isnât like other forms of research, in part because there is no blueprint for how to do it (Goswami, Lewis and Rutherford 2009: 1)
Haskell Programming with Nested Types: A Principled Approach
Initial algebra semantics is one of the cornerstones of the theory of modern functional programming languages. For each inductive data type, it provides a Church encoding for that type, a build combinator which constructs data of that type, a fold combinator which encapsulates structured recursion over data of that type, and a fold/build rule which optimises modular programs by eliminating from them data constructed using the build combinator, and immediately consumed using the fold combinator, for that type. It has long been thought that initial algebra semantics is not expressive enough to provide a similar foundation for programming with nested types in Haskell. Specifically, the standard folds derived from initial algebra semantics have been considered too weak to capture commonly occurring patterns of recursion over data of nested types in Haskell, and no build combinators or fold/build rules have until now been defined for nested types. This paper shows that standard folds are, in fact, sufficiently expressive for programming with nested types in Haskell. It also defines build combinators and fold/build fusion rules for nested types. It thus shows how initial algebra semantics provides a principled, expressive, and elegant foundation for programming with nested types in Haskell
Extensibility of Enterprise Modelling Languages
Die Arbeit adressiert insgesamt drei Forschungsschwerpunkte. Der erste Schwerpunkt setzt sich mit zu entwickelnden BPMN-Erweiterungen auseinander und stellt deren methodische Implikationen im Rahmen der bestehenden Sprachstandards dar. Dies umfasst zum einen ganz konkrete Spracherweiterungen wie z. B. BPMN4CP, eine BPMN-Erweiterung zur multi-perspektivischen Modellierung von klinischen Behandlungspfaden. Zum anderen betrifft dieser Teil auch modellierungsmethodische Konsequenzen, um parallel sowohl die zugrunde liegende Sprache (d. h. das BPMN-Metamodell) als auch die Methode zur Erweiterungsentwicklung zu verbessern und somit den festgestellten UnzulÀnglichkeiten zu begegnen.
Der zweite Schwerpunkt adressiert die Untersuchung von sprachunabhĂ€ngigen Fragen der Erweiterbarkeit, welche sich entweder wĂ€hrend der Bearbeitung des ersten Teils ergeben haben oder aus dessen Ergebnissen induktiv geschlossen wurden. Der Forschungsschwerpunkt fokussiert dabei insbesondere eine Konsolidierung bestehender Terminologien, die Beschreibung generisch anwendbarer Erweiterungsmechanismen sowie die nutzerorientierte Analyse eines potentiellen Erweiterungsbedarfs. Dieser Teil bereitet somit die Entwicklung einer generischen Erweiterungsmethode grundlegend vor. Hierzu zĂ€hlt auch die fundamentale Auseinandersetzung mit Unternehmensmodellierungssprachen generell, da nur eine ganzheitliche, widerspruchsfreie und integrierte Sprachdefinition Erweiterungen ĂŒberhaupt ermöglichen und gelingen lassen kann. Dies betrifft beispielsweise die Spezifikation der intendierten Semantik einer Sprache
Indexed dependence metadata and its applications in software performance optimisation
To achieve continued performance improvements, modern microprocessor design is tending to concentrate
an increasing proportion of hardware on computation units with less automatic management
of data movement and extraction of parallelism. As a result, architectures increasingly include multiple
computation cores and complicated, software-managed memory hierarchies. Compilers have
difficulty characterizing the behaviour of a kernel in a general enough manner to enable automatic
generation of efficient code in any but the most straightforward of cases.
We propose the concept of indexed dependence metadata to improve application development and
mapping onto such architectures. The metadata represent both the iteration space of a kernel and the
mapping of that iteration space from a given index to the set of data elements that iteration might
use: thus the dependence metadata is indexed by the kernelâs iteration space. This explicit mapping
allows the compiler or runtime to optimise the program more efficiently, and improves the program
structure for the developer. We argue that this form of explicit interface specification reduces the need
for premature, architecture-specific optimisation. It improves program portability, supports intercomponent
optimisation and enables generation of efficient data movement code.
We offer the following contributions: an introduction to the concept of indexed dependence metadata
as a generalisation of stream programming, a demonstration of its advantages in a component
programming system, the decoupled access/execute model for C++ programs, and how indexed dependence
metadata might be used to improve the programming model for GPU-based designs. Our
experimental results with prototype implementations show that indexed dependence metadata supports
automatic synthesis of double-buffered data movement for the Cell processor and enables aggressive
loop fusion optimisations in image processing, linear algebra and multigrid application case
studies
- âŠ