4 research outputs found

    Miscomputation in software: Learning to live with errors

    Get PDF
    Computer programs do not always work as expected. In fact, ominous warnings about the desperate state of the software industry continue to be released with almost ritualistic regularity. In this paper, we look at the 60 years history of programming and at the different practical methods that software community developed to live with programming errors. We do so by observing a class of students discussing different approaches to programming errors. While learning about the different methods for dealing with errors, we uncover basic assumptions that proponents of different paradigms follow. We learn about the mathematical attempt to eliminate errors through formal methods, scientific method based on testing, a way of building reliable systems through engineering methods, as well as an artistic approach to live coding that accepts errors as a creative inspiration. This way, we can explore the differences and similarities among the different paradigms. By inviting proponents of different methods into a single discussion, we hope to open potential for new thinking about errors. When should we use which of the approaches? And what can software development learn from mathematics, science, engineering and art? When programming or studying programming, we are often enclosed in small communities and we take our basic assumptions for granted. Through the discussion in this paper, we attempt to map the large and rich space of programming ideas and provide reference points for exploring, perhaps foreign, ideas that can challenge some of our assumptions

    Functional and reactive systems design

    Get PDF
    Dado que los usuarios hoy en día requieren actualizaciones constantes del software que usan, son necesarios unos fundamentos de programación que permitan realizar cambios frecuentes en estos sistemas de una manera lo más simple posible. Los elementos propios de la Programación Funcional son fáciles de componer y están libres de efectos colaterales. Es por ello que este documento estudia la programación funcional como un paradigma para crear programas que pueden adaptarse con facilidad a los cambios que implican la evolución de requisitos. Al mismo tiempo, la capacidad del software de responder rápidamente a las interacciones con los usuarios es cada vez más importante. Los Sistemas Reactivos establecen un marco de referencia para crear aplicaciones que sean capaces de interaccionar con un número elevado de usuarios con una baja latencia y que sean además tolerantes a fallos. Estos conceptos no son presentados exclusivamente de un punto de vista teórico sino que también se acompañan de ejemplos prácticos y patrones útiles para crear Sistemas Funcionales y Reactivos. Finalmente, se estudia un caso de uso práctico en el que se utilizan todos los elementos que se han estudiado, implementando una aplicación que utiliza almacenamiento persistente y comunicación a través del protocolo HTTP de una forma puramente funcional, siguiendo además los principios propios de la programación reactiva

    The curse of the excluded middle

    No full text

    The Curse of the Excluded Middle

    No full text
    corecore