Programming: Ever wonder if...?'s all just smoke and mirrors?

Ultimately, any program running in 99% of the computers out there today is running the old fetch-execute cycle on a Von Neuman architecture: A processor fetches the next instruction, executes it, stores the result, and goes to the next instruction.

Atop that, we've layered: Subroutines, Modules, Functional Programming, Structured Programming, Object-Orientation (Objects, Inheritance, Polymorphism, Composition/Aggregation), Closures, Atoms, Processes, Multithreading, Semaphores, etc.

We're desperately trying to make the digital computer be more than the sum of its parts, just as a living human brain is somehow more than a collection of neurons and synapses. We *desperately* want abstractions...need them, in fact.

That's the whole point of the progression from bare binary programming, through assembly, to high-level languages, etc.--abstraction. The speed and capacity of computers grows. The speed and capacity of the minds of programmers does not. We fall victim to the same limitations as any other human--can only hold so much info in our heads at one time. These abstractions let us think of the programs in coarser form. Instead of considering the instructions, "Take an array, choose a pivot value, partition it into "less than pivot" and "more than pivot", then recursively sort those two segments the same way," I can think of the algorithm quicksort.

* * *

There's a tension there, though...ultimately, abstractions leak. They're lossy. When you abstract or model something, you're glossing-over some detail about how the underlying system functions, and praying that detail doesn't matter.

Sometimes, it matters.

So, sometimes, I wonder if the abstractions are just smoke and mirrors that'll bite us someday. :-)

Popular posts from this blog


On "Avengers: Infitnity War"

Closing, 2017