When testing concepts that act on large data sets, one is confronted with the problem of needing results in a limited time to test one's ideas. Thus efficiency becomes another important criterion. Parallel computers greatly reduce turn-around time for many computational problems. However, there is no standard portable programming language which allows such an object-oriented parallel portable implementation. We believe that it is essential to support a portable programming environment and an object-oriented framework that mixes Fortran90 and C++ across the entire range of supercomputer platforms, if we are to tackle large numerical problems.
Depending on what field of activity one is associated with, there are different points that vary in importance. For teaching purposes, readability and exposure of ideas are most important, while for research purposes, easy translation of mathematical concepts to numerical implementation dominates. For real work, the pressing issue is efficiency and speed to solve a real world problem. In maintaining a large program base it is necessary to have the flexibility to add new concepts with ease. In situations where one is involved in cooperative research projects, reusable portable code libraries become the important asset. The ability to assimilate and distribute them transparently is of great importance.
None of the current computer languages fulfills these goals per se. Some of the computer programming languages, however, are pretty close to what one would like: C++ and Fortran90. Let us quickly characterize a programming world by using the following fragments together: