45,298 research outputs found

    ContextErlang: A language for distributed context-aware self-adaptive applications

    Get PDF
    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

    Get PDF
    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

    Full text link
    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

    Get PDF
    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

    Full text link
    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
    • …
    corecore