An introduction to the theory of lists
Proceedings of the NATO Advanced Study Institute on Logic of programming and calculi of discrete design
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Handbook of theoretical computer science (vol. B)
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Parallelizing complex scans and reductions
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Shortcut deforestation in calculational form
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Algebra of programming
Parallelization in calculational forms
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Program transformation in calculational form
ACM Computing Surveys (CSUR) - Special issue: electronic supplement to the September 1998 issue
Introduction to Functional Programming
Introduction to Functional Programming
Systematic Efficient Parallelization of Scan and Other List Homomorphisms
Euro-Par '96 Proceedings of the Second International Euro-Par Conference on Parallel Processing-Volume II
Deriving Parallel Codes via Invariants
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
Computational Linguistics
Automatic inversion generates divide-and-conquer parallel programs
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
MapReduce: simplified data processing on large clusters
Communications of the ACM - 50th anniversary issue: 1958 - 2008
Hadoop: The Definitive Guide
Data-Intensive Text Processing with MapReduce
Data-Intensive Text Processing with MapReduce
A model of computation for MapReduce
SODA '10 Proceedings of the twenty-first annual ACM-SIAM symposium on Discrete Algorithms
Automatic parallelization via matrix multiplication
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Towards systematic parallel programming over mapreduce
Euro-Par'11 Proceedings of the 17th international conference on Parallel processing - Volume Part II
Program optimizations and transformations in calculation form
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
IEEE Transactions on Signal Processing
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Dynamic symbolic computation for domain-specific language implementation
LOPSTR'11 Proceedings of the 21st international conference on Logic-Based Program Synthesis and Transformation
Proceedings of the 2013 International Workshop on Programming Models and Applications for Multicores and Manycores
Proceedings of the 2nd ACM SIGPLAN workshop on Functional high-performance computing
Hi-index | 0.00 |
MapReduce, being inspired by the map and reduce primitives available in many functional languages, is the de facto standard for large scale data-intensive parallel programming. Although it has succeeded in popularizing the use of the two primitives for hiding the details of parallel computation, little effort has been made to emphasize the programming methodology behind, which has been intensively studied in the functional programming and program calculation fields. We show that MapReduce can be equipped with a programming theory in calculational form. By integrating the generate-and-test programing paradigm and semirings for aggregation of results, we propose a novel parallel programming framework for MapReduce. The framework consists of two important calculation theorems: the shortcut fusion theorem of semiring homomorphisms bridges the gap between specifications and efficient implementations, and the filter-embedding theorem helps to develop parallel programs in a systematic and incremental way. We give nontrivial examples that demonstrate how to apply our framework.