views:

103

answers:

5

As the question states, is it better if a student diversifies or explores when learning programming languages or should they focus only on 2-3 languages and really get to know them well?

Example of what I mean by diversifying:

  Functional -> Scheme
  Procedural -> C
  Object Oriented -> Java
  Dynamic or scripting -> Python
  Other -> C++

I have a few breaks in between semesters sometimes (up to 3 months) and I'm thinking of either learning a new language or "master" those that I know right now. Which would benefit me in the future? I know some(about 3 months of self studying each) Java, C, and C++ already . If I'm not mistaken, where I live, the industry is heavy on Java, C++, and C#.

+2  A: 

You can't master a language per se, you can master programming. In the end, it will rarely matter if you have to learn a new language, as you have all the basic knowledge from other projects, you just have to get used to the specific stuff of the new language.

Femaref
+3  A: 

Do both. Master at least one language (probably Java or C# since those are most common in industry) and learn others languages for what they can teach you so that you can bring back to those you are forced to work with.

A: 

It is hard to master a language unless you are actually using it for real, this means that during your holidays you would have to write real projects - not many people can achieve that (finishing a real project in a short amount of time, while on a break from learning).

I would advise to diversify first. You will find that once you know a few different languages then any new lenguage becomes a lot easier to learn. Different types of languages also introduce you to new concepts, and may well help you decide what type of programming you really want to do. Once you have decided what you like, then work on mastering it.

slugster
+1  A: 

I believe that a good programmer doesn't know every thing but he can learn every thing.
when you master a language and master "the programming" it won't take more than a week to learn another language.
but it is a good idea to take a look to new languages and be able to read and anderstand codes in many languages.

M.H
+3  A: 

Mastery takes ten years. But if you were my student, I would advise you to develop a good working knowledge of four kinds of languages:

  • Functional
  • Object-oriented
  • Machine-level
  • Scripting

These categories are pretty loose, but if you have a good working knowledge of all four, you score well on diversity.

If you want to aim for mastery, study C as your machine-level language and Lua as your scripting language. Lua is definitely small enough to be mastered, and C is not too bad if you avoid odd corners like the true meanings of const and volatile. I don't know if a functional or object-oriented language that I would say is susceptible of mastery.

Summary: build carefully targeted diversity and allow mastery to come with time.

Norman Ramsey