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