Two weeks ago I learned something that completely shifted what I thought I knew, and which seems to not be widely known. Thanks to Mike Croucher (Walking Randomly), whose blog I have followed as long as I can remember following blogs.
Did you know that programming languages are built on other programming languages? It should have been self-evident, perhaps, but I never really gave a thought to where programming languages actually come from. Second; did you know that large portions of Python and R are built on, and dependent on, FORTRAN?! (yes, I know its name is supposed to be part lowercase nowadays, but in my mind it remains FORTRAN77, like my student days – no, I am not ancient, but my teachers’ tools were).
The reason I blog this now is: I mentioned this the other day to an old friend who is a real bona fide computer scientist and researcher, and he DIDN’T know.
And as MC tells it, “Much of the numerical functionality we routinely use today was developed decades ago and released in Fortran. More modern systems, such as R, make direct use of a lot of this code because it is highly performant and, perhaps more importantly, has been battle tested in production for decades. Numerical computing is hard (even when all of your instincts suggest otherwise) and when someone demonstrably does it right, it makes good sense to reuse rather than reinvent. As a result, with no Fortran, there’s no R.“
And yeah, the same goes for Python, and a lot of other really basic (meaning not ‘simple’, but fundamental) numeric tools that are used everywhere. At least one of SciPy and NumPy has been a part of every Python toolset I have tried so far.
So what is the problem with many of our most indispensable software tools having a well-optimized FORTRAN skeleton? Compilers are the issue – the tailormade ways you tell the *really* basic low level parts of your specific processor what to do with your code. And processors are different. Hence, FORTRAN has over a dozen open source and commercial compilers adapted to different brands of processors – and for the commercial ones you have to trust that the organization that owns the compiler wants to continue supporting it. The currently most recommended compiler is commercial. However, open source efforts seem to have kept in step, more or less – though there are/were some question marks on whether everything FORTRAN-dependent would work well on Apple’s new Arm-based ‘Apple Silicon’ machines. (Imagine getting a shiny new expensive Apple computer – heavily marketed to people with rather vague knowledge of technical aspects – and everything goes wonky? The uproar.)
So, in essence, many modern open source computing resources rest on weaker legs than is really comfortable. It reminds me of that fantastic XKCD on dependencies. (There really is an XKCD for every tech scenario imaginable)