On Sun, May 23, 2010 at 4:55 PM, <fons(a)kokkinizita.net> wrote:
IMNSHO, the way any software works should be understandable by
a) knowing the language, b) reading the code, at least up to the
point that the reader can have an good idea of the big picture,
of data structures and control flow, only excluding application
domain specific details which require special expertise anyway.
i think that most experienced C++ programmers understand that using
templated libraries effectively transforms the program from being written
"in C++" to being written (for example) "with boost". if you don't
want to
take advantage of the sorts of incredible features that boost offers, thats
fine. the problem is that some of us do, even though we recognize that there
is a very real price to doing so. you start with a little nibble of the STL,
then you dabble with the header-only parts of boost, and finally you're
sucked in.
more seriously: because languages like C do *not* define anything like
container types, *some* template libraries like the STL actually make much
more readable by others: anyone with any level of experience of the STL can
understand how the containers in another STL-using program work and what
their semantic guarantees are. now contrast this with the vast collection of
foobar list implementations that exist for C, now add dynamically-resizing
arrays, hashes and all of a sudden its clear that its much harder for the
average C programmer to have any clue about the subtle details of how these
might work in a given implementation.
Again IMNSHO, a programming language should be used 'as is',
without trying to extend it or introduce concepts that
are
not part of it ('shared_ptr', 'promise' (whatever that means),
clearly, you've not used shared_ptr.
after about 2 years of using it, i'm about ready to wonder how, and more
importantly why, i ever wrote any code without it, and perhaps more
importantly, what possible semantic justification there could be for using
anything else (i'm including its cousins like weak_ptr) outside of a device
driver.
'spromise' (whatever that means), etc.). All
the rest is just
obfusciation, and useful only to some niche of 'believers'.
i am glad to hear, however, that you've never used longjmp/setjmp in your
code, or thread local storage.