
Taming complexity: programming abstractions, epistemic boundaries, and our right to be ignorant!
Programming is complicated! Software stacks are deep, layered, and complex. Human cognitive abilities, time, and energy are limited. And then the central question for each programmer wrestling with this situation becomes: how can we be productive in this endlessly complex computing universe? The answer is deceptively simple: hide complexity behind abstractions! Hide complexity behind walls of public interfaces. Layer these kinds of abstractions one onto another as a kind of stack, and you get the modern computing world. Layer upon layer. Each allows us to live in blissful ignorance and to be productive without knowing every layer that sits below us! These boundaries are “epistemic,” not physical. They allow us to use the ls command without knowing anything about syscalls. They allow you to write a full-fledged Python program without ever knowing about C or CPU instruction sets—or, God forbid, assembly. They allow you to make a request and never know what is going on between the moment
Continue reading on Dev.to Python
Opens in a new tab




