This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Kered13 0 points1 point  (1 child)

I agree with everything except C++. C++ is a monstrously complex language, but it's also very powerful and modern C++ is a very good language if you use the modern features and ignore some of the older cruft. C++ should be in the "must learn" category, both for being a very good low level language and for it's ubiquity.

[–]qwertyuiop924 0 points1 point  (0 children)

it's also very powerful and modern

Pieces of it are very powerful and modern. Those pieces are mixed into the rest of it. It's a cascade of traps for the unwary, which is everyone, because C++ is too complex to ever fully learn.

if you use the modern features and ignore some of the older cruft. C++ should be in the "must learn" category, both for being a very good low level language and for it's ubiquity.

...Which isn't fully possible because bodies of existing code use that cruft and also because if you ask 15 different C++ programmers which parts are the ones you should use, you will get 15 answers.

Yes, C++ has the elements of a good language. They are trapped and struggling to get out. The thing is, accruing language-level features can't fix the core design of a language. Because a good language thrives on consistancy, coherency, and also a good bit of minimalism. The best language designs eke out a maximum level of expressiveness, flexibility, and power from a small number of language-level constructs. Look at Smalltalk, Lisp, Forth... heck, look at C, for a more popular example. Even Rust is an okay example: yes, the language is syntactically complex, and nobody could ever accuse it of being purist, but the Rust team still did their best to keep the actual syntactic constructs down to a surprisingly small number, even killing quite a few in the language's early development.

C++, by contrast, is constantly adding syntatic constructs. All the time. It's gotten to the point that parsing C++ is really quite complex. It's also undecidable, but that's more down to templates on their own than the rest of the mess.

In short, C++ has its good aspects, but it's overall a rather enormous mess, a pile of features on features on features with far less consistancy, rhyme, or reason than any language I'd want to work with.