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