concurrent paradigm, namely functional programming extended with threads and ports, which I call multi-agent dataflow programming. * The declarative concurrent subset (no ports) has no race conditions and can be programmed like a functional language. The basic concept is dataflow synchronization of single-assignment variables. A useful data structure is the stream, a list with dataflow tail used as a communication channel. * Nondeterminism can be added exactly where needed and minimally, by using ports - a named stream to which any thread can send. * All functional building blocks are concurrency patterns. Map, fold, filter, etc., are all useful for building concurrent programs. * Concurrent systems can be configured in any order and concurrently with actual use of the system. * Designing concurrent programs is any declarative part of the program can be put in own thread, loosening the coupling between system's parts * The paradigm is easily extended
The abstract: We propose a novel, comonadic approach to dataflow (streambased) computation. This is based on the observation that both general and causal stream functions can be characterized as coKleisli arrows of comonads and on the intuition that comonads in general must be a good means to structure context-dependent computation. In particular, we develop a generic comonadic interpreter of languages for context-dependent computation and instantiate it for stream-based computation. We also discuss distributive laws of a comonad over a monad as a means to structure combinations of effectful and context-dependent computation. If you've ever wondered about dataflow or comonads, this paper is a good read. It begins with short reviews of monads, arrows, and comonads and includes an implementation. One feature that stood out is the idea of a higher-order dataflow language.
Comonads are an abstraction from category theory dualing many qualities of Monads. They are conceptually much simpler than arrows but seem to offer a solution to some problems not easily solved by monads. The ideas presented here are not novel except for the comonadic combinators for a nicer syntax. Typeclass Combinators Reader State Stream Writer Links
The Apache Hadoop project develops open-source software for reliable, scalable, distributed computing, including:
* Hadoop Core, our flagship sub-project, provides a distributed filesystem (HDFS) and support for the MapReduce distributed computing framework.
* HBase builds on Hadoop Core to provide a scalable, distributed database.
* Pig is a high-level data-flow language and execution framework for parallel computation. It is built on top of Hadoop Core.
* ZooKeeper is a highly available and reliable coordination system. Distributed applications use ZooKeeper to store and mediate updates for critical shared state.
* Hive is a data warehouse infrastructure built on Hadoop Core that provides data summarization, adhoc querying and analysis of datasets.
T. Reps, S. Horwitz, and M. Sagiv. Proceedings of the 22Nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, page 49--61. New York, NY, USA, ACM, (1995)
T. Renaux, L. Hoste, S. Marr, and W. De Meuter. Proceedings of the 2nd edition on Programming Systems, Languages and Applications based on Actors, Agents, and Decentralized Control Abstractions, page 35--46. (October 2012)
W. Thies, M. Karczmarek, and S. Amarasinghe. Proceedings of the 11th International Conference on Compiler Construction, page 179--196. London, UK, UK, Springer-Verlag, (2002)
V. Kahlon. LICS '08: Proceedings of the 2008 23rd Annual IEEE Symposium on Logic in Computer Science, page 181--192. Washington, DC, USA, IEEE Computer Society, (2008)
Éric Piel, and A. Gonzalez-Sanchez. SINTER '09: Proceedings of the 2009 ESEC/FSE workshop on Software integration and evolution @ runtime, page 3--10. New York, NY, USA, ACM, (2009)
N. Nethercote. University of Cambridge, A dissertation submitted for the degree of Doctor of Philosophy, (November 2004)It's related with Valgrind framework.
fulltitle:
Dynamic Binary Analysis and Instrumentation
or
Building Tools is Easy
Parts of the research presented in this dissertation have been previously published or presented in the
following papers.
Nicholas Nethercote and Alan Mycroft.
The cache behaviour of large lazy functional programs
on stock hardware. In Proceedings of the ACM SIGPLAN Workshop on Memory System Performance
(MSP 2002), pages 44–55, Berlin, Germany, July 2002.
Nicholas Nethercote and Alan Mycroft.
Redux: A dynamic dataflow tracer.
In Proceedings of
the Third Workshop on Runtime Verification (RV’03), Boulder, Colorado, USA, July 2003.
Nicholas Nethercote and Julian Seward.
Valgrind: A program supervision framework.
In Pro-
ceedings of the Third Workshop on Runtime Verification (RV’03), Boulder, Colorado, USA, July 2003.
Nicholas Nethercote and Jeremy Fitzhardinge.
Bounds-checking entire programs without recom-
piling. In Informal Proceedings of the Second Workshop on Semantics, Program Analysis, and Com-
puting Environments for Memory Management (SPACE 2004), Venice, Italy, January 2004..