views:

296

answers:

4

C++ is my primary programming language. As most of professional programmers I know some others, but much less "fluently". I'm constantly mastering my skills in C++, reading forums (like this one), read books. And the process takes years ...

I know that the language is only a tool, and there're other fields professional programmer must be competent in. However, we express the knowledge in code.

There're many other high languages out there, making development process much easier, faster and safer. Not once I hear in the light of other languagues C++ considered as a low level language and that it's slowly dying.

I'm aware of new C++ standard and already accepted TR1 boost libraries. I don't underestimate the importance of the changes, but still these are low level "details". The standard won't close the "gap" between C++ and other modern languages and even don't try to do it.

What do you think? Is it time to master additional general purpose language (e.g. Java/Python/C# etc...) or there's a bright future to C++?

+9  A: 

Regardless of the future prospects of C++, you would always do well to master another language. Choose something substantially different from C++, such as Python, Ruby, or Clojure. While languages like Java and C# might be useful, their style and ancestry are still pretty close to C++, and that's just going to feel like more of the same.

A truly different language like Erlang, Scheme, or Haskell will open your mind in ways you weren't previously aware of.

Greg Hewgill
+1, nothing to add
peterchen
Funny... we answered simultaneously and picked three of the same 'different' languages... Erlang, Haskell, and Lisp/Scheme (yes, I know they're not *exactly* the same...)
kyoryu
+16  A: 

If you know C++, learning C# or Java is cake. There's a couple features that you'll have to grok, but in general, you shouldn't have much of a problem. Going the other way is much harder. If C# and Java are 'we play both kinds, country and western!' then C++ is probably folk music to go along with 'em - not the same thing, but the relationship is obvious.

If you want to pad the resume, either of the above, or Python/etc. should be fine. But, if you really want to improve your capabilities as a developer, I'd go for something much more foreign - Erlang, Smalltalk, Lisp, Haskell, etc. Even if you don't use them professionally, they'll expand your way of thinking about programming and make you a better developer overall.

kyoryu
+1 For "going the other way is much harder". Learning C++ after several years of programming in Java was QUITE hard.
Helper Method
@Helper Method - ditto, I went from C# to C++. Had it been the other way around I would have loved .NET a whole lot more than I do. As it is, I actually quite love C++ because of the added control it gives me that .NET doesn't!
Andy Shellam
+1 I would second the statement "...they'll expand your way of thinking about programming and make you a better developer overall"!
KMan
+1 I went from C++ to C# and it was a breeze. I did miss a little bit of control when I come across those very rare scenarios in C# where a pointer would be nice. Though the need for one was probably due to poor design on my part :) .
Wix
+1  A: 

I enjoyed reading the hacker howto. In short, it states:

It's best, actually, to learn all five of Python, C/C++, Java, Perl, and LISP. Besides being the most important hacking languages, they represent very different approaches to programming, and each will educate you in valuable ways.

I still have to learn half of them myself though :-)

Jan
Funny, "all five of ...", and then he lists six.
asveikau
Yeah, some people don't get the C and C++ are actually two distinct languages, not just one being a subset of the other.
Andy Shellam
Its a good message though.
Tom
+1  A: 

I think you should target your language learning to the type of business problems you are working with.

If you are in scientific or embedded environments then C++ will be king for the next many, many years.

If you are knocking out web-sites by the dozen then perhaps it is not the most suitable language.

I love C++ and use it for all sorts of things. I quite like Python for helping build tools for myself, automate the builds, setting up log archiving, etc... Learing this helped me see some strengths and weaknesses in my other languages that I had not previosuly noticed, so it is worthwhile exercies. I should learn some Haskell or something else completely different too.

For me, to really 'master' a language is taking it a little too far, especially one as complex as C++. I think you should be better than competent, get to the point of being able to use the language to solve your problems without having to think too much (if at all) in language terms and then focus on improving in other areas (design, problem domain expertise etc).

Michael