4,835 research outputs found

    Designing Declarative Language Tutorials: A Guided and Individualized Approach

    Get PDF

    The JStar language philosophy

    Get PDF
    This paper introduces the JStar parallel programming language, which is a Java-based declarative language aimed at discouraging sequential programming, en-couraging massively parallel programming, and giving the compiler and runtime maximum freedom to try alternative parallelisation strategies. We describe the execution semantics and runtime support of the language, several optimisations and parallelism strategies, with some benchmark results

    R2O, an extensible and semantically based database-to-ontology mapping language

    Full text link
    We present R2O, an extensible and declarative language to describe mappings between relational DB schemas and ontologies implemented in RDF(S) or OWL. R2O provides an extensible set of primitives with welldefined semantics. This language has been conceived expressive enough to cope with complex mapping cases arisen from situations of low similarity between the ontology and the DB models

    Uncanny Valleys in Declarative Language Design

    Get PDF
    When people write programs in conventional programming languages, they over-specify how to solve the problem they have in mind. Over-specification prevents the language\u27s implementation from making many optimization decisions, leaving programmers with this burden. In more declarative languages, programmers over-specify less, enabling the implementation to make more choices for them. As these decisions improve, programmers shift more attention from implementation to their real problems. This process easily overshoots. When under-specified programs almost always work well enough, programmers rarely need to think about implementation details. As their understanding of implementation choices atrophies, the controls provided so they can override these decisions become obscure. Our declarative language project, Yedalog, is in the midst of this dilemma. The improvements in question make our users more productive, so we cannot simply retreat back towards over-specification. To proceed forward instead, we must meet some of the expectations we prematurely provoked, and our implementation\u27s behavior must help users learn expectations more aligned with our intended semantics. These are general issues. Discussing their concrete manifestation in Yedalog should help other declarative systems that come to face these issues

    Salzella - Declarative Language for Music Generation

    Get PDF
    Salzella je doménově specifický deklarativní jazyk, jehož využití lze nalézt především v oblasti generování hudby. Klíčový princip, na kterém je jazyk postaven, lze shrnout následovně: Pro jakékoli existující hudební dílo by mělo být možné vytvořit program v jazyku Salzella, který toto dílo popíše tak, že spuštěním tohoto programu dojde k vygenerování hudební díla podobného hudebnímu dílu originálnímu. Hlavním cílem jazyka Salzella je usnadnit vývoj nástrojů pro generování hudby. Nástroje postavené nad platformou Salzella mohou místo hudby generovat programy v jazyku Salzella a samotné generování hudby ponechat na interpretovi tohoto jazyka. Hlavním strukturálním rysem vytvořeného jazyka je rozšiřitelnost. Algoritmy odpovědné za samotné generování hudby jsou distribuované formou pluginů, což tvůrcům výše zmíněných nástrojů umožňuje rozšířit schopnosti jazyka podle potřeby. Pro ilustraci možnosti tvorby hudbu generujících nástrojů nad platformou Salzella byl vytvořen prototyp algoritmu, který dokáže vytvářet programy v jazyku Salzella na základě existujících hudebních děl. V souvislosti s tvorbou tohoto algoritmu byla vytvořena tři rozšíření jazyka Salzella. Tato rozšíření slouží k: vygenerování melodie, vygenerování jednoduché harmonie a vygenerování perkusivního podkladu. Jakožto součást algoritmu pro převádění hudebních děl do programů Salzella byl vytvořen algoritmus pro analýzu harmonie. Samozřejmou součástí diplomové práce byla rovněž tvorba vývojového prostředí, ve kterém je možné vytvářet a spouštět programy ve vytvořeném jazyku.Salzella is a domain specific declarative language. Its primary focus lies in the field of music generation. The key principle upon which the language is built can be summarized as follows: For any existing piece of music it should be possible to create a Salzella program which will describe it in a way that running this program will output a piece of music similar to the original. Salzella programs are presumed to be generated rather then written by hand. The sole purpose of Salzella is to make creation of music generating tools easier. Bundling Salzella interpreter with music generating software and using it as an engine can provide a significant level of abstraction and thus make the development of such software a lot easier. Tools built on top of Salzella can generate Salzella programs and let the interpreter worry about the actual music generation. The key structural property of Salzella is extensibility. The algorithms responsible for the actual music generation are distributed in a from of plugins. This allows the creators of the aforesaid music generating software to modify Salzella capabilities to their own liking. To prove that Salzella interpreter can indeed be used as internal engine of music generating tools, a prototype of an algorithm for converting musical pieces into Salzella programs was created. As a side effect of creation of this algorithm, three Salzella extensions were created. These extensions are responsible for: generating a melody, generating a simple harmony and generating a percussive complement. An algorithm for harmony analysis was also created as part of this thesis. This algorithm is used by the conversion algorithm. A development environment which allows its users to easily create and execute Salzella programs was also created as part of this thesis

    Applying constraint solving to the management of distributed applications

    Get PDF
    Submitted to DOA08We present our approach for deploying and managing distributed component-based applications. A Desired State Description (DSD), written in a high-level declarative language, specifies requirements for a distributed application. Our infrastructure accepts a DSD as input, and from it automatically configures and deploys the distributed application. Subsequent violations of the original requirements are detected and, where possible, automatically rectified by reconfiguration and redeployment of the necessary application components. A constraint solving tool is used to plan deployments that meet the application requirements.Postprin
    corecore