Hacker News new | ask | show | jobs
by hpcjoe 1138 days ago
Fortran was old in the early 1980s, when I first taught it to myself for use on a research project. I'd taught myself BASIC, x86 assembler, and APL (for another physics course) by then. All the serious physicists were using Fortran though, for all their simulations.

My research project required use of the university mainframe for the big calculations, the 1000x1000 Markov matrices I was working on. I taught myself how to work on out-of-core code then as well, as well as exploiting symmetries inherent in my models.

My Ph.D. code was all written in Fortran, with a little Perl thrown in for good luck. 30+ years later, all of it works without a problem on my laptop/desktop machines.

I learned C in 1996 and C++ in 1997. The C code I wrote still works, though the C++ code needs special compilation options to be able to work.

I've not used Fortran in maybe 15 years now. I'm not up on the modern bits, I stopped using it professionally as F90 was becoming a thing.

I taught graduate HPC programming courses at my alma mater in the CS department, and gave the choice of Fortran or C to the kids. They blanched at the thought of using a nearly (at the time) 60 year old language. They correctly reasoned that learning the language would not help their employability.

Today, I use Julia for heavy computation. Python as a glue language, and C++ when required. I read the report, and I disagreed with the conclusions for a number of reasons, but what it comes down to is that many research groups in Physics/Chem still use Fortran, and aren't about to do the port to C/C++ due to funding. You can't get funding for this conversion. So codes will go on, students will learn what they need, and profs will keep publishing papers.

Moreover, this isn't the first, second, etc. time that people have predicted the death of Fortran. I heard this in 1990s as I was finishing up my Ph.D in theoretical/computational physics.

In 20 years or so, after I have (hopefully) retired, I'd bet that Fortran is still in widespread use, with Python following Java down the path to legacy. And the newer HPC language(s) will be quite happy to talk to Fortran.

I could be wrong, and I'm ok with it. But I doubt it.

1 comments

"Physics/Chem still use Fortran, and aren't about to do the port to C/C++ due to funding."

If funding's a problem across many fields then wouldn't it perhaps make better sense to just accept Fortran as the most appropriate language for certain well defined application types/fields and concentrate on improving the language, that is fixing its actual or perceived limitations in current environments?

It would seem more efficient to centralize effort to improving just the language and its tools than to convert or rewrite a whole world of disparate applications that have been developed over many decades. After all, take English for instance, at any point in history, say 1600, its grammar and vocabulary were appropriate for the time. Moving on 400+ years till now we didn't chuck English away and replace it with a seemingly better language such Esperanto but progressively updated it to modern requirements.

I have to admit to some bias here in that Fortran was my first language so it acted as the template for others. That said, I am not convinced that the enormous plethora of different languages that have flooded programming in recent decades has benefited computing and CS to the extent that perhaps it ought to have as there has been a great deal of unnecessary duplication and overlap that's led to wasted human effort—the need to learn many different languages, lack of uniformity etc.

The large number of languages, lack of agreed consensus/standards—the most appropriate language for a given class of applications, etc.—has also led to language ghettoization where programmers swear by one language they've become familiar with and continue to use for jobs where another would be more appropriate. And one can't blame them for not wanting to learn a new language seemingly every other year.

It seems to me that rationalizing and simplifying the language problem ought to be a high priority for CS. Given its long and mature history, its entrenched position in certain fields and its proven suitability for math-intensive work, that process could begin with Fortran as it would likely be the least disruptive.

> If funding's a problem across many fields then wouldn't it perhaps make better sense to just accept Fortran as the most appropriate language for certain well defined application types/fields and concentrate on improving the language, that is fixing its actual or perceived limitations in current environments?

Yes it would. It would make far more sense than writing whitepapers extolling the risks of staying with the language, for example.

> It would seem more efficient to centralize effort to improving just the language and its tools than to convert or rewrite a whole world of disparate applications that have been developed over many decades.

There are ISO committees dedicated to improving Fortran[1].

...

> It seems to me that rationalizing and simplifying the language problem ought to be a high priority for CS.

It is not. This would relegate CS to a different role at a university, more of a tool building and improvement (e.g. engineering) than a "science". Moreover, there is no real money to be made, or reputation to be created by improving a tool. Especially one that has been in use so long.

CS loves to follow/lead with the new shiny thing. This is how the profs get grants. Show their value to the community. Get their students hired and starting companies. Or taking a leave from university, and going to work as chief scientist of AI at large global companies. (cough cough)

Most of these researchers would prefer to show their value and the value of their thoughts/work, by creating new and shiny things in languages or new languages. Yes, this is cynical. I've seen it first hand. I've watched fads/trends wax and wane in CS for a while now. Often times being unaware that much work was being repeated.

[1] https://j3-fortran.org/