A Complete Understanding is No Longer Possible
Programming in the 21st Century - James Hague - February 27, 2012Let’s say you’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’s Mac OS X Internals: A Systems Approach is a good place to start. It’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’s not light summer reading.
To truly understand the hardware, Intel has kindly provided a free seven volume set of documentation. I’ll keep things simple by recommending Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture (550 pages) and the two volumes describing the instruction set (684 pages and 704 pages respectively).
Objective-C is the language of OS X. We’ll go with Apple’s thankfully concise The Objective-C Programming Language (137 pages).
Of course Objective-C is a superset of C, so also work through the second edition of The C Programming Language (274 pages).
Now we’re getting to the core APIs of OS X. Cocoa Fundamentals Guide is 239 pages. Application Kit Framework Reference is a monster at 5069 pages. That’s help a file-like description of every API call. To be fair I’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.
Ah, wait, OpenGL isn’t part of Cocoa, so throw in the 784 page OpenGL Reference Manual. And another 800 pages for OpenGL Shading Language, Second Edition.
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’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…
(If you liked this, you might enjoy Things That Turbo Pascal is Smaller Than.)
Categories: Blogs Programming in the 21st Century
Comments
A complete understanding is possible, actually…
It’s just not as easy as it was “back in the day” (which was even before I was born).
All those levels of abstraction are not impossible to navigate. Between Objective C, Cocoa API (or C and Win32, .Net, etc., bleh), assembly, and machine language, you can get there. Hard? Yes. Possible? Yes. Worthwhile? The jury’s still out…
Charles Petzold’s “Code” remains the singular book that woke me up to the difference between programmer (software) and engineer (hardware).
It’s simply not that far removed, but in our minds.
All those lines of abstraction are NOT that far out of our grasp. Only if we declare they are so.
There is a difference between saying, “Oh, wow, that’s impossible,” and “Oh, wow, I sure would hate to have to invent all that all over again.”
Know the difference. Then embrace it.
You stand on the shoulders of giants. This is good.
You are capable of climbing higher from falling from those shoulders, if and when that happens, and that is what makes knowing all this stuff that much enjoyable!
God bless that person. :D
Posted by David on 28 Feb 2012 at 04:53OT: About the size of the US tax code http://www.trygve.com/taxcode.html
Posted by David on 28 Feb 2012 at 12:21Nice article :) it’s a good point - even understanding everything that goes into my *phone* is almost as in-depth, and lurking beneath the surface, there’s the linux kernel monster, waiting to pounce…
Posted by Seb on 07 Mar 2012 at 16:39I totally agree with you and I think that it is really important for a person to be very interested in this..because only in this way you will succeed to put order in your projects.
Asigurari Ieftine
This is a great blog. Glad I stumble upon your site. Keep it up.
Posted by sizegenetics on 25 Apr 2012 at 10:58This is a great blog. Glad I stumble upon your site. Keep it up.
Posted by sizegenetics on 25 Apr 2012 at 11:00
Add comment
Erlang on Twitter
» dessyrosalia (♡pesek mancung♥ ): Erlang ke rumahku donk kangen nih
» si_erlang (Erlangga Adhitya): 75% dalane jahanam
» GeekDani (Dani Kim): @charsyam 그렇군용. :-) 여긴 서늘한데. 크크. Erlang Meetup 준비는 잘 하시나요. ㅋㅋ
» syahlafatimahA (LalaTik(ʃ⌣ƪ) ): Waaa?! Si erlang suka cherrybelle(?) wkwkwkwk ngakak aih xD
» yosukehara (Yosuke Hara): I’ll be a simple test for benchmarking JSX and Jiffy together. #erlang
» Debbyvheumen (Debby van Heumen): @elisaaa15 @kleingeld_ haha okee succes :) blijven jullie erlang
» ovatsus (Gustavo Guerra): RT @martintrojer: Just *blogged “Distributed Actors in Clojure” on http://t.co/WcKBpNBR #Clojure #Akka #Erlang #in
» larshesel (Lars Hesel): ...or rather: 4 days of Erlang hacking coming up!
» hongye_erlang (紅葉): とりあえずチャイナ。
» Erlang_ABNIC (Erlangga .A): RODOK !!! Dtakok"I genah” jawabane malah ngelantur! (N)
Statistics
Number of aggregated posts: 10498
Number of comments: 2115
Most recent article: May 15, 2012
Latest comments
» cheap soccer jerseys on Memory Models in Erlang vs Java: Nice discussion here,you are doing a great job. i was looking for this information. i found it on your page…
» mandesejohn on Couchbase Meetup at new HQ: Thanks for sharing experience. It should be really a great post. It should be knowledgeable and informative. Keep it up. flower delivery columbus ohio
» vermaseo on Scale means Skills: I’m surprised people are still commenting about this. George has been moved on to bigger and better things with the president for awhile now.ledikanten