Which language should I learn next?

Oct 27, 2007
17,009
5
0
I'm a first-year computer science major. I've been programming in Java for a little over a year now and I'm feeling pretty confident with it and I think it's time to branch out and learn something new. My classes next year will be in Java and C++ but I'm not limiting myself to what I'll be learning in school.

I think for now I should stick with OO languages but I have an open mind. I'm mostly considering C# and C++ and I have the day off so I'm going to head to Borders and pick up a book today based on recommendations here.
 

Dimmu

Senior member
Jun 24, 2005
890
0
0
Since C# is quite similar to Java, and you feel confident with your knowledge of Java, I would spend your money on a C++ book. If you know Java then learning C# is a cake walk, and vise versa. Certainly, there are differences, but most of the concepts and organization is either incredibly similar, or at least close enough that it's easy to pick the other up. Granted, C++ is also similar to Java/C# in many ways (an OO language, syntax, etc) but it is most definitely the outlier between those three. Your money is better spent furthering your C++ knowledge. Hope that helps.
 
Oct 27, 2007
17,009
5
0
That's very helpful, thanks a lot. I should also mention that one of my papers this semester was on Visual Basic so I'm already familiar with the Visual Studio environment which adds even more weight to your argument.
 

esun

Platinum Member
Nov 12, 2001
2,214
0
0
I'd say you're probably better off learning a completely different language that isn't necessarily OOP oriented. Yeah, you could learn C# or C++ and it'd probably be pretty easy given your knowledge of Java. However, you'd have 3 similar tools that are used in similar ways to do similar things. On the other hand, you might try learning a scripting language (Perl, Python, Ruby) which are used in very different ways than Java (not always, of course, but often).
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
I agree that Java and C# are very similar. C++ is a whole 'nother animal, though, so if you have to take it next year then spending some time to get ahead a bit won't hurt you at all.

 
Oct 27, 2007
17,009
5
0
Thanks for the opinions folks. I ended up grabbing Schildt's book on C++ and started working through it. I'm relieved to see how similar the syntax is to Java.
 

degibson

Golden Member
Mar 21, 2008
1,389
0
0
Originally posted by: GodlessAstronomer
Thanks for the opinions folks. I ended up grabbing Schildt's book on C++ and started working through it. I'm relieved to see how similar the syntax is to Java.

I'm sure you'll find that its a blessing and a curse. :) Any specific questions, however, I'm sure we'd be happy to answer.
 

akubi

Diamond Member
Apr 19, 2005
4,392
1
0
Herb Schildt is the laughing stock of #c++, c++ faq. check the faq and google for reasons why + book recommendations.
 

techfuzz

Diamond Member
Feb 11, 2001
3,107
0
76
If you're planning to do programming as a career after school, try one of the more popular languages like C#.

techfuzz
 

degibson

Golden Member
Mar 21, 2008
1,389
0
0
Originally posted by: techfuzz
If you're planning to do programming as a career after school, try one of the more popular languages like C#.

techfuzz

I disagree -- if you're going to program after school, learn something that will definitely be around like C++. There's a good chance that C# will be C##++ by the time you're done with college, but C++ is forever.
 
Oct 27, 2007
17,009
5
0
Originally posted by: akubi
Herb Schildt is the laughing stock of #c++, c++ faq. check the faq and google for reasons why + book recommendations.

Oh snap. I checked out Amazon reviews before purchasing this book and they were positive. Well I suppose it's still useful for learning the language basics and will work out when combined with online resources and other books. The main criticism I found when Googling centered around his simplistic style encouraging bad habits. I'm already a confident Java programmer so hopefully most of the good habits I have gone to great pains to pick up will translate over the C++.

Techfuzz - marketability is important to me but I decided on C++ because I already know Java and from what I've heard that knowledge translates very smoothly over to C#. I also already have some experience working with the .NET framework from the Visual Basic paper I took.
 

degibson

Golden Member
Mar 21, 2008
1,389
0
0
Originally posted by: GodlessAstronomer
Originally posted by: akubi
Herb Schildt is the laughing stock of #c++, c++ faq. check the faq and google for reasons why + book recommendations.

Oh snap. I checked out Amazon reviews before purchasing this book and they were positive. Well I suppose it's still useful for learning the language basics and will work out when combined with online resources and other books. The main criticism I found when Googling centered around his simplistic style encouraging bad habits. I'm already a confident Java programmer so hopefully most of the good habits I have gone to great pains to pick up will translate over the C++.

Techfuzz - marketability is important to me but I decided on C++ because I already know Java and from what I've heard that knowledge translates very smoothly over to C#. I also already have some experience working with the .NET framework from the Visual Basic paper I took.

Since you already are proficient in an imperative language, you won't be contaminated by anyone's bad habits that you don't already have. Moreover, a firm understanding of how a low-level language operates (like C++, or lower still, C) will be invaluable.
 

Journer

Banned
Jun 30, 2005
4,355
0
0
i think C++ was a good choice. C# is extremely similar to Java, and VB is similar to C# in many ways. granted there are some big differences (syntax mainly) but it is all .net Furthermore, ASP.net is so simple now too. You use a C# or VB backend and the only difference is you are using webpage post backs and other web interactions as opposed to a gui or console. I think the type of programming language you want to learn depends on what you want to code. if it is games and crap, you definitely need to know C++, maybe C# and Java (for portable games) if you want to do web programming you need to get into ajax, soap, .net, php, and so on If you havent had or wont be taking in SQL classes, i definitely recommend you read up on databases and how they work
 

Cogman

Lifer
Sep 19, 2000
10,286
145
106
As others have said, C++ is probably the way to go. You'll find the learning a new programming language isn't all that difficult, so you find yourself getting more benfits from having lower level languages under your belt rather then higher level languages.

I would suggest C++, then C, and if you are very bold ASM (ASM is really almost useless, but it gives you a good idea how stuff works). Learning higher level languages like C#, PHP, ruby, or perl won't take a lot of your time to get down everything.

Once you deal with managing your own memory, you appreciate garbage collection as if it where a god-send :p
 

dinkumthinkum

Senior member
Jul 3, 2008
203
0
0
If you want to do systems, do C. If you want to learn about interesting computer science concepts, Scheme is a fine choice. Both of these have the advantage of being nice and simple. C++ is really a very poorly designed language which has far too much crap tossed into it based on whatever the current fad (like OOP) is at the time. It's filled with unnecessary complexity, which might be helpful when dealing with legacy code, but is a serious impediment to learning.

I'm sure there were programmers who swore that PL/I was forever too.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
Originally posted by: dinkumthinkum
If you want to do systems, do C. If you want to learn about interesting computer science concepts, Scheme is a fine choice. Both of these have the advantage of being nice and simple. C++ is really a very poorly designed language which has far too much crap tossed into it based on whatever the current fad (like OOP) is at the time. It's filled with unnecessary complexity, which might be helpful when dealing with legacy code, but is a serious impediment to learning.

I'm sure there were programmers who swore that PL/I was forever too.

C++ was not at all poorly designed if you take the original goals into consideration. It did not begin from a clean slate, since it was intended for internal use at Bell Labs (programming switches), and Stroustrup and others wanted to leverage the grammar of C, which everyone there already knew. This is the mid-80's, so you have to take that into account as well.

If it has turned into something of a monster that is the fault of the standards process, and nobody can accuse anything that is the product of a standards committee of having been designed.
 

Cogman

Lifer
Sep 19, 2000
10,286
145
106
Originally posted by: dinkumthinkum
If you want to do systems, do C. If you want to learn about interesting computer science concepts, Scheme is a fine choice. Both of these have the advantage of being nice and simple. C++ is really a very poorly designed language which has far too much crap tossed into it based on whatever the current fad (like OOP) is at the time. It's filled with unnecessary complexity, which might be helpful when dealing with legacy code, but is a serious impediment to learning.

I'm sure there were programmers who swore that PL/I was forever too.

I don't know, at the very base of C++, it is a very simple language. If it seems complex it is because you are including many complex libraries. I don't know what you mean by fads as OOP is far from a fad (now) and was, in fact, one of the only reason C++ came into existence.

Really, I can't see how you could claim C++ to be overly complex when in all reality the only thing that makes it complex is memory management and very strict type following.