C is for Cocoa
Subject:   Re: C/Obj-C/and blasted OO
Date:   2003-08-01 15:29:40
From:   halliday
Response to: C/Obj-C/and blasted OO

You ask for "2.) A good, C->Obj-C tutorial." Does this have something to do with your statement about how you "simply loath OO programming?"

When you say "I simply loath OO programming" I wonder whether the issue may be the difference in the paradigms of Object Oriented vs. procedural programming? OO is a very different way of thinking about programming. Yes, you can, ultimately, accomplish all the same ends with either (C and any OO languages are all Turing equivalent, after all). However, just as with any language comparison, there will be things that will be much easier to accomplish (or, potentially, even grasp, mentally) via one paradigm (world view) vs. another.

Interestingly, I have found that for many people, those that have not had prior C (or other procedural) programming experience before learning about OO have a far easier time. Perhaps it has something to do with the types of people that have tended to learn programming before OO, but I tend to believe it has to do with the difficultly in unlearning old concepts about what programming is.

In any case, I'm glad to see that you have already found the "ObjC.pdf on the Mac Dev site", since, otherwise, this would have been my first recommendation. Another good choice, if you can find a copy, is the old Byte magazine article on SmallTalk (anyone know the date of that article? Sometime in the 80's I believe)*.

* I was actually exposed to SmallTalk, via this article, long before any other exposure to OO. However, just like Steve Jobs' first exposure to Xerox's work failed to impress upon him the true beauty and utility of OO [vs. his being enamored by the GUI], there are beauties of SmallTalk that I only came to recognize much later, after having experienced other OO-like languages. (Can you imagine a programming language that has no native control or looping constructs, other than some textural macro languages, and yet has sufficient power to allow the creation of such constructs by the user [though these are usually included in the standard libraries]?)