An anecdote about backward compatibility
62 points
4 days ago
| 3 comments
| blog.plover.com
| HN
nye2k
5 hours 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.

reply
fph
57 minutes 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.

reply
KineticLensman
15 minutes 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.
reply
bo1024
25 minutes ago
[-]
The answer to any question of the form "why is something the way it is?" is always "historical reasons".
reply
mikelitoris
6 hours ago
[-]
For those who don’t get it: It’s referring to the ink soaked ribbon that would print characters on a piece of paper, similar to a typewriter. This is a preceding technology to digital consoles. Also why most programming languages refer to outputting a string to stdout as “print”.
reply
reddalo
4 hours ago
[-]
It's almost the same reason Windows still uses CR LF characters for new lines.

Not one character, but two: Carriage Return and Line Feed. Literally the action of moving the printer back to the beginning of the line and then the action of making the sheet of paper go "up" by one line.

reply
jibal
5 hours ago
[-]
Similar? It is in fact a typewriter ribbon: https://www.amazon.com/Olympia-Typewriter-Ribbon-Black-Red/d...
reply
bob1029
6 hours ago
[-]
IBM is the undisputed king of backward compatibility. There is code running on mainframes right now that is going on 50 years old. Microsoft is a close #2 with windows.

I'd probably consider using IBM if it wasn't so goddamn weird and expensive. I suppose all that backward compatibility does have its downsides. Windows feels a bit weird in some places too, but at the same time it didn't start out life as a typewriter.

reply
reddalo
4 hours ago
[-]
>Windows feels a bit weird in some places too

Windows 11 still has some dialogs that haven't been touched (and they can't ever be, in order to prevent backward compatibility breakage) since Windows 3.1: https://www.windowsonwindows.com/forum/viewtopic.php?t=44

reply
nottorp
3 hours ago
[-]
The ones that work every time, right?
reply
duskdozer
2 hours ago
[-]
Hey, what's wrong with a little breakage every now and again and again and again, as long as it's new and fresh?
reply