We describe support for modularity in Newspeak, a programminglanguage descended from Smalltalk [33] and Self [69]. Like Self, all computation even an object's own access to its internal structure is performed by ...
详细信息
ISBN:
(纸本)9783642141065
We describe support for modularity in Newspeak, a programminglanguage descended from Smalltalk [33] and Self [69]. Like Self, all computation even an object's own access to its internal structure is performed by invoking methods on objects. However, like Smalltalk, Newspeak is class-based. Classes can be nested arbitrarily, as in Beta [44]. Since all names denote method invocations, all classes are virtual;in particular, superclasses are virtual, so all classes act as mixins. Unlike its predecessors, there is no static state in Newspeak, nor is there a global namespace. Modularity in Newspeak is based exclusively on class nesting. There are no separate modularity constructs such as packages. Top level classes act as module definitions, which are independent, immutable, self-contained parametric namespaces. They can be instantiated into modules which may be stateful and mutually recursive.
Parsers and pretty-printers for a language are often quite similar, yet both are typically implemented separately, leading to redundancy and potential inconsistency. We propose a new interface of syntactic description...
详细信息
Parsers and pretty-printers for a language are often quite similar, yet both are typically implemented separately, leading to redundancy and potential inconsistency. We propose a new interface of syntactic descriptions, with which both parser and pretty-printer can be described as a single program. Whether a syntactic description is used as a parser or as a pretty-printer is determined by the implementation of the interface. Syntactic descriptions enable programmers to describe the connection between concrete and abstract syntax once and for all, and use these descriptions for parsing or pretty-printing as needed. We also discuss the generalization of our programming technique towards an algebra of partial isomorphisms.
Following the scenario-based approach to programming which centered around live sequence charts (LSCs), we propose a general approach to software development in Java. A program will consist of modules called behavior ...
详细信息
ISBN:
(纸本)9783642141065
Following the scenario-based approach to programming which centered around live sequence charts (LSCs), we propose a general approach to software development in Java. A program will consist of modules called behavior threads (b-threads), each of which independently describes a scenario that may cross object boundaries. We identify a protocol and a coordination mechanism that allow such behavioral programming. Essentially, runs of programs are sequences of events that result from three kinds of b-thread actions: requesting that events be considered for triggering, waiting for triggered events, and blocking events requested by other b-threads. The coordination mechanism synchronizes and interlaces b-threads execution yielding composite, integrated system behavior. The protocol idioms and the coordination mechanism of b-threads are implemented as a Java library called BPJ. Throughout the exposition we illustrate benefits of the approach and discuss the merits of behavioral programming as a broad, implementation-independent paradigm.
This paper introduces a new aspect-oriented programminglanguage, AspectMatlab. Matlab® is a dynamic scientific programminglanguage that is commonly used by scientists because of its convenient and high-level sy...
详细信息
ISBN:
(纸本)9781605589589
This paper introduces a new aspect-oriented programminglanguage, AspectMatlab. Matlab® is a dynamic scientific programminglanguage that is commonly used by scientists because of its convenient and high-level syntax for arrays, the fact that type declarations are not required, and the availability of a rich set of application libraries. AspectMatlab introduces key aspect-oriented features in a way that is both accessible to scientists and where the aspect-oriented features concentrate on array accesses and loops, the core computation elements in scientific programs. Introducing aspects into a dynamic language such as Matlab also provides some new challenges. In particular, it is difficult to statically determine precisely where patterns match, resulting in many dynamic checks in the woven code. Our compiler includes flow analyses which are used to eliminate many of those dynamic checks. This paper reports on the languagedesign of AspectMatlab, the amc compiler implementation and related optimizations, and also provides an overview of use cases that are specific to scientific programming. Copyright 2010 acm.
ASEME is an emerging Agent Oriented Software Engineering (AOSE) methodology. The Model-Driven Engineering (MDE) paradigm encourages software modelers to automate the transition of one type of software model to another...
详细信息
Aspect-oriented programming (AOP) has produced interesting languagedesigns, but also ad hoc semantics that needs clarification. We contribute to this clarification with a calculus that models essential AOP, both simp...
详细信息
ISBN:
(纸本)9783642141065
Aspect-oriented programming (AOP) has produced interesting languagedesigns, but also ad hoc semantics that needs clarification. We contribute to this clarification with a calculus that models essential AOP, both simpler and more general than existing formalizations. In AOP, advice may intercept method invocations, and proceed executes the suspended call. Proceed is an ad hoc mechanism, only usable inside advice bodies. Many pointcut mechanisms, e.g. wildcards, also lack regularity. We model proceed using first-class closures, and shift complexity from pointcuts to ordinary object-oriented code. Two well-known pointcut categories, call and execution, are commonly considered similar. We formally expose their differences, and resolve the associated soundness problem. Our calculus includes type ranges, an intuitive and concise alternative to explicit type variables that allows advice to be polymorphic over intercepted methods. We use calculus parameters to cover type safety for a wide design space of other features. Type soundness is verified in Coq.
The Architectural Patterns for Parallel programming is a collection of patterns related with a method for developing the coordination structure of parallel software systems. These architectural patterns are applied ba...
详细信息
ISBN:
(纸本)9781450302609
The Architectural Patterns for Parallel programming is a collection of patterns related with a method for developing the coordination structure of parallel software systems. These architectural patterns are applied based on (a) the available parallel hardware platform, (b) the parallel programminglanguage of this platform, and (c) the analysis of the problem to solve, in terms of an algorithm and data. In this paper, it is presented the application of the architectural patterns along with the method for developing a coordination structure for solving the Two-dimensional Wave Equation. The method used here takes the information from the problem analysis, applies an architectural pattern for the coordination, and provides some elements about its implementation. This paper is aimed to those who are working with the Patterns for Parallel Software design. Nevertheless, it presents only a part of the method, at the architectural level, for solving the Two-dimensional Wave Equation. Other two further design issues should be addressed at the communication and synchronization levels, which are not presented here.
Many software security policies can be encoded as aspects that identify and guard security-relevant program operations. Bugs in these aspectually- implemented security policies often manifest as ambiguities in which a...
详细信息
ISBN:
(纸本)9781605589589
Many software security policies can be encoded as aspects that identify and guard security-relevant program operations. Bugs in these aspectually- implemented security policies often manifest as ambiguities in which aspects provide conflicting advice for a shared join point. The design and implementation of a detection algorithm for such ambiguities is presented and evaluated. The algorithm reduces advice conflict detection to a combination of boolean satisfiability, linear programming, and regular language non-emptiness. Case studies demonstrate that the analysis is useful for debugging aspect-oriented security policies for several existing aspectual security systems. Copyright 2010 acm.
JavaScript is widely used to build increasingly complex Web applications. Unsurprisingly, these applications need to address cross-cutting concerns. Therefore support for aspect-oriented programming is crucial to pres...
详细信息
ISBN:
(纸本)9781605589589
JavaScript is widely used to build increasingly complex Web applications. Unsurprisingly, these applications need to address cross-cutting concerns. Therefore support for aspect-oriented programming is crucial to preserve proper modularity. However, there is no aspect-oriented extension of JavaScript that fully embraces the characterizing features of that language: dynamic prototype-based programming with higher-order functions. In this paper, we present AspectScript, a full-fledged AOP extension of JavaScript that adopts higher-order programming and dynamicity as its core design principles. In AspectScript, pointcuts and advices are standard JavaScript functions, bringing the benefits of higher-order programming patterns to define aspects. In addition, AspectScript integrates a number of state-of-the-art AOP features like dynamic aspect deployment with scoping strategies, and user-defined quantified events. We illustrate AspectScript in action with several practical examples from the realm of client Web applications, and report on its current implementation. AspectScript is a practical extension that provides better modularity support to build Web applications, and that will eventually make it possible to empirically validate the benefits brought by advanced aspect language mechanisms in an evergrowing application domain. Copyright 2010 acm.
Puma is a framework for the development of applications that analyze and, optionally, transform C or C++ source code. It supports ISO C and C++ as well as many language extensions of the GNU Compiler Collection and Mi...
详细信息
ISBN:
(纸本)9781605589589
Puma is a framework for the development of applications that analyze and, optionally, transform C or C++ source code. It supports ISO C and C++ as well as many language extensions of the GNU Compiler Collection and Microsoft Visual C++. Aspects played an important role during the design and implementation of the framework. It is written in the AspectC++ language. By employing AOSD concepts, we gained a clean separation of concerns and, thereby, very good configurability and extensibility. All these - ilities are of vital importance for our project, because the available manpower for maintenance tasks is limited. This paper briefly describes the design principles behind Puma. Copyright 2010 acm.
暂无评论