As announced before, I got interested in Mac development, bought a bunch of books and spent a few nights reading and coding. Here are my first impressions on those books which thus far I’ve picked up.
I only had time to read 3 chapters from Stephen Kochan’s book and I must say that I’m not impressed! The pace is extremely slow and experienced programmers who read it will be bored to tears. An example of this, is the fact that he spends 15 pages on teaching how to use if/else statements. I’m afraid it’s not working for me; by nature it’s far too basic, and slow paced books are irritating. I don’t blame the author, I’m just not the right target for such a book – and I find the title to be inappropriate, or rather, inaccurate. It should be renamed ‘Learn to Program with Objective-C’ or ‘Introduction to Objective-C’ not ‘Programming in Objective-C’. Readers who don’t know how to program in C or any other programming language, will find this book to be a very good explanation and thorough introduction to programming though. The book “Learn Objective-C on the Macintosh” is basic too, but it’s often recommended as an alternative to Kochan’s book. According to what I’ve seen from the sample chapter, this is still a very gentle introduction to the language, but it carries more insight and it’s not a boring read. Plus one of the authors is Mark Dalrymple who is very active in the online community as well.
Hillegass’ book is a whole different story. He is clearly a great teacher and, while I’ve read only half of this book so far, I can already conclude that this book rocks. Most of what I’m learning is coming straight from this book. Cocoa is not that easy but I feel that this tutorial sufficiently covers the subject matter at hand in-depth and gives a good deal of clarity to the fundamental concepts of this topic. I won’t be an expert by the time I’ve finished this book, no (this is never the case with any one book), though I will have a far better grasp of Cocoa. I’d say that at this time, it’s most likely the best book I could be reading on the subject. I highly recommend it to those of you out there who’d like to follow similar steps (if you buy only one book to get started with Cocoa, this is definitely the one I’d go for).
I read three chapters from Advanced Mac OS X Programmingso far, and I’m really glad I bought this book. If Cocoa Programming for Mac OS X (2nd Edition) is the the best tutorial to learn the basics and get started with, this advanced book appears to be what I’m really aiming for eventually and there is no doubt in my mind that it’s going to become my reference of choice along with the official Apple documentation. It covers difficult topics in detail and gives you insights that I’ve not found elsewhere on the Web. If I’m aiming to get serious about Mac development, I have to study this tome as best I can. I’m holding off on reading it for the moment, as I believe this book is the perfect continuation of the one I’m currently reading. From the chapters that I’ve read up until now, I’m wowed by this book. Mac OS X is a Unix OS, and this book covers that aspect by not leaving many details out. So far it looks like the perfect match up between theory (you will get a lot of college flashbacks when they talk about multi-threading and networking) and practice (the chapters on Memory management and Subversion are worth the price alone). Mark Dalrymple and Aaron Hillegass nail it again with a must-have book for serious developers.
Not bad, I bought three books and it turns out that two of them are great. I’m tempted to return the Objective-C one, but ultimately I don’t think that I’ll end up doing so.
I’ll suggest a fourth book, in case you are approaching Objective-C without any knowledge of C (but with at least some knowledge of other programming languages). I’m using it myself to brush up my C skills, which are certainly there, but in need of a quick refresher course.
Objective-C (aka ObjC) is a superset of ANSI C in fact. As such, any C program is also a valid Objective-C program. It provides you with a relatively easy and straightforward way of doing Object Oriented programming, while simplifying memory management. From what I’ve seen though, unless you are willing to become well versed in C, you won’t become an overly advanced Objective-C developer. Knowing C already (albeit I’m not a Guru), I must say that Objective-C is very easy and can be picked up in a matter of days. The real power and learning curve comes from the Cocoa framework itself, and that’s where I’m going to focus my efforts.