305 research outputs found

    Foundations of Object-Oriented Languages

    Get PDF

    Improving Prolog programs: Refactoring for Prolog

    Full text link
    Refactoring is an established technique from the object-oriented (OO) programming community to restructure code: it aims at improving software readability, maintainability and extensibility. Although refactoring is not tied to the OO-paradigm in particular, its ideas have not been applied to Logic Programming until now. This paper applies the ideas of refactoring to Prolog programs. A catalogue is presented listing refactorings classified according to scope. Some of the refactorings have been adapted from the OO-paradigm, while others have been specifically designed for Prolog. The discrepancy between intended and operational semantics in Prolog is also addressed by some of the refactorings. In addition, ViPReSS, a semi-automatic refactoring browser, is discussed and the experience with applying ViPReSS to a large Prolog legacy system is reported. The main conclusion is that refactoring is both a viable technique in Prolog and a rather desirable one.Comment: To appear in Theory and Practice of Logic Programming (TPLP

    Refactoring Functional Programs

    Get PDF
    Refactoring is the process of redesigning existing code without changing its functionality. Refactoring has recently come to prominence in the OO community. In this paper we explore the prospects for refactoring functional programs. Our paper centres on the case study of refactoring a 400 line Haskell program written by one of our students. The case study illustrates the type and variety of program manipulations involved in refactoring. Similarly to other program transformations, refactorings are based on program equivalences, and thus ultimately on language semantics. In the context of functional languages, refactorings can be based on existing theory and program analyses. However, the use of program transformations for program restructuring emphasises a different kind of transformation from the more traditional derivation or optimisation: characteristically, they often require wholesale changes to a collection of modules, and although they are best controlled by programmers, their application may require nontrivial semantic analyses. The paper also explores the background to refactoring, provides a taxonomy for describing refactorings and draws some conclusions about refactoring for functional programs

    Improving Prolog Programs: Refactoring for Prolog

    Full text link
    Refactoring is an established technique from the OO-community to restructure code: it aims at improving software readability, maintainability and extensibility. Although refactoring is not tied to the OO-paradigm in particular, its ideas have not been applied to Logic Programming until now. This paper applies the ideas of refactoring to Prolog programs. A catalogue is presented listing refactorings classified according to scope. Some of the refactorings have been adapted from the OO-paradigm, while others have been specifically designed for Prolog. Also the discrepancy between intended and operational semantics in Prolog is addressed by some of the refactorings. In addition, ViPReSS, a semi-automatic refactoring browser, is discussed and the experience with applying \vipress to a large Prolog legacy system is reported. Our main conclusion is that refactoring is not only a viable technique in Prolog but also a rather desirable one.Comment: To appear in ICLP 200

    A Case Study in Refactoring Functional Programs

    Get PDF
    Refactoring is the process of redesigning existing code without changing its functionality. Refactoring has recently come to prominence in the OO community. In this paper we explore the prospects for refactoring functional programs. Our paper centres on the case study of refactoring a 400 line Haskell program written by one of our students. The case study illustrates the type and variety of program manipulations involved in refactoring. Similarly to other program transformations, refactorings are based on program equivalences, and thus ultimately on language semantics. In the context of functional languages, refactorings can be based on existing theory and program analyses. However, the use of program transformations for program restructuring emphasises a different kind of transformation from the more traditional derivation or optimisation: characteristically, they often require wholesale changes to a collection of modules, and although they are best controlled by programmers, their application may require nontrivial semantic analyses. The paper also explores the background to refactoring, provides a taxonomy for describing refactorings and draws some conclusions about refactoring for functional programs

    LCM and MCM: specification of a control system using dynamic logic and process algebra

    Get PDF
    LCM 3.0 is a specification language based on dynamic logic and process algebra, and can be used to specify systems of dynamic objects that communicate synchronously. LCM 3.0 was developed for the specification of object-oriented information systems, but contains sufficient facilities for the specification of control to apply it to the specification of control-intensive systems as well. In this paper, the results of such an application are reported. The paper concludes with a discussion of the need for theorem-proving support and of the extensions that would be needed to be able to specify real-time properties

    Sistema interactivo como objeto virtual de aprendizaje aplicado a las técnicas de comunicación en comunidades lejanas de la República Democrática del Congo

    Get PDF
    El presente trabajo contiene la descripción del producto final del proyecto 'Sistema interactivo como objeto virtual de aprendizaje aplicado a las técnicas de comunicación en comunidades lejanas de la República Democrática del Congo.', diseñado a la medida y basado en los requerimientos específicos del usuario final (Misioneros de la Consolata radicados en ese país). Este producto consiste en un prototipo de software orientado por los procesos del ciclo de vida del mismo (Planificación, análisis de requerimientos, diseño, desarrollo e implementación), realizado para aplicar las estrategias postuladas por la teoría de aprendizaje mixto (Blended Learning); las cuales se centran en la combinación de sesiones presenciales con actividades virtuales

    RELEVANCE OF SOCIAL CAPITAL FOR COMMUNITY EMPOWORMENT AND CONSERVATION EDUCATION IN ECOTOURISM DEVELOPMENT OF RURAL WEST JAVA, INDONESIA

    Get PDF
    Ecotourism success would depend on the community readiness to welcome and participate in tourism in terms of their attitudes towards tourism development, commitment, and capacity. These are related with expanding access to natural resources which are determined by the availability of local networks, collective actions, mutual trust, and social norms, which constitute social capital. Therefore, ecotourism as a tool of rural economic diversification requires social capital for its development. This study attempts to identify the relevance of social capital in empowering rural communities of West Java and enhancing conservation education for ecotourism development. The research was conducted in the Districts of Bogor, Sukabumi and Cianjur of West Java, Indonesia. The study employed a mixed method with predominantly qualitative approach to obtain data. Findings indicated that communities with higher social capital have higher potentials to induce ecotourism development through empowering community and minimize risks of environmental degradation through conservation education
    • …
    corecore