On Sun, May 23, 2010 at 4:55 PM, <fons@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.