Wed Dec 6, 2017
If you study electronics, eventually you come to the chapter on diodes. Model 1: a diode is a switch that only lets current flow one way. Then you learn that it takes some forward voltage to turn the diode on. Model 2: a diode is a switch that closes only when the forward voltage is above a critical voltage. But of course, digital circuits are just analog circuits driven to extremes. Model 3: current through a diode can be modelled using the diode equation. Then you learn about parasitic series resistance (Model 4), and then various modes of breakdown (Model 5). All of this is just in DC. When looking at AC, there are additional models and additional parasitics to learn.
Becoming competent involves learning all of these models, but also their limits, and then switching between them as appropriate1.
Programmers whinge about “leaky” abstractions, like it is a unique problem. It’s not. As the saying goes, all models are wrong, but some are useful. Instead of commenting on how models leak, as if that observation should be a revelation, they should be mapping the limits of those models, and determining when those models are useful (or not).