I used to work as a Research Assistant for a while.
Professor says "The code has to be fast so you can only use C++".
Sends me some code one day from another Grad Student in an email: "This is an implementation of some algorithm I don't want to describe, just put it in a function and use that." The code is 7 nested for loops over a 2D array using pointers to add different cells into an accumulator. The code was just intended to sum the contents, but ... you would never know by looking at it.
Sometimes less is more. I would still use C++ for lots of projects and assuming a decent team. If someone randomly asks what I think of C++, I will warn them away.
C++ is a great language if you know what you are doing and need to do something fancy. Most teams don't have this level of expertise and don't need anything fancy. Instead I would recommend straight-jackets to counter the baseline insanity of programming.
Sure, but how do you get to know what you are doing if you never use it?
I don't "warn them away" - that just unjustly scares people into not learning a valuable tool. Rather, I point out the dangers, and give them some knowledge of what they're walking into.
In other words, don't tell people not to climb the mountain because it's too dangerous. Tell them it's dangerous, and then point them in the direction of the nearest sherpa shack. ;-) Let THEM decide if/when they are ready.
And anyway, wouldn't it be better for someone to play with C++, blow up their program in a terrifying barrage of segfaults, and then learn "ohhhh, I have to be careful with this", instead of having them never learn C++ until they're asked to use it on the job, and then have that barrage of segfaults be in prod? (Because, yes, that'll happen to some people, because management.)
I used to work as a Research Assistant for a while.
Professor says "The code has to be fast so you can only use C++".
Sends me some code one day from another Grad Student in an email: "This is an implementation of some algorithm I don't want to describe, just put it in a function and use that." The code is 7 nested for loops over a 2D array using pointers to add different cells into an accumulator. The code was just intended to sum the contents, but ... you would never know by looking at it.
Sometimes less is more. I would still use C++ for lots of projects and assuming a decent team. If someone randomly asks what I think of C++, I will warn them away.
C++ is a great language if you know what you are doing and need to do something fancy. Most teams don't have this level of expertise and don't need anything fancy. Instead I would recommend straight-jackets to counter the baseline insanity of programming.
Sure, but how do you get to know what you are doing if you never use it?
I don't "warn them away" - that just unjustly scares people into not learning a valuable tool. Rather, I point out the dangers, and give them some knowledge of what they're walking into.
In other words, don't tell people not to climb the mountain because it's too dangerous. Tell them it's dangerous, and then point them in the direction of the nearest sherpa shack. ;-) Let THEM decide if/when they are ready.
And anyway, wouldn't it be better for someone to play with C++, blow up their program in a terrifying barrage of segfaults, and then learn "ohhhh, I have to be careful with this", instead of having them never learn C++ until they're asked to use it on the job, and then have that barrage of segfaults be in prod? (Because, yes, that'll happen to some people, because management.)
I recommend that everyone learns lots of major languages in no particular order:
Python
C++
C
C#
F#
Groovy
Basic
Java
JavaScript
Ruby
Bash
Haskell
OCaml
Rust
Lisp
SQL
TCL
certainly not an exhaustive list.