ZPL programming language
Encyclopedia
ZPL is an array programming language designed to replace C and C++ programming languages in engineering and scientific applications. Because its design goal was to obtain cross-platform
high performance, ZPL programs run fast on both sequential
and parallel computers. Highly-parallel ZPL programs are simple and easy to write because it exclusively uses implicit parallelism
.
Originally called Orca C, ZPL was designed and implemented during 1993-1995 by the Orca Project of the Computer Science and Engineering Department at the University of Washington.
ZPL uses the array abstraction to implement a dataparallel programming model. This is the reason why ZPL achieves such good performance: having no parallel directives or other forms of explicit parallelism, ZPL exploits the operational trait that when aggregate computations are described in terms of arrays, many scalar operations must be (implicitly) performed to implement the array operations. This implied computation can be automatically allotted to different processors to achieve concurrency: Parallelism arises from the semantics of the array operations.
ZPL is translated into a conventional abstract syntax tree
representation on which program analysis
and program optimizations
are performed. ANSI C
code is generated as the object code. This C program (which is machine independent because it implements certain operations in abstract form) is then compiled using the native C compiler on the target machine with custom libraries optimized to the specific platform.
The creators of ZPL were: Brad Chamberlain, Sung-Eun Choi, E Christopher Lewis, Calvin Lin, Jason Secosky, Larry Snyder, and W. Derrick Weathersby with assistance from Ruth Anderson, A.J. Bernheim, Marios Dikaiakos, George Forman, and Kurt Partridge.
ZPL seems to be another 'ex-language'; the latest "What's new" entry on its website is dated 22 April 2004.
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...
high performance, ZPL programs run fast on both sequential
Sequence
In mathematics, a sequence is an ordered list of objects . Like a set, it contains members , and the number of terms is called the length of the sequence. Unlike a set, order matters, and exactly the same elements can appear multiple times at different positions in the sequence...
and parallel computers. Highly-parallel ZPL programs are simple and easy to write because it exclusively uses implicit parallelism
Implicit parallelism
In computer science, implicit parallelism is a characteristic of a programming language that allows a compiler or interpreter to automatically exploit the parallelism inherent to the computations expressed by some of the language's constructs...
.
Originally called Orca C, ZPL was designed and implemented during 1993-1995 by the Orca Project of the Computer Science and Engineering Department at the University of Washington.
ZPL uses the array abstraction to implement a dataparallel programming model. This is the reason why ZPL achieves such good performance: having no parallel directives or other forms of explicit parallelism, ZPL exploits the operational trait that when aggregate computations are described in terms of arrays, many scalar operations must be (implicitly) performed to implement the array operations. This implied computation can be automatically allotted to different processors to achieve concurrency: Parallelism arises from the semantics of the array operations.
ZPL is translated into a conventional abstract syntax tree
Abstract syntax tree
In computer science, an abstract syntax tree , or just syntax tree, is a tree representation of the abstract syntactic structure of source code written in a programming language. Each node of the tree denotes a construct occurring in the source code. The syntax is 'abstract' in the sense that it...
representation on which program analysis
Program analysis
Program analysis may refer to:* Program analysis , the process of automatically analysing the behavior of computer programs* Program evaluation, a disciplined way of assessing the merit, value, and worth of projects and programs...
and program optimizations
Optimization (computer science)
In computer science, program optimization or software optimization is the process of modifying a software system to make some aspect of it work more efficiently or use fewer resources...
are performed. ANSI C
ANSI C
ANSI C refers to the family of successive standards published by the American National Standards Institute for the C programming language. Software developers writing in C are encouraged to conform to the standards, as doing so aids portability between compilers.-History and outlook:The first...
code is generated as the object code. This C program (which is machine independent because it implements certain operations in abstract form) is then compiled using the native C compiler on the target machine with custom libraries optimized to the specific platform.
The creators of ZPL were: Brad Chamberlain, Sung-Eun Choi, E Christopher Lewis, Calvin Lin, Jason Secosky, Larry Snyder, and W. Derrick Weathersby with assistance from Ruth Anderson, A.J. Bernheim, Marios Dikaiakos, George Forman, and Kurt Partridge.
ZPL seems to be another 'ex-language'; the latest "What's new" entry on its website is dated 22 April 2004.
See also
- Array programmingArray programmingIn computer science, array programming languages generalize operations on scalars to apply transparently to vectors, matrices, and higher dimensional arrays....
- JJ (programming language)The J programming language, developed in the early 1990s by Kenneth E. Iverson and Roger Hui, is a synthesis of APL and the FP and FL function-level languages created by John Backus....
, KK (programming language)K is a proprietary array processing language developed by Arthur Whitney and commercialized by Kx Systems. The language serves as the foundation for kdb, an in-memory, column-based database, and other related financial products. The language, originally developed in 1993, is a variant of APL and... - Partitioned global address spacePartitioned global address spaceIn computer science, a partitioned global address space is a parallel programming model. It assumes a global memory address space that is logically partitioned and a portion of it is local to each processor. The novelty of PGAS is that the portions of the shared memory space may have an affinity...