It depends on the actual application. In the case of Fortran, you have a couple of issues. One is a huge library of Fortran routines, some of which are huge, mathematically complicated, and known to be "bug free", for many specific applications. The huge number of libraries represent the "reusable" code for Fortran. The second issue is that Fortran is often the most optimized compiler available for some super-computers (Cray series for example), partly because of the acceptance of proprietary extensions to Fortan to take advantage of machine specific implementations, such as vectors on vector oriented super computers (although Cray seems to be the last maker of vector type machines).
Take a typical scientific application like the sensing of air velocity and pressure upon an object in a wind tunnel, and doing some lift, drag, temperature, and related calculations. There are hundreds or thousands of sensors on the object, and most of this task isn't too complicated other than the fact that a lot of parallel but independent processes occur at the same time and at a high sampling rate, which is ideal for usage of super computers. The code is rather straight forward, and I don't see any advantage to making such code object oriented, as the objects in this case (the sensor data) are too simple to warrant encapsulation and other common object oriented programming methods.
Every language has it's purpose. I'd hate to try and code the equivalent of Cobol's "move corresponding" (moves and formats elements from one structure to another structure, using another structure for the formatting desciption, based on having identical element names in the different structures), in another language.
There are good cases for object oriented programming as well though, usually when there are widely used structures in an application. In the case of Windows, there's a huge object oriented library for it's GUI interface. The standard template "library" for C++ is another example, although it's not really a library but actual source code that is included with the programmers code. Several C++ compilers offer the standard template "library".
I've seen a few applications where C++ is used for the user interface part of an application, while standard C code is used for the internal part of the same application. This was fairly common in the 1990's, I'm not sure if it's still that typical today.
I did use APL in the 1970's, but mostly as a glorified calculator, although I did do some more complicated stuff with it like writing a few programs to solve puzzles like this one.
http://en.wikipedia.org/wiki/Zebra_Puzzle
The method I used was to create a 6 dimensional "tensor" for the 6 qualities: (house order (left to right), house color, nationality, drink, smoke, pet), with 5 elements in each dimention. This "tensor" starts off with all elements set to 1, then the puzzle statements are tranlated into APL statements that clear the 1's to 0's based on inequalities (equalites translate into a set of inequalites). After inputing the statement facts, some possiblities would be eliminated, for example, if a Spaniard drinks coffee, than no one else can drink coffee and vice versa, the only true "deductive" logic in the program. I then added code manually to handle the "next to" cases instead of trying to solve them generically. Trying to implement this in another language would have taken much longer than it did with APL.
Most of my currenty programming is embedded firmware, and the only sophisticated stuff I do is ECC, compression, and multi-tasking type stuff. I don't do a lot of math programming, but for my coworkers that do, it's clear that MatLab is the way to go, although it's very expensive for non-students.