top | item 46834981

(no title)

nye2k | 1 month ago

I love this absolute example of old systems interfering with new systems, rewriting old systems.

My old man started his tech work on hot rods, then mechanical typewriters, calculators, eventually continuing into mainframe electronics and nearly followed all the transitions up to today’s AI.

The number of times I’ve scratched my head at a problem and he had a clear understanding of where the logic broke… based on a historical decision that could not physically be undone.

discuss

order

fph|1 month ago

If you try profiling almost any program that does linear algebra (something that uses Numpy, for instance), you will see a lot of calls and CPU time in functions with names like DGETRF or SGESVX. These obscure names stand for stuff like Single-precision GEneral matrix Solve Vector eXtended; i.e., solve a linear system of equations with a full, dense matrix. Why are they so difficult to parse? Couldn't they come up with a friendlier name?

They come from Lapack, the standard linear algebra foundation library, which is written in Fortran 77. That library was first written in 1992, when the Fortran 90 standard was still new and not supported everywhere, so they stuck with the earlier version. Lapack has become the standard library for dense non-parallel linear algebra; it is still maintained and updated, but the basic math algorithms haven't changed much, so there was no need to replace it entirely. Today there are also processor-specific libraries like MKL or Apple Accelerate, but they still all follow the same Lapack API.

When Fortran-77 was standardized, they decided to keep function names at most 6 letter long, to "ensure portability". I.e., they wanted to support certain compilers and architectures that were already considered old in 1977.

TL;DR: if you can't read easily those flame graphs today, it's because of backward compatibility with certain mainframes that probably date back to the late 1960s.

aebtebeten|1 month ago

In particular, 6-letter long function names may have been convenient on mainframes that used 6-bit alphanumerics in 36-bit words, the 36-bits having been backward compatible with 10-decimal-digit electromechanical calculators.

https://en.wikipedia.org/wiki/36-bit_computing#History

EDIT: I had thought 10 digits of precision were required for certain calculations, but the WP article points out that they may have just corresponded to the operators having had 10 digits on 2 hands, in which case we're being backwards compatible with Hox genes, specifically Hoxd, and tetrapod pentadactyly is backwards compatible to hundreds of millions of years:

https://www.popsci.com/science/why-five-fingers-toes/

AnimalMuppet|1 month ago

Wasn't there a very similar library earlier than 1992? I seem to recall Linpack back in the early 1980s that sounded very similar.

KineticLensman|1 month ago

Cue obligatory reference to the programmer archaeologists in Vernor Vinge's novel A Deepness in the Sky. Their job, on starships, is to safely bodge the multiple strata of software that have accreted since Mankind left Earth, centuries before.

bo1024|1 month ago

The answer to any question of the form "why is something the way it is?" is always "historical reasons".

jsrcout|1 month ago

Have seen this time and time again during my career.

Most of the time, it's something you could never conceivably figure out without having been there at the time. But after 10 seconds on the phone or a brief email from someone who was, it makes complete sense.