79 of 82 people found the following review helpful
Unlocking Cocoa Programming,
Verified Purchase(What's this?)
This review is from: Cocoa Design Patterns (Paperback)
This superb book has finally unlocked Cocoa programming! Let me explain.
In most subjects we learn by acquiring a little bit of knowledge and, once that bit has been understood, we move on to the next little bit, until the bigger topic is understood. First we learn A then we learn B. Unfortunately, this method of learning does not work well with application frameworks such as Cocoa. These frameworks usually consist of a number of complex idea that are strongly interrelated. You cannot learn A then B, since A requires B and B requires A. Instead you must learn topics A..Z all at the same time! Cocoa is especially difficult for most programmers since it is based on using Objective C, and Objective C is based on Smalltalk. Smalltalk is an extremely dynamic language whose principles are significantly different than those of current popular languages. Thus, most programmers must learn zilllions of elements of the Cocoa framework and also the unusual ideas behind Objective C (Smalltalk). These are essential since Cocoa works differently than other popular frameworks and cannot be understood without understanding Objective C's dynamic approach to programming.
Up until now we have had Objective C books which help learning Objective C, and the excellent Hillegass book (Cocoa Programming for Mac OS X) which is a tutorial on Cocoa. The Hillegass book does help the reader understand many principals behind Cocoa, but it stops short of giving in depth knowledge of the design patterns that Cocoa uses. Thus when the user tries to go beyond the Hillegass book he/she is frustrated because they were not taught the full idea behind each element of Cocoa and their connections to other elements. There is not enough information for the reader to branch out to develop their own programs.
Cocoa Design Patters, on the other hand, presents, in a very professional manner, the most important Cocoa patterns, in depth, and how they are all inter-related. Furthermore, it presents details how how to use the patterns, examples of where they are used in Cocoa, and includes extremely valuable and unbiased information on the pro's and con's and pitfalls of using each pattern. Although this is certainly not tutorial/beginner information, the book is extremely well written and enjoyable to read (especially for those of us who loved Smalltalk and other dynamic languages). It is one of the best written highly technical books I have ever read (and I have been programming since 1970).
In my opinion this book will save the prospective Cocoa programmer many, many, many hours of frustration. I only wish it had been available several years ago when I first tried to learn Cocoa (I did not succeed then, but I am succeeding now).
One final note. The authors could do the Mac Developer Community, and the wider developer community, an enormous favor. In this book they demonstrate an impressive depth of knowledge about Cocoa, Objective C, the Mac development world, and the XCode tools. It would be fabulous if they were to develop a professional unbiased critique and comparison of the pro's and con's of the Objective-C/Cocoa approach to development with other framework/development environments (e.g. Microsoft's). I think this is especially important since the dynamic language approach to programming has fallen out of favor, yet I think it has many benefits that are seriously under appreciated. This document would:
Clearly show programmers the benefits of the dynamic language / Cocoa approach to programming. Perhaps it would reawaken interest in dynamic languages!
Point out the areas where Objective C/Cocoa/XCode has weakness and should be improved. This may inspire Apple to improve their development tools at a brisker pace.'
The development world has had few breakthrough improvements over the last decade or two. I think that much can be learned from Cocoa/Objective C, and I hope That Cocoa Design Patters is just the beginning of a renewal of interest in this too-long-neglected approach to software development.
Sort: Oldest first | Newest first
Showing 1-2 of 2 posts in this discussion
Initial post: Dec 24, 2009 12:56:58 PM PST
A. Cheng says:
I cannot agree more with this and several reviewers' positive comments. This book leads the reader into the engineering part of the Cocoa programming. By looking "under the hood", it instills a higher level of interests in those who are curious about how things are done. At first sight, I said to myself "No, another pretentious call by the authors of the M-V-C pattern!". But as I dug deeper, and as a novice in programming, my interest of how to view all these different classes come together in a strategic manner really bring out the excitements in myself. When a programming book becomes an interesting read, it is either I have finally realized that I am a geek or more likely that finally a great book was born on this topics.
Posted on May 22, 2011 1:54:06 PM PDT
I'm a C# and Python developer. I've been considering developing applications for Cocoa, hence my interest in the book. I applaud the thorough and well written review. However, I would argue that dynamic languages aren't only in vogue, but they are taking developer mind share from the likes of Java and C++. Python and Ruby are both dynamic languages with a vibrant and growing developer community, and in recent years C# has introduced lambda functions and other dynamic programming concepts.
Having done it both ways, I'm of the opinion that dynamics get's it done faster, but not better. In C# I tend to use the dynamic aspects of the language in the prototyping stage of the project, and then go back and rip all of that stuff out, once I understand the "right-way."
‹ Previous 1 Next ›