To view parent comment, click here.
To read all comments associated with this story, please click here.
The primary basis of SmallTalk as an object oriented system is that every "thing" is an object.
Objective-C fails rather completely as a proper object oriented system on that basic criteria.
Academically, yes, I would agree with you. Objective-C is a compromise language: it's not as beautiful or clean as Smalltalk, but it lets you work properly with existing C code, is dynamic, and fairly fast (and can be as fast as needed by using C methods/caching imp). Certainly it's a very useful language. Beside, one of the great thing with Objective-C is, strangely enough, the OpenStep framework (Cocoa or GNUstep). Between developing a gui application in Smalltalk and in Objective-C, I will take Objective-C + OpenStep every day, even if, as a language, I prefer Smalltalk. But my point is, while Objective-C is not as nice as Smalltalk, it's the next best thing if you want to use C.
It grafts the less important aspects of object-orientation onto C without making the language an object oriented language. (C++ has the same failing as an OO language.)
Less important aspects ??? To the contrary, it embodies all the important ones :-) -- particularly, it considers objects as "living entities" sending/receiving messages. To me, it's much more important to have a dynamic language with introspection/reflexion than having everything as objects. Don't get me wrong -- I agree with you, having everything as objects is wonderful, and extremely handy (and actually impact the introspection capacities, of course). But I'm very happy with the compromise Objective-C reached.
Edited 2006-11-06 19:53
The primary basis of SmallTalk as an object oriented system is that every "thing" is an object.
I understand that you'd prefer a complete "everything is an object" language but please tell me one thing...
- How can a superset of C (an ESSENTIAL aspect of ObjC) could treat everything as an object ?
The primary basis of SmallTalk as an object oriented system is that every "thing" is an object.
I understand that you'd prefer a complete "everything is an object" language but please tell me one thing...
- How can a superset of C (an ESSENTIAL aspect of ObjC) could treat everything as an object ?
It can't, which is why Objective-C can't really be described as derived from SmallTalk.






Member since:
2006-02-15
Objective-C is the simplest modification of C to add _proper_ object orientation, modelled after the Smalltalk paradigm. Much, much better than C++ ;-) and extremely far from "a bad idea", to the contrary.
I argued with Brad about this at the time and no one has convinced me differently since: The primary basis of SmallTalk as an object oriented system is that every "thing" is an object.
Objective-C fails rather completely as a proper object oriented system on that basic criteria.
It grafts the less important aspects of object-orientation onto C without making the language an object oriented language. (C++ has the same failing as an OO language.)