25.04.23 19:51, G. Branden Robinson пишет:
While I'm pontificating I'll opine that I'm not a huge fan of C++ as
a language, but I have found with groff that, given discipline, and
by maintaining a clear view of its roots in C (_also_ not my
favorite language--but one alienating, enemy-making rant at a time),
and not picking up every f***ing new feature that gets shoved into
the language as soon as (or before) it's standardized, it_can_ be
managed. But I also think that the C++ templating facility was, in
implementation, one of the worst features ever developed for any
programming language.
I would agree to that largely. The only acceptable C++ is the one close to C.
Especially if you do indeed interface with C APIs. But even then it remains
broken by design with its classes in headers, forcing you to expose every type
belonging to your class to everybody. What's the benefit in C++, especially when
restraining from namespaces? Deeply nested class hierarchies? You really
shouldn't have those anyway. IMHO you can get much clearer and better isolated
code (smaller headers anyway) with properly written idiomatic plain C code. It's
the lesser of two evils. The preprocessor is one of those things I am also not
happy with, although I found that C++ often pushes you to metaprogramming only
for marginally improved typesafety compared to plain-C non-preprocessed
solutions. As a side effect you get overblown binaries that will blow your cache
hierarchies. On the other hand the C preprocessor could be made much more useful
for metaprogramming with a few simple extensions...
I have not long ago migrated SciTECO from "C-like" C++ to plain C and I am not
looking back!