previous up next print clean
Next: How Up: BINDING C++ with FORTRAN90 Previous: BINDING C++ with FORTRAN90

Why

Object-oriented programming offers many benefits to researchers constantly trying new ideas and implementations. However, the mainstay of scientific and engineering programming is Fortran. The reasons for this are more than cultural. The restrictions in the Fortran type-system prohibit the use of pointers beyond the simple alias mechanisms allowed by Fortran90. Consequently, Fortran compilers can perform data-dependence-based optimizations which are not possible in C++. In addition, code generation technology and optimized intrinsic library functions present in Fortran are much better than their C++ counterparts. With the present generation of Fortran90 compilers, vector and array operations are easy to compile into efficient code.

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:

However, such a world is not a ``standard'' world: there is no programming standard (given by compiler writers or standard committees) for linking both languages together. So that one could potentially be at the mercy of the compiler writers.


previous up next print clean
Next: How Up: BINDING C++ with FORTRAN90 Previous: BINDING C++ with FORTRAN90
Stanford Exploration Project
11/11/1997