Understanding and knowledge are completely different things.
[moved from AdvancedConcepts]
I'm having a hard time reconciling this with your comments above (and the thesis of this page, for that matter). Understanding for its own sake is a fine, laudable goal. But if you want real understanding, you're going to have to put in the time and effort to learn the beginning, intermediate, and advanced concepts. An educational TV special won't cut it, nor will a popular book on the subject. You don't necessarily have to learn the basics first, though it's probably easier (but less interesting) to do so. And you certainly don't have to learn them at a university. But if you really want to understand object-orientation (as opposed to using it), you'll want to learn about (for the SmallTalk definition) message sends, actors, continuations, prototypes, PolymorphicInlineCaches, biological chemical messengers (hormones and neurotransmitters), and probably several concepts that I don't know myself. For the C++/Java sense, you need to learn about function pointers, vtables, indirection, polymorphism, and the implicit "this" parameter. And to understand why SmallTalk uses SmallTalk-style object-orientation and C++ uses C++-style and Java uses Java-style, you need to learn all that, and CLOS, and BetaLanguage, and the histories of all the languages involved. -- JonathanTang
You've fallen into the trap of conflating knowledge with understanding. (Incidentally, polymorphic inline caches have next to nothing to do with OO since they're an optimization detail. Admittedly, an OO-specific optimization detail.) "real" understanding is a bogus concept. It's a euphemism used to dismiss "mere" understanding in favour of expert knowledge. In actuality, understanding has nothing to do with knowledge. A person can have vast stores of knowledge yet understand none of it. Conversely, a person can have deep understanding of a field yet know almost none of it. I've personally met people with vastly more knowledge than I possess in a given field that also had far less understanding than I do of it. In fact, that's the general case since most people don't have my analytical skills and you can forget about matching my synthetic abilities.
When learning mathematics, you start with the advanced concepts such as association, commutation, and tables for the integers under multiplication. Then you work your way down until you get to fundamental concepts like the axioms of group theory and ring theory. Eventually, you get to the most fundamental concepts, those of mathematical logic, concepts like 'axiom', 'symbol' and 'theory'. The same applies for every other field, if you're actually expected to understand it.
There are far more differences between understanding and knowledge. Knowledge is static and amassed only with the greatest of difficulty through arduous experience. Understanding is dynamic and comes to you with a suddent flash. Knowledge is monotonic, so that the more you work in a field, the more you know in it. Understanding is unpredictable, so that working in a field can confuse you and destroy all your understanding of it. And finally, knowledge is objective while understanding is personal. These are all reasons why understanding is precious to me, while expertise is so valued by the notoriously risk-averse elites.
It's possible to gain vast understanding very quickly. Far, far quicker than a university education would ever permit. This is because university programs focus almost exclusively on knowledge at the expense of understanding. This is reflected in academic books.
For instance, NoamChomsky's books are dense with knowledge, but the understanding that can be gained in all of them wouldn't fit in a single light book if stated plainly. Skimming them will likely gain you as much understanding as plowing through them. Nearly all academic books fit that pattern. IvanIllich's fit a different pattern in that his books repeat the same understanding in subtly different ways. Then there are extremes like AndrewTanenbaum's Operating Systems Concepts which contains exactly zero understanding of its subject matter (Unix), never mind its putative subject matter (OSes in general). -- rk
Very true. Mostly this is because understanding, as you say, is personal, while knowledge is objective. Thus it's possible to write a textbook that'll impart vast knowledge and no understanding (Operating Systems Concepts is a good example) to a large number of readers, while it's very difficult to write a textbook that'll impart vast understanding and only the knowledge that's necessary (StructureAndInterpretationOfComputerPrograms is the best example I can think of). Usually understanding comes becomes a certain little bit of knowledge has pushed you over the CriticalMass necessary to make that final leap. You learn by amassing knowledge that forces you to challenge your worldview and come to a new synthesis. -- jt
Yes, this is more or less the case. However, there is wide variability in people's attitudes to contrary knowledge, both in their acceptance of it once encountered and in their actions prior to encountering it. Some people don't need to be "forced" to challenge their own worldview and synthesize a new one. In fact, forcing someone to engage in a purely voluntary and externally invisible activity simply doesn't work. People are either willing to gain deeper or different understanding, or they are not. And browbeating isn't the kind of thing that makes people willing to do anything.
The relation between knowledge and understanding is a tricky one since you can understand a fact and know a concept or pattern. I haven't even given any explanation of what understanding is here. Understanding a concept is a matter of relating it to other concepts. I find that the best way to understand something is to explore its boundaries. Books that survey a field and contrast different interpretations of it tend to work well. ProgrammingLanguageConceptsAndParadigms? would be my example of a book that conveys great understanding. -- rk
''I'd say you understand neither knowledge nor understanding until you figure out how to make a computer do both.
See also NeverMakeKnowledgePrerequisiteToUnderstanding, TeachAdvancedConcepts