Date of Original Version



Technical Report

Rights Management

All Rights Reserved

Abstract or Description

Abstract: "Several programming languages arising from widely varying practical and theoretical considerations share a common high-level feature: their basic data type is an aggregate of other data types and their functional primitives operate on these aggregates. Examples of such languages and the collections they support are FORTRAN 90 and arrays, APL and arrays, Connection Machine LISP and xectors, PARALATION LISP and paralations, and SETL and sets. Acting on large collections of data with a single operation is the hallmark of data-parallel programming and massively parallel computers.These languages -- which we call collection-oriented -- are thus ideal for use with massively parallel machines, even though many of them were developed before parallelism and associated considerations became important. This paper examines collections and the operations that can be performed on them in a language-independent manner. It also critically reviews and compares a variety of collection-oriented languages with respect to their treatment of collections, gives many examples and code fragments from these languages, and elucidates certain problems that may arise when defining and implementing collection operations."