On 6/9/13, Jochen Kunz <jkunz at unixag-kl.fh-kl.de> wrote:
That is the point about C++: If a language offers only
one, single
mechanism for a task, like garbage collection for memory management, it
forces the programmer to this singe way. Even in situations where this
one, single machanism is not apropriate. C++ deliberately gives you the
choice of many ways. - And thus the responsibility to use your brains
to find the way most efficient way for the speciffic, given task at
hand.
The downside of this flexibility is that the language ends up as an
unfocused, confused jumble of ideas and features. It's easy to build
a language by tossing in every capability someone asks for without
much thought to how they will interact or whether the end result will
be understandable, but much harder to design from the beginning with a
coherent, consistent set of organizing principles.
The C++ standard is so massive that the first thing many teams do is
decide on a subset to use and ignore the rest (also due to
historically buggy implementations of some features). Which maybe
works fine until you need to use someone else's code written with a
different subset. Big, complex things are harder to reason about and
understand, it's true for languages just as it is for programs.