From: berger@sfc.sony.com (Bob Berger)
Newsgroups: fj.mail-lists.x-window
Subject: Can C++ / X empower us to make great apps for the 90's?
Date: 8 Apr 92 10:14:53 GMT
Distribution: fj
Organization: SONY Advanced Video Technology Center San Jose, CA USA

Date: Wed, 8 Apr 1992 06:08:32 GMT
Message-Id: <1992Apr8.060832.9260@sfc.sony.com>
Newsgroups: comp.lang.c++,comp.windows.x,comp.windows.interviews,comp.object,comp.sys.sun.misc,comp.sys.next.misc

How does one do true Object Oriented GUI development under X and C++?

I want to treat my GUI objects (widgets, structured graphics, etc) as
first class objects. I want to create modified versions of existing
widgets through OO techniquies like inheretance using the OO language
mechanisms, not kludge toolkit mechanisms.

We have looked at InterViews for a while and have become disheartened
by its learning curve vs actual leverage in building an application.
Hopefully InterViews will  in its glyph incarnation that is
currently under development, but it does seem to be being rebuilt from
the bottom up and thus it has a limited set of core "widgets" at this
point.

Solbourne's OI which does seem to have a complete core widget set,
does not have resolution independence of InterViews or Postscript and
does not support structured graphics. 

All the other so called C++ X toolkits that I have seen are just
kludge wrappers around C implementations. They do not allow the
widgets to be first class objects.

Then we look at the reality of the state of the art in C++ with no
real reusable class libraries except for a couple math libraries and
hundreds of variations on basic container types. I don't know if
templates are going to finally allow for a marketplace for reusable
components or not.

This has become so frustrating that we are now considering trading off
the desire for industry standards and moving to NeXTstep (on the 486)
for our target! So far in our investigations, its development
environment is a dream compared to the C++ / X world.

The NeXTstep Appkit has a relatively simple set of objects to draw
from, but it seems to be surprisingly complete when you see how easy
it is to plug the different objects together and build more complex
objects that you can then easily share and reuse to incrementally
build up your applications.

The Interface builder make it easy to explore the appkit and
incrementally build up your application. You can try out the
application at any time during the development cycle without
recompiling the changes in the interface. You also can extend the
palete of objects from within the builder, making it easy to share and
reuse your extended toolkit.

The dynamic-binding of the Objective C extensions to the NeXTstep C++
compiler seem to be a key to allowing for the easy sharing, reuse and
incremental development process. The fact that the NeXTstep compiler
(and gcc-2.x) allows for the mixing of Objective C and C++ (and of
course C) in one program now allows the PROGRAMMER (as opposed to the
language designer!) to choose the level of binding (static or dynamic)
as appropriate for the application.

The dynamic binding combined with IPC makes it trivial to do
inter-object communications as well.

My goal here is not so much to praise NeXT. But to remind all of us
C++ / X folks that we are not living up to the promise of the OO
paradigm. The current C++ / X environments are not making it that much
easier to stand on the shoulders of people who have done the
foundation work. We still keep finding ourselves reinventing the
wheel, starting each project from first principles.

Are the next generation tools (C++ 3.x, DOE, OMG, InterViews/Glyphs, ??)
going to really make it SIGNIFICANTLY easier for us application
builders to address the levels of complexity that future applications
need to address?

It would also be nice if our toolkits could be designed for
flexiblitiy and technical excellence with less religious dogma and CEO
egos involved!

NeXTstep on top of mainstream Unix's and hardware platforms in a form
that would allow for mixing NeXTstep applications and existing X
applications would be a fine first step IMHO.

[I've set the followup to comp.object as that may be the most logical
(IMHO) place to continue this discussion]
-- 
Bob Berger  -  SONY Advanced Video Technology Center
685 River Oaks Parkway  San Jose, CA 95134 408-944-4964 FAX:  408-954-1027  
INTERNET: berger@sfc.sony.com   UUCP: [uunet,mips]!sonyusa!sfcsun!berger