Kartik Agaram
I posit that a truly comprehensible programming environment - one forever and by design devoid of dark corners and mysterious, voodoo-encouraging subtle malfunctions - must obey this rule: the programmer is expected to inhabit the bedrock abstraction level. And thus, the latter must be habitable.http://www.loper-os.org/?p=55 (inline link mine)
Andrew F
05/13/2021, 4:52 AMRobert Butler
05/13/2021, 5:09 AMJack Rusher
05/13/2021, 9:35 AMDoug Moen
05/13/2021, 1:39 PMA bedrock abstraction level is found in every man-made system. No recoverable failure, no matter how catastrophic, will ever demand intelligent intervention below it.My experience with programming early 8-bit microprocessors is that, when programming in assembly language, you did indeed have access to a bedrock abstraction level, as defined above. There is no accessible bedrock abstraction level in modern computers. Machine code programming on a modern Intel based motherboard happens at an abstraction level far above the bedrock, and below you are many dark corners and mysterious voodoo-encouraging subtle malfunctions. The UEFI is stealing cycles from the OS to do who knows what, the firmware for the microcode and the mysterious intel management engine are encrypted, and security flaws like Spectre and Meltdown require intelligent intervention at a level that is inaccessible to the owner of the computer. I think the author agrees with this. I don't agree that the invention of compilers in the 1950's was a mistake. Twenty years later, in the 1970's, CPU instruction set architectures were still being designed with the needs of assembly language programmers in mind. A key design goal was "orthogonality" <https://en.wikipedia.org/wiki/Orthogonal_instruction_set>. The existence of compilers didn't prevent architectures like the PDP-11 from being designed. I think the author agrees, since they mention RISC as the beginning of "braindead architectures". But RISC wasn't primarily about compilers, it was primarily about making CPUs faster and more efficient, and prioritizing that goal above the goal of making the ISA comfortable for assembly programmers. So here's my question. Suppose we start over, and build a new computer architecture from scratch. Is there not a fundamental tradeoff between making the new system as fast as an Apple M1, vs providing a bedrock abstraction level that is both accessible to the programmer, and habitable?
Kartik Agaram
Suppose we start over, and build a new computer architecture from scratch. Is there not a fundamental tradeoff between making the new system as fast as an Apple M1, vs providing a bedrock abstraction level that is both accessible to the programmer, and habitable?Probably. For me the inescapable implication is: think about habitability (and safety), and don't focus on performance to the exclusion of all else. I don't understand why people get so excited about performance and forget Wirth's Law:
software is getting slower more rapidly than hardware is becoming faster.You think the M1 is fast? Just wait a couple of years! A substrate that will run so fast that you don't have to think about what you run on it is the very definition of an externality. Exponential curves consume all slack. No matter how large the supply of Buffalo is, it's finite. Thinking of a resource as infinite makes no sense. That way lies religion and the Singularity. Has Apple said anything about how they've tried to mitigate side-channel attacks on hardware optimizations? If they've just focused on making everything faster like everyone else, they're likely open to similar attacks? "Reality is that which, when you stop believing in it, doesn't go away." -- Philip K Dick
Konrad Hinsen
05/16/2021, 7:11 AMDoug Moen
05/16/2021, 7:29 PMKonrad Hinsen
05/17/2021, 6:17 AMDoug Moen
05/17/2021, 1:25 PMKartik Agaram
the bedrock level is the first programmable level of abstraction just above non-programmable hardware. In some contexts (e.g. cybersecurity), that's relevant. For many others, it isn't.I've been thinking about this, and the more I think about it the less I understand it. In what context is security not relevant? We today don't know how to write secure software. Therefore every layer under you adds to your risk and multiplies to the frequency of required upgrades. That should fairly directly lead to a force pushing you to "go low". There is no dichotomy between contexts where the bedrock level is relevant and ones where it isn't. Staying close always reduces your risk, moving away always increases your risk. How much risk you want to tolerate is up to you. I understand that we all have things we want to do, and it's hard to give up our desires. I suffer from that as much as anyone else; @Doug Moen caring about 3D feels particularly difficult. I just try to stay cognizant of the risks I'm taking on a daily basis. They're ever-present.
Konrad Hinsen
05/17/2021, 6:04 PMKartik Agaram
having security in one's habitability bubble may not be relevant to many of usInstead of "not relevant to many of us", I'd say the relationship between security and many of us is more akin to that between an ostrich with its head in the sand and an approaching lion.
Robert Butler
05/18/2021, 4:01 AMKartik Agaram
Konrad Hinsen
05/18/2021, 6:42 AMKonrad Hinsen
05/18/2021, 1:43 PMKartik Agaram
Konrad Hinsen
05/19/2021, 6:36 AM