

Verbatim: Stats guru Jeff Sagarin - jgarmon
http://college-basketball.si.com/2013/08/26/verbatim-jeff-sagarin/?sct=uk_wr_a1

======
na85
The point of this submission being....?

The fact that someone runs statistics calculations in Fortran (a language
whose most recent standard is dated 2008) should be shocking only to the
recent generation of coders who have become "code hipsters." The guys looking
for the Next Big Thing™ in programming languages.

These are the guys trying to cram Python into every possible goddamned use
case, whether that be embedded systems or computational fluid dynamics.
Whether it's the right tool for the job or not. The same guys who are
implementing a Ruby interpreter in Haskell, running on a VM written in Rust.
Why? Because damn it, their language of choice is shiny and new, and therefore
it must be the best.

Nope. You use the best tool for the job. If you're already familiar with a
language and that language is perfectly well-suited for the task at hand (in
this case mathematics) then you use that language.

Fortran is old, which means it's seen a lot of development. The compiler
optimizations are very, very efficient and Fortran code runs extremely fast.
In fact, Fortran was explicitly designed for running mathematics algorithms on
computers.

tl;dr Fortran is actually a great choice for this application and I hate
hipsters.

~~~
cing
Is Fortran actually the best choice for this application? I don't know how
heavy the calculations are for sports analytics, but I'm guessing it's less
advanced than scientific simulations. Who cares how numerically efficient your
code is if you use 10x the lines than a modern language and spend half your
time struggling to maintain it.

~~~
vonmoltke
On the sports analytics question I don't have any knowledge or experience, but
I can see operations there turning into multi-matrix statistical correlations
and such.

On the subject of being the best language for the job, Fortran does not use
10x more lines than more modern languages. In fact, in many cases it uses
less. When I was working on real-time signal processing algorithms we used to
prototype algorithms in Fortran[1], then implement them in C. I also used to
use Python with SciPy and NumPy for analysis, as well as Matlab. Matlab's huge
toolbox library notwithstanding, the Fortran implementations were usually
shorter, simpler, and easier to understand than any of the other languages. It
was only bias and preconceived notions that kept it from being used in the
real system. I would have loved to see Fortran subroutines running the
algorithms underneath the C distributed framework.

[1] Until someone in management and the customer team decided to have the
scientists write their algorithms directly in the real-time C. That is a rant
for another day.

------
jgrahamc
I'm guessing the title was chosen because the submitter thought coding in
Fortran was stupid, or old, or whatever. The reality is that Fortran has been
updated frequently and for what he's doing seems like a reasonable choice
(plus he probably has a store of routines that he likes to use for certain
analyses).

Old language != Bad language

From TFA:

"SI: Is it true you still code in Fortran?

JS: Yeah, what’s wrong with that? It’s a good language. Fortran is real good
for doing mathematics and running it real quickly. I’m not doing Photoshopping
or anything like that. I’m just running numbers."

~~~
dchest
_the submitter thought coding in Fortran was stupid, or old, or whatever_

I don't think it's stupid or old, but it's certainly _interesting_ : in the
world where hopping from one newest technology to another is normal, somebody
sticking to what they are used to is noteworthy. Some other examples are Bob
Staake using Photoshop 3.0
([http://www.bobstaake.com/pixfix/films.shtml](http://www.bobstaake.com/pixfix/films.shtml))
or OpenBSD using CVS (hehe) and writing their own version of it.

Maybe that's what the submitter thought.

(Yes, Fortran is still updated, but it's certainly not the cutting edge tech.
Or maybe it will be, after this HN submission.)

~~~
EliRivers
_in the world where hopping from one newest technology to another is normal_

On the assumption that you're talking about programmers, I suspect it isn't. I
suspect the majority of the world's programmers stay with the same few tools
for years and years, sometimes (but not always) upgrading a version when
they're forced to.

~~~
dchest
Sure, I didn't mean the World, I meant our small world of tech news /
startups.

------
Wilya
Fortan isn't dead, by far.

There is a lot of scientific and industrial code (in astronomy, aeronautics,
...) that is in Fortran. And I'm not talking about legacy stuff that is only
in maintenance mode. These codes are still evolving and get new
functionalities. They're not in Fortran only for legacy reasons (though that
plays some part). They're in Fortran because Fortan is still the right tool
for the job.

Scientific computing, where is IO is pretty much never the bottleneck, is a
completely different world from web development. Python/Numpy is usable for
some tasks, but only because it delegates a lot of stuff to underlying FOrtran
code..

~~~
kyllo
Yeah, anyone who has installed numpy, matplotlib, etc has probably noticed
that you need a Fortran compiler to build the native extensions...

~~~
jofer
Actually, you don't. A fortran compiler is optional, and used mostly for f2py
and I think(?) for the LAPACK bindings. (The fortran bindings are more
efficient than the C bindings for reasons I don't remember at the moment.)

Numpy's (and matplotlib's, actually) core is written in C.

Scipy is a different story, however. A lot of scipy's internals are written in
fortran.

That having been said, fortran is a _very_ nice language for a significant
portion of scientific programming tasks. IO in fortran is rather painful,
though, i.m.o. Tools like f2py (which still doesn't really support fully
modern fortran, unfortunately) make it very easy to combine fortran and
python, for whatever it's worth.

~~~
kyllo
Yeah maybe I was thinking of scipy. I've only built numpy and scipy from
source once, and it was to install scikit-learn, which has both of them as a
dependency. I had to install gfortran first.

------
treerex
Absolutely nothing wrong with Fortran. In the 90s I worked on source-level
optimizations in the HPF (High-Performance Fortran) compiler at Thinking
Machines: not having a numerical processing background (and having only used
Fortran for one course in college, which was Microsoft Fortran with each
compiler phase on a separate floppy) it was fascinating to work on, and I
found Fortran 90 to be pretty compelling in a lot of numeric operations. There
is a lot of code out there that was written and debugged years ago and there
is no reason to change.

------
mathattack
A lot of financial services academic modelling is still done in Fortran too.
The old programs still run, and new results keep coming.

It was interesting that the NCAA doesn't include scores in their methodology,
just wins and losses. Is that because they don't want to officially encourage
teams to run up the score? It doesn't stop teams from doing that, but perhaps
that's because they are trying to impress other audiences.

------
greenlakejake
If your emphasis is on crunching numbers Fortran is the best.

~~~
stcredzero
Or, rather, if your emphasis is on crunching numbers, and so many of them that
performance is always a big issue, then Fortran is pretty much the best.

Not all number crunching is the same.

------
smegel
Like saying someone still codes in C.

------
lifeisstillgood
So do most of the world's cosmologists, you know boring stuff like the fabric
of the universe, the beginning of time, the hunt for dark matter.

It's parallelisable - if that's a word.

Admittedly the stuff I have seen is all written without knowledge of the maxim
"write your code as if the next person to fix your code is a mad axe murderer
who knows where you live."

But they still unlock the secrets of the universe with it, even with unusual
naming conventions.

