407 research outputs found
A semantics and implementation of a causal logic programming language
The increasingly widespread availability of multicore and manycore computers demands new programming languages that make parallel programming dramatically easier and less error prone. This paper describes a semantics for a new class of declarative programming languages that support massive amounts of implicit parallelism
A simple approach to distributed objects in prolog
We present the design of a distributed object system for Prolog, based on adding remote execution and distribution capabilities to a previously existing object system. Remote execution brings RPC into a Prolog system, and its semantics is easy to express in terms of well-known Prolog builtins. The final distributed object design features state mobility and user-transparent network behavior. We sketch an implementation which provides distributed garbage collection and some degree of tolerance to network failures. We provide a preliminary study of the overhead of the communication mechanism for some test cases
The performance evaluation of interpreter based computer systems
PhD ThesisThis thesis explores the problem of making accurate
assessments of the performance of high level language
interpreter programs which are embedded in some more
complex system. The overall system performance will be
determined by all the software and hardware components
present; but in order either to analyse and improve
particular components, or to select between alternative
versions of components, the concept of the performance
of individual components is important.
A model is developed for the abstract behaviour of
software components playing the role of an interpreter
by considering their interaction with the program code
which is being interpreted and with the underlying
virtual machine which is, in turn, interpreting them.
This model enables a flexible definition of performance
by relating the interactions in which an interpreter takes
part. A methodology is recommended for assessing
experimentally the performances defined within such a
framework.
The performances of an interesting selection of
pseudo-machine and high level interpreter implementations
of Lispkit and Prolog are then assessed and conclusions
drawn.United Kingdom Science Research Counci
Datalog as a parallel general purpose programming language
The increasing available parallelism of computers demands new programming languages that make parallel programming dramatically easier and less error prone. It is proposed that datalog with negation and timestamps is a suitable basis for a general purpose programming language for sequential, parallel and distributed computers.
This paper develops a fully incremental bottom-up interpreter for datalog that supports a wide range of execution strategies, with trade-offs affecting efficiency, parallelism and control of resource usage. Examples show how the language can accept real-time external inputs and outputs, and mimic assignment, all without departing from its pure logical semantics
Improving the compilation of prolog to C using moded types and determinism information
We describe the current status of and provide performance
results for a prototype compiler of Prolog to C, ciaocc. ciaocc is novel in that it is designed to accept different kinds of high-level information, typically obtained via an automatic analysis of the initial Prolog program and expressed in a standardized language of assertions. This information is used to optimize the resulting C code, which is then processed by an off-the-shelf C compiler. The basic translation process essentially mimics the unfolding of a bytecode emulator with respect to the particular bytecode corresponding to the Prolog program. This is facilitated by a flexible design of the instructions and their lower-level components. This approach allows reusing a sizable amount of the machinery of the bytecode emulator: predicates already written in C, data definitions, memory management routines and áreas, etc., as well as mixing emulated bytecode with native code in a relatively straightforward way. We report on the performance of programs compiled by the current versión of the system, both with and without analysis information
- …