Hacker Newsnew | comments | show | ask | jobs | submit login

I think the main reason why scientists haven't moved away from FORTRAN is cultural.

I remember rewriting some unreadable F77 code with copy pasted functions from Numerical Recipes into C linking GSL for my advisor in grad school and making it much much faster.

Fast linear algebra has been available in partly-functional programming languages to scientists for at least two decades (think MatLab and Mathematica), but once you learn to use one tool and it works well enough, you'll keep using it for ages.

Furthermore there is no great advantage in parallelizing linear algebra, when most HPC workflows I've seen in physics are intrinsically parallel in that you can run 512 version of whatever your problem is and get good statistics out of it. Your mileage my vary though.




> Furthermore there is no great advantage in parallelizing linear algebra

With all due respect, that is a ludicrous statement to make! Most nontrivial parallel scientific computing applications use parallel linear algebra of some sort.

> the main reason why scientists haven't moved away from FORTRAN is cultural

You can make that argument for Fortran vs C, not Fortran vs Matlab. Fortran is blazingly fast, and you dont have to pay an arm and a leg for a seat like with Matlab.

-----


I think the main reason why scientists haven't moved away from FORTRAN is cultural.

What should they move to? Fortran90 has vector and matrix notation build-in so it's just like typed, faster matlab. More safety, more speed, what's not to like?

Move to C? You lose the vector notation, and gain all the pointer mess, so not very lucrative unless you were a C-programmer to begin with.

Move to python? Sure, the language is nice, but it's not faster than matlab, so why bother. Unless you really appreciate the extra niceness. (I do)

Move to C++? Again, no build-in vector notation, so not very lucrative. Sure, you can use libraries that overload operators to get the vector notation, but the learning curve can be steep, and after all the extra learning, you just have what you had with fortran90 and matlab to begin with. Of course, if you already were a competent C++ programmer, then you may like to do everything with C++. But scientist may not have that much extra time to train themselves even half-fluent in C++.

Move to some other language? Which? Java? Scala? Rust? Haskell? Lisp?

-----




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: