Blogmark
Computers can be understood
via jbranchaud@gmail.com
any question I might care to ask (about computers) has a comprehensible answer which is accessible with determined exploration and learning.
The “with determined exploration and learning” is the important part here.
There is no magic. There is no layer beyond which we leave the realm of logic and executing instructions and encounter unknowable demons making arbitrary and capricious decisions. Most behaviors in one layer are comprehensible in terms of the concepts of the next layer, and all behaviors can be understood by digging down through enough layers.
Even recognizing and sorting out the different layers can be a great starting point. Then when you are thinking about a concept or issue, you can determine what layer is relevant to help set the context.
The trickiest bugs are often those that span multiple layers, or involve leaky abstraction boundaries between layers. These bugs are often impossible to understand at a single layer of the abstraction stack, and sometimes require the ability to view a behavior from multiple levels of abstractions at once to fully understand.
This tells us a lot about what we should strive for when trying to write clear, understandable code and whether we’ve done a good job when creating an abstraction.
Adopt a mindset of curiosity:
My advice for a practical upshot from this post would be: cultivate a deep sense of curiosity about the systems you work with. Ask questions about how they work, why they work that way, and how they were built.
… build your understanding, and your confidence that you can always understand more tomorrow.
My friend Jake Worth wrote his own version of this post — https://jakeworth.com/posts/computers-can-be-understood/
I think this is a great idea for any blogger. Take an inspiring or intriguing concept and give your own take on it.