More than 2 years ago we reviewed the excellent “Core Mac OS X and Unix Programming” book. Now, a new edition has been released and it’s renamed to “Advanced Mac OS X Programming“. We take a quick look as to what has changed since the first edition.The book now features about 80 more pages of useful information about the internals of OSX 10.4. And to fit all the new information, the introduction to the C language has been (justifiably) removed altogether. This book is meant for advanced programmers, so that chapter was a bit of a waste of paper. Instead, the compiler section has gotten some extra love, and a lot of information about GCC 4, its switches and its new vectorization feature, FAT/Universal binaries through the command line and XCode, and 64bit compilation tips and tricks are included. This chapter alone is a great step forward for developers who want to create multi-architecture binaries, from plain PPC to x86 or the G5’s 64bit capabilities.
The chapter discussing libraries also got a refreshing up with info about ranlib and library optimizations, how to create your own frameworks, and how to debug them more efficiently, using several techniques. The networking bit has been updated too detailing more information about IPv6 and DNS.
A brand new chapter is about the port from FreeBSD of the Kernel Queues (kqueues) feature. This is a notification system where the kernel notifies services and applications of interesting events happening in the lower levels of the OS. Another brand new chapter includes the discussion of launchd and daemons and how to create your own services. In the last chapter, “Performance”, the authors discuss for the first time about CHUD, the Apple performance tools. The book offers a quick glimpse on how to make the most out of CHUD and they also discuss why developers must optimize their applications (the authors believe that overall raw speed does not evolve as fast as it used to in the past).
An important change from the first book is the demise of CVS and its replacement with Subversion. This is a good decision on the author’s part to discuss a newer, more modern source control system like Subversion, instead of the restrictive CVS.
Smaller changes, fixes and additions can be found at the rest of the chapters that involve multiprocessing, multithreading, memory, GDB debugging, exceptions, files and permissions, keychain and authorization, Bonjour, Directory Services…
Other than that, the book’s writing style has not changed significantly since the first edition. The style feels “serious” without getting annoying or boring though. It is easy to understand and the long listing of source code now has enough comments in it so everyone can follow it.
If I were to nit pick something though, that would be –again– the lack of a chapter that describes how to build a sample driver for OSX. Other than that, advanced programmers who need to port or write a Unix-based application or service for OSX, should definitely get “Advanced Mac OS X Programming” for is the most in-depth guide for the internals of Mac OS X.
Overall: 9/10
This is probably not the correct place to ask, but I was in Borders today and I had a thirst to buy the most basic MacOSX programming book.
I need something simple and that I would be able to complete. Before tackling anything like the book Eugenia just reviewed.
Any recommendations?
Edited 2005-11-03 04:48
Most beginner books I’ve seen won’t centre around Mac OS X, in fact most are written with instructions and examples for Windows; however, any good beginner book on programming will stick to the standard library for whatever language you choose and as such the code itself should be good on any platform with a compiler. When you finish that beginner book you then get a more advanced one that may be specific to your platform of choice.
For C++ I recommend “C++ How to Program” by Deitel & Deitel, or if you have a lot of trouble learning C++ you could try “Learn to Program with C++” by John Smiley. The second book is easier to learn from, but the first goes further and imo is still a good book for beginners. As for other languages I’ve never really worried about them 🙂 .
I’ve taken classes from Deitel and while he is an excellent teacher in person, I think his text books leave something to be desired. When his first C++ book came out I thought it was not the best book for best OO practices. Something from Booch might be better. Just my opinion of course. YMMV
I feel old. I took “C Programming” and “Data Structures in C” from Deitel while I was working at DEC many eon ago.
Try this, “Cocoa Programming for Mac OS X” –
http://www.amazon.com/exec/obidos/tg/detail/-/0321213149/qid=113099…
It’s pretty friendly …
I second “Cocoa Programming for Mac OS X”. It’s quite accessable.
I’ll third that – very good book!
Thanks for the suggestion. Also to anonymous below for the suggestion about learning Obj-C before Cocoa.
When I first started programming on a Mac (and it really hasn’t been that long) the book that helped me the most was “Cocoa Programming for Mac OS X” by Hillegass. I got a bit stumped by the Objective C language and picked up “Programming Objcective C” by Kochan to compliment it. Not completely Mac based, but ObjC is the lagnuage used in the Cocoa framework. I can’t endorse these two books enough.
I’m a bit of a UNIX geek and love system level programming. I will definitely pick up “Advanced Mac OS X Programming” when I get some free time to play.
Spent all this money on my powerbook. And have been playing with the Dev tools. Sounds like a good book to get to start writing some fun apps…
I always find it hard thinking of an app to write or do though. I mean what app can one write that isnt already out there? Or what apps are out there that could use improving upon?
Still kinda upset about books I lend out that never seem to return to my collection… better follow up on those…
“I always find it hard thinking of an app to write or do though. I mean what app can one write that isnt already out there? Or what apps are out there that could use improving upon?”
I felt exactly the same way after becomming familiar with Java, then I dropped Java and started learning C++. Eventually the feeling gets frustrating but once you learn enough you start to shake it. The main thing is to learn the API for the platform you’re using, or if you use several platforms use a toolkit that covers them all and has GUI, thread, and network support. I still don’t know enough to write anything incredibly useful, but my experience with Java was that comming up with programs to write, no matter how simple, improve your skills and eventually you get to where you’re writing something you’re proud of.
How about a USENET client that uses CoreData as its back end? how about an application that parses phpBB so that one can use a nice client application rather than having to use a the advertisement laddened version.
Learn from this book:
http://www.amazon.com/gp/product/0672325861/104-3432102-7821565?v=g…
Programming in Objective-C
by Stephen Kochan
Aaron is one fine trainer and brilliant developer but you’re best served knowing the language and its syntax before you study with Aaron who wants to dive into the Frameworks and show you what they can do.
I’d like to develop for games. Users in my user group are always going on about games they want to play and not having the games PC/platforms have.
Of course I’m not going after Valve but it would be nice to work on MMORPGs [I like ’em].
The thing is: you can’t build something of that magnitude on your own, and there aren’t exactly many outfits out there where you can ply the trade.
What is one to do?
Become incredibly wealthy and spend your time and resources however you want. Or look for employment with a studio that does Mac games in that genre, like Blizzard. Or simply have realistic goals.
I would definitely look at getting involved with some existing projects…head over to sourceforge and I’m sure you’ll find something worth working on. Working with other guys with more experience is the best way to learn IMO (provided you find a good team who are willing to help out, Mac folks are friendly people so I’m sure that wouldn’t be a problem).
That being said, is there a decent RSS aggregator for Mac? The RSS spec is pretty simple, and it would expose you to some useful programming concepts.
NetNewsWire is the RSS Agregator with most market share on any platform. Quite decent if you ask me. There are plenty of other aggregators such as NewsFire, PulpFiction and Shrook