What that so-called Law states is that:
to some extent, all abstractions are leaky.
Which seems all fair and nice, but ends up being somehow of a thorn to me, for i have this still-not-formalized (or publicized) theory that all of history can be understood as abstraction.
What exactly do i mean by abstraction? In a naive sense, “abstract” means immaterial, and therefore “abstraction” would be the loosing of matter. The transform from body to spirit (or mind, call it what you please), from an instance to a rule (that is, induction), the progression from hardware to software, and from concrete experience to language.
But this same “direction” of change can be seen on progressions from immaterial to immaterial. For example, from drawing [to Neanderthal Pictionary, who knows?] to ideographic writing to syllabic to phonetic alphabets. All of these are abstract systems in themselves, being constituted not of the ink that forms the letters, but of the forms that the ink specks have. But between them, a further abstraction happens.
How do we call that “direction” of change? What is involved?
My theory is that we just call it abstraction and accept this direction as one of the axis of our experience.
But, if all abstractions are leaky, it seems my theory is, well, leaky.
Let’s examine his main example. TCP is an reliable protocol built atop the unreliable protocol IP. This means TCP is more practical, is less tricky, it behaves better. It just is not so much a pain in the ass to deal with. Though obviously if we are used to HTML inside a browser, yes, it is a pain in the ass. If we had to transmit our webpages through IP the problem would be lots more complicated. The browser would be always entangled in the nitty-gritty drivel of network architecture. Exactly as if you had to know what a packet was in order to use a browser you would not be reading this post.
A friend of mine who teaches Computer Science 101 said once that abstraction is what allows you to stop worrying about the details. You say “fetch the page at http://www.wtf.net” instead of calculating the traceroutes of each and every packet. In the same sense that you say “get me a cup of water” instead of specifying which cup, from where the water would come from, ans how much water it would be.
Now if we implemented a reliable protocol over another reliable protocol, for instance, things would be simpler, right? But there would be no abstraction! That means, there is an advantage in abstraction, even if it is difficult to distinguish it.
Another important aspect of abstraction is that, despite usually (not always) dispensing with materiality, it does not do the same with energy. Most of the times, the process of abstraction involves soaking a given system with energy to a point where you can assume basic principles throughout the entire extension of the system. Like in S.T.U.N.T.s after you did reach a certain maximum speed the trajectory of your car would cease to obey the physics engine. Or like in maths you force the person to follow the same rules always — and i guess the tricky thing about teaching maths is showing students how to cheat the problem without cheating mathematics itself.
In this sense, abstraction can transform complicatedness into complexity. (And though i realize this is such a joker statement that you can understand almost anything out of it, it is important and sometime when i find the spare couple years to do my doctorate in advanced cybernetics we’ll be able to explore all the richness of such concepts, but… well… another day.)
So: are all abstractions leaky?
First, one level of abstraction does not unmake it’s previous unabstract level. The most important fact about abstraction is that it does not abandon it’s basis, but rather potentizes it. The human brain does not make humans thinkers without appetite: instead, it makes them more able to hunt and kill and eat more meat. Binary logic does not make non-computational mathematics unneeded, actually it frees maths from their more boring chores.
This means that, well, yes, the underlying reality of the abstracted system still exists, and it can be seen. And also, sometimes you are forced to see it even when you do not want it.
But. Ah, and we need a BUT!
But the abstraction can always see the unabstracted world from it’s own standpoint. When the pesky Labrador chews the net cable IP fails and so do TCP, but TCP sees the failure as “host unreachable” instead of a long and messy list of timed out packets. The abstraction kind of creates an “abstract realm”, and this realm does have frontiers. The frontiers are just part of the deal. More and more powerful abstractions will — while still having the exact same frontiers — render the frontiers less meaningful and, hopefully, meaningless.