Abstraction Inversion

A term for what happens when program designers try to build simple things on top of complex "primitives" instead of building the complex things on top of simple primitives. (Complexity here is understood with respect to an implicit underlying framework; when speaking of software, this framework is the computer hardware on which to implement the software.)

The original example was the original Ada rendezvous primitive, upon which Ada programmers built other synchronization mechanisms, whereas the simpler primitives to implement are semaphores; so that when programmers actually wanted portable semaphores, instead of getting a simple and cheap implementation of a simple concept, they got a complex and expensive implementation of it in terms of rendezvous!

Another example of it is the very concept of microkernel, that inverts the high-level concurrent actor programming model with the low-level hardware resource management implementation.

The term was introduced to us in an article by Henry Baker in A Critique of DIN Kernel LISP.

NB: Henry Hazlitt in his 1964 "Foundations of Morality" reports the use of the term "hysteron-proteron" for "an inversion of the true order of logical dependence, a reversal of cause and effect", or in other words putting the cart before the horse.


This page is linked from: Forth is NOT intrinsically slow   Microkernel   Microkernel Debate