Why is there no Fortran standard library

fortranlanguage-features

To be a language focused on mathematics and scientific computing, I am always baffled by the total lack of useful mathematical routines in the Fortran standard library. One would expect it to be shipped at least with a routine to compute standard deviation and mean, but this is not the case. In particular with the introduction of Fortran 90 and the addition of modules (thus reducing namespace pollution), I don't see any reason why of this critical lack of services.

I would like to hear your knowledge about why this is the case.

Best Answer

Back when FORTRAN was developed, there was no such thing as portability of code. It was absolutely routine for the FORTRAN compiler on one machine to accept a slightly different language that the compiler on another machine. The most common variation was name length. The IBM 1130 FORTRAN allowed five characters, the DEC-10 allowed six, the CDC 6600 (my first machine, my first real assembly language) allowed seven. Three-dimensional arrays were required by the language; at least one minicomputer (Varian 76?) FORTRAN allowed seven-dimensional arrays.

Companies routinely extended their FORTRAN languages, to make their machines more appealing to customers, and, while the extensions might provide similar functionality, they were never identical. Lots of compilers provided extensions for doing file I/O and overlay management, and they were never identical. Sometimes they weren't even close.

FORTRAN-to-FORTRAN conversions, porting a program from one machine to another, was a very busy cottage industry, and the guys who could do it could always find work. (I worked two such conversions: I helped port the original Matuszek-Reynolds-McGehearty-Cohen "Star Trek" game from the CDC 6600 to the DEC-10, and I ported an EKG analysis program from Varian 76 to TI 990. No two such projects were identical.)

This kind of thing made it very, very difficult to provide "standard" libraries, although a few people tried. The IMSL library was the biggest, but it was shipped in source code form, and the customer was required to get it working on his system.

Also: FORTRAN programmers were expected to have a reasonable background in numerical methods. Just about every FORTRAN programmer on the planet in those days learned how to do mean and standard deviation for himself, as a homework assignment. Every FORTRAN programmer learned bisection and Newton-Raphson iteration (nowadays called "Newton's Method") in school. Runge-Kutta methods were taught, usually by rote, and, at that time, 6th-order Runge-Kutta integrators were textbook examples. (It was much later that people figured out that 4th order Runge-Kutta was the "sweet spot" on the cost-effectiveness curve.)

And: Programmers RARELY changed computers without also changing jobs. Those programmers who did move around were expected AND REQUIRED to be very good at learning how the new systems worked, and picking up the differences.

In that environment, there's going to be very little call for a "standard" STDDEV code, when it was something that any competent entry-level FORTRAN programmer could write in his sleep.

Related Topic