45,298 research outputs found
ContextErlang: A language for distributed context-aware self-adaptive applications
Self-adaptive software modifies its behavior at run time to satisfy changing requirements in a dynamic environment. Context-oriented programming (COP) has been recently proposed as a specialized programming paradigm for context-aware and adaptive systems. COP mostly focuses on run time adaptation of the application’s behavior by supporting modular descriptions of behavioral variations. However, self-adaptive applications must satisfy additional requirements, such as distribution and concurrency, support for unforeseen changes and enforcement of correct behavior in the presence of dynamic change. Addressing these issues at the language level requires a holistic design that covers all aspects and takes into account the possibly cumbersome interaction of those features, for example concurrency and dynamic change. We present ContextErlang, a COP programming language in which adaptive abstractions are seamlessly integrated with distribution and concurrency. We define ContextErlang’s formal semantics, validated through an executable prototype, and we show how it supports formal proofs that the language design ensures satisfaction of certain safety requirements. We provide empirical evidence that ContextErlang is an effective solution through case studies and a performance assessment. We also show how the same design principles that lead to the development of ContextErlang can be followed to systematically design contextual extensions of other languages. A concrete example is presented concerning ContextScala
Modeling Adaptation with Klaim
In recent years, it has been argued that systems and applications, in order to deal with their increasing complexity, should be able to adapt their behavior according to new requirements or environment conditions. In this paper, we present an investigation aiming at studying how coordination languages and formal methods can contribute to a better understanding, implementation and use of the mechanisms and techniques for adaptation currently proposed in the literature. Our study relies on the formal coordination language Klaim as a common framework for modeling some well-known adaptation techniques: the IBM MAPE-K loop, the Accord component-based framework for architectural adaptation, and the aspect- and context-oriented programming paradigms. We illustrate our approach through a simple example concerning a data repository equipped with an automated cache mechanism
The C Object System: Using C as a High-Level Object-Oriented Language
The C Object System (Cos) is a small C library which implements high-level
concepts available in Clos, Objc and other object-oriented programming
languages: uniform object model (class, meta-class and property-metaclass),
generic functions, multi-methods, delegation, properties, exceptions, contracts
and closures. Cos relies on the programmable capabilities of the C programming
language to extend its syntax and to implement the aforementioned concepts as
first-class objects. Cos aims at satisfying several general principles like
simplicity, extensibility, reusability, efficiency and portability which are
rarely met in a single programming language. Its design is tuned to provide
efficient and portable implementation of message multi-dispatch and message
multi-forwarding which are the heart of code extensibility and reusability.
With COS features in hand, software should become as flexible and extensible as
with scripting languages and as efficient and portable as expected with C
programming. Likewise, Cos concepts should significantly simplify adaptive and
aspect-oriented programming as well as distributed and service-oriented
computingComment: 18
Epigenetic inheritance. Concepts, mechanisms and perspectives
Parents' stressful experiences can influence an offspring's vulnerability to many pathological conditions, including psychopathologies, and their effects may even endure for several generations. Nevertheless, the cause of this phenomenon has not been determined, and only recently have scientists turned to epigenetics to answer this question. There is extensive literature on epigenetics, but no consensus exists with regard to how and what can (and must) be considered to study and define epigenetics processes and their inheritance. In this work, we aimed to clarify and systematize these concepts. To this end, we analyzed the dynamics of epigenetic changes over time in detail and defined three types of epigenetics: a direct form of epigenetics (DE) and two indirect epigenetic processes-within (WIE) and across (AIE). DE refers to changes that occur in the lifespan of an individual, due to direct experiences with his environment. WIE concerns changes that occur inside of the womb, due to events during gestation. Finally, AIE defines changes that affect the individual's predecessors (parents, grandparents, etc.), due to events that occur even long before conception and that are somehow (e.g., through gametes, the intrauterine environment setting) transmitted across generations. This distinction allows us to organize the main body of epigenetic evidence according to these categories and then focus on the latter (AIE), referring to it as a faster route of informational transmission across generations-compared with genetic inheritance-that guides human evolution in a Lamarckian (i.e., experience-dependent) manner. Of the molecular processes that are implicated in this phenomenon, well-known (methylation) and novel (non-coding RNA, ncRNA) regulatory mechanisms are converging. Our discussion of the chief methods that are used to study epigenetic inheritance highlights the most compelling technical and theoretical problems of this discipline. Experimental suggestions to expand this field are provided, and their practical and ethical implications are discussed extensivel
Combating catastrophic forgetting with developmental compression
Generally intelligent agents exhibit successful behavior across problems in
several settings. Endemic in approaches to realize such intelligence in
machines is catastrophic forgetting: sequential learning corrupts knowledge
obtained earlier in the sequence, or tasks antagonistically compete for system
resources. Methods for obviating catastrophic forgetting have sought to
identify and preserve features of the system necessary to solve one problem
when learning to solve another, or to enforce modularity such that minimally
overlapping sub-functions contain task specific knowledge. While successful,
both approaches scale poorly because they require larger architectures as the
number of training instances grows, causing different parts of the system to
specialize for separate subsets of the data. Here we present a method for
addressing catastrophic forgetting called developmental compression. It
exploits the mild impacts of developmental mutations to lessen adverse changes
to previously-evolved capabilities and `compresses' specialized neural networks
into a generalized one. In the absence of domain knowledge, developmental
compression produces systems that avoid overt specialization, alleviating the
need to engineer a bespoke system for every task permutation and suggesting
better scalability than existing approaches. We validate this method on a robot
control problem and hope to extend this approach to other machine learning
domains in the future
- …