10 research outputs found

    Pattern-based program visualization

    Get PDF
    The aim of this paper is to discuss how our pattern-based strategy for the visualization of data and control flow can effectively be used to animate the program and exhibit its behavior. That result allows us to propose its use for Program Comprehension. The animator uses well known compiler techniques to inspect the source code in order to extract the necessary information to visualize it and understand program execution. We convert the source program into an internal decorated (or attributed) abstract syntax tree and then we visualize the structure by traversing it, and applying visualization rules at each node according to a pre-defined rule-base. No changes are made in the source code, and the execution is simulated. Several examples of visualization are shown to illustrate the approach and support our idea of applying it in the context of a Program Comprehension environment.FC

    ALMA versus DDD

    Get PDF
    To be a debugger is a good thing! Since the very beginning of the programming activity, debuggers are the most important and widely used tools after editors and compilers; we completely recognize their importance for software development and testing. Debuggers work at machine level, after the compilation of the source program; they deal with assembly, or binary-code, and are mainly data structure inspectors. Alma is a program animator based on its abstract representation. The main idea is to show the algorithm being implemented by the program, independently from the language used to implement it. To say that ALMA is a debugger, with no value added, is not true! ALMA is a source code inspector but it deals with programming concepts instead of machine code. This makes possible to understand the source program at a conceptual level, and not only to fix run time errors. In this paper we compare our visualizer/animator system, ALMA, with one of the most well-known and used debuggers, the graphical version of GDB, the DDD program. The aim of the paper is twofold: the immediate objective is to prove that ALMA provides new features that are not usually offered by debuggers; the main contribution is to recall the concepts of debugger and animator, and clarify the role of both tools in the field of program understanding, or program comprehension.FC

    Constructing program animations using a pattern-based approach

    Get PDF
    The aim of this paper is to discuss how our pattern-based strategy for the visualization of data and control flow can effectively be used to animate the program and exhibit its behavior. That result allows us to propose its use for Program Comprehension. The animator uses well known compiler techniques to inspect the source code in order to extract the necessary information to visualize it and understand program execution. We convert the source program into an internal decorated (or attributed) abstract syntax tree and then we visualize the structure by traversing it, and applying visualization rules at each node according to a pre-defined rule-base. In order to calculate the next step in the program execution, a set of rewriting rules are applied to the tree. The visualization of this new tree is shown and the program animation is constructed using an iterative process. No changes are made in the source code, and the execution is simulated step by step. Several examples of visualization are shown to illustrate the approach and support our idea of applying it in the context of a Program Comprehension environment.FC

    Code inspection approaches for program visualization

    Get PDF
    The aim of this paper is to show the approaches involved in the implementation of two tools of PCVIA project that can be used for Program Comprehension. Both tools use known compiler techniques to inspect code in order to visualize and understand programs’ execution but one of them modifies the source code and the other not. In the non-invasive approach, we convert the source program into an internal decorated (or attributed) abstract syntax tree and then we visualize the structure traversing it, and applying visualization rules at each node according to a pre-defined rule-base. No changes are made in the source code, and the execution is simulated. In the invasive approach, we traverse the source program and instrument it with inspection functions. Those functions, also known as inspectors, provide information about the function-call flow and data usage at runtime (during the actual program execution). This information is collected and gathered in an information repository that is then displayed in a suitable form for navigation. These two different approaches are used respectively by Alma (generic program animation system) and CEAR (C Rooting Algorithm Visualization tool). For each tool several examples of visualization are shown in order to discuss the information that is included in the visualizations, visualization types and the use of Program Animation for Program Comprehension.FC

    Supporting the DSL Spectrum

    Get PDF
    A language tailored to the problem domain can focus on its idioms and jargon, avoiding clumsy, overly general constructs needed to support general-purpose language. The leverage provided by DSLs over conventional programming languages is often extreme; application engineers may specify as little as 2% of the code that one would need to program the same thing in a conventional programming language! But commitment to a DSL approach can be rather expensive. It is often difficult to know when to invest in exactly how much infrastructure support for a product or product family. All of the concerns that are germane to generalpurpose programming language design and support may become important in the support of a specific DSL. At the same time, there is a wide spectrum of approaches to providing DSL support. This paper relates the various DSL design approaches to alternatives for tool support, providing a kind of “DSL tool support selection framework,” indicating where one might expect to need to invest heavily to obtain adequate support and illustrating the spectrum of tradeoffs and situations in which each is appropriate

    OO-IP hybrid language design and a framework approach to the GIPC

    Get PDF
    Intensional Programming is a declarative programming paradigm in which expressions are evaluated in an inherently multidimensional context space. The Lucid family of programming languages is, to this day, the only programming languages of true intensional nature. Lucid being a functional language, Lucid programs are inherently parallel and their parallelism can be efficiently exploited by the adjunction of a procedural language to increase the granularity of its parallelism, forming hybrid Lucid languages. That very wide array of possibilities raises the need for an extremely flexible programming language investigation platform to investigate on this plethora of possibilities for Intensional Programming. That is the purpose of the General Intensional Programming System (GIPSY), especially, the General Intensional Programming Compiler (GIPC) component. The modularity, reusability and extensibility aspects of the framework approach make it an obvious candidate for the development of the GIPC. The framework presented in this thesis provides a better solution compared to all other techniques used to this day to implement the different variants of intensional programming. Because of the functionality of hybrid programming support in the GIPC framework, a new OO-IP hybrid language is designed for further research. This new hybrid language combines the essential characteristics of IPL and Java, and introduces the notion of object streams which makes it is possible that each element in an IPL stream could be an object with embedded intensional properties. Interestingly, this hybrid language also brings to Java objects the power which can explicitly express context, creating the novel concept of intensional objects, Le. objects whose evaluation is context-dependent, which are therein demonstrated to be translatable into standard objects. By this new feature, we extend the use and meaning of the notion of object and enrich the meaning of stream in IPL and semantics of Java. At the same time, during the procedure to introduce intensional objects and this OO-IP hybrid language, many factors are considered. These factors include how to integrate the new language with the GIPC framework design and the issues related to its integration in the current GIPSY implementation. Current semantic rules show that the new language can work well with the GIPC framework and the GIPSY implementation, which is another proof of the validity of our GIPC framework design. Ultimately, the proposed design is put into implementation in the GIPSY and the implementation put to test using programs from different application domains written in this new OO-IP languag

    Evaluación de enfoques de implementación de lenguajes de dominio específico

    Get PDF
    Un lenguaje de dominio específico es un lenguaje de programación diseñado para ser útil para un conjunto específico de tareas, en contraste con los lenguajes de propósito general. Usar un lenguaje de dominio específico comprende riesgos y oportunidades. Se gana expresividad y se obtiene mayor productividad, pero por otro lado el costo de desarrollar un DSL suele ser alto. El presente trabajo de grado es una ampliación y a su vez una síntesis de todo el trabajo realizado dentro de un proyecto bilateral de colaboración entre nuestro país y Eslovenia sobre lenguajes de dominio específico, del cual formé parte. El proyecto se llevó a cabo entre la Facultad de Informática de la Universidad Nacional de La Plata y la Facultad de Ingeniería Eléctrica y Ciencias de la Computación de la Universidad de Maribor, Eslovenia. El objetivo del proyecto fue la investigación del proceso de desarrollo de lenguajes de dominio específico, principalmente las etapas de diseño e implementación. Se abordaron principalmente el estudio de (nuevos) patrones de diseño para DSLs y la evaluación de enfoques de implementación de DSLs con el fin de obtener pautas o guías generales para tal tarea. Este trabajo de grado está dirigido a los desarrolladores de lenguajes interesados en brindar soluciones para dominios específicos que tienen poca experiencia en esta tarea, o que buscan guías para la implementación de los lenguajes de dominio específico.Facultad de Informátic

    Evaluación de enfoques de implementación de lenguajes de dominio específico

    Get PDF
    Un lenguaje de dominio específico es un lenguaje de programación diseñado para ser útil para un conjunto específico de tareas, en contraste con los lenguajes de propósito general. Usar un lenguaje de dominio específico comprende riesgos y oportunidades. Se gana expresividad y se obtiene mayor productividad, pero por otro lado el costo de desarrollar un DSL suele ser alto. El presente trabajo de grado es una ampliación y a su vez una síntesis de todo el trabajo realizado dentro de un proyecto bilateral de colaboración entre nuestro país y Eslovenia sobre lenguajes de dominio específico, del cual formé parte. El proyecto se llevó a cabo entre la Facultad de Informática de la Universidad Nacional de La Plata y la Facultad de Ingeniería Eléctrica y Ciencias de la Computación de la Universidad de Maribor, Eslovenia. El objetivo del proyecto fue la investigación del proceso de desarrollo de lenguajes de dominio específico, principalmente las etapas de diseño e implementación. Se abordaron principalmente el estudio de (nuevos) patrones de diseño para DSLs y la evaluación de enfoques de implementación de DSLs con el fin de obtener pautas o guías generales para tal tarea. Este trabajo de grado está dirigido a los desarrolladores de lenguajes interesados en brindar soluciones para dominios específicos que tienen poca experiencia en esta tarea, o que buscan guías para la implementación de los lenguajes de dominio específico.Facultad de Informátic
    corecore