Arrays, Functional Languages, and Parallel Systems


Book Description

During a meeting in Toronto last winter, Mike Jenkins, Bob Bernecky and I were discussing how the two existing theories on arrays influenced or were in fluenced by programming languages and systems. More's Army Theory was the basis for NIAL and APL2 and Mullin's A Mathematics of A rmys(MOA) , is being used as an algebra of arrays in functional and A-calculus based pro gramming languages. MOA was influenced by Iverson's initial and extended algebra, the foundations for APL and J respectively. We discussed that there is a lot of interest in the Computer Science and Engineering communities concerning formal methods for languages that could support massively parallel operations in scientific computing, a back to-roots interest for both Mike and myself. Languages for this domain can no longer be informally developed since it is necessary to map languages easily to many multiprocessor architectures. Software systems intended for parallel computation require a formal basis so that modifications can be done with relative ease while ensuring integrity in design. List based lan guages are profiting from theoretical foundations such as the Bird-Meertens formalism. Their theory has been successfully used to describe list based parallel algorithms across many classes of architectures.




Functions, Objects and Parallelism


Book Description

This book aims to show how programming will be changed by the concepts of parallel systems and how these concepts relate to the ideas of functions and objects. To demonstrate the kind of programming that can be done on these systems, the research language Balinda K is used. The book will also enhance the reader's grasp of the concepts of concurrency and modular programming, reviewing these from the perspectives of application programming in a parallel language. The book should interest graduate and senior undergraduate students of computer science and computer engineering, and IT professionals working in a multiprocesing or distributed computing environment.




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.




Functional Programming, Glasgow 1993


Book Description

The Functional Programming Group at the University of Glasgow was started in 1986 by John Hughes and Mary Sheeran. Since then it has grown in size and strength, becoming one of the largest computing science research groups at Glasgow and earning an international reputation. The first Glasgow Functional Programming Workshop was organised in the summer of 1988. Its purpose was threefold: to provide a snapshot of all the research going on within the group, to share research ideas between Glaswegians and colleagues in the U.K. and abroad, and to introduce research students to the art of writing and presenting papers at a semi-formal (but still local and friendly) conference. The success of the first workshop has led to an annual series: Rothesay (1988), Fraserburgh (1989), Ullapool (1990). Portree (1991), Ayr (1992), and the workshop reported in these proceedings: Ayr (1993). Most participants wrote a paper that appeared in the draft proceedings (distributed at the workshop), and each draft paper was presented by one of the authors. The papers were all refereed by several other participants at the workshop, both internal and external, and the programme committee selected papers for these proceedings. Most papers have been revised twice, based firstly on feedback at the workshop, and secondly using the referee reports.




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.




Programming Models for Parallel Systems


Book Description

Presents parallel processing systems and the programming models that are necessary to accomplish this task. Covers the categories of parallel programming models, including sequential, array, pipeline and shared memory processing, message passing, and functional, logic, and object-oriented programming; examines transformation techniques; and explores the future potential of parallel processing.




Parallel Programming with Co-arrays


Book Description

Parallel Programming with Co-Arrays describes the basic techniques used to design parallel algorithms for high-performance, scientific computing. It is intended for upper-level undergraduate students and graduate students who need to develop parallel codes with little or no previous introduction to parallel computing. It is also intended as a reference manual for researchers active in the field of scientific computing. All the algorithms in the book are based on partition operators. These operators provide a unifying principle that fits seemingly disparate techniques into an overall framework for algorithm design. The book uses the co-array programming model to illustrate how to write code for concrete examples, but it emphasizes that the important concepts for algorithm design are independent of the programming model. With these concepts in mind, the reader can write algorithms in different programming models based on personal taste and comfort.




Encyclopedia of Microcomputers


Book Description

"The Encyclopedia of Microcomputers serves as the ideal companion reference to the popular Encyclopedia of Computer Science and Technology. Now in its 10th year of publication, this timely reference work details the broad spectrum of microcomputer technology, including microcomputer history; explains and illustrates the use of microcomputers throughout academe, business, government, and society in general; and assesses the future impact of this rapidly changing technology."




Introduction to Functional Programming Systems Using Haskell


Book Description

Here is an introduction to functional programming and its associated systems. A unique feature is its use of the language Haskell for teaching both the rudiments and the finer points of the functional technique. Haskell is a new, internationally agreed and accepted functional language that is designed for teaching, research and applications, that has a complete formal description, that is freely available, and that is based on ideas that have a wide consensus. Thus it encapsulates some of the main thrusts of functional programming itself, which is a style of programming designed to confront the software crisis directly. Programs written in functional languages can be built up from smaller parts, and they can also be proved correct, important when software has to be reliable. Moreover, a certain amount of parallelism can be extracted from functional languages automatically. This book serves as an introduction both to functional programming and Haskell, and will be most useful to students, teachers and researchers in either of these areas. An especially valuable feature are the chapters on programming and implementation, along with a large number of exercises.




Languages and Compilers for Parallel Computing


Book Description

This book presents the refereed proceedings of the Eighth Annual Workshop on Languages and Compilers for Parallel Computing, held in Columbus, Ohio in August 1995. The 38 full revised papers presented were carefully selected for inclusion in the proceedings and reflect the state of the art of research and advanced applications in parallel languages, restructuring compilers, and runtime systems. The papers are organized in sections on fine-grain parallelism, interprocedural analysis, program analysis, Fortran 90 and HPF, loop parallelization for HPF compilers, tools and libraries, loop-level optimization, automatic data distribution, compiler models, irregular computation, object-oriented and functional parallelism.