3 ms·
There's something Knuth is not addressing. If I understand Dijkstra correctly he's seeing an enormous detour that we're taking with, for example, languages whic
by hbogert 5y ago
There's something Knuth is not addressing. If I understand Dijkstra correctly he's seeing an enormous detour that we're taking with, for example, languages which evolved from a computer architecture. These are not formal, they're for the most part convenience layers and leaky abstractions atop a machine.
Compare this to other disciplines. Imagine a modern bridge builder looking at the bridges of old, and come up with a model just large enough to communicate to other bridge builders how bridges should be made.
If the bridge builders of old "just did something", what is our modern bridge builder modelling then? You could argue, "but those bridges are still around, so they probably did something well". Sure, but that's just settling for a local optimum.
If I want a good modern bridge, I hope that engineer is taking physics into account -- and not spending their time on how the old bridge builders were throwing with mud and stones. We can't stand on shoulders if we keep on regurgitating spoiled food.
- dhosek 5y agoBut the leaky abstraction is useful in that it is a good thing to have some conception of how the machine works. There's a part of my brain that still thinks of every system as an overgrown Apple ][+. It's not the case, of course, but things like pointers, memory allocation and the like made perfect sense to me because I had a sense of what was happening at the hardware level. The last assembly language I used was IBM's 370 assembly and I have only the vaguest knowledge of the machine code on the systems that I use today, but that 35-year-old knowledge is still helpful