From: nevin@dtint.dtint.com
Subject: Re: Why, Why, WHYYYY?? USE OBJECTIVE-C for IB??
Reply-To: nevin@dtint.dtint.com
Organization: Digital Technology, International
Date: Tue, 17 Nov 92 22:07:34 GMT

In article <1992Nov17.000924.8898@u.washington.edu>  
basiji@stein.u.washington.edu (David Basiji) writes:
> thomsen@spf.trw.com (Mark Thomsen) writes:
> 
> >Richard D Warner writes:
> >>     I'm a developer who just wants to get a product out the door, and
> >> I'm frustrated about having to learn a new language just to interface with
> >> IB.  I know you're supposed to be able to insert ANSI or C++ code into IB
> >> but I haven't been able to yet.  You still need to know what's going on
> >> with the implementation files (in Objective-C).  It's supposed to
> >> be "easier", but easier than what???  Why doesn't NeXT come up with a 
> >> version of IB written for C++?  

If you *really* want to know WHY, I suggest you read at least the first half of  
Brad Cox's book, "Object-Oriented Programming, an Evolutionary Approach, 2nd  
Edition".

To summarize: I don't care what anybody says (even Brad Cox got this one wrong  
in his book), C++ does NOT allow true dynamic binding-- it simulates it with a  
method selection mechanism where the desired method is dynamically chosen from  
a method list that is statically-built at compile time (i.e., the "virtual"  
method mechanism of C++).  And yes, there is a very big difference, with many  
ramifications.

I'm getting a little tired of explaining what the Objective-C approach promises  
for future systems, and how C++ does not provide the same promise of  
flexibility.  We have only begun to tap the possibilities of what the  
Objective_C approach can provide, consequently at a first superficial glance,  
it only looks different-- not better.  But it IS better-- in ALMOST every way  
(there's a couple of exceptions-- one is related to the run-time overhead  
required by the run-time system that is required for a true dynamic binding  
system, and there is no way around this).

To abandon it would, in my opinion, seriously jeapordize the future promise of  
NeXTSTEP.  The best approach is the approach that NeXT has taken (again, in my  
opinion), whereby if you really insist, you can also write C++ code on the  
machine.

For C++ to provide the same flexibility, it would HAVE to implement a similar  
run-time system as required by Objective-C.  And, it is not designed to support  
a similar run-time system-- you would either have a slower run-time system than  
Objective-C provides, or you would have to throw some language features of C++  
away.  However, with the continual hardware advances, I admit that the day may  
come where a slower run-time system that a patched C++ would provide (with true  
dynamic binding, without giving up any other of the current C++ language  
features) would no longer be a factor.

Also, the flexibility that true dynamic binding provides is, in my opinion, a  
key component of efficiently exploiting parallel processing on future systems,  
regardless of who provides those systems.

Believe me, NeXT made the right choices on this, and this will become more and  
more apparent as time goes on.

So far as the current popularity of C++, I would like to point out that Windoze  
is also the most popular GUI on the planet, but do I care?

Give me NeXTSTEP!
 
--
Nevin Pratt, Digital Technology, Int'l    Orem, Ut
NeXTmail preferred, but ONLY at my REAL email address: nevin@dtint.dtint.com

-- 
---
root	                               root@dtint.dtint.com
Digital Technology Int.                (801)226-2984	
500 W. 1200 South, Orem UT, 84057      FAX (801) 226-8438
Newsgroups: comp.sys.next.misc