Topic: A comment on Herb Sutter's "Toward a Standard C++0x Library, Part 1


Author: "Nate Hayes" <nhayes@cyberoptics.com>
Date: 19 Jul 2002 23:23:55 GMT
Raw View

 >>    The expansive monolithic approach to C++ library standardization
 >> resembles more the philosophies of Ada or Java.

This has been my observation, too. I'd like to see:

     .STL removed from the core C++ specification
     .core C++ language cleaned up and made simpler
     .only worry about C compatibility in terms of linking to precompiled C
libs

In addition, I'd like to see standard libraries for:

     .64-bit file management
     .virtual memory and memory mapping
     .sockets
     .heaps
     .threads

BUT: i don't want to see these libraries included in the C++ standard.
Instead, I'd prefer to see them in sperarate standards, example: POSIX.

I have a feeling my wishes are not going to come true, though!

--nate





      [ Send an empty e-mail to c++-help@netlab.cs.rpi.edu for info ]
      [ about comp.lang.c++.moderated. First time posters: do this! ]

[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html                       ]






Author: Francis Glassborow <francis.glassborow@ntlworld.com>
Date: 21 Jul 2002 15:07:16 GMT
Raw View
In article <3d36ef11$0$29462$4c41069e@reader1.ash.ops.us.uu.net>, Nate
Hayes <nhayes@cyberoptics.com> writes
>     .only worry about C compatibility in terms of linking to
>precompiled C libs

Which is primarily an ABI problem and C cannot even guarantee that a C
program can link to precompiled C libraries.


--
Francis Glassborow      ACCU
64 Southfield Rd
Oxford OX4 1PA          +44(0)1865 246490
All opinions are mine and do not represent those of any organisation



      [ Send an empty e-mail to c++-help@netlab.cs.rpi.edu for info ]
      [ about comp.lang.c++.moderated. First time posters: do this! ]

[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html                       ]






Author: Daniel Miller <daniel.miller@tellabs.com>
Date: 16 Jul 2002 16:30:44 GMT
Raw View

    comp.std.c++: This thread is joined in progress from
comp.lang.c++.moderated.  See comp.lang.c++.moderated for prior postings
regarding this thread with this title.  This posting is self-contained
enough to not absolutely require any of those prior postings.

Nick Thurn wrote:

 > "Daniel T." <notdanielt3@gte.net> wrote in message
 > news:notdanielt3-7A9594.13580809072002@news.bellatlantic.net...
 >
 >>Adding new libraries to the language is easy, venders do it all the
 >>time. We don't need a standards committee for that. What the committee
 >>should be concentrating on IMO is cleaning up the language, removing as
 >>many of the special cases as possible.
 >>
 >>
 > Wholeheartedly agree!
 >
 > We have way too many halfbaked solutions included in the standard.
 > - templatized iostreams
 > - locales
 > - valarray etc
 > - export
 > - typeinfo
 > - and gasp stl <algorithm>!
 >
 > Like half baked legislation that has unforseen consequences (eg
 > home carers hit with fringe benefits tax bills), the tweaks to enable
 > the above had no practical experience. The solutions themselves
 > only reached concensus in the (albeit learned) circle of the committee.
 > We are now living with the on-the-fly design decisions and added
 > complexity in the language.
 >
 > The bottom line is that 10 years after we should have had a standard
 > we are only just seeing the first fully compliant parser and experience
 > is showing that things that appeared useful at the time are not widely
 > used (or by implication - actually useful!)
 >
 > The overhead of simply using C++ gets in the way of using it
 > to do real work. The removal of as much of this overhead as possible
 > should be the core task of the next standardisation effort.
 >
 > I see no reason for the std C++ library to become even bigger.


    I agree with this library-related statement if we are discussing
post-C++98 expansion of the monolithic one-size-fits-all library in
C++98's ISO/IEC 14882:1998.  I disagree if this implies no more
standardization of any libraries by any standards body on the planet.

 > It would be preferable to split out the library as a separate set
 > of standards with a tiny core collapsed into the language itself
 > (ie string, vector/array) ah but it's too late for sanity ;-(.


    Amen.  I wholeheartedly agree.  This one-size-fits-all approach leads
to the following downsides:

    . "lowest common denominator" (a.k.a., the mediocrity imposed by
strict set intersection) approaches to portability.  This ignores
portability within large subcommunities, such as a POSIX.C++ language
binding which would be a far more expressive library than one which must
also handle radically-nonPOSIX or intentionally-nonPOSIX operating systems.

    . libraries designed to be "for those means which give the greatest
good to the greatest number" (a.k.a., compromising consensus based on
popularity in general-purpose software) instead of libraries designed to
solve a particular topic in the best way.  This ignores standardizing
libraries tailored for real-time embedded systems instead of
general-purpose software.  This tends to make a monolithic
one-size-fits-all library the only standardized choice in the spectrum
from massively-parallel scientific computation through realtime embedded
systems through high-availability severs through commodity computers at
the appliance store through mainframes for business systems.

    . libraries which at best push toward standardizing some new cool
cutting edge academic research instead of endorsing multi-decade-honored
existing techniques or at worst are naive start-from-scratch greenfield
toy-subsets of what a mature treatment of the topic would have contained.

    . libraries which push a subcommunity's agenda of contorting one or
more language features to push deeply into drastically new territory for
which those language features (and thus the design of compilers) were
never intended.  I am professionally appalled at the trend of pushing
templates/parameterized-types too far, such as considering C++ templates
to be a pure functional language which permits considering the compiler
(at compile-time) to be a (quasi-)general-purpose compute-engine as a
clever way to pull off incredibly complex trickery/hacking.  (I am
personally intellectually curious at the what-if level about such
push-the-envelope metaprogramming & reflection topics, but there is a
big difference between a pure-researcher's cool new
intellectually-stimulating toy indicating what a state-of-the-art
computer language in the year 2015 might look like versus a technique
which should be brought & taught to the masses nowadays.)

    Instead of a one-size-fits-all monolithic approach to C++0x's
libraries, I concur with Nick Thurn that the libraries should be kicked
out of ISO/IEC 14882 itself and placed in other standards (promulgated
by ISO/IEC and/or IEEE and/or so forth) which can separately evolve with
different standards working-groups which are each comprised of advocates
for each topic.  It is quite likely that experts aggressively
researching functional-language template metaprogramming & reflection
would have far less expertise in realtime embedded systems, and vice
versa.  Since C++ is a multiparadigm language supporting POP, OOP, GP,
etc applied to different problem domains, I could imagine a standards
working-group for realtime libraries which gingerly uses OOP & GP versus
a completely different standards working-group for wild
push-the-envelope metaprogramming/reflection versus a standards
working-group which emphasized pure OO (with lots of virtual
member-functions).  Then like the langauge itself, C++ libraries would
permit multiple paradigms by not imposing a single monolithic ISO
14882-dictated library paradigm on to every problem domain.

    The standardized C++ language itself is intentionally multiparadigm.
   The standardized C++ libraries should likewise be capable of
expressing multiple paradigms instead of the single paradigm which we
see in C++98.  Personally I happen to like much of that single paradigm
which I currently see in C++98, but I am extremely concerned with
forward-looking trends of what that monolithism would probably look like
in a C++0x.

    POP = procedure-oriented programming
    GP = generic programming (with parameterized types)
    _ARM_ = _Annotated C++ Reference Manual_ by Ellis & Stroustrup, 1990


 > The philosophy of C++ was violated by the standard.


    The expansive monolithic approach to C++ library standardization
resembles more the philosophies of Ada or Java.

      [ Send an empty e-mail to c++-help@netlab.cs.rpi.edu for info ]
      [ about comp.lang.c++.moderated. First time posters: do this! ]

[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.jamesd.demon.co.uk/csc/faq.html                       ]