Some limitations of object-oriented mechanisms are known to cause code clones (e. g., extension using inheritance). Novel programming paradigms such as feature-orientedprogramming (FOP) aim at alleviating these limit...
详细信息
ISBN:
(纸本)9781450301541
Some limitations of object-oriented mechanisms are known to cause code clones (e. g., extension using inheritance). Novel programming paradigms such as feature-orientedprogramming (FOP) aim at alleviating these limitations. However, it is an open issue whether FOP is really able to avoid code clones or whether it even facilitates (FOP-related) clones. To address this issue, we conduct an empirical analysis on ten feature-oriented software product lines with respect to code cloning. We found that there is a considerable number of clones in feature-oriented software product lines and that a large fraction of these clones is FOP-related (i.e., caused by limitations of feature-oriented mechanisms). Based on our results, we initiate a discussion on the reasons for FOP-related clones and on how to cope with them. We show by means of examples how such clones can be removed by applying refactorings.
A range of context-management systems in the past have motivated the need for development support of context-aware applications. They typically provide APIs and query languages for context analysis. Reacting to contex...
详细信息
ISBN:
(纸本)9781450308915
A range of context-management systems in the past have motivated the need for development support of context-aware applications. They typically provide APIs and query languages for context analysis. Reacting to context changes, however, is either not at all or only to a limited extend supported by adhering to constraints of a framework. In this paper, we present a context-management system that combines context reasoning with context-dependent behavior by taking advantage of language approaches to dynamic adaptation, such as aspect- and context-orientedprogramming. Our framework is open for different levels of integration with programming language extensions and offers a dynamic, strategy-based aggregation of local and distributed context sources. As a first step, we implemented a query library for the JCop language. We present its API and show the implementation of an example application.
Parallel or incremental versions of an algorithm can significantly outperform their counterparts, but are often difficult to develop. programming models that provide appropriate abstractions to decompose data and task...
详细信息
ISBN:
(纸本)9781450309400
Parallel or incremental versions of an algorithm can significantly outperform their counterparts, but are often difficult to develop. programming models that provide appropriate abstractions to decompose data and tasks can simplify parallelization. We show in this work that the same abstractions can enable both parallel and incremental execution. We present a novel algorithm for parallel self-adjusting computation. This algorithm extends a deterministic parallel programming model (concurrent revisions) with support for recording and repeating computations. On record, we construct a dynamic dependence graph of the parallel computation. On repeat, we reexecute only parts whose dependencies have changed. We implement and evaluate our idea by studying five example programs, including a realistic multi-pass CSS layout algorithm. We describe programming techniques that proved particularly useful to improve the performance of self-adjustment in practice. Our final results show significant speedups on all examples (up to 37x on an 8-core machine). These speedups are well beyond what can be achieved by parallelization alone, while requiring a comparable effort by the programmer.
languages for modeling and programming are diverging, with the implication that developers that would like to model (in order to raise the abstraction level and become independent of implementation platforms) end up w...
详细信息
ISBN:
(纸本)9781450309424
languages for modeling and programming are diverging, with the implication that developers that would like to model (in order to raise the abstraction level and become independent of implementation platforms) end up with the challenge of maintaining both model and program artifacts. In addition, modeling is hampered by poor tool support compared with programming tools. The trend in programminglanguages is that less attention is paid to the fact that programming should be a kind of modeling, while executable models will not cover what programs usually cover. The aim of this workshop is to investigate requirements for combined modeling and programminglanguages, by identifying candidate elements that should be supported by such languages, propose potential new combined language mechanisms, and by investigating implementation techniques for such languages.
In the past, modular structures for software systems have rested upon several assumptions that may no longer characterize the changing world of dynamic computing. Important among these assumptions is that the decision...
详细信息
ISBN:
(纸本)9781450305563
In the past, modular structures for software systems have rested upon several assumptions that may no longer characterize the changing world of dynamic computing. Important among these assumptions is that the decision to use or reuse a particular component is made at the time a client is developed. But the advent of a variety of modern software architectures like SOA, mobile/ubiquitous computing, grids, and AOSD emphasize deferring these decisions about component choice until run-time. The presumption of development-time choice has had deep influence on many of the characteristics of programminglanguages. We explore the impact of the change of implementation selection from development-time to run-time on programming language constructs and middleware, and conclude that there is a model for software that satisfies the needs of future, more dynamic environments in a way that can be achieved as a compatible extension of today's common object-orientedlanguages.
The Plaid language introduces native support for state abstractions and state change. While efficient language implementation typically relies on stable object members, state change alters members at runtime. We built...
详细信息
ISBN:
(纸本)9781450309424
The Plaid language introduces native support for state abstractions and state change. While efficient language implementation typically relies on stable object members, state change alters members at runtime. We built a JavaScript compilation target with a novel state representation, which enables fast member access. Cross-language performance comparisons are used for evaluation.
Implementors of compilers, program refactorers, theorem provers, proof checkers, and other systems that manipulate syntax know that dealing with name binding is difficult to do well. Operations such as alpha-equivalen...
详细信息
ISBN:
(纸本)9781450308656
Implementors of compilers, program refactorers, theorem provers, proof checkers, and other systems that manipulate syntax know that dealing with name binding is difficult to do well. Operations such as alpha-equivalence and capture-avoiding substitution seem simple, yet subtle bugs often go undetected. Furthermore, their implementations are tedious, requiring "boilerplate" code that must be updated whenever the object language definition changes. Many researchers have therefore sought to specify binding syntax declaratively, so that tools can correctly handle the details behind the scenes. This idea has been the inspiration for many new systems (such as Beluga, Delphin, FreshML, FreshOCaml, C alpha ml, FreshLib, and Ott) but there is still room for improvement in expressivity, simplicity and convenience. In this paper, we present a new domain-specific language, UNBOUND, for specifying binding structure. Our language is particularly expressive-it supports multiple atom types, pattern binders, type annotations, recursive binders, and nested binding (necessary for telescopes, a feature found in dependently-typed languages). However, our specification language is also simple, consisting of just five basic combinators. We provide a formal semantics for this language derived from a locally nameless representation and prove that it satisfies a number of desirable properties. We also present an implementation of our binding specification language as a GHC Haskell library implementing an embedded domain specific language (EDSL). By using Haskell type constructors to represent binding combinators, we implement the EDSL succinctly using datatype-generic programming. Our implementation supports a number of features necessary for practical programming, including flexibility in the treatment of user-defined types, best-effort name preservation (for error messages), and integration with Haskell's monad transformer library.
Context-orientedprogramminglanguages provide language abstractions for the dynamic activation and deactivation of behavioral adaptations, based on the system's context of execution. As contexts are freely activa...
详细信息
ISBN:
(纸本)9781450308915
Context-orientedprogramminglanguages provide language abstractions for the dynamic activation and deactivation of behavioral adaptations, based on the system's context of execution. As contexts are freely activated and deactivated, their associated behavior adaptations are added and removed to and from the system, which may break its consistency with respect to other available adaptations. To manage consistency between adaptations this paper introduces a model for the safe activation and deactivation of contexts. The model consists of two approaches, prompt-loyal for a delayed context (de)activation, and prompt for an immediate context (de)activation.
In previous work, we presented rules for defining overloaded functions that ensure type safety under symmetric multiple dispatch in an object-oriented language with multiple inheritance, and we showed how to check the...
详细信息
ISBN:
(纸本)9781450309400
In previous work, we presented rules for defining overloaded functions that ensure type safety under symmetric multiple dispatch in an object-oriented language with multiple inheritance, and we showed how to check these rules without requiring the entire type hierarchy to be known, thus supporting modularity and extensibility. In this work, we extend these rules to a language that supports parametric polymorphism on both classes and functions. In a multiple-inheritance language in which any type may be extended by types in other modules, some overloaded functions that might seem valid are correctly rejected by our rules. We explain how these functions can be permitted in a language that additionally supports an exclusion relation among types, allowing programmers to declare "nominal exclusions" and also implicitly imposing exclusion among different instances of each polymorphic type. We give rules for computing the exclusion relation, deriving many type exclusions from declared and implicit ones. We also show how to check our rules for ensuring the safety of overloaded functions. In particular, we reduce the problem of handling parametric polymorphism to one of determining subtyping relationships among universal and existential types. Our system has been implemented as part of the open-source Fortress compiler. Copyright is held by the author / owner(s).
The purpose of this demo is to showcase the AmbientTalk programming language. AmbientTalk is intended to be a "scripting language for mobile phones". It's a dynamic, object-oriented, distributed programm...
详细信息
暂无评论