273 research outputs found

    A low-cost implementation of coroutines for C

    Get PDF
    We identify a set of primitive operations supporting coroutines, and demonstrate their usefulness. We then address their implementation in C according to a set of criteria aimed at maintaining simplicity, and achieve a satisfactory compromise between it and effectiveness. Our package for the PDP-II under UNIX allows users of coroutines in C programs to gain access to the primitives via an included definitions file and an object library; no penalty is imposed upon non-coroutine users

    An exercise in transformational programming: Backtracking and Branch-and-Bound

    Get PDF
    We present a formal derivation of program schemes that are usually called Backtracking programs and Branch-and-Bound programs. The derivation consists of a series of transformation steps, specifically algebraic manipulations, on the initial specification until the desired programs are obtained. The well-known notions of linear recursion and tail recursion are extended, for structures, to elementwise linear recursion and elementwise tail recursion; and a transformation between them is derived too

    Efficiency in nondeterministic control through non-forgetful backtracking

    Get PDF
    Journal ArticleNondeterministic (ND) control has long been used to express elegant solutions to complex search problems. Programs using ND control can be executed on conventional machines through a systematic examination of trial execution paths. Among the many approaches to the enumeration of these paths is backtracking, a depth-first search of the execution path tree. Despite its implementational advantages, backtracking in its purest form suffers from a "forgetfulness" of retracted execution subpaths. This can lead to exponential run-time on problems such as top-down parsing in which the same subproblem can reoccur in slightly different global contexts. This paper presents an alternative form of ND control implementation incorporating "non-forgetfulness" into backtracking. Reoccurrences of previously searched subgoals are detected and their net computational effects recreated on demand. Since each distinct goal is pursued at most once, search problems such as general top-down parsing run in polynomial time. Moreover, in contrast to an exhaustive, bottom-up approach, goals are only pursued if appropriate in some global context. A strategy for non-forgetful backtracking is outlined in terms of coroutines and ordinary backtracking. The description of an alternative implementation of this strategy using simple coroutines is referenced. Top-down parsing is used to illustrate the application of this technique in both linguistic appearance and execution effect. Finally, some directions for further research into generalizations of these results are suggested

    MULTI - a LISP based multiprocessing system

    Full text link

    An object-oriented approach to application generation

    Get PDF
    The TUBA system consists of a set of integrated tools for the generation of business-oriented applications. Tools and applications have a modular structure, represented by class objects. The article describes the architecture of the environments for file processing, screen handling and report writing

    Ada as an implementation language for knowledge based systems

    Get PDF
    Debates about the selection of programming languages often produce cultural collisions that are not easily resolved. This is especially true in the case of Ada and knowledge based programming. The construction of programming tools provides a desirable alternative for resolving the conflict

    Virtual Machine Support for Many-Core Architectures: Decoupling Abstract from Concrete Concurrency Models

    Get PDF
    The upcoming many-core architectures require software developers to exploit concurrency to utilize available computational power. Today's high-level language virtual machines (VMs), which are a cornerstone of software development, do not provide sufficient abstraction for concurrency concepts. We analyze concrete and abstract concurrency models and identify the challenges they impose for VMs. To provide sufficient concurrency support in VMs, we propose to integrate concurrency operations into VM instruction sets. Since there will always be VMs optimized for special purposes, our goal is to develop a methodology to design instruction sets with concurrency support. Therefore, we also propose a list of trade-offs that have to be investigated to advise the design of such instruction sets. As a first experiment, we implemented one instruction set extension for shared memory and one for non-shared memory concurrency. From our experimental results, we derived a list of requirements for a full-grown experimental environment for further research

    A Monitoring Language for Run Time and Post-Mortem Behavior Analysis and Visualization

    Get PDF
    UFO is a new implementation of FORMAN, a declarative monitoring language, in which rules are compiled into execution monitors that run on a virtual machine supported by the Alamo monitor architecture.Comment: In M. Ronsse, K. De Bosschere (eds), proceedings of the Fifth International Workshop on Automated Debugging (AADEBUG 2003), September 2003, Ghent. cs.SE/030902
    • 

    corecore