Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I was late in my signing up for classes at the start of last term, so I signed up for the only programming class I could find C++. After doing well in that class I was allowed into intermediate C#, which I learned was what I needed to be in for my major. I also took intermediate C++ thinking that taking both would make them both easier. I was right.

I will be moving on to ASP.NET next term, and while I really like C++, I'm not sure that it will help me overall with my future education in C#. I also have the option to move into java, so I would be taking ASP.NET and java at the same time.

So do I take C++, Java, both, or neither? and why?

share|improve this question
17  
Languages come and go. Take classes to learn how to program, not for a particular syntax. –  Jeffrey Apr 12 '11 at 1:29
1  
I would honestly skip Java based on the fact you already took C#. Depending on how the class is taught you might get more out of the C++ class. If you don't understand how C++ can help you write better code then you should take the intermediate C++ course again. –  Ramhound Apr 12 '11 at 19:35
add comment

7 Answers

up vote 8 down vote accepted

Jeffrey's comment is spot on.

Languages is just a means to express your ideas. The more languages you learn (within reasonable limit) the better your understanding of what matters when you translate your idea in a program. Each languages has strength and weaknesses and each in their own way tried to tackle a particular set of difficulties inherent into translating creative thought in structured formal implementation. But while focusing on these specific aspects they often left out other aspects.

Each language you learn will bring you a better understanding of what programming is all about.

That said it is also good to be proficient in a language but I would rather employ someone that is good in 5 languages rather than an expert in one that have never experienced at least one more.

Also, though now C# seems to clearly have the upper hand and is favoured amongst employers it will eventually peak and fade away in favour of a newer better language. Multiple cores are evolving fast now, I can see in less than 10 years appearing processors with 100+ cores, yet still now it is very difficult to program multi threaded application. I would not be surprised that a new programming paradigm would emerge and a new language written for it that would make it natural to use massive parallelism.

So, your first instinct was good, that is to get into C++ and C#. If you have the chance to see Java then you would know probably the three most used (or sought after) languages in the industry today, this can only be good for you. I suggest you continue this trend but try languages that support a different paradigm. Now that you know C# you can go for functional programming and try F#, I guarantee it will change the way you see programming. If you know Java try out aspect oriented and AspectJ. Duck-Typing with Python... the list goes on. Each time you will have learned something you could not had you stick with just one language.

I started with just one (C++) and when I switched to Java I thought it was for good. Serendipity had me exposed to many other languages and I have never learned as much and as fast as in these times. Now I always keep an opportunistic eye and ear to jump at the occasion to add another under my belt, not so much for employability (I would NOT want a job in Delphi) but just for personal enlightenment because every times it makes me better at the languages I work in every day.

share|improve this answer
1  
+1 for elaborating/story telling –  Virtuoso Apr 12 '11 at 2:29
add comment

I've always been of the opinion that the particular language used doesn't much matter in school. At least not in a computer science program. Programming is programming and the languages you mention in your question, C++ and Java, are both object-oriented and look similar in many respects.

There are times when the language of instruction does matter; let me list a few cases:

(1) When aiming at a particular certification.
(2) When your job sends you to classes on a specific technology that they use.
(3) When you're at a community college or trade-school and they are training you
    to immediately enter the job market.
(4) When you are a non-CS major and your discipline uses a specific language 
    for everything (eg, FORTRAN for physics, SAS for statistics)
(5) When the language used at the school is so horrible that it turns you off 
    to programming forever.

If you are in one of the above cases, or something similar, then ignore my answer. But if you're training to be a computer scientist, then the language is a detail... a tool. And once you know one or two, it's easy to pick up more.

share|improve this answer
1  
Pretty much my answer. Assumming that you're not at a technical school, the skills in programming are more important than the languages. At any rate, you never know what langauges you might use out in the wild. –  Aatch Apr 12 '11 at 1:57
    
Can't agree enough. If you know programming fundamentals, REALLY know them, then the language doesn't matter at all. You need about a week to learn the syntax differences, then longer to learn the libraries, but if you know programming, you know programming. If anything, taking more languages just gives you more perspective and understanding of whats going on underneath. C++ will help you understand what C# is doing automatically. –  Zaphod42 Apr 12 '11 at 4:30
    
@Zaphod42, in order to learn fundamentals you unavoidably have to learn a lot of different languages. –  SK-logic Apr 12 '11 at 14:16
add comment

I would suggest you get exposure to both. Over the years you will likely work in several languages. Some of these may not be invented yet. Learning different languages will give you an understanding of the differences and similarities between languages.

If you have an opportunity to study a language other than the three you have mentioned it might be a better choice. The three you mentioned are all relatively similar.

Try to get exposure to well written code and good coding practices. Text books and courses don't necessarily expose you to either. I hope they are better than when I was studying.

share|improve this answer
add comment

The languages themselves are not key. I believe programming can be split into two major skills: science and art.

Science

Science is logical and usually proveable. Algorithms, branching, recursion and math based disciplines are science.

Art

Art is much less proveable and often guided by a feeling or past experience. Art is the design patterns, OO, paradigms and "right tool for right job" or fuzzy skills.

Both are important. More important is learning to blend these two skills to create beautiful and concise solutions. This takes years of practice and experience. The old 10k hour rule.

My advice for a technical school student would be to learn a functional and imperative language and improve your base logic with a few math courses. No need to take multiple C branches + Java. The art side is difficult to appreciate without experience, but an OO course is reasonable if offered.

share|improve this answer
add comment

There are several good reasons to learn particular computer languages.

First, you need to know what you're going to use (professionally or on hobby projects, whatever).

Second, different programming languages teach different things, and these things are frequently applicable to what you're working in. Even if you're working in nothing but C# (and you're unlikely to be using C# all your life), learning other languages will help you program in C#.

Third, you won't spend your entire life programming C#, in all likelihood. If you know only one language, learning another will be intimidating. If you know five or six, learning another isn't a problem.

share|improve this answer
add comment

I would not worry too much about languages, they come and go. Learn methodology and practice. Which is to say don't just learn one family of languages. Branch out from the C derived languages to other modes of programming. Learn some languages that are not imperative, Erlang, Prolog, Haskell or Lisp would be good choices. Or maybe try something like Scala or Ruby.

Most importantly learn how to pick up a language. It is a skill you will use over and over.

share|improve this answer
add comment

Learn as much as you can. The more you know the better a programmer you'll end up being.

Who can say what you will be doing in 10 years, and if knowing C++ will make you more attractive or not.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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