[OT] Re: Programming
[OT] Re: Programming
- Subject: [OT] Re: Programming
- From: "David W. Halliday" <email@hidden>
- Date: Tue, 11 May 2004 08:51:13 -0500
- Organization: TNRCC
Daniel Todd Currie wrote:
Since you are (opparently) interested in Mac programming, I'd
personally recommend starting with C and then making the relatively
small leap to Objective-C. This will make learning object-oriented
design significantly easier, since Objective-C is more similar to C
than C++ is to C. This is the route I chose, and I have been quite
happy and have found no real roadblocks on the way to becoming a
competent Cocoa programmer.
-- Daniel Currie
On 2004 May 09, at 17:25, email@hidden wrote:
...
Not only is Objective-C /syntactically/ more similar to C than to
C++ (baring jumping right into Objective-C++, but let's ignore that), I
have found that learning C++ actually appears to get in the way of many
programmers trying to come to grips with the Object Oriented part of
Objective-C! Many appear to equate C++ with Object Oriented
Programming, and, therefore, appear to have a tendency to think that the
way they've done such things in C++ is the way they /must/ do it.
The real problem with the C++ -> Objective-C transition, in my
opinion, is that C++ is not truly an Object Oriented Language---at least
not in the sense of SmallTalk, the premier OO language (the one for
which OOP was coined, in fact). In fact, even C++'s inventor, Bjarne
Stroustrup, does not refer to C++ as an Object Oriented programming
language, but as a Multi-paradigm language.*
Admittedly, I've probably sparked a Language war, with these
sentiments. For that, I apologize in advance.
After all, it's really just my opinion. However, I have definitely
noticed that those programmers that attempt to approach the concepts of
Object Oriented Design and Programming from a C++ perspective (and, to a
lesser extent, from a Java perspective) appear to have a much harder
time making the shift in thinking from simply trying to implement
abstract data types, to truly thinking in terms of Objects. On the
other hand, I find that those that approach Object Oriented Design and
Programming from a fresh, non-programming perspective usually have the
easiest time. (Admittedly, Objective-C is nowhere near as good at
helping one make this leap as is SmallTalk. However, at least for now,
Objective-C is far more readily available and generally usable---though
I wouldn't mind seeing this change in favor of some language that's much
closer to the "everything is an object" philosophy of SmallTalk. On the
other hand, I most definitely find that Objective-C's use of a distinct
syntax, similar to SmallTalk's, for message passing, vs. data structure
access, does provide a significant impetus in helping a programmer make
the transition to Object Oriented thinking.)
Anyway, such has been my experience, and, hence, such is my opinion.
David
* However, Bjarne does claim that C++'s object oriented support is
patterned after SIMULA, which some claim to be the first Object Oriented
language. Admittedly, SIMULA was the first to use the class/object
terms, however, as pointed out in "Simula and Smalltalk: A Social and
Political History"
<
http://www.cs.washington.edu/homes/dugan/history.html>, the designers
didn't go very far in this direction, since, after all, SIMULA was
designed for /Simulation/. It was SmallTalk that took the concepts of
Objects and ran with it---arguably as far as one could possibly run with
it, since /everything/, even your code, is an object. Contrast this
with SIMULA, and its successor, C++, where classes are really just
relegated to implementing abstract data types. (It's a very
different/distinct way of thinking---a paradigm shift, if you will. One
that I find is harder for those that approach it from a SIMULA based
language, like C++, than for those that have either no computing
background, or who were introduced to OO via a SmallTalk based language.)
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.