|
While Fortran 90 is not a full object-oriented language it can directly support many of the important concepts of such languages including abstract data types, encapsulation, function overloading, and classes. Other concepts, such as inheritance and dynamic dispatching, are not supported directly, but can be emulated. (Direct support is a Fortran 2000 requirement.) Since Fortran 90 is backward compatible with Fortran 77, new concepts can be introduced into existing programs in a controlled manner. This allows experienced Fortran 77 programmers to modernize their software, making it easier to understand, modify, share, explain, and extend based on the benefits modern programming principles provide.
For a short summary of the major points see "Expressing Object-Oriented Concepts in Fortran 90", which appeared in the ACM Fortran Forum, vol. 16, num. 1, April 1997.
See also "Introduction to Object-Oriented Concepts Using Fortran 90".
We also have a paper that addresses, and corrects common misconceptions, regarding comparisons of Fortran 90 and C++ for scientific computing. In particular, we discuss "How to Support Inheritance and Run-Time Polymorphism in Fortran 90", V. K. Decyk, C. D. Norton, and B. K. Szymanski. Here is a postscript version.
A paper describing, in full detail, how C++ constructs and object-oriented ideas can be modeled in Fortran 90 is available in "How to Express C++ Concepts in Fortran 90", V. K. Decyk, C. D. Norton, and B. K. Szymanski.
We have written a variety of object-oriented plasma particle-in-cell programs on sequential workstations and high performance distributed memory computers in Fortran 90 and C++. All of our Fortran 90 programs execute more quickly than the equivalent C++ versions, yet the abstraction modeling capabilities that we needed were comparably powerful. We encourage you to explore these pages and to contact us directly with your questions and commentary.
Please contact us with your questions and comments. |