{"id":928,"date":"2012-03-06T11:47:00","date_gmt":"2012-03-06T11:47:00","guid":{"rendered":"https:\/\/www.novonon.com\/blog\/2012\/03\/06\/a-complete-understanding-is-no-longer-possible\/"},"modified":"2012-03-06T11:47:00","modified_gmt":"2012-03-06T11:47:00","slug":"a-complete-understanding-is-no-longer-possible","status":"publish","type":"post","link":"https:\/\/www.novonon.com\/blog\/2012\/03\/06\/a-complete-understanding-is-no-longer-possible\/","title":{"rendered":"A Complete Understanding is No Longer Possible"},"content":{"rendered":"<p><span>[An important reminder for older programmers; we grew up in a different world. -egg]<\/span><\/p>\n<div>\n<a href=\"http:\/\/prog21.dadgum.com\/129.html\">A Complete Understanding is No Longer Possible<\/a>: <\/p>\n<div>Let&#8217;s say you&#8217;ve just bought a MacBook Air, and your goal is to become master of the machine, to understand how it works on every level.<\/p>\n<p>Amit Singh&#8217;s <i>Mac OS X Internals: A Systems Approach<\/i> is a good place to start. It&#8217;s not about programming so much as an in-depth discussion of how all the parts of the operating system fit together: what the firmware does, the sequence of events during boot-up, what device drivers do, and so on. At 1680 pages, it&#8217;s not light summer reading.<\/p>\n<p>To truly understand the hardware, Intel has kindly provided a free seven volume set of documentation. I&#8217;ll keep things simple by recommending <i>Intel 64 and IA-32 Architectures Software Developer&#8217;s Manual Volume 1: Basic Architecture<\/i> (550 pages) and the two volumes describing the instruction set (684 pages and 704 pages respectively).<\/p>\n<p>Objective-C is the language of OS X. We&#8217;ll go with Apple&#8217;s thankfully concise <i>The Objective-C Programming Language<\/i> (137 pages).<\/p>\n<p>Of course Objective-C is a superset of C, so also work through the second edition of <i>The C Programming Language<\/i> (274 pages).<\/p>\n<p>Now we&#8217;re getting to the core APIs of OS X. <i>Cocoa Fundamentals Guide<\/i> is 239 pages. <i>Application Kit Framework Reference<\/i> is a monster at 5069 pages. That&#8217;s help a file-like description of every API call. To be fair I&#8217;ll stop there with the Cocoa documentation, even though there are also more usable guides for drawing and Core Audio and Core Animation and a dozen other things.<\/p>\n<p>Ah, wait, OpenGL isn&#8217;t part of Cocoa, so throw in the 784 page <i>OpenGL Reference Manual<\/i>. And another 800 pages for <i>OpenGL Shading Language, Second Edition<\/i>.<\/p>\n<p>The total of all of this is 79 pages shy of eleven thousand. I neglected to include man pages for hundreds of system utilities and the Xcode documentation. And I didn&#8217;t even touch upon the graphics knowhow needed to do anything interesting with OpenGL, or how to write good C and Objective-C or anything about object-oriented design, and&#8230;<\/p>\n<p>(If you liked this, you might enjoy <a href=\"http:\/\/prog21.dadgum.com\/116.html\">Things That Turbo Pascal is Smaller Than<\/a>.)\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>[An important reminder for older programmers; we grew up in a different world. -egg] A Complete Understanding is No Longer Possible: Let&#8217;s say you&#8217;ve just bought a MacBook Air, and your goal is to become master of the machine, to understand how it works on every level. Amit Singh&#8217;s Mac OS X Internals: A Systems [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-928","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3pfIY-eY","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.novonon.com\/blog\/wp-json\/wp\/v2\/posts\/928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.novonon.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.novonon.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.novonon.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.novonon.com\/blog\/wp-json\/wp\/v2\/comments?post=928"}],"version-history":[{"count":0,"href":"https:\/\/www.novonon.com\/blog\/wp-json\/wp\/v2\/posts\/928\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.novonon.com\/blog\/wp-json\/wp\/v2\/media?parent=928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.novonon.com\/blog\/wp-json\/wp\/v2\/categories?post=928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.novonon.com\/blog\/wp-json\/wp\/v2\/tags?post=928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}