Live data from Hacker News

A Complete Understanding is No Longer Possible

prog21.dadgum.com

11–20 of 80 posts

Re: A Complete Understanding is No Longer Possible

#11

11000 pages at 3 min per page is roughly 550 hours of reading, which is roughly 3 months of full time reading. Double that for some exercises and review and a good understanding is doable in about 6 months.

There is no way you can do exercises at a rate of 3 minutes per page of material, for material of any density. For many concepts, you'd do well to do exercises at a rate of one day per page; exercises that would be essential to a good understanding.

I remember first encountering tree views in Borland Delphi 2. Took me a good couple of days before I got the hang of them, and how they interacted with image lists, to fully get how the recursive structure held together, how the dependencies interlinked.

Similarly with OpenGL. Took quite some time to get the hang of the sequencing of matrix operations, world and camera transforms, etc. - all just the very basics, before getting into anything interesting at all.

For real learning, 8 hours a day is simply unrealistic. It wasn't until the third or fourth time I tried many things that I really understood them, to the point that I didn't have to follow any recipes anywhere.

Re: A Complete Understanding is No Longer Possible

#13
post #3

That's not true. You can have complete understanding. You actually should have, if you want to be recognized in the industry. You need more than just learning, you need to live it. Pick an Operating System, and an environment. I'm using Windows, for more than 10 years now. And that's why I'm not moving to OS X any time soon. I'm incredibly good with Windows, and it can handle all of my daily business work, and softwa…

I doubt you have complete understanding though. Do you understand how SSL works? Do you know your way around PHP's internals? Do you know exactly how TCP, IP, Ethernet, etc work? Could you write a Photoshop plugin? Do you understand how parsers and compilers work? I doubt you (or anyone else for that matter) could answer yes to all those questions. That's the point I think this blog post is getting at. It's no longer…

> was it ever possible, given how deep the rabbit hole goes?

You probably couldn't handle the breadth of it, but the depth of computing in the 60s was pretty shallow. You had maybe a dozen levels of (pretty shallow) abstractions, even "higher-level" languages (like Fortran) were pretty uncommon, so you mostly had assembly, an assembler, machine code and the hardware you were running on.

You probably couldn't hold the whole machine in your head, but you could hold a good idea of its cross-section.

Re: A Complete Understanding is No Longer Possible

#14
Yes, the author's observation is true, but I don't think it's particularly interesting for two reasons:

1) This isn't anything new. A complete understanding is not only no longer possible, it was never possible. What level of detail counts as a "complete" understanding? Even when computers were much simpler, you probably wouldn't have a thorough understanding of every layer of abstraction, from software to hardware to the physics of the underlying electrical components.

2) This sort of complete understanding is unnecessary anyway; these references exist as references for a reason. To do your job, you need familiarity and layered understandings of the relevant processes, and when you absolutely need to know the fine details of something, you can simply look it up.

Re: A Complete Understanding is No Longer Possible

#15
post #14

Yes, the author's observation is true, but I don't think it's particularly interesting for two reasons: 1) This isn't anything new. A complete understanding is not only no longer possible, it was never possible. What level of detail counts as a "complete" understanding? Even when computers were much simpler, you probably wouldn't have a thorough understanding of every layer of abstraction, from software to hardware t…

Respectfully, I disagree.

Such a complete understanding is eminently possible. It is as easy to understand as any other complex system. You work at a high level of abstraction to understand the breadth of complexity, and then work down into the component level to understand the depth of complexity. Rinse, and repeat for every subsequent level.

The caveat is that it takes time and dedication.

I can't comment on whether it's necessary or not. There might be scenarios where it is. There might be other scenarios where you're better off studying kung fu, because that might be a quicker route to enlightenment.

Re: A Complete Understanding is No Longer Possible

#16
post #14

Yes, the author's observation is true, but I don't think it's particularly interesting for two reasons: 1) This isn't anything new. A complete understanding is not only no longer possible, it was never possible. What level of detail counts as a "complete" understanding? Even when computers were much simpler, you probably wouldn't have a thorough understanding of every layer of abstraction, from software to hardware t…

Respectfully, I disagree. Such a complete understanding is eminently possible. It is as easy to understand as any other complex system. You work at a high level of abstraction to understand the breadth of complexity, and then work down into the component level to understand the depth of complexity. Rinse, and repeat for every subsequent level. The caveat is that it takes time and dedication. I can't comment on whethe…

Clifford Stoll, in "The Cuckoo's Egg"[1] describes the hardest interview he ever had. The interviewer asked "Why is the sky blue?" and then, after Stoll gave his answer, asked "Why?" This process repeated several times, until Stoll was describing in great detail some advanced physics and chemistry and math.

In that spirit:

Please could you describe electron and hole flow in semiconductors? Why? Why? Why?

There's lots of bits of computing that works because it works even though we don't really know why it works.

Re: A Complete Understanding is No Longer Possible

#17
I agree with the point of this article, and I find this quite ennoying.

The problem is not that a single individual cannot master everything but that the reward for learning a part of the book pile becomes lower and lower in proportion to the required effort. This trend is clearly discouraging students to "jump" in some of these fundamental reference books. And teachers find it probably very difficult to provide applied exercises for their theoretical teaching.

"Which do you choose ? How do you know which one will be useful in 5 years ?"

My suggestion is that academia standardize in a virtual machine, like what Knuth started to do with MIX and MMIX. these VM can provide a stable, simpler target to help students and professionnals to enjoy "more complete understanding". I expect this to make learning a lot more fun.

When there is a clear breakthrough in technology (like multicore systems), then a new version of the VM can be specified. This can help to improve communication between academia and the real world : btw MMIX was specified with input from experienced chip archicture designers.

Re: A Complete Understanding is No Longer Possible

#18
For knowing 'everything' about computers, I suggest buying a few 8-bit 80s systems with all included for http://www.xgamestation.com/ and master that hardware/software. It's relaxing, a lot of fun, and you'll 'get' modern hardware/arch/OSs as well after that. Shame is you cannot mold modern hardware/software so much easily, so after learning all this old stuff you might end up spending more time making hardware extensions for those systems rather than writing your RoR CRUD screens.

Re: A Complete Understanding is No Longer Possible

#19
post #14

Yes, the author's observation is true, but I don't think it's particularly interesting for two reasons: 1) This isn't anything new. A complete understanding is not only no longer possible, it was never possible. What level of detail counts as a "complete" understanding? Even when computers were much simpler, you probably wouldn't have a thorough understanding of every layer of abstraction, from software to hardware t…

Respectfully, I disagree. Such a complete understanding is eminently possible. It is as easy to understand as any other complex system. You work at a high level of abstraction to understand the breadth of complexity, and then work down into the component level to understand the depth of complexity. Rinse, and repeat for every subsequent level. The caveat is that it takes time and dedication. I can't comment on whethe…

I think we are talking about different meanings of "understand". You seem to be using the general meaning -- any expert in a field, given enough time and dedication, can gain understand both the high level complexity and the individual components of a complex system; I agree with you here.

But the sort of understanding I'm referring to, and what I believe the author is referring to, is a comprehensive, infinitely detailed understanding -- the sort of understanding of OS X APIs after internalizing 5000+ pages of reference.

I think this sort of "complete" understanding is not what we mean when we say a expert has an excellent understanding of a subject; instead, when we mean that that expert can work knows what is important.

For example, you could be an expert (and have an excellent grasp of the material) of some programming language, but if someone asked you about the exact name of a rarely used library call, you might not know it off the top of your head. You would know where to look it up, and you would know how to use it, and you would know that that library call exists, but you wouldn't recall the exact name.

I think many people can obtain these expert understandings of complex systems, but that's not what the author is referring to (or if he is, then I think his argument is unsound because no one would approach gaining an expert understanding of OS X by reading 11,000 pages of reference material). The author is talking about a unnecessarily detailed "complete" understanding in which you know everything about the system.

Re: A Complete Understanding is No Longer Possible

#20
post #14

Yes, the author's observation is true, but I don't think it's particularly interesting for two reasons: 1) This isn't anything new. A complete understanding is not only no longer possible, it was never possible. What level of detail counts as a "complete" understanding? Even when computers were much simpler, you probably wouldn't have a thorough understanding of every layer of abstraction, from software to hardware t…

…never possible…

I disagree. Consider a computer like the Apple ][. I didn't 'completely understand' it at the time, but with what I've learned since (including a CS degree), it is now very plausible to me that it could be exhaustively understood, down to every wire and line of OS/firmware code. I can see the boundaries of the areas I don't know clearly, and know that a bounded amount of extra effort could get me down through every 6502 opcode, or all relevant functional physical/electrical properties of all the subsystems.

(While I'm still not strong in the electrical engineering parts, the exercise in my undergrad EECS class where we built a 4-bit CPU from TTL components was the key for me in connecting the electrical world of circuits and logic gates to the abstractions of executable software.)

Maybe, nowadays, the typical systems (like the article's MacBook Air example) are too big, drawing from too many specialties and involving too many details, for any one person to decompose 'all the black boxes' with comprehensive understanding. But just a few decades ago, that wasn't yet the case.

Post reply on HN