5,809 research outputs found
Composing Programming Languages by Combining Action-Semantics Modules
This article demonstrates a method for composing a programming language by combining action-semantics modules. Each module is defined separately, and then a programming-language module is defined by combining existing modules. This method enables the language designer to gradually develop a language by defining, selecting and combining suitable modules. The resulting modular structure is substantially different from that previously employed in action-semantic descriptions. It also discusses how to resolve the conflicts that may arise when combining modules, and indicates some advantages that action semantics has over other approaches in this respect
A Case for Custom, Composable Composition Operators
Programming languages typically support a fixed set of com- position operators, with fixed semantics. This may impose limits on software designers, in case a desired operator or semantics are not supported by a language, resulting in suboptimal quality characteristics of the designed software system. We demonstrate this using the well-known State design pattern, and propose the use of a composition infrastructure that allows the designer to define custom, composable composition operators. We demonstrate how this approach improves several quality factors of the State design pattern, such as reusability and modularity, while taking a reason- able amount of effort to define the necessary pattern-related code
Maude Object-Oriented Action Tool
MAIDL, André Murbach; CARVILHE, Claudio; MUSICANTE, Martin A. Maude Object-Oriented Action Tool. Electronic Notes in Theoretical Computer Science. [S.l:s.n], 2008.Object-Oriented Action Semantics (OOAS) incorporates object-oriented concepts to the Action Semantics formalism. Its main goal is to obtain more readable and reusable semantics specifications. Moreover, it
supports syntax-independent specifications, due to the way classes are written. Maude Object-Oriented Action Tool (MOOAT) is an executable environment for Object-Oriented Action Semantics implemented as a conservative extension of Full Maude and Maude MSOS Tool (MMT). The Modular SOS of Action Notation has been implemented using MMT transitions and Full Maude has been used to implement the Classes Notation. The syntax created by MOOAT is fairly similar to the original Object-Oriented Action
Semantics syntax. In addition to it, the tool combines the modularity aspects observed in the object-oriented approach with the efficient execution and analysis of the Maude system. We use MOOAT to describe syntaxindependent specifications of programming languages. In this way, we show how Constructive Object-Oriented Action Semantics (COOAS) may be achieved as a combination between Object-Oriented Action
Semantics and Constructive Action Semantics (CAS) using MOOAT, in order to increase the modularity aspects observed in the object-oriented formalism. This paper reports on the development of Maude Object-Oriented Action Tool and its application to the formal specification of programming languages
Fine-grained Language Composition: A Case Study
Although run-time language composition is common, it normally takes the form
of a crude Foreign Function Interface (FFI). While useful, such compositions
tend to be coarse-grained and slow. In this paper we introduce a novel
fine-grained syntactic composition of PHP and Python which allows users to
embed each language inside the other, including referencing variables across
languages. This composition raises novel design and implementation challenges.
We show that good solutions can be found to the design challenges; and that the
resulting implementation imposes an acceptable performance overhead of, at
most, 2.6x.Comment: 27 pages, 4 tables, 5 figure
Developing front-end Web 2.0 technologies to access services, content and things in the future Internet
The future Internet is expected to be composed of a mesh of interoperable web services accessible from all over the web. This approach has not yet caught on since global user?service interaction is still an open issue. This paper states one vision with regard to next-generation front-end Web 2.0 technology that will enable integrated access to services, contents and things in the future Internet. In this paper, we illustrate how front-ends that wrap traditional services and resources can be tailored to the needs of end users, converting end users into prosumers (creators and consumers of service-based applications). To do this, we propose an architecture that end users without programming skills can use to create front-ends, consult catalogues of resources tailored to their needs, easily integrate and coordinate front-ends and create composite applications to orchestrate services in their back-end. The paper includes a case study illustrating that current user-centred web development tools are at a very early stage of evolution. We provide statistical data on how the proposed architecture improves these tools. This paper is based on research conducted by the Service Front End (SFE) Open Alliance initiative
Modular Logic Programming: Full Compositionality and Conflict Handling for Practical Reasoning
With the recent development of a new ubiquitous nature of data and the profusity
of available knowledge, there is nowadays the need to reason from multiple sources
of often incomplete and uncertain knowledge. Our goal was to provide a way to
combine declarative knowledge bases – represented as logic programming modules
under the answer set semantics – as well as the individual results one already inferred
from them, without having to recalculate the results for their composition and without
having to explicitly know the original logic programming encodings that produced
such results. This posed us many challenges such as how to deal with fundamental
problems of modular frameworks for logic programming, namely how to define a
general compositional semantics that allows us to compose unrestricted modules.
Building upon existing logic programming approaches, we devised a framework
capable of composing generic logic programming modules while preserving the
crucial property of compositionality, which informally means that the combination of
models of individual modules are the models of the union of modules. We are also
still able to reason in the presence of knowledge containing incoherencies, which is
informally characterised by a logic program that does not have an answer set due
to cyclic dependencies of an atom from its default negation. In this thesis we also
discuss how the same approach can be extended to deal with probabilistic knowledge
in a modular and compositional way.
We depart from the Modular Logic Programming approach in Oikarinen &
Janhunen (2008); Janhunen et al. (2009) which achieved a restricted form of compositionality
of answer set programming modules. We aim at generalising this
framework of modular logic programming and start by lifting restrictive conditions
that were originally imposed, and use alternative ways of combining these (so called
by us) Generalised Modular Logic Programs. We then deal with conflicts arising
in generalised modular logic programming and provide modular justifications and
debugging for the generalised modular logic programming setting, where justification
models answer the question: Why is a given interpretation indeed an Answer Set?
and Debugging models answer the question: Why is a given interpretation not an
Answer Set?
In summary, our research deals with the problematic of formally devising a
generic modular logic programming framework, providing: operators for combining
arbitrary modular logic programs together with a compositional semantics; We
characterise conflicts that occur when composing access control policies, which are
generalisable to our context of generalised modular logic programming, and ways of
dealing with them syntactically: provided a unification for justification and debugging
of logic programs; and semantically: provide a new semantics capable of dealing
with incoherences. We also provide an extension of modular logic programming
to a probabilistic setting. These goals are already covered with published work. A prototypical tool implementing the unification of justifications and debugging is
available for download from http://cptkirk.sourceforge.net
- …