Research Directions in Parallel Functional Programming


Book Description

Programming is hard. Building a large program is like constructing a steam locomotive through a hole the size of a postage stamp. An artefact that is the fruit of hundreds of person-years is only ever seen by anyone through a lOO-line window. In some ways it is astonishing that such large systems work at all. But parallel programming is much, much harder. There are so many more things to go wrong. Debugging is a nightmare. A bug that shows up on one run may never happen when you are looking for it - but unfailingly returns as soon as your attention moves elsewhere. A large fraction of the program's code can be made up of marshalling and coordination algorithms. The core application can easily be obscured by a maze of plumbing. Functional programming is a radical, elegant, high-level attack on the programming problem. Radical, because it dramatically eschews side-effects; elegant, because of its close connection with mathematics; high-level, be cause you can say a lot in one line. But functional programming is definitely not (yet) mainstream. That's the trouble with radical approaches: it's hard for them to break through and become mainstream. But that doesn't make functional programming any less fun, and it has turned out to be a won derful laboratory for rich type systems, automatic garbage collection, object models, and other stuff that has made the jump into the mainstream.










Encyclopedia of Parallel Computing


Book Description

Containing over 300 entries in an A-Z format, the Encyclopedia of Parallel Computing provides easy, intuitive access to relevant information for professionals and researchers seeking access to any aspect within the broad field of parallel computing. Topics for this comprehensive reference were selected, written, and peer-reviewed by an international pool of distinguished researchers in the field. The Encyclopedia is broad in scope, covering machine organization, programming languages, algorithms, and applications. Within each area, concepts, designs, and specific implementations are presented. The highly-structured essays in this work comprise synonyms, a definition and discussion of the topic, bibliographies, and links to related literature. Extensive cross-references to other entries within the Encyclopedia support efficient, user-friendly searchers for immediate access to useful information. Key concepts presented in the Encyclopedia of Parallel Computing include; laws and metrics; specific numerical and non-numerical algorithms; asynchronous algorithms; libraries of subroutines; benchmark suites; applications; sequential consistency and cache coherency; machine classes such as clusters, shared-memory multiprocessors, special-purpose machines and dataflow machines; specific machines such as Cray supercomputers, IBM’s cell processor and Intel’s multicore machines; race detection and auto parallelization; parallel programming languages, synchronization primitives, collective operations, message passing libraries, checkpointing, and operating systems. Topics covered: Speedup, Efficiency, Isoefficiency, Redundancy, Amdahls law, Computer Architecture Concepts, Parallel Machine Designs, Benmarks, Parallel Programming concepts & design, Algorithms, Parallel applications. This authoritative reference will be published in two formats: print and online. The online edition features hyperlinks to cross-references and to additional significant research. Related Subjects: supercomputing, high-performance computing, distributed computing




Explicit and Implicit Parallel Functional Programming


Book Description

This book investigates the relation between the two conflicting goals of explicitness and abstraction, for the implementation of parallel functional languages and skeletons. The first part describes the implementation of the parallel Haskell extension Eden in layers of increasing abstraction. The author derives a minimal monadic sublanguage for elementary parallel coordination, and discusses a generic runtime system for parallel computations, major parts of which are Haskell. The second main part concentrates on parallel skeletons - abstract algorithmic patterns with parallel implementation. Exemplarily, the author discusses implementations for data parallel skeletons (map, map-reduce, Google-MapReduce), and for topology skeletons, which describe interaction and communication in regularly structured process networks. The book is an in-depth study of parallel functional programming, both for researchers interested in the first part, and for professionals seeking new impulses for practical development of parallel programs. It shows that functional languages provide a suitable abstraction level to reason about parallel programming and to circumvent its complexity.




Central European Functional Programming School


Book Description

This volume presents eight carefully revised texts of selected lectures given by leading researchers of the field at the first Central European Functional Programming School, CEFP 2005, held in Budapest, Hungary, in July 2005. The eight revised full papers presented were carefully selected during two rounds of reviewing and improvement for inclusion in the book. The lectures cover a wide range of topics such as new programming language concepts for subtyping.




Process Algebra for Parallel and Distributed Processing


Book Description

Collects the Latest Research Involving the Application of Process Algebra to ComputingExploring state-of-the-art applications, Process Algebra for Parallel and Distributed Processing shows how one formal method of reasoning-process algebra-has become a powerful tool for solving design and implementation challenges of concurrent systems. Parallel Pr




High-Level Parallel Programming Models and Supportive Environments


Book Description

On the 23rd of April, 2001, the 6th Workshop on High-Level Parallel P- gramming Models and Supportive Environments (LCTES’98) was held in San Francisco. HIPShas been held over the past six years in conjunction with IPDPS, the Internation Parallel and Distributed Processing Symposium. The HIPSworkshop focuses on high-level programming of networks of wo- stations, computing clusters and of massively-parallel machines. Its goal is to bring together researchers working in the areas of applications, language design, compilers, system architecture and programming tools to discuss new devel- ments in programming such systems. In recent years, several standards have emerged with an increasing demand of support for parallel and distributed processing. On one end, message-passing frameworks, such as PVM, MPI and VIA, provide support for basic commu- cation. On the other hand, distributed object standards, such as CORBA and DCOM, provide support for handling remote objects in a client-server fashion but also ensure certain guarantees for the quality of services. The key issues for the success of programming parallel and distributed en- ronments are high-level programming concepts and e?ciency. In addition, other quality categories have to be taken into account, such as scalability, security, bandwidth guarantees and fault tolerance, just to name a few. Today’s challenge is to provide high-level programming concepts without s- ri?cing e?ciency. This is only possible by carefully designing for those concepts and by providing supportive programming environments that facilitate program development and tuning.




Implementation of Functional Languages


Book Description

This book constitutes the thoroughly refereed post-proceedings of the 12th International Workshop on Implementing Functional Languages, IFL 2000, held in Aachen, Germany in September 2000. The 15 revised full papers presented have gone through a thorough round of post-workshop reviewing and were selected from 33 workshop presentations. Among the topics covered are language concepts, type checking, compilation techniques, abstract interpretation, automatic program generation, abstract machine architectures, array processing, concurrent and parallel processing, heap management, runtime profiling, performance measurement, debugging and tracing, and tools and programming techniques.




Mastering Functional Programming


Book Description

Learn how functional programming can help you in deploying web servers and working with databases in a declarative and pure way Key Features Learn functional programming from scratch Program applications with side effects in a pure way Gain expertise in working with array tools for functional programming Book Description In large projects, it can get difficult keeping track of all the interdependencies of the code base and how its state changes at runtime. Functional Programming helps us solve these problems. It is a paradigm specifically designed to deal with the complexity of software development. This book will show you how the right abstractions can reduce complexity and make your code easy to read and understand. Mastering Functional Programming begins by touching upon the basics such as what lambdas are and how to write declarative code with the help of functions. It then moves on to more advanced concepts such as pure functions and type classes, the problems they aim to solve, and how to use them in real-world scenarios. You will also explore some of the more advanced patterns in the world of functional programming, such as monad transformers and Tagless Final. In the concluding chapters, you will be introduced to the actor model, implement it in modern functional languages, and explore the subject of parallel programming. By the end of the book, you will have mastered the concepts entailing functional programming along with object-oriented programming (OOP) to build robust applications. What you will learn Write reliable and scalable software based on solid foundations Explore the cutting edge of computer science research Effectively solve complex architectural problems in a robust way Avoid unwanted outcomes such as errors or delays and focus on business logic Write parallel programs in a functional style using the actor model Use functional data structures and collections in your day-to-day work Who this book is for If you are from an imperative and OOP background, this book will guide you through the world of functional programming, irrespective of which programming language you use.