[comp.std.c++] C++ Class Library Standards

noren@dinl.uucp (Charles Noren) (08/03/90)

What is being done about establishing official class libraries
for C++?  I think a standard that addresses class types of
similar power as the National Institute of Health Class Library
(NIHCL) would be quite useful in developing portable code.
Perhaps significant movement is already being made in class
standards, and what is proper to be considered as standards
associated with C++, but I'll continue with my ignorance and
suggest some "strawman" class libraries I would like to see:

  1.  General data structures.  This would include things
      like collections, bags, sets, dictionaries, stacks,
      queues, heaps, etc..  Similar to NIHCL.

  2.  Math class library.  This would include matrix operations,
      complex numbers, and other mathmatical classes.

  3.  Operating System class library.  This would include
      a "process" class (start and kill processes, status
      processes),classes that support Inter-Process Communication
      (IPC), perhaps file I/O.

  4.  Database class library (I've heard that there are OODB
      standards groups in existance).

  5.  A windows class library (perhaps similar to InterViews).

  6.  A 2-D graphics class library.  This would support line
      graphs, bar charts, pie charts, etc..

  7.  A 3-D or advanced graphics library.

Some of these class libraries probably don't fall into the
domain of the C++ standards group, but it would be nice to
develop a master plan for class libraries, which would have
obvious advantages.  What is being done?  What would you like
to see?

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

psrc@mtunq.ATT.COM (Paul S. R. Chisholm) (08/05/90)

In article <1684@dinl.mmc.UUCP> noren@dinl.UUCP (Charles Noren) writes:
> What is being done about establishing official class libraries for
> C++?  I think a standard that addresses class types of similar power
> as the National Institute of Health Class Library (NIHCL) would be
> quite useful in developing portable code.

and suggests such a library should include

>  1.  General data structures.  This would include things
>      like collections, bags, sets, dictionaries, stacks,
>      queues, heaps, etc..  Similar to NIHCL.

True enough.  However, by the time we have an standard for C++, we
should have a standard for encapsulated data types.  For projects that
want to do lots of static type checking, using encapsulated types is
better than using the Smalltalk/NIHlib approach.  For projects that
want to do Lisp-like applications, more type freedom at compile time is
handy.  The language, and thus, the standardization effort, does and
probably should favor the former class (no pun intended) of users.

>  2.  Math class library.  This would include matrix operations,
>      complex numbers, and other mathmatical classes.

Complex is close to being standard; they're in the AT&T distribution.
Matrices are re-invented often enough that they should be standardized.
Should they do run-time bounds checking?  (Probably.)  Should arrays
that do run-time bounds checking be part of the standard?  (Probably.)

>  3.  Operating System class library.  This would include
>      a "process" class (start and kill processes, status
>      processes),classes that support Inter-Process Communication
>      (IPC), perhaps file I/O.

File I/O, yes, and almost certainly iostreams.  The Task library does
lightweight processes (and has a portable interface, but can't be
implemented portably, which is okay).  The semantics of starting a new
process vary drastically from operating system to operating system.
How heavily should the C++ standard rely on POSIX?  (Bear in mind that
there are some POSIXisms that break existing UNIX(R) code.)

>  4.  Database class library (I've heard that there are OODB
>      standards groups in existence).

I worry that they're going to be ready by the time the rest of the
standardization effort is close enough.

>  5.  A windows class library (perhaps similar to InterViews).
>  6.  A 2-D graphics class library.  This would support line
>      graphs, bar charts, pie charts, etc..
>  7.  A 3-D or advanced graphics library.

Both the portability and timeliness issues are a problem here.  Very
little of *any* of the things we've discussed here are "codifications
of current practice", but are of general interest to C++ programmers.
I'm not sure the same can be said of graphics.

> What is being done?

Some people are talking about it in netnews.  Ooooh.-)

> What would you like to see?

If we don't *finally* agree on a standard String class, there's gonna
be blood in the streets.-)

>Chuck Noren, Martin Marietta, dinl!noren@ncar.ucar.edu

Paul S. R. Chisholm, AT&T Bell Laboratories
att!mtunq!psrc, psrc@mtunq.att.com, AT&T Mail !psrchisholm
I'm not speaking for the company, I'm just speaking my mind.
UNIX is a registered trademark of UNIX System Laboratories, Inc.,
a subsidiary of AT&T.

mjv@objects.mv.com (Michael J. Vilot) (08/08/90)

Chuck Noren asked about the current state of the standardization of class
libraries for C++, and suggested some candidates for inclusion.  I have
been working with the folks on the X3J16 committee who are addressing this
issue.

At the first technical meeting in March, the committee set two initial
concerns as priorities for the library efforts:
 1) compatibility with the ANSI C library, and
 2) stream I/O.

We need to make specific, detailed proposals for anything that is to be
considered for inclusion into the standard.  It helps if the proposals are
based on actual implementations.

The discussion between the March and July meetings did cover some suggested
classes for inclusion in the standard, including several of those Chuck
mentioned in his posting.  The consensus at the July meeting was that
attempting to develop a comprehensive class library (on the scale of NIHCL,
as Chuck suggested) was far too optimistic for the immediate (2 year)
future.

Something else to consider is that standardizing a large library, while
helpful to those interested in porting their applications, creates a lot of
work for the compiler vendors trying to conform to the standard.

The main problem we face is that there is precious little ``existing
practice'' to standardize in the area of libraries for C++.  Paul Chisolm's
comment about the string class is an indication of the problem -- there are
many different opinions of what a ``standard'' class should look like.

Another factor is that the availablity of exceptions and templates will
have a significant impact on the design of C++ class libraries.

Those of you who have built C++ class libraries probably have some
suggestions to make regarding the contents of the library.  This seems to
be as good a forum as any for hashing out the issues.


--
Mike Vilot,  ObjectWare Inc, Nashua NH
mjv@objects.mv.com  (UUCP:  ...!decvax!zinn!objects!mjv)