134,143 research outputs found

    Light programming language

    Get PDF
    The increase of computing power in the last decades allowed for the creation and establishment of many high level programming languages such as Java and Python. In these languages, control over the hardware is often neglected in favor of more convenient abstractions for the programmer that offer some important guarantees (such as memory safety). At the same time, older lower level languages, such as C, are still considered one of the few viable options for systems programming. This work proposes a new low level programming language called Light that makes use of meta-programming ideas, commonly present in higher level, interpreted languages, in a compiled one. Light is a lower level, statically typed language that focuses on simplicity, consistent syntax and understandability. It has minimal runtime, no garbage collection and is composed of a simple core with a meta-programming layer built on top. We will present the complete language design and its compiler implementation. The objective of this work is to provide a general purpose system language that uses meta-programming to complement the base language as a tool to the programmer for building software.O aumento em poder computacional nas últimas decadas permitiram a criação e estabelecimento de diversas linguagens de programação de alto nível como Java e Python. Nessas linguagens, controle sobre o hardware é constantemente esquecido em favor de abstrações mais convenientes para o programador que oferencem algumas garantias importantes (como segurança de memória). Ao mesmo tempo, antigas linguagens de baixo nível como C, ainda são consideradas uma das poucas alternativas para linguagens de sistema. Esse trabalho propõe uma nova linguagem de programação de baixo nível chamada Light que faz uso de conceitos de meta-programação, comumente presentes em linguagens interpretadas de alto nível, em uma linguagem compilada. Light é uma linguagem de baixo nível, estaticamente tipada com foco em simplicidade, consistência de sintaxe e compreensibilidade. Possui ambiente de execução mínimo, não possui coletor de lixo e é composta de um núcleo simples com uma camada de meta-programação construída por cima. Nós apresentaremos o projeto completo da linguagem e a implementação de seu compilador. O objetivo deste trabalho é oferecer uma linguagem de sistema de uso geral que utiliza-se de meta-programação para complementar a linguagem base como uma ferramenta para o programador construir software

    Aspect-Oriented Programming

    Get PDF
    Aspect-oriented programming is a promising idea that can improve the quality of software by reduce the problem of code tangling and improving the separation of concerns. At ECOOP'97, the first AOP workshop brought together a number of researchers interested in aspect-orientation. At ECOOP'98, during the second AOP workshop the participants reported on progress in some research topics and raised more issues that were further discussed. \ud \ud This year, the ideas and concepts of AOP have been spread and adopted more widely, and, accordingly, the workshop received many submissions covering areas from design and application of aspects to design and implementation of aspect languages

    Towards Business Processes Orchestrating the Physical Enterprise with Wireless Sensor Networks

    Get PDF
    The industrial adoption of wireless sensor net- works (WSNs) is hampered by two main factors. First, there is a lack of integration of WSNs with business process modeling languages and back-ends. Second, programming WSNs is still challenging as it is mainly performed at the operating system level. To this end, we provide makeSense: a unified programming framework and a compilation chain that, from high-level business process specifications, generates code ready for deployment on WSN nodes

    Lisp, Jazz, Aikido -- Three Expressions of a Single Essence

    Full text link
    The relation between Science (what we can explain) and Art (what we can't) has long been acknowledged and while every science contains an artistic part, every art form also needs a bit of science. Among all scientific disciplines, programming holds a special place for two reasons. First, the artistic part is not only undeniable but also essential. Second, and much like in a purely artistic discipline, the act of programming is driven partly by the notion of aesthetics: the pleasure we have in creating beautiful things. Even though the importance of aesthetics in the act of programming is now unquestioned, more could still be written on the subject. The field called "psychology of programming" focuses on the cognitive aspects of the activity, with the goal of improving the productivity of programmers. While many scientists have emphasized their concern for aesthetics and the impact it has on their activity, few computer scientists have actually written about their thought process while programming. What makes us like or dislike such and such language or paradigm? Why do we shape our programs the way we do? By answering these questions from the angle of aesthetics, we may be able to shed some new light on the art of programming. Starting from the assumption that aesthetics is an inherently transversal dimension, it should be possible for every programmer to find the same aesthetic driving force in every creative activity they undertake, not just programming, and in doing so, get deeper insight on why and how they do things the way they do. On the other hand, because our aesthetic sensitivities are so personal, all we can really do is relate our own experiences and share it with others, in the hope that it will inspire them to do the same. My personal life has been revolving around three major creative activities, of equal importance: programming in Lisp, playing Jazz music, and practicing Aikido. But why so many of them, why so different ones, and why these specifically? By introspecting my personal aesthetic sensitivities, I eventually realized that my tastes in the scientific, artistic, and physical domains are all motivated by the same driving forces, hence unifying Lisp, Jazz, and Aikido as three expressions of a single essence, not so different after all. Lisp, Jazz, and Aikido are governed by a limited set of rules which remain simple and unobtrusive. Conforming to them is a pleasure. Because Lisp, Jazz, and Aikido are inherently introspective disciplines, they also invite you to transgress the rules in order to find your own. Breaking the rules is fun. Finally, if Lisp, Jazz, and Aikido unify so many paradigms, styles, or techniques, it is not by mere accumulation but because they live at the meta-level and let you reinvent them. Working at the meta-level is an enlightening experience. Understand your aesthetic sensitivities and you may gain considerable insight on your own psychology of programming. Mine is perhaps common to most lispers. Perhaps also common to other programming communities, but that, is for the reader to decide..

    A new module system for prolog

    Get PDF
    It is now widely accepted that separating programs into modules has proven very useful in program development and maintenance. While many Prolog implementations include useful module systems, we feel that these systems can be improved in a number of ways, such as, for example, being more amenable to effective global analysis and allowing sepárate compilation or sensible creation of standalone executables. We discuss a number of issues related to the design of such an improved module system for Prolog. Based on this, we present the choices made in the Ciao module system, which has been designed to meet a number of objectives: allowing sepárate compilation, extensibility in features and in syntax, amenability to modular global analysis, etc
    corecore