Although multicomputers are becoming feasible for solving large problems, they are difficult to program: Extraction of parallelism from scalar languages is possible, but limited. Parallelism in algorithm design is difficult for those who think in von Neumann terms. Portability of programs and programming skills can only be achieved by hiding the underlying… (More)
This paper gives a simple introduction to the concepts of Function Rank and the Rank Operator as they are defined in SHARP APL, and presents examples of their use. It shows the benefits, both in language design and in practice, of these concepts. Comparisons are made with other APL implementations, which do not use these concepts.
a prototype APL to C compiler (<italic>ACORN</italic>: APL to C On Real Numbers) was produced while investigating improved tools for solving numerically intensive problems on supercomputers. <italic>ACORN</italic> currently produces code which runs slower than hand-coded Cray FORTRAN, but we have identified the major performance bottlenecks, and believe we… (More)
Gerunds, verbal forms that can be used as nouns, are recognized as having utility in the realm of programming languages. We show that gerunds can be viewed as arrays of atomic representations of verbs (functions), in a way which is consistent with the syntax and semantics of APL, and which allows verbs to be first class objects in the language. We define… (More)
This article describes how <i>array predicates</i> were used to reduce the computational complexity of four APL primitive functions when one of their arguments is a permutation vector. The search primitives, <i>indexof</i> and set membership, and the sorting <i>primitives,</i> upgrade and downgrade, execute in linear time on such arguments. Our… (More)
<i>Array morphology</i> is the study of the form, structure, and evolution of arrays. An <i>array annotation</i> for a program written in an applicative array language is an abstract syntax tree for the program, amended with information about the arrays created by that program. Array notations are useful in the production of efficient compiled code for… (More)
We describe a highly parallel (SIMD within SPMD) tokenizer for the APL language, itself written in APL. The tokenizer does not break any new ground in the world of parallel computation, but does serve the didactic purpose of demonstrating that a large amount of parallelism exists in non-numeric computation. We plan to release the APEX APL Compiler,… (More)