Fortran Wiki
About Fortran evolution and OOP

I saw some entries in this site about Fortran and OOP, some in favour and some in contra.

I think that OOP adds more complexity. The C++ book available at this time, has about 1600 pages. One chose a language first based on the characteristics of the language, but the available libraries are a very important factor too. Fortran was the first high level programming language designed for numerical computation. There are lots of programs written since 1953, an important collection in the ACM-CALGO. (Collected Algorithms).

OOP is a misleading adoption of the Actor model that was proposed by Hewitt and the Simula language by Dahl and Nygaard. OOP, originally by A. Key, but more popular the monster C++ by Stroutstrup and its descendants like Java were adopted by lots of programmers (its a fact that the masses can be wrong!).

Both Fortran and many popular OO languages lack symbolic computation features. Important to transform formulas.

The Lisp language (1958) is a functional language designed for symbolic computation. In that language is possible to compute the symbolic derivate of a function and use it. That is more precise than any numeric differentiation algorithm.

Other old player APL, had arrays as the basic data type. The interesting thing is the basis of array operators is very powerful and programs are written composing them.

Fortran is still a good language for scientific computation, one is going to take advantage of the available libraries.

Fortran is still evolving and I think that adopting OO is not a good idea. Many of the languages used for scientific computation today inherited some features from the mentioned languages, like Mathematica or Matlab.

Fortran could gain more benefits learning from the symbolic computation of Lisp, the APL applicative model and the Actor model and Simula for simulations. However, such extensions could hardly be developed keeping backward compatibility with the more classic Fortran versions.

But a new rational preprocessor may complement some of dose features by doing some of the needed tasks like symbolic differentiation of formulas, composing efficiently array operations and developing a framework to generate simulation programs. In that way, Fortran could be kept backward compatible, with the benefit of adding the mentioned advantaged features.

(for those who had never heard about ratfor, rational Fortran, which was a preprocessor written as part of a collection of software tools for programming. Ratfor added structured programming, easier I/O and file handling to Fortran IV. Although Brian Kernighan, a ratfor co-author, says that C was totally written by Dennis Ritchie, but many of the functions in C can be rooted to ratfor.).

After writing this entry I saw Parametric Fortran, it seem to have similar ideas. They have an example of symbolic differentiation. Although I think about a syntax closer to Fortran, as an extension analogous to ratfor. They wrote a preprocessor with Haskell, one of the best programming languages with no doubt. Maybe the Racket (a descendant of Lisp via Scheme) community may have something easier to adapt, because their philosophy is to write programs as language interpreters.

Anyway the idea is not change Fortran into a new different language, but something backwards compatible, but with al the new features that actual scientific computation needs.