6 research outputs found

    A survey on algorithmic debugging strategies

    Full text link
    Algorithmic debugging is a debugging technique that has been extended to practically all programming paradigms. Roughly speaking, the technique constructs an internal representation of all (sub)computations performed during the execution of a buggy program; and then, it asks the programmer about the correctness of such computations. The answers of the programmer guide the search for the bug until it is isolated by discarding correct parts of the program. After twenty years of research in algorithmic debugging many different techniques have appeared to improve the original proposal. Surprisingly, no study exists that joins together all these techniques and compares their advantages and their performance. This article presents a study that compares all current algorithmic debugging techniques and analyzes their differences and their costs. The research identifies the dimensions on which each strategy relies. This information allows us to combine the strong points of different strategies.This work has been partially supported by the Spanish Ministerio de Ciencia e Innovacion under Grant TIN2008-06622-C03-02 and by the Generalitat Valenciana under Grant PROMETEO/2011/052.Silva Galiana, JF. (2011). A survey on algorithmic debugging strategies. Advances in Engineering Software. 42(11):976-991. https://doi.org/10.1016/j.advengsoft.2011.05.024S976991421

    An Analysis of the Current Program Slicing and Algorithmic Debugging Based Techniques

    Full text link
    This thesis presents a classification of program slicing based techniques. The classification allows us to identify the differences between existing techniques, but it also allows us to predict new slicing techniques. The study identifies and compares the dimensions that influence current techniques.Silva Galiana, JF. (2008). An Analysis of the Current Program Slicing and Algorithmic Debugging Based Techniques. http://hdl.handle.net/10251/14300Archivo delegad

    Proving existential termination of normal logic programs

    Full text link

    Code generation for Mercury

    No full text
    We describe a compiler for Mercury, a new purely declarative logic programming language designed to provide the support that groups of application programmers need when building large programs. Mercury requires programmers to provide type, mode and determinism declarations. The front end of the compiler uses the information in these declarations to catch many errors that would otherwise require tedious debugging. The back end uses novel techniques to generate efficient code by taking advantage of this information and the clean semantics of Mercury. We show that the code generated by our implementation is significantly faster and more portable than the code generated by mature optimising implementations of other logic programming languages. 1 Introduction Conventional languages require programmers to pay attention to many low level details such as storage management. Mistakes in these details are often hard to find. Programming languages that take care of these details automatically ..
    corecore