

Why would I learn C++11, having known C and C++? - ekm2
http://programmers.stackexchange.com/questions/118661/why-would-i-learn-c11-having-known-c-and-c

======
shin_lao
The "I know enough already" attitude is exactly what I look for in an
interview. If I find it, it's a "no hire".

Never settle for the average.

~~~
apl

      > Never settle for the average.
    

Now _that_ is advice that doesn't scale.

------
lysium
The title reads as if the questioner is genuinely interested in C++11, but
from his comments it's clear that he only sought an outlet to rant.

That the accepted answer is 'learn C++11 to get a job, if necessary' speaks
volumes.

------
heretohelp
Rather mercenary and uncurious attitude to take towards learning a programming
language.

I mess with Clojure because I find it interesting, not because I think it'll
help me cling to a paycheck.

I'd never knowingly hire someone who thought like that.

~~~
prodigal_erik
There are some languages—Lisp, Prolog, Haskell, maybe Mozart or whatever will
fill that niche—which the curious ought to explore because they shape the way
you think. But C++ is not one of them. It's yet another imperative single-
dispatch OO language, like Java or C# but for masochists (and reams of legacy
code that wasn't even exception-safe don't help). All the reasons to bother
with it are practical ones focusing on its low-overhead runtime for certain
niches.

~~~
pjmlp
C++ is not for masochists, it is for developers with a proper CS background
that want to implement software with high performance and low resources usage,
using a multiparadigm language.

It could be better and is full of warts, but there is no other language at the
moment that could replace C++ for native coding.

Go is too few abstractions and D is still catching up to the TDPL
specification. Both lack the amount of tooling that C and C++ have at their
disposal.

~~~
wglb
One of my favorite computer scientists, Donald Knuth, suggests avoiding C++
altogether, as it is too complex. I suggest that he has a proper CS
background.

~~~
pjmlp
Really?

<quote> C++ has a lot of good features, but it has a lot of dirty corners. If
you don’t mind those, and you stick to stuff that can be counted well-
portable, it’s just fine. </quote>

Taken from <http://drdobbs.com/blogs/architecture-and-design/228700500>

Plus he even adapted his cweb tool to C++ <http://www-cs-
faculty.stanford.edu/~uno/cweb.html>

Somehow I think he has a different opinion than what you are saying.

~~~
wglb
Continuing with the rest of your paragraph in your first link:

 _There are many constructions that are ambiguous, there's no way to parse
them and decide what they mean, that you can't trust the compiler to do. For
example, you use the "less-than" and "greater-than" signs not only to mean
less-than and greater-than but also in templates. There are lots of little
things like this, and many things in the implementation, that you can't be
sure the compiler will do anything reasonable with._

And he goes on to suppose what another CS practitioner might say:

 _DDJ: You've mentioned Edsgar Dijkstra. What do you think of his work?

DK: His great strength is that he is uncompromising. It would make him
physically ill to think of programming in C++._

JWZ, who Peter Norvig called the best programmer that he ever worked with,
offered a scathing analysis of C++ and its contribution to the failure of
Netscape. (Coders at Work <http://www.codersatwork.com/.>) In the same book,
Ken Thompson offered a similarly negative view of the language and its
genesis.

For some detailed issues, read all of <http://yosefk.com/c++fqa/>. Funny but
not funny.

I say this as one who spent 10 years programming in C++. Those dirty corners
that Knuth mentioned are different with every team practicing C++, resulting
in a style guide that cordons off chunks of the language.

~~~
pjmlp
Dijkstra stopped using computers for work around 1972, and the last
programming language he used was ALGOL, so his opinion about C++ most likely
does not count.

About JWZ, I would not say that someone that throws chairs around rooms, and
dedicated part of his life to flame C++, has a thrusty opinion about it.

Finally, Ken Thompson has stuck in C for so long, and even Go is just a better
C, that I doubt he really understands the concepts behind the abstractions C++
offers.

In the end it goes back to people using C++ without proper background.

The world is complex and most languages that try to be the tool from low level
systems programming up to normal business applications, end up being complex.
Even if they start simple.

Any modern language that tries to replace C++, will end up being as complex.

PL/I, Ada, D, C#, Haskell, OCaml, Scala, Lisp are all examples of languages
that have a kind of similar complexity level with C++, and also require people
with proper CS background to handle them. Sometimes the complexity is the
language itself, other times it is the abstractions it offers.

Judging from the skill set I see in cheap labour in IT, even BASIC is too
complex for many people.

I am not on a crusade to defend C++, I also find that it has many warts and we
need a better systems programming language, which is also able to offer the
control and set of abstractions that C++ does.

Now will it be D, Rust, Clay or something else?

Until it happens, C++ will be the only answer for a class of problems.

