From: Gregory Seidman (gseidman_at_[hidden])
Date: 2001-05-18 07:44:15
} My question is, is boost in particular, and c++ in general, becoming
} more and more inaccessible? I have used c++ daily since the first
} version was released from AT&T. I spend some time reading modern
} texts, such as Austern's book on Generic Programming. The problem I
} see is not unique to C++ or even computer science. The problem is
} that the move to greater generality also requires greater abstraction,
} and that the result becomes less accessible.
} My concern is that we maintain a tasteful balance between the greatest
} possible generality on the one hand, and steepness of learning curve
} on the other. One difficulty is that what constitutes a "tasteful
} balance" depends on one's level of programming experience.
I've TA'd the undergraduate software engineering course (for which C++ is
the language of choice) twice and taught an introductory C++ course once
(both at Brown). My experience is that students grasp and use more of the
STL as they spend more time attempting to do real things and reading the
The STL, even as it is now without any additional features from boost, is
inaccessible to the novice programmer. That's just fine. A novice
programmer should be learning some other language (C, Python, or Java,
maybe Scheme) before even approaching C++. Once they are ready for C++,
start using it, and get into the habit of expecting to find common data
structures and algorithms already implemented, they start reading the
documentation rather than reimplementing stuff and build their C++ skills
and knowledge. That's when it becomes more accessible.
None of the STL or boost stuff is necessary to produce working C++
programs, nor will it ever be thanks to backwards compatibility and "you
only pay for what you use." There is nothing wrong with continually
discovering useful language and library features as one's experience with
the language grows.
} I believe universal template libraries must not be so incomprehensible
} that only elitist can use them.
A little power is a dangerous thing, especially in inexperienced hands.
Give a novice programmer nothing templated but auto_ptr and he will shoot
himself in the foot in no time flat. Allow the programmer to gradually
discover the tools that exist as need requires him to learn them and he
will grow experienced, not frustrated. The libraries are not elitist, but
they are not intended to be accessible to novices either, nor should they
There are two implicit assumptions here, of course, which are that the
documentation for any/all of the library stuff is at least on par with
SGI's STL documentation, and that compilers produce meaningful and clear
error messages when the programmer messes up. Currently, these are
questionable assumptions; much of the boost documentation is genuinely good
(and it's all being worked on, I know) and a few compilers produce clear
error messages (I've heard good things about Kai, but g++ is miserable an
Sun's CC is only tolerable with text filtering and significant experience
so one learns what to expect of it). Documentation and compilers are always
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk