Take the 2-minute tour ×
Computer Science Stack Exchange is a question and answer site for students, researchers and practitioners of computer science. It's 100% free, no registration required.

I've studied C++ for about a year now independently, having an initial goal of the usual "i want to program video games" to a new found goal of pursuing computer science as a full time career. Recently I've been coding in C and seem to really enjoy the sytax and semantics a lot more, but i'm worried that because of C's age it could be a dying language.

The main area's of study that interest me would be Algorithms, Mobile Applications and OS development on relatively cross platform with high efficiency. What language would provide a more solid base to work off of in the future to accomplish some of these goals? What would be the advantages/disadvantages of each language?

share|improve this question

closed as not constructive by The Unfun Cat, Merbs, Dave Clarke, Patrick87 Dec 3 '12 at 16:56

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

The language is not really important in programming - it is just a tool. This question is not for this forum : you can try posting it in SO –  Anton Dec 3 '12 at 13:17
No, please do not encourage cross posting. Furthermore, any answer to this question will be speculative. cs.stackexchange.com/faq#dontask –  The Unfun Cat Dec 3 '12 at 13:44
@Anton: No, this would almost certainly be closed as not constructive on SO. –  C. A. McCann Dec 3 '12 at 15:18

3 Answers 3

You are asking whether you should study mules or hinnies to gain advantage in the transportation business.

The key to success in a broad area such as Algorithms is breadth of knowledge. C and C++ are two languages of a very similar kind so it does not matter much which one you torture yourself with. Your interests would be much better served if you also look at other families of languages: functional languages (OCaml, Haskell, Lua), parallel languages (erlang), logic programming (λ-prolog), and perhaps something "low level" but fun such as GPGPU. You do not have to study all these in detail, but certainly you should be fluent in at least two fundamentally different programming languages. (By the way, C, C++, Java, Python, and javascript are all fundamentally the same.)

The view of algorithms as things which get programmed on a traditional RAM-style machine in a procedural language such as C/C++ is insufficient in this day and age. You have to understand distirbuted computation, you have to be able to think about the cost of communication, the cost of privacy, etc. And knowing how these concepts are expressed in programming languages will help you with that.

share|improve this answer

Unfortunately, neither C nor C++ will die in foreseeable feature. C++ has more integrated facilities that allows to study OOP without hand-guided sunsetx. Hand-guided sunsets still are needed if one learns concurrent programming and persistent data structures in C++.

So, I would recommend C/C++ to learn hand-guided memory management and some good language with gc to learn algorithms on persistent data structures and work in presence of GC. Interesting choices are some JVM based functional language (scala or clojure. Java itself is also possible choice, but it has very hard connection with OOP paradigm and clumsy syntax) or some 'academic' language, like haskell or racket scheme.

share|improve this answer

What you are probably missing is object-oriented programming skills. The language is not so important, as Anton said. You should also have a look at design patterns, very trendy these days...

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.