Viktor K. Decyk, Charles D. Norton, and Boleslaw K. Szymanski

Welcome to our WWW page introducing our research in object-oriented programming using the Fortran 90 programming language. Fortran 90 is a modern language that introduces many important new features beneficial for scientific programming. While the array-syntax notation has received the most attention, we have found that many modern software development techniques can be supported by this language, including object-oriented concepts.

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.

Gotcha! Click here for Fortran 90 bug bites.

Click here for performance studies with abstract data types.

For beginners to Fortran 90 we recommend F, a subset language which includes all of the new modern features of Fortran 90 and excludes the less desirable features. F is simple, inexpensive, and encourages good programming style compatible with Fortran 90.

For introductory Fortran 90 examples, written by high school students, we recommend looking at "A Scientific Visualization Exhibit".

Click here of a German translation of the page done by a volunteer, Alexey Gnatuk

Bulgarian translation courtesy of Go Science

Click here of a Belorussian translation of the page done by a volunteer, Bohdan Zograf

Slovenian translation created by NextRanks


The research of Viktor K. Decyk was carried out in part at UCLA and was sponsored by US-DOE and NSF. It was also carried out in part at the Jet Propulsion Laboratory, California Institute of Technology, under a contract with the National Aeronautics and Space Administration. The research of Charles D. Norton was supported by the National Aeronautics and Space Administration Graduate Student Researchers Program and by NSF. The research of Boleslaw K. Szymanski was partially supported by NSF. We appreciate the support of Robert D. Ferraro, Associate Project Manager NASA HPCC, Jet Propulsion Laboratory, California Institute of Technology. Portions of this research are based on sections of Charles Norton's Ph.D thesis.

Please contact us with your questions and comments.