
From the early chapters (before flow control!), Dave introduces the concept of the compiler's memory reservation for variables. 4 bits for int's on my compiler! The closeness to the machine running my code makes me love coding even more. It's just not something I've seen in the beginner lit for higher-level languages.
No personal connection to Dave here. Just wanted to share a really well-done starting point to C for we newbs.
Any thoughts on next reads on C, if not K&R?
1) Learn C
2) Learn Objective-C
3) Learn Cocoa (Mac) or Cocoa Touch (iOS) - both APIs are similar
--------------------
C Books:
--------------------Learn C on the Mac, by Dave Mark
- Very newbie-orientated
- Hand-holds you through lots of stuff
- HIGHLY recommended for beginners
- Written specifically for Mac users (using Xcode 3.x)
- Won't make you an "expert" in C, but gives you the basics
- Code examples all available online
Bottom Line: Recommended
Programming in C (3rd ed), by Stephen G. Kochan - Well written
- on-par with "Learn C on the Mac" regarding beginner status
- Not platform specific (you should know Xcode, TextMate)
- Code examples don't generally jump chapter-to-chapter
Bottom Line: Recommended
--------------------
Objective-C Books:
--------------------Programming in Objective-C 2.0 (3rd ed), by Stephen G. Kochan
- I haven't fully read this book, but use it as reference
- Seems to be a great continuation from Mr. Kochan's C book (above)
- I wish I read this instead of Dalrymple/Knaster's
Bottom Line: Can't give a recommendation because I haven't fully read it
Learn Objective-C on the Mac, by Mark Dalrymple and Scott Knaster - Continuation from "Learn C on the Mac", but I didn't like it as much
- Writing style was a bit confusing at times. I preferred Dave Mark's C book.
- Mac-orientated (using Xcode 3.x)
Bottom Line: Recommended, with reservations
--------------------
Cocoa Books:
--------------------Cocoa Programming for Mac OS X (3rd ed), by Aaron Hillegass
- Chapters 1-8 were fine. Chapters 9-35 are a NIGHTMARE for newbies.
- Book uses new terms many times without defining them
- Better know what a File's Owner is, or else Chap 9 will confuse you, etc
- For one of the code examples the author wrote "I don't really expect you to
understand every line of that code now, but browse through the method and try
to get the gist."
- Book must be read sequentially, and code examples must be done sequentially.
Code examples in later chapters can reference code 5 chapters back. There's
no skipping around in this book, even for unrelated topics. Very annoying as
a reference book.
- For non-newbies, gives a "taste" of some of Cocoa's popular API's. You'll
have to read Apple's docs to really learn how to use them.
- Reading this book after getting some Cocoa experience was much easier.
Bottom Line: Very good intro to Cocoa's API's, but NOT for newbies coming
straight from an Objective-C book. Read another Cocoa book
first, program in Cocoa for 3-6 months, and then get this book.
Cocoa Programming for Mac OS X for Dummies (2nd ed), by Erick Tejkowski - THIS is the best "newbie" Cocoa book I've read. Very easy to understand
and follow.
- Hand-holds you the entire way.
- Many "minor" errors in the book and code examples, which is its only
downfall. However I managed to figure them all out and get every example
working.
Bottom Line: Recommended for newbies. Only caveat is there are a lot of minor
errors in the book, but I managed to figure them all out without
much sweat.
Dave Mark has also written a new Cocoa book which I haven't read: Learn Cocoa on the Mac, by Jack Nutting, David Mark, Jeff LaMarche. If it's anything like Mr. Mark's C book, it's probably pretty good. Check reviews on Amazon, etc...--------------------
Also of note, Apple announced Xcode 4 in June 2010, which will replace Xcode 3.x "sometime in the future". Currently it's in beta. It has a very different user interface than Xcode 3.x, meaning just about every Mac programming book will become dated the moment Xcode 4 comes out. Both 3 & 4 appear "similar", but different enough to confuse new programmers.