[comp.lang.c++] C++ Questions

Andre_Louis_Marquis@cup.portal.com (12/24/87)

>We are investigating the differences between Objective-C and C++.

>What class libraries are available for C++?
Try getting a copy of Keith Gorlen's OOPS Library.  It is perhaps even larger
than the Objective-C library, and there's no copyright restriction.  OOPS is
in the "guru-only" stage, but I found it as easy to use and it's free.
Mr. Gorlen's uucp address is uunet!mimsy!elsie!nih-csl!keith.  Basically,
you send him a tape and he returns it with a copy of the library and some
preliminary documentation.  (And it's not printed on 8 1/2x6 1/2 yellow paper,
for those of you who know what I mean. :-)).  OOPS is bug free in my
experience, but it may not have been ported to as many machines as the
Objective-C library.  You do get all the source code, however.  I recommend
it if you don't mind a little adventure.  I'm using it for a major project.

>(I just requested information about Phoenix's PForce++.)
Would someone mail me a hint about this?  I'm new to this conference.

>If I define a common superclass for all objects (Object), as
>others have mentioned, do I get the flexibility that Objective-C provides?
>Are there any problems with that strategy?  Since C++ doesn't provide this
>capability directly, it seems to conflict with C++'s underlying philosophy.
OOPS defines a common class hierarchy.  You may test object classes and
phyla.  Virtual methods are inherited and can be overridden.

>Is there any equivalent of [super foo] in C++?  This allows method foo to
>invoke the inherited method that was overridden.
You just scope the name -- super_class::foo().

>Are there any fundamental differences between the messagers, or is that
>simply an implementation issue?
There is no dynamic messaging in C++, i.e. no "perform: selector" message, but
normal messaging is faster.  You also get automatic constructors/destructors,
operator redefinition (<< and >> I/O is nice) and a more general paradigm.

(On the hustings he goes...)
But, most of all, C++ is a powerful, multi-vendor standard.  There are
free toolkits (OOPS for classes, InterViews for X Windows, ...?) and soon a
free compiler and debugger. (Thank you, Michael Tiemann and the Free Software
Foundation.)

I think that PPI has done some very good work with Objective-C.  They also
charge a hefty fee for it (An ICpak (It's user interface software.)
development license is $35,000 + $5,000 for the source code, for example.
I'm sure it's excellent stuff, but $40K is STEEP.)  You rely on them for
innovation and bug fixes.  (In addition, I think their documentation is
horrible.  Correct me if I'm wrong.  Their manual has ONE complete example
program.  Stroustrup's book is in a different league.)  There are people who
are glad to do the same manner of hand holding for you with C++ that PPI
provides for Objective-C.

I've used both and I prefer C++.  That's an opinion.

Andre Marquis

keith@nih-csl.UUCP (keith gorlen) (12/28/87)

In article <2132@cup.portal.com>, Andre_Louis_Marquis@cup.portal.com writes:
> >We are investigating the differences between Objective-C and C++.
> 
> >What class libraries are available for C++?
> Try getting a copy of Keith Gorlen's OOPS Library.  It is perhaps even larger
> than the Objective-C library, and there's no copyright restriction. ...

The OOPS library is about where the Objective-C library was circa
'84-'85.  The current Objective-C library is much larger, and has an
extensive set of classes for interactive graphics.

> OOPS is
> in the "guru-only" stage, but I found it as easy to use and it's free.
> Mr. Gorlen's uucp address is uunet!mimsy!elsie!nih-csl!keith.  Basically,
> you send him a tape and he returns it with a copy of the library and some
> preliminary documentation.

Please do not do this!  I'm trying to get out of the OOPS magtape
distribution business.  A new release of OOPS will be placed on the
C++ tape that USENIX is preparing.  Watch this newsgroup for an
announcement!

In the future, OOPS will be available via anonymous ftp.

> >If I define a common superclass for all objects (Object), as
> >others have mentioned, do I get the flexibility that Objective-C provides?
> >Are there any problems with that strategy?  Since C++ doesn't provide this
> >capability directly, it seems to conflict with C++'s underlying philosophy.
> OOPS defines a common class hierarchy.  You may test object classes and
> phyla.  Virtual methods are inherited and can be overridden.

Objective-C has "Smalltalk-style" messaging, C++ has "Simula-style"
messaging.  C++ messaging is safer and probably faster, Obj-C more
flexible -- and dangerous.

> >Is there any equivalent of [super foo] in C++?  This allows method foo to
> >invoke the inherited method that was overridden.
> You just scope the name -- super_class::foo().

The disadvantage of this is that you must know the name of the base
class, the advantage is that this extends easily to handle multiple
inheritance.

> >Are there any fundamental differences between the messagers, or is that
> >simply an implementation issue?
> There is no dynamic messaging in C++, i.e. no "perform: selector" message, but
> normal messaging is faster.

See above.
-- 
	Keith Gorlen			phone: (301) 496-5363
	Building 12A, Room 2017		uucp: uunet!mimsy!elsie!nih-csl!keith
	National Institutes of Health
	Bethesda, MD 20892

Andre_Louis_Marquis@cup.portal.com (12/30/87)

>The OOPS library is about where the Objective-C library was circa
>'84-'85.  The current Objective-C library is much larger, and has an
>extensive set of classes for interactive graphics.
I have Objective-C version 3.3, dated 2/13/87.  It has 23 classes including
Nil and Object (I'm too lazy to type the list.).  OOPS as of 10/2/87 has 42.
It's not much of an apples and oranges comparision, either.  OOPS is larger.

PPI offers ICpak 201, "A collection of Software-ICs which allows software
engineers to build custom, multiwindow iconic user interfaces for workstation
applications."  It has 49 classes, but as of 7/28/87, it's expensive -- $35,000
for a development license + $5,00 for source code.  For a commercial
application, it just might be the right thing since it exists now.

On the free front, there is a C++ toolkit on the X11R1 tape called InterViews.
It's still evolving and needed some patches to run on a Sun, but it works
quite well.  I doubt it's as extensive as ICpak (for which I have only seen
promotional literature).

Andre Marquis

keith@nih-csl.UUCP (keith gorlen) (12/31/87)

In article <2197@cup.portal.com>, Andre_Louis_Marquis@cup.portal.com writes:
* *The OOPS library is about where the Objective-C library was circa
* *'84-'85.  The current Objective-C library is much larger, and has an
* *extensive set of classes for interactive graphics.
* I have Objective-C version 3.3, dated 2/13/87.  It has 23 classes including
* Nil and Object (I'm too lazy to type the list.).  OOPS as of 10/2/87 has 42.
* It's not much of an apples and oranges comparision, either.  OOPS is larger.
* 
* PPI offers ICpak 201, "A collection of Software-ICs which allows software
* engineers to build custom, multiwindow iconic user interfaces for workstation
* applications."  It has 49 classes, but as of 7/28/87, it's expensive -- $35,000
* for a development license + $5,00 for source code.  For a commercial
* application, it just might be the right thing since it exists now.

Thanks for the "objective" comparison and the unsolicited testimonial.
I didn't realize that the graphics classes were a separate product,
and that expensive.

The biggest problem with OOPS right now is that the documentation is
badly incomplete and out of date.  I'm trying to do something about
that, but it is slow and painful.

* On the free front, there is a C++ toolkit on the X11R1 tape called InterViews.
* It's still evolving and needed some patches to run on a Sun, but it works
* quite well.  I doubt it's as extensive as ICpak (for which I have only seen
* promotional literature).

And the Andrew BE2 and X Toolkits will be on the X11R2 tape in
February, I believe.  Andrew is written in Class, and the X Toolkit in
plain C, but with free stuff like this around who will be willing to
pay $40K for ICpak 201?

Reminds me of the Bob & Ray radio commercial for Epson printers:

	Ray: How much does your printer cost?
	Bob: $1,000,000
	Ray: Isn't that rather expensive?  The Epson printer costs
		only $195.
	Bob: Yes, but if I can sell just one I can retire!

-- 
	Keith Gorlen			phone: (301) 496-5363
	Building 12A, Room 2017		uucp: uunet!mimsy!elsie!nih-csl!keith
	National Institutes of Health
	Bethesda, MD 20892