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.

Possible Duplicate:
Is it worth being computer languages polyglot?

I am half way through my first year at university studying computer science. I have been learning Java on the course and also have experience for Visual Basic from my A-Levels. To give you an idea of my level of understanding the most recent topic on my course was abstraction.

From reading around the site and similar places I am in no doubt that learning many languages is a good way to expand your knowledge and your programming toolkit. My question is should I be learning a new language now, or should I focus on gaining a better understanding of the Java toolkit. Keep in mind that I would be learning any new language in my own time alongside my studies in java and my other modules (shell scripting, SQL and basic Assembly).

If I should be learning a new language do you have any recommendations? From what I have read choosing a language with a very different paradigm seems like a good idea; but do you have any specific suggestions. My personally thought are possibly Assembly as an academic exercise or perhaps Ruby.

If I shouldn’t be learning a new language right now, when would be a good time? I know this is probably difficult to answer, but are there and indicators of when I have learnt as much as I should from java or generally what time is best to take on a new language.

share|improve this question

marked as duplicate by Mark Trapp Feb 22 '12 at 20:14

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

add comment

4 Answers 4

At your stage stick to trying to learn depth (one language well) rather than breath (lots of languages). it will serve you better in future and a uni course should expose you to several languages anyway.

Having said that if you want to try Ruby because it looks fun then go for it. Enjoying programming is the most important part of learning to do it well.

share|improve this answer
    
+1 for depth. What you want to learn at this stage are the overall concepts, and digging in deep will allow that best. Once you have a solid grasp of the concepts that java offers, try something new that it doesn't handle so well (like functional programming) –  Daenyth Feb 22 '12 at 19:44
    
+1 for depth. I would also +1 your plans to learn some Assembly, this will greatly improve your understanding of what's underneath all those high level languages. –  devmiles.com Feb 22 '12 at 19:55
add comment

No. Don't learn multiple languages at once. Once you've got a solid foundation in a language, then learn another.

What you can do instead, is take a sampling or a nibble of a couple different languages (the book Seven Languages in Seven Weeks might be a good resource). Learn what the different styles are like, pick the style you like, pick the most popular language of that style, or one that a friend knows (reasoning: more/better resources for when you get stuck) and learn it really well.

share|improve this answer
add comment

No. Let me tell you why.

When you are first starting to learn how to program, there are tons of things you don't know, that will haunt you in every language. Stick with one language and learn those first. That includes:

  • Variables/Data Structures
  • Algorithms
  • Commenting practices
  • Other Best Practices
  • etc.

This may be a bit overwhelming at first, but you'll catch on and, eventually, will see that some things are the same in almost every language. Languages that are good for learning the above topics are:

  • Java
  • C#
  • Python
  • C(++)

as there aren't as many ways to do the same thing in these languages as there are in, lets say, Perl.

Since you have experience with Java, I would stay on that route. Once you think you have a good understanding of the language, test your knowledge. Start a semi-difficult project that uses everything you have learned, and some things you haven't. Then, during the project, if you have any questions, ask them here or on SO, depending on the question.

Finally, if you have successfully completed the project, let some people test it out, and even look at your code. Let them criticize what you've done, and make the changes.

If you feel you are ready, you can now move to a new language. If you want to keep working with Java (or whatever language you were using) even better!

Recommended Readings (assuming you are using Java)

If you decide not to use Java, leave a comment and I'll give you some recommendations. Until then, good luck!

share|improve this answer
add comment

This is a very good time to try other languages, time permitting. You will never any quicker than you are now. It doesn't much matter which one. Just do whatever looks interesting. Just pick one that looks interesting and play with it until you get bored.

share|improve this answer
add comment

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