On the flip side, if all you were used to were systems such as Scala, it would be bloody amazing how documents that were typeset with tex still typeset. Or, any C program I wrote 20+ years ago can still compile and work.
I had to dig out some 5-year-old Scala source a few weeks ago. Honestly it wasn't hard to port - there's a deprecation cycle and the compiler warns you about anything that's deprecated, all the fixes were pretty mechanical. I think a statically-typed language makes backwards compatibility changes much less dangerous than they otherwise are.
I dug up some 15 year old cweb code the other day. Not only did it just compile on my first try, but it then succeeded in being among the fastest pieces of code I've ever run. :)
Even better, I weaved it into a pdf to read, and I was actually able to understand what was going on. The idioms were ancient, but that is another matter.
I've definitely written C code that took advantage of specialized compilers and OS calls that would most certainly not work on modern commodity hardware. C portability is all about limiting the features you use after all.
If you limit yourself to a small subset of Scala features it has all been backwards compatible as well. (That's not to say, I think that Scala does a good job with backwards compatibility)
How small of a subset are we talking about here? And yeah, I realize it is a bit unfair, as much of the "c language" is not about fancy containers and collections.
This is something I still admire in Knuth's tex, though. Having a typesetting language that is effectively "archival" is impressive. I love that I can load up any of the .tex files from his site and they still work, today.
Even his cweb language snippets benefit from this. It may seem somewhat odd and cryptic by some modern aesthetics, but it also hasn't been touched in years and still works.
To be honest, it would need to be an extremely small set of Scala code. But, more to the point is that you are glossing over decades worth of discussions, fights & costs associated with C code being compatible from machine to machine, compiler to compiler, and year to year. C got to backwards compatibility via longevity. Scala de-emphasizes backwards compatibility on purpose so it isn't surprising that it isn't good.
Tex is built for a very small, constrained, and well known problem space. It isn't surprising that you can get it right faster than a general purpose language. Yet, even Tex has been supplanted even it it's own wheel house.
I'm not sure I'm glossing over the point, so much as trying to make sure it isn't lost. The attitude towards backwards compatibility is something that is heralded as amazing by many when they look to Scala. To the point that anyone that speaks ill of it is often chided. (As I seem to be getting here. Note the rhetoric you are using.)
Going further, though, taking your own sentence, one would should probably wonder if Scala is sacrificing anything in the longevity realm by having the attitude that they have. I do not doubt that these are deliberate choices, but they are somewhat annoying. I'm incredibly glad that I can still run all of the code in SICP, if I want to study them. Same for TAoCP. Though, the latter is definitely more work than the former.
Regarding tex, it is annoying to see how it is often supplanted as much by people that just refuse to learn tex as it is for any technical reason. Especially in the modern environment where aesthetics are so widely debated and built around.
And no, I don't think this is unique to the programming world. I need only look at how many ways people refuse to learn to cook eggs on the stove to know that we often try many new things that just aren't that fruitful. And, honestly, this is a good thing. Rarely is any effort truly wasted.
Let me be clear. I am not chiding you for pointing out that Scala does not have the backwards compatibility feature set it would need to compete with something like C. Only that, C wasn't designed with backwards compatibility in mind, it just sort of arrived at it. Scala is most certainly sacrificing compatibility in the short term to allow for "improvability" for lack of a better term. I have no idea if that is a good or bad thing, but my intuition is as a new language with low uptake it makes some sense. A major challenge going forward is going to be maintaining the proper balance with regards to compatibility.
I couldn't agree more about SICP and TAoCP but you'll notice that neither is written in a widely adopted language.
I'm surprised that you actually use bare Tex. Even the most ardent users at this point will at least start with LaTex even though it isn't technically as portable...
I don't actually use Tex that often. That admiration just comes from realizing that all of my old .tex files still work. As do all of Knuth's. Has been educational going through some of them that I can get my hands on.
I also think that the bare Tex that he writes is easily as readable as any of the latex I have ever written. Even the somewhat archaic looking cweb that he writes is actually more approachable than I would have expected.
Egg cooking is just one of the most gadget filled areas of kitchen accomplishments I personally know of. Seems every time I'm in the grocery store I see some new little device that lets me microwave eggs "perfectly." A friend has a toaster that will toast your English muffin at the same time that it steams an egg. Neat and all, but amusing in how little work it actually saves.
As someone who has spent a long time trying and failing (and taking classes) on how to cook eggs correctly, I completely understand the hopeful nature of an egg cooking gadget. That said, I've never found one I preferred to the standards.
I'm curious on how you are trying to cook your eggs, now. :) I fully acknowledge that there are some ways I don't have the patience to do. The double boiler method, for instance. I also just don't care for cream in my eggs. Plain scrambled works fine for my tastes.
Regardless, I am not trying to deter folks from Scala. I don't necessarily hate Java, though. I have been less of a fan of static typing in recent years than I was before, though. My stance is more on tooling than it is on typing. (Granted, I realize that the typer is just a tool, as well. Seems common in the statically typed world, for all tools to converge into one, though.)
Honestly, I could rewrite your sentence on cooking eggs correctly to "using the typesystem correctly" and it would be about the same for me.