Command-oriented functional programs are currently structured in an ad hoc way that makes the development of multiple userinterfaces difficult and error prone, and makes it difficult to abstractly understand a program...
详细信息
ISBN:
(纸本)9781605580609
Command-oriented functional programs are currently structured in an ad hoc way that makes the development of multiple userinterfaces difficult and error prone, and makes it difficult to abstractly understand a program's command-oriented behavior. To rectify this, we propose a software architecture for such programs that we call functional model-view-controller (MVC), by a rough analogy with object-oriented MVC. In functional MVC, a program is structured as a model (domain-specific aspects), view (abstract user) and controller (command loops). In contrast to object-oriented MVC, a controller is active, consisting of a number of recursive functions. It calls its view to get user input and to display results to the user;it calls its model to do domain-specific work. To increase adaptability, a controller should be parameterized by its model and view, using a function or an ML-style functor. With this approach, one can write terminal and graphical views;one can also write views that do abstract scripting. One can understand and reason about a program's command-oriented aspects at a high-level of abstraction by focusing on the controller. Of particular note is the way we are able to allow computations of the model to be monitored and aborted by view. We illustrate our approach with a case study of a complete program, written in Standard ML, and using concurrent ML and the eXene X window system toolkit.
The proceedings contain 4 papers. The topics discussed include: composing new abstractions from object fragments;predicate dispatch for aspect-oriented programming;aspects and class-based security: a survey of interac...
ISBN:
(纸本)9781605583846
The proceedings contain 4 papers. The topics discussed include: composing new abstractions from object fragments;predicate dispatch for aspect-oriented programming;aspects and class-based security: a survey of interactions between advice weaving and the Java 2 security model;and a decision tree-based approach to dynamic pointcut evaluation.
X10 is a modem object-oriented language designed for productivity and performance in concurrent and distributed systems. In this setting, dependent types offer significant opportunities for detecting design errors sta...
详细信息
ISBN:
(纸本)9781605582153
X10 is a modem object-oriented language designed for productivity and performance in concurrent and distributed systems. In this setting, dependent types offer significant opportunities for detecting design errors statically, documenting design decisions, eliminating costly run-time checks (e.g., for array bounds, null values), and improving the quality of,generated code. We present the design and implementation of constrained types, a natural, simple, clean, and expressive extension to object-oriented programming: A type C{c} names a class or interface C and a constraint c on the immutable state of C and in-scope final variables. Constraints may also be associated with class definitions (representing class invariants) and with method and constructor definitions (representing preconditions). Dynamic casting is permitted. The system is parametric on the underlying constraint system: the compiler supports a simple equality-based constraint system but, in addition, supports extension with new constraint systems using compiler plugins.
Developing a machine model natively supporting aspectoriented programming (AOP) is fruitful not only for implementing interpreters and compilers for AOP languages but also for understanding the essence of the AOP para...
详细信息
Various aspect-oriented languages, e.g., AspectJ, Aspect- Werkz, and JAsCo, have been proposed as extensions to one particular object-oriented base language, namely Java. But these extensions do not fully take the int...
详细信息
Constructs of dynamic nature, e.g., history-based pointcuts and control-flow based pointcuts, have received significant attention in recent aspect-oriented literature. A variety of compelling use cases are presented t...
详细信息
The stream programming paradigm aims to expose coarse-grained parallelism in applications that must process continuous sequences of events. The appeal of stream programming comes from its conceptual simplicity. A prog...
详细信息
ISBN:
(纸本)9781595937865
The stream programming paradigm aims to expose coarse-grained parallelism in applications that must process continuous sequences of events. The appeal of stream programming comes from its conceptual simplicity. A program is a collection of independent filters which communicate by the means of uni-directional data channels. This model lends itself naturally to concurrent and efficient implementations on modern multiprocessors. As the output behavior of filters is determined by the state of their input channels, stream programs have fewer opportunities for the errors (such as data races and deadlocks) that plague shared memory concurrentprogramming. This paper introduces STREAMFLEX, an extension to Java which marries streams with objects and thus enables to combine, in the same Java virtual machine, stream processing code with traditional object-oriented components. STREAMFLEX targets high-throughput low-latency applications with stringent quality-of-service requirements. To achieve these goals, it must, at the same time, extend and restrict Java. To allow for program optimization and provide latency guarantees, the STREAMFLEX compiler restricts Java by imposing a stricter typing discipline on filters. On the other hand, STREAMFLEX extends the Java virtual machine with real-time capabilities, transactional memory and type-safe region-based allocation. The result is a rich and expressive language that can be implemented efficiently.
The proceedings contain 17 papers. The topics discussed include: XML graphs in program analysis;transformation of structure-shy programs: Applied to XPath queries and strategic functions;bidirectional interpretation o...
详细信息
ISBN:
(纸本)1595936203
The proceedings contain 17 papers. The topics discussed include: XML graphs in program analysis;transformation of structure-shy programs: Applied to XPath queries and strategic functions;bidirectional interpretation of XQuery;style normalization for canonical X-to-O mappings;partial evaluation of Maple;quasi-terminating logic programs for ensuring the termination of partial evaluation;Distillation: extracting the essence of programs;powering: a static optimization technique for transparent functional reactivity;efficient implementation of tuple pattern based retrieval;object-oriented queries over software systems: (Abstract of invited talk);behavioral similarity matching using concrete source code templates in logic queries;and tools and libraries to model and manipulate circular programs.
X10 is a modern object-oriented programming language designed for high performance, high productivity programming of parallel and multi-core computer systems. Compared to the lower-level thread-based concurrency model...
详细信息
ISBN:
(纸本)9781595936028
X10 is a modern object-oriented programming language designed for high performance, high productivity programming of parallel and multi-core computer systems. Compared to the lower-level thread-based concurrency model in the Java (TM) language, X10 has higher-level concurrency constructs such as async, atomic and finish built into the language to simplify creation, analysis and optimization of parallel programs. In this paper, we introduce a new algorithm for May-Happen-in-Parallel (MHP) analysis of X10 programs. The analysis algorithm is based on simple path traversals in the Program Structure Tree, and does not rely on pointer alias analysis of thread objects as in MHP analysis for Java programs. We introduce a more precise definition of the MHP relation than in past work by adding condition vectors that identify execution instances for which the MHP relation holds, instead of just returning a single true/false value for all pairs of executing instances. Further, MHP analysis is refined in our approach by using the observation that two statement instances which occur in atomic sections that execute at the same X10 place must have MHP = false. We expect that our MHP analysis algorithm will be applicable to any language that adopts the core concepts of places, async, finish, and atomic sections from the X10 programming model. We also believe that this approach offers the best of two worlds to programmers and parallel programming tools - higher-level abstractions of concurrency coupled with simple and efficient analysis algorithms.
暂无评论