2 research outputs found

    Concurrencia tradicional en programación funcional

    Get PDF
    La Programación Funcional pura ha madurado en los últimos quince años. Varios desarrollos, tanto en el lado teórico como en lo práctico, han producido un florecimiento del área. El lenguaje Haskell es un lenguaje avanzado de programación funcional pura y perezosa, pensado para aplicaciones del mundo real, el cual es el resultado de los mencionados desarrollos. Con el advenimiento del modelo de entrada/salida monádico, a partir de la versión 1.3 del Haskell, la cáscara de más alto nivel de los programas funcionales se caracteriza por una secuencia de comandos u operaciones imperativas que tienen reminiscencia con los programas escritos en lenguajes imperativos como Pascal. Extensiones concurrentes y paralelas de Haskell han sido desarrolladas. Concurrent Haskell, la extensión concurrente del Haskell, trabaja sobre el framework monádico. Las propiedades de los lenguajes funcionales son mantenidas adecuadamente y aseguradas por el lenguaje. Sin embargo, ningún enfoque “imperativo” sobre los lenguajes funcionales ha sido aplicado con anterioridad. Este trabajo es un experimento para aplicar la “Concurrencia Tradicional en Programación Funcional”. Mecanismos, técnicas y sistemas de pruebas son tomados de la teoría convencional de lenguajes y aplicados al estudio de la programación funcional concurrente. La presentación se divide en dos partes principales. Una de desarrollo, donde se presenta el estudio, comparación e implementación de un conjunto de mecanismos de sincronización y comunicación entre procesos concurrentes. En la segunda parte se estudia la aplicación de métodos formales para la verificación de programas funcionales imperativos y concurrentes.Tesis digitalizada en SEDICI gracias a la colaboración de la Biblioteca de la Facultad de Informática.Facultad de Ciencias Exacta

    Advanced Concepts in Asynchronous Exception Handling

    Get PDF
    Asynchronous exception handling is a useful and sometimes necessary alternative form of communication among threads. This thesis examines and classifies general concepts related to asynchrony, asynchronous propagation control, and how asynchronous exception handling affects control flow. The work covers four advanced topics affecting asynchronous exception-handling in a multi-threaded environment. The first topic is concerned with the non-determinism that asynchronous exceptions introduce into a program's control-flow because exceptions can be propagated at virtually any point during execution. The concept of asynchronous propagation control, which restricts the set of exceptions that can be propagated, is examined in depth. Combining it with a restriction of asynchrony that permits propagation of asynchronous exceptions only at certain well-defined (poll) points can re-establish sufficient determinism to verify a program's correctness, but introduces overhead, as well as a delay between the delivery of an asynchronous exception and its propagation. It also disturbs a programmer's intuition about asynchronous propagation in the program, and requires the use of programming idioms to avoid errors. The second topic demonstrates how a combined model of full and restricted asynchrony can be safely employed, and thus, allow for a more intuitive use of asynchronous propagation control, as well as potentially improve performance. The third topic focuses on the delay of propagation that is introduced when a thread is blocked, i.e., on concurrency constructs that provide mutual exclusion or synchronization. An approach is presented to transparently unblock threads so propagation of asynchronous termination and resumption exceptions can begin immediately. The approach does not require additional syntax, simplifies certain programming situations, and can improve performance. The fourth topic explores usability issues affecting the understanding of (asynchronous) exception handling as a language feature. To overcome these issues, tools and language features are presented that help in understanding exception handling code by providing additional run-time information, as well as assist in testing. For all topics, the necessary extensions to the syntax/semantics of the language are discussed; where applicable, a prototypical implementation is presented, with examples that demonstrate the benefits of the new approaches
    corecore