3 ms·
I wouldn't say software quality has gone downhill. Software has gotten better in some metrics and worse in others, and there has always been crap software. Has
by johnnyjeans 3y ago
I wouldn't say software quality has gone downhill. Software has gotten better in some metrics and worse in others, and there has always been crap software. Has software gotten less efficient? Yes, obviously. But it's also gotten much more stable and far less buggy, and the way we write software has made even the worst code much more pleasant to handle.
Most public code from 50 years ago is the good stuff, like Unix. Well the stuff you don't know about is the bad stuff. There was a lot of it and even in your nightmares you couldn't imagine the kind of horrors in the average software than ran on big irons. You scoff at the idea of self-modifying code, who does that? Obviously a bad idea. You better get used to it quick, because self-modifying code is the de-facto standard and the absolute least of your worries. 4k line long undocumented subroutines written in undocumented languages which abuse hardware errors that were only known to the programmer. Said hardware errors were forgotten 1 week later, because some other code written afterwards doesn't even work because of the same hardware issue. Side channel attacks as a feature. Static data reutilized as swizzled instructions which modify that static data. Spaghetti code generating spaghetti code. Just genuinely terrible COBOL code that's probably still running today.
Efficient? Only sometimes. Possible to work with? Absolutely not. If we wrote code like we did back then, it would be common practice to generate and dump new microcode to your CPU thousands of times a minute. And no, in this scenario microcode is not any more portable, nor is it documented. You'd see shit like programming that uses MMU faults and stack semantics to implement garbage collection with minimal code. Breaking into the IME to use it as a thread supervisor instead of wasting actual CPU resources on one. Superscalar timing quirks intentionally utilized to eventually feed information downstream to a hand-rolled userspace scheduler that cannot be described even in the fringes of academic theory. It just came to the programmer in a dream. God knows what other "Not For End User Usage" obscure hardware features would get appropriated and abused to hell and back. I don't even want to think about what people would do to GPUs.