If you can program your computer, here is a tiny universe in which you can be God. Within the realms of expression that the computer can provide, you can build a world, define its laws, and watch the universe unfold. As your whim dictates, you can intervene at any time, and if you desire, the history of the universe can be changed and rewritten at will. Such a power this is!That sums it up perfectly, and since it was written by Gregory Yob -- most famous for "Hunt the Wumpus," a game concept which fascinated me enough to create a mammoth new version of it -- it resonates deeply for me.
Anyway, I started with Atari BASIC. I dabbled a bit with Assembly but I was too young and I didn't have the patience. In highschool I was weaned on to structured programming with WATCOM BASIC, and even though I excelled at programming my total lack of math aptitude scared me away from a Computer Science major...though I did take an entry-level course at University (where I learned and then forgot TURING), and another entry-level college course in C.
Meanwhile I'd been hacking away at Inform, which introduced me to object-oriented programming. Since Inform was designed for writing "Interactive Fiction," the object-oriented approach made perfect sense: all the elements of the "world" are objects, which the "player object" can pick up, carry around, interact with, put inside other objects, etc. But even though I grew accustomed to classes, methods, and instance variables, I was never prepared for the next step:
Objective-C, the language of choice (apparently) for Mac OS X developers. My Mac came with a full development suite and reams of documentation, so why not learn this new language? I'd already done object-oriented programming with Inform and I knew a bit about pointers from that course in C, so I figured it would be a breeze.
But it hasn't been. I have trouble conceptualizing pointers, particularly as they relate to the huge library of classes that come with OS X. Never before have I had to retain and destroy objects. And, most importantly, it's clear that while I understand the "how" of object-oriented programming, I've never grasped the "why" of object-oriented DESIGN.
So I went online to find a book specifically about design. I figured there'd be THOUSANDS. It turns out there are enough to give me a selection to choose from, but they're all specific to particular languages I'm not using, or -- and here's the catch -- they're textbooks, and therefore ridiculously expensive.
I finally settled on "Applying UML and Patterns" by Craig Larman, but I'd never pay $75 for it, particularly since I know the high price isn't due to the content so much as an attempt at making a profit above the number of copies sold at campus bookstores every year. Why should I suffer for that? I KEPT my textbooks (at least the good ones). So I turned to ebay.
And that's where the weirdness started. There are a LOT of copies of this book for sale on ebay, and most of them are 1/10th the price...but they come from China. Which made me suspicious, especially when I saw inconsistent page counts and comments like "all illustrations in black and white" and "we promise all important text is in English." Coupled with lots of negative buyer comments and long shipping times, I decided this all sounded too creepy; there must be some sort of bootleg textbook thing happening in China.
The sellers on abebooks look more reputable; they're from Japan, and they're selling "International Editions" that are somewhat more expensive. They say they contain "the same text as the American version" but they're also 200 pages shorter. Hmmm?
Finally I realized that there were a few ebay stores selling an OLDER (and shorter) edition of the textbook, so I finally bit the bullet and bought one. But I still wonder: what's with the Chinese textbooks? Also, why can't somebody write a generic book on this subject that doesn't cost $75? And how on earth can I conceptualize a program where even the NUMBERS are objects? Gah!