[comp.sys.next] C++ vs. "Objective C"

ak10+@andrew.cmu.edu (Andrew Joseph Kompanek) (08/09/89)

I have a number of questions regarding NeXT's choice of Objective C as the
development language of choice:

First, is there an Objective C standard, either formal or informal?  If not,
what was NeXT's reasoning behind adopting Objective C?  In any event,
why wasn't C++ chosen?  Its popularity is growing and more important,
Stroustrup has defined the language formally.

Thanks,
Drew

Andrew Kompanek
Carnegie Mellon University - Class of '92

bruceh@zygot.UUCP (Bruce Henderson) (08/09/89)

In article <QYrspry00Uw74A3X0p@andrew.cmu.edu>, ak10+@andrew.cmu.edu (Andrew Joseph Kompanek) writes:
> First, is there an Objective C standard, either formal or informal?  If not,
> what was NeXT's reasoning behind adopting Objective C?  In any event,
> why wasn't C++ chosen?  Its popularity is growing and more important,
> Stroustrup has defined the language formally.

The main reason behind this is probably due to the fact that C++ is a
fairly recent beast.  When work was begun on the NeXT and NeXTStep
(about 3 or so years ago) C++ was not really a consideration.
Originally there was even a lot of talk about using Smalltalk as the
native software environment.  Thank goodness they at least picked a
flavor of C!  Up until recently the only people who had a good C++
compiler [CFront] working was (believe it or not) Apple Computer Inc.
They also fixed many of AT&T's bugs for them.... so thank you Apple for
C++!
-- 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Bruce Henderson                                       Software Engineer
zygot!bruceh@Apple.COM			    
"Sorry, Mathematica can't goon this much"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

johnson@p.cs.uiuc.edu (08/10/89)

 bruceh@zygot.UUCP (Bruce Henderson) writes:

>The main reason behind this is probably due to the fact that C++ is a
>fairly recent beast.  When work was begun on the NeXT and NeXTStep
>(about 3 or so years ago) C++ was not really a consideration.
>Originally there was even a lot of talk about using Smalltalk as the
>native software environment.  Thank goodness they at least picked a
>flavor of C!  Up until recently the only people who had a good C++
>compiler [CFront] working was (believe it or not) Apple Computer Inc.

I have been using reliable (though not bug-free) cfront compilers for
several years.  I've never used one by Apple.

Smalltalk is my favorite language.  I don't buy machines that don't run
it.  Current implementations are certainly slower than C++.  There are
also problems linking with other languages.  However, Objective C
messaging is no faster than Smalltalk messaging.  The only speed
improvement comes from having fewer messages.  On the other hand,
C++ is easy to make fast.

david@jpl-devvax.JPL.NASA.GOV (David E. Smyth) (08/11/89)

bruceh@zygot.UUCP (Bruce Henderson) writes:
>ak10+@andrew.cmu.edu (Andrew Joseph Kompanek) writes:
>> First, is there an Objective C standard, either formal or informal?  If not,
>> what was NeXT's reasoning behind adopting Objective C?  In any event,
>> why wasn't C++ chosen?  Its popularity is growing and more important,
>> Stroustrup has defined the language formally.
>
>The main reason behind this is probably due to the fact that C++ is a
>fairly recent beast.  When work was begun on the NeXT and NeXTStep
>(about 3 or so years ago) C++ was not really a consideration.
>	...  Thank goodness they at least picked a flavor of C!

Besides, ObjC is alot cleaner than that disasterous hack called C++.
C++ starts out looking wonderful, and it has alot of great concepts,
but it is really infact a research project.  The developers (Stroustrup et al)
are off working on rahter bizarre "enhancements" while the core remains
a twisted wreck.

For example, there is no support for class objects.  Well, there sort of is,
but is is mired in more caveats than rules.

For example, the operator stuff is a nightmare.

For example, the implicit constructor stuff is mostly useful for
useless objects: it is most usful for objects like ints and floats,
but rather terrible for the typical objects which live forever.  The
activation/inactivation mechanism of ObjC is alot more useful for
object oriented software.  The constructor/destructor stuff is alot
more usefule for archaic structured programs with specialized data types
which are kinda like proto-objects.

After putting my career and reputation on the line boosting C++ for an
important project here at JPL, I think I've seen the good and bad side
of it.  C++ really isn't good enough.

I don't use C++ anymore.  I just do Object-Oriented designs and programs,
but I use C as the implementation language.  These object veneers are 
simply not necessary.

Remember the early days of Structured Programming, when everyone said you
had to use COBOL if you wanted structured programs?  That was BS, and so
is the current "conventional wisdom" that we need super-duper object oriented
languages to do object oriented programming.

C works.  And it is very obvious what happens.

sg04@GTE.COM (Steven Gutfreund) (08/11/89)

In article <5547@jpl-devvax.JPL.NASA.GOV>, david@jpl-devvax.JPL.NASA.GOV (David E. Smyth) writes:
> I don't use C++ anymore.  I just do Object-Oriented designs and programs,
> but I use C as the implementation language.  These object veneers are 
> simply not necessary.


This is an interesting comment. I think for some applications this might be
fairly true. However, I tend to feel that if a person really is doing very
exploratory work, he might miss the polymorphism of TRUE OO languages. Also,
languages such as Smalltalk have a great library of things in the collection
classes (dictionaries, sets, ordered collections) that might be tedious to
reimplement. Can anyone list other things that might be lost in returning
to straight C implementations?




-- 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Yechezkal Shimon Gutfreund		 		  sgutfreund@gte.com
GTE Laboratories, Waltham MA			    harvard!bunny!sgutfreund
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

jpd00964@uxa.cso.uiuc.edu (08/15/89)

[C++ vs. Objective C]

Actually, this same argument seems to be going on on the Mac Notes files.

While I do not know NeXT's reason for picking it, I do know some of the
advantages of Objective C.  First there is a much stronger inheritance in
Objective C.  There are even tokens for using this inheritance (self and
super).  C++ seems to be missing these.

Second, What seems to be C++'s advantage over Objective C,operator overloading,
is completely documented by Stroushoup (or however you spell it :->)
to not be used.  Or rather, "used very very rarely".  

My first OO lingo was Objective C, but after training someone who knew 
C++, I realized that much of C++ object oriented flavor is really lacking.
It is hard to explain, but the smalltalk messaging seems to encourage 
object oriented thinking while the C++ function calling still leaves people
thinking in Structured programming.

As far as messaging being slower, it is very easy to get around it and
call all the messages directly.  This is discouraged except where time will
be sped up incredibly.  (iterations of a thousand).  This allows the function
to be used as a normal function while still having an Object Oriented flavor.

Michael Rutman
Softmed