A page describing some other ‘must-have’ (or just plain useful) programming books for those dabbling in Cocoa.
Title:** Smalltalk Best Practice Patterns **Author: Kent Beck Publisher:** Prentice Hall **Release Date: October 1996 List Price:** $52.00 **ISBN: 0-134-76904-X
*Description: Ummm. What can I say? Buy this book right away. It’s probably the best book I own. It’s wonderful. OK, say some more. Some quotes from the Amazon site:
‘I am using this book heavily for all software projects I’m in. Instead of wasting time on deciding how to code things, just look at the patterns, then decide and code. The patterns presented in the book simplify software code maintaintenance.’
‘Smalltalk Best Practice Patterns isn’t just for Smalltalkers—there’s something here for everyone who programs. Kent’s insights, experiences, and raw wit are as entertaining as they are enlightening. If you have any passion for programming, in any language, buy this book. Read it. Live it.’
‘Although I’ve never used SmallTalk and have read only a couple of on-line introduction chapters on Dolphin SmallTalk, I had no problems reading it and applying the patterns in another language like Java, C++ or Python. Let me put it simple: If you want to learn to think in objects, don’t just read the book, do it!’
‘I’m currently using the book as a reference for style of OOP. From a teaching point of view, the book is also extremely useful. Kent Beck likes to ask quistions in a heuristic manner. Because of the simple approach to every day experiences of developing, all the way down to the experiences of beginners, you won’t have any trouble answering these quistions. In fact you’ll probably start asking quistions to yourself likewise because of the magnicifent way this mind trick works for your way of thinking in objects (or otherwise).’
Enough. Buy it, already.
*Amazon Link: http://www.amazon.com/exec/obidos/ISBN=013476904X
Title:** Design Patterns - Elements of Reusable Object-Oriented Software **Author: Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (The Gang of Four). Publisher:** Addison Wesley Professional **Release Date: October 1994 List Price:** $49.95 **ISBN: 0-201-63361-2
*Description: Most of the stuff in here is, really, commonsense, and anyone who’s been doing O-O for any amount of time will (perhaps unknowingly) have used some or all of the patterns in here before. Where this excels, however, is putting everything in plain language, giving things names, and indicating how they relate to one another. On the downside, it’s biased mainly towards C++ and Java. However, you won’t regret buying a copy, you’ll find yourself dipping into it more often than not (And it gives you all those good buzzwords to throw around in job interviews, not that I’d do that, oh no, not me, honest).
This qualifies as a ‘must have’ book for anyone doing OO work. No question. If you don’t have a copy, what are you doing reading this? Go buy it right now.
*Amazon Link: http://www.amazon.com/exec/obidos/ISBN=0201633612
Title:** The Design Patterns Smalltalk Companion **Author: Sherman Alpert, Kyle Brown, Bobby Wolf Publisher:** Addison Wesley Professional **List Price: $39.76 *ISBN: 0201184621
*Description: This is a companion to the above book, but stands by itself quite well if you know any SmallTalk. If you’re doing Objective-C Cocoa development, the similarities between the two languages will mean that this book is possibly more useful than the original. I personally find myself using this as much if not more than the original Gang Of Four book, especially whilst doing Cocoa stuff, but then I grok Smalltalk.
This is maybe not a ‘must buy’, but is definitely worth getting on permanent loan from the library.
*Amazon Link: http://www.amazon.com/exec/obidos/ISBN=0201184621
Title:** Extreme Programming Installed **Author: Ron Jeffries, Ann Anderson, Chet Hendrickson Publisher:** Addison Wesley Professional **List Price: $29.95 *ISBN: 0201708426
*Description: The only one of the ‘Extreme Programming’ series I’ve got round to reading, and it’s a good read. If you’ve ever done any programming in a large team environment, you’ll find yourself nodding as you read. Not ‘nodding off’, but nodding in vigorous agreement. Again, it’s another ‘commonsense’ book. So where’s the impact on Cocoa? Well, first off, after reading this, you’l understand why Sen::te’s (http://www.sente.ch) rather wonderful OCUnit software is there. And why it’s so wonderful. And why you should use it. And if that’s all you get from reading this, you haven’t wasted your money.
It should be noted that this book can also be downloaded in pdf form, free of charge, from http://www.xprogramming.com. If you can bear reading off the screen (or have access to a laserprinter), that’s a rather good deal.
*Amazon Link: http://www.amazon.com/exec/obidos/ISBN=0201708426
Title:** The C Programming Language (2nd Edition) **Author: Brian W. Kernighan, Dennis M, Ritchie Publisher:** Prentice Hall **Release Date: March 1988 List Price:** $40.00 **ISBN: 0131103628 *Description: ( NOTE: I changed the name from Kernighan to Ritchie, as it was Ritchie who made C, not Kernighan - PietroGagliardi ) A must read for anyone who wants to learn a language built on top of C. If you don’t know who Ritchie is then you should find out!! Apple’s book on Objective-C “Inside Cocoa: Object-Oriented Programming and the Objective-C Language” recommends one book, this one (Chapter 1 p13). Need I say more.
Yes, I agree this is a supplemental reading. Yes, I know this book is for pointer loving bit flipping freaks. Yes, I know Cocoa is a higher level language and a much more elegant way to program.
After drinking the Kool Aid and pledging my elegance to OOP, I have to admit that I grab this book as much as I grab any other. I’m not in any way saying that procedural programming is the way to go. Cocoa is where it’s at!! I do think that this book still needs to be recommended. Apple will even fall back on simple C function calls when speed is critical.
void NSFrameRect(NSRect aRect); void NSFrameRectFillList(const NSRect *rects, int count);
IMHO encapsulating to the point of rarely passing pointers is a bad habit to get into. Setters and Getters make for clean interfaces, but don’t kill yourself over it. Almost all Cocoa programming books ignore the issue of how to mix C code with Objective C code. Many Cocoa books will make a passing statement like “Objective-C is a superset of C so you can do things the C way if you want to”, but Cocoa book authors are so consumed with preaching the ways of OOP they forget to explain how to hack for efficiency.
Yes, unexpected things will happen when you stop encapsulating all of you data. Yes, objects that are not encapsulated should not be considered true objects. Yes, hacking for efficiency creates bugs that are hard to trace and makes your code less self documenting.
If done carefully and with discretion, passing pointers to instance variables is a practice that has a place in Cocoa programming. Wrapping objects that share data into a single autonomous object should be a design apprach to consider.
If you want to learn C++, Java, Objective-C - heck, even C - this is the VERY FIRST BOOK YOU MUST GRAB. (Or borrow from your cousin like I do :-) ) WHY? It was co-authored by THE GUY WHO MADE C AND Unix: Dennis Ritchie. C is THE language on which C++, Objective-C, and Java were based upon (although Java was initially a replacement for C++), thus it is ESSENTIAL. The first edition was the book used by many programmers to learn C and build C implementations. This second edition covers the ANSI/ISO 1989 standard of C (Ritchie does not want to write a version for the new 1999 standard, although it has very little essential language functionality that is added on). Unix 2.0 and onwards was written mostly in C, and MacOSX was based on Mach, a Unix clone. In short, BUY IT NOW!!! - PietroGagliardi
*Amazon Link: http://www.amazon.com/exec/obidos/ISBN=0131103628
Title:** Practical C Programming **Author: Steve Oualline Publisher:** O’Reilly **Release Date: August 3, 1997 List Price:** $34.95 **ISBN: 1565923065
*Description: A good beginner’s introduction to the C language and related concepts like code style and the development process. It’s what got me started, and I still refer back to it occasionally.
Quotes from Amazon reviews:
‘If you write code for a living, this probably isn’t the book for you. If you don’t already know a programming language more complicated than BASIC or don’t have some basic knowledge of C then this book is not for you. HOWEVER, if you’ve taken a class in c, read a book but didn’t really feel like you’ve really understood c, this book is for you. ‘
‘The author also goes beyond the basics, and covers some hints and tips that are not mentioned in any other beginner’s book that I can find. For example, many beginner’s books warn about the erratic behavior of scanf(), but only Practical C takes the extra step by providing a complete workaround (the author advises not to use scanf(), and to use fgets() and sscanf() instead).’
‘This is THE book that really got me started in C programming. I have read a couple of other C books before but this one was by far the best one I have read. My recommendation is that you should have some programming knowledge first (any language) before diving into this book, I had PASCAL. Although it’s possible to learn from it as a complete newcomer it’s probably harder to digest, that really depends on the reader. This book is just about basic C syntax and a couple of data structures, which is good IMHO. Nothing really advanced so you will have to move to another book afterwards if you wish to become well versed in C.’
*Amazon Link: http://www.amazon.com/exec/obidos/ISBN=1565923065
Title:** Beginning C **Author: Ivor Horton Publisher:** Wrox Press **Release Date: August 22, 1997 List Price:** $34.95 **ISBN: 1861001142
*Description: Another introductory book, bigger and more comprehensive than Practical C. Assumes no prior programming knowledge, starting off with a step-by-step guide to coding, building and linking Hello World! Lots of code samples, including a few complete, functional programs (an Othello game, a hex viewer, a simple encryption scheme.)
Quotes from Amazon reviews:
‘Beginning C is very easy to read, well organized and contains clear examples. If you really want to learn C without too much fuss, this is the book.’
‘The examples are great if you work them out (can not learn otherwise). What I like the best is that the examples are in bold letters so that they stand out from the rest of the text. It is easier for the reader to visually keep things in order. Do I make sense?’
‘This book was pretty well organized, as well as having good excersies and a nice program to do at the end of each chapter. I still go back to this book for reference on topics that I can’t quiet remember.’
*Amazon Link: http://www.amazon.com/exec/obidos/ISBN=1861001142
Title:** Refactoring: Improving the Design of Existing Code **Author: Martin Fowler (with contributions from Kent Beck and others) Publisher:** Addison-Wesley Pub Co **Release Date: June 28, 1999 List Price:** $54.99 **ISBN: 0201485672
*Description: “Refactoring: Improving the Design of Existing Code” starts off with an example on refactoring a simple Java application. It then provides further detail on detecting when you need to refactor and why it is important. This book also provides a catalog of many refactorings to apply in different situations. Each refactoring provides a quick example (code or UML diagram), steps in order to accomplish the refactoring, and a detailed example and description of the refactoring process.
I must say, this book has improved my programming technique more than any other book I have read. (No more spaghetti code for me!) Even though I have no experience with Java, the examples are easy to understand and all ideas found in this book can be applied to Objective-C. A must read for any experienced programmer wanting to improve the design of their code. – RyanBates
*Amazon Link: http://www.amazon.com/exec/obidos/ISBN=0201485672
Title:** Open Source Development with CVS **Authors: Moshe Bar & Karl Fogel Publisher:** Paraglyph Press **Release Date: August 2003 List Price:** $39.99 **ISBN: 1932111816
*Description: Overview of CVS, and also how it specifically relates to open-source development. The entire book is under the GPL, and is available at the link below. Doesn’t seem to have gotten very good reviews at Amazon, but hey, it’s free
*Amazon Link: http://www.amazon.com/exec/obidos/ISBN=0201485672
*Book Link: http://cvsbook.red-bean.com/
Title:** Advanced Unix Programming **Authors: Marc J. Rochkind Publisher:** Addison-Wesley **Release Date: April 2004 (Second Edition) List Price:** $49.99 **ISBN: 0131411543
*Description: Don’t let the title fool you, I think Unix for advanced (or intermediate) programmers might be truer to the books content. GREAT book when you have to dip into things unsupported by Cocoa, or when you want to make your back end portable. Covers everything from opening files to shared memory to signals. After reading this book I have a better idea of what Unix is.