Here, parallelism is represented by a sequence of array operations where each element is calculated independently by user defined or system library functions---these allow one to add or multiply arrays and vectors, find maxima and combine such elemental operations. The user aids the compiler in implementing parallel array operations with commands that lay out the arrays over the nodes of the parallel machine. SIMD machines from AMT, Maspar, and Thinking Machines first popularized this approach with languages, such as CM Fortran. These ideas were extended to MIMD systems, and the latest research data parallel languages can handle complex irregular applications. An industry standard HPF or High-Performance Fortran has been adopted, and the first commercial compilers are now becoming available. High Performance Fortran offers a uniform software environment, which will allow the user to develop applications independently of the different hardware architectures discussed above---this is what we mean by a scalable portable software system.