programming in the
twenty-first century

It's not about technology for its own sake. It's about being able to implement your ideas.

A Complete Understanding is No Longer Possible

Let'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.)

permalink February 27, 2012


twitter / mail

I'm James Hague, a recovering programmer who has been designing video games since the 1980s. Programming Without Being Obsessed With Programming and Organizational Skills Beat Algorithmic Wizardry are good starting points. For the older stuff, try the 2012 Retrospective.

Where are the comments?