[comp.lang.c++] Objective-C review

noren@dinl.uucp (Charles Noren) (06/15/90)

About a week ago I posted a response to a query about 
Object Oriented graphics tools.  I had some questions about
the vendor and my e-mail responses to each of the equirer's
has bounced, so I'm posting this article.

We have been evaluating for over a week now the Objective-C
compiler and support tools, which include a browser, the
standard foundation class library (ICpak101) and their
graphics class library (ICpak201).  Objective-C is made by:

    The Stepstone Corporation
    75 Glen Road,
    Sandy Hook, CT 06482
    (203) 426-1875

We are working on a Sun 3/470 with a color monitor using
SunOS 4.0.3.  We have also tried it out on a Sun 3/260,
and a Sun 3/50 with only 4MB RAM and a monochrome monitor.
The tools work fine on all machines tested including our
dog 3/50 (the graphics package makes some nice assumptions
about patterns in place of colors on a monochrome screen).
In fact, on the 3/50 the graphics windowing package seemed more
responsive than the SunView windowing environment underneath
it.

Some specific comments about the Objective-C environment:

 o  Objective-C, the language.
    For a C programmer, I've found this language to be very
    easy to learn.  The documentation, which includes a
    tutorial and examples, is a pleasure to read.  The OO
    extensions are very simple to understand and I was able
    to write my first Objective-C program within an hour
    of first reading the manual.  The OO extensions are
    Smalltalk-like, including the late binding mechanisms
    of the objects.  This Smalltalk-like paradigm is very
    powerful and easy to learn and is one of Objective-C 
    strengths over C++.  The langauge does have a couple
    of worts.  One is that the current version does not
    support class variables.  I am told that this will
    be added possibly in the next version of the compiler.
    The other item missing is that Objective-C, like
    Smalltalk, does not have multiple-inheritence.  For
    me this is no problem, although I know there is *strong*
    opinions on both sides of this issue.

 o  The Browser.
    The Objective-C browser is WONDERFUL!  It comes up in
    the look and feel of the Objective-C graphics package
    (ICpak201).  It is currently a read-only browser, but
    a read/write browser is due to come out soon.  I'm not
    bothered right now by a read-only browser because I run
    with SunView along with the browser and can always quickly
    pop open a window when I need to do edits.  I've never
    worked with a browser before, but the very day I installed
    it I found I could not live without it.  One of the
    difficulties of an OO environment is that the code
    implementing a class (along with the documentation of the
    class) is very narrow, showing only the definitions and
    redefinitions inside that class.  A browser opens up the
    entire inherited world of an object and quickly shows all
    sorts of information, including the source code of the
    particular method of interest.

 o  ICpak101, the foundation class library.
    This class library provides many classes that are very
    useful in program development.  Classes include: arrays,
    collections (ordered collections, stack, set, dictionary),
    "balanced node" for the support of binary trees, points and
    rectangles that support primative graphics.

 o  ICpak201, the window class library.
    This class provides window management.  It runs on top of
    X-Windows (X11R3) and some of the native windowing
    environments on many of the host systems it runs on
    (including SunTools).  The class library nicely supports:
    windows (including scrollable and resizable windows),
    a variety of menus, buttons, notifiers, prompters, icons,
    color maps, and more.  The sample code provided includes
    a useable icon editor, menu-prototyper, and color edit
    facilities that can be easily built into applications.
    The class definitions are organized well, but I find that
    the browser is needed to really get a good feel of how
    the class library is put together.

 o  The 2-D graphics library.
    I don't have a copy of this, but this is in beta test at
    this moment.  I can't wait to try this out.

 o  Documentation.
    The documentation set that comes with this is one of the
    best document sets I've seen.  It is complete, accurate
    (I did find one minor pice of information missing in one
    spot), and a pleasure to read.  The binders are about
    11 inches by 9 inches, which I found a convenient size.

 o  Installation.
    This was a breeze!  For the compiler, ICpak101, and ICpak201
    you merely tar off from a tape and run.  For the browser,
    you tar off, edit a file, and then build the browser symbol
    tables for all the installed class libraries.  This was one
    of the easiest installs of a software package I've ever done.

 o  Technical support.
    Stepstone provides strong, friendly, responsive support,
    showing no evidence of impatience for a beginner in the
    language that I am.  I have talked with them about things
    such as my favorite compiler flags on the Sun C compiler
    and they have been very helpful in showing how I can perform
    the same functionality with their product.

 o  Database support.
    Currently there is no support to an Object-Oriented
    Database, other what you can normally interface with in the
    C language.  However, there is a rumor that they are
    working with Servio Logic (makers of Gemstone OODBMS) to
    provide an OO interface with their databse.

All-in-all, Objective-C is a very nice language and one that
should be considered in evaluating OO langauges. 

(Note: while cross-posted in both comp.object and comp.lang.c++,
followups are directed to comp.object).


-- 
Chuck Noren
NET:     ncar!dinl!noren
US-MAIL: Martin Marietta I&CS, MS XL8058, P.O. Box 1260,
         Denver, CO 80201-1260
Phone:   (303) 971-7930