Live data from Hacker News

Computers Can Be Understood (2020)

blog.nelhage.com

1–10 of 21 posts

Re: Computers Can Be Understood (2020)

#2
"At core, computers are built on a set of (mostly) deterministic foundations, which follow strict rules at each tick of the clock. We built layers upon layers of abstractions upon those foundations, each of which, as well, behaves in a (mostly) reproducible and deterministic way based on the abstractions at the previous level.

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."

It is possible for deterministic systems to become so complex that they are unable to be understood. Physics and most natural sciences encountered this very dilemma early on, determinists posited that the world was a deterministic state machine and that for this reason the future could be predicted with enough study.

This philosophical and physical debate was resolved in the formation chaos theory, which proved that systems can become complex enough that this would be benefit of determinism vanished.

https://en.wikipedia.org/wiki/Chaos_theory

Re: Computers Can Be Understood (2020)

#4
post #2

"At core, computers are built on a set of (mostly) deterministic foundations, which follow strict rules at each tick of the clock. We built layers upon layers of abstractions upon those foundations, each of which, as well, behaves in a (mostly) reproducible and deterministic way based on the abstractions at the previous level. There is no magic. There is no layer beyond which we leave the realm of logic and executing…

[deleted]

Re: Computers Can Be Understood (2020)

#5
Eh, sufficient complexity is indistinguishable from magic. No single human can understand the whole system of a modern computer in full detail. There is just too much stuff to learn for one lifetime. That's why we build all those abstractions in the first place.

Re: Computers Can Be Understood (2020)

#7
post #5

Eh, sufficient complexity is indistinguishable from magic. No single human can understand the whole system of a modern computer in full detail. There is just too much stuff to learn for one lifetime. That's why we build all those abstractions in the first place.

I think the answer here is somewhere in between. You're right that there will probably never be someone with a comprehensive understanding of low level programming who is also a physics prodigy and understands every minute detail of computers, but that doesn't make it "magic". We build abstractions in layers so everyone can granularly learn what matters to them and ignore the parts that don't. The amount of magic in a computer is inversely proportional to how deep you are in the abstraction layers, but I don't think that means it can't be understood.

The word "grok" does a pretty good job of summing up how I feel on it. I think most people can grok a computer, but that doesn't mean they could tell you every detail about it's use/manufacturing/operation/architecture/lithography. But we know enough to have a working knowledge, and for the purposes of this question I think that's what matters. Computers are designed to output predictable, reproducable behavior. They are meant to be unferstood by design.

Re: Computers Can Be Understood (2020)

#8
post #5

Eh, sufficient complexity is indistinguishable from magic. No single human can understand the whole system of a modern computer in full detail. There is just too much stuff to learn for one lifetime. That's why we build all those abstractions in the first place.

I believe that the article agrees with you, and is arguing for a narrower claim.

Re: Computers Can Be Understood (2020)

#9
post #8
post #5

Eh, sufficient complexity is indistinguishable from magic. No single human can understand the whole system of a modern computer in full detail. There is just too much stuff to learn for one lifetime. That's why we build all those abstractions in the first place.

I believe that the article agrees with you, and is arguing for a narrower claim.

>Modern software and hardware systems contain almost unimaginable complexity amongst many distinct layers, each building atop each other. It is common — and substantially correct — to observe that no single human understands all of the layers in, say, a modern web application, starting from the transistors and silicon up through micro-architecture, the CPU instruction set, the OS kernel, the user libraries, the compilers, the web browser, and Javascript VM, the Javascript libraries, and the application code, not even to mention all the network services invoked in loading that code.

>In the face of this complexity, it’s easy to assume that there’s just too much to learn, and to adopt the mental shorthand that the systems we work with are best treated as black boxes, not to be understood in any detail.

>I argue against that approach. You will never understand every detail of the implementation of every level on that stack; but you can understand all of them to some level of abstraction, and any specific layer to essentially any depth necessary for any purpose.

Re: Computers Can Be Understood (2020)

#10
I tried very hard to steer an old colleague away from their "magical" view of computers, because at some point I aggregated enough experiences and insights to agree with the article's thesis. When working closely with hardware, there's no way around breaking that magic. I would even flavor that how it all "actually" works physically is cool and magical (in a we can compose magic way).

It was interesting to connect some of the issues they asked for help with relate back to this magic-fication.

Post reply on HN