22

For me I am C# and Java person. I find these 2 languages are quite similar so its easier for me to crossover each other. I'm not sure if its good idea to pick up other different languages. Any thoughts?

Chris
  • 5,653

16 Answers16

53

It's not about how many languages you learn. It's about learning new concepts. Some languages might be able to teach you many concepts, while others might be able to teach only one.

If you know C#, you probably wouldn't learn anything terribly new by learning Java. But you would if you learned Haskell.

So when you pick a new language to learn, pick something that will teach you concepts you don't already know.

Frank Shearar
  • 16,683
  • I tried haskell its quite hard to understand the concept. :/ – Digital Dude Oct 28 '10 at 09:32
  • I've just started learning it. Struggling to learn something can be a good sign - it took a long, long time for me to learn PROLOG, but it was well worth the pain. – Frank Shearar Oct 28 '10 at 09:43
  • yes, prolog is real indeed very pain to learn, i was asking myself how to debug it? what went wrong...etc.. – Digital Dude Oct 28 '10 at 09:51
  • 3
    Lisp is another good one like Haskell in my opinion. I learned a lot implementing a recursive decent scheme parser in scheme. – Chris Oct 28 '10 at 12:50
  • 23
    +1 "A language that doesn't affect the way you think about programming, is not worth knowing" -Alan Perlis – Inaimathi Oct 28 '10 at 12:52
  • 20
    @Inaimathi: Unless knowing it helps pay the bills. – Kramii Oct 28 '10 at 14:18
  • 1
    Haskell is excellent, but its more about learning FP concepts, so there are other language choices. For .NET try F# (which is very OCAML like) and for Java there's Scala and Clojure. You can even use a lot of very FP concepts in C# thanks to LINQ. – CodexArcanum Oct 28 '10 at 14:27
  • 5
    Just a note: I suggested Haskell for no reason other than it's radically different to C#. The asbestos-wearing trickster in me wanted to say "learn Smalltalk so you can learn OO"! – Frank Shearar Oct 28 '10 at 14:33
  • @Kramii: Never found that in practice. I've yet to learn C# or Java (which are typically the languages people refer to when presenting the argument you just did) and I haven't had any trouble paying the bills. YMMV. – Inaimathi Oct 28 '10 at 15:01
  • 10
    @Digital Dude: the fact that it's hard is kind of the point. That pain behind your forehead is NOT a bad thing - it's a sign that your brain is growing. If you just want to keep learning the Same Thing over and over, learn Java, then C#, then Ruby, then C++ (woooh, no garbage collector - scary!), then C (no classes - scary-scary!), then maybe get really crazy and try Objective-C! (Ooooh - two days ago I couldn't spell Mac and now I can program one!) My point - if you want to learn something NEW you have to do something DIFFERENT. Following the same road just gets you to the same place. – Bob Jarvis - Слава Україні Oct 28 '10 at 16:40
  • 4
    @Kramii @Inaimathi Aha, but a language that helps you pay the bills affects the way you think about programming – slf Oct 28 '10 at 19:08
43

I can think of at least five reasons to learn a language, and it seems like you should eventually learn one for each of these.

  1. One language to get your first job - likely Java/C#/C++
  2. One language to get things done - likely Bash/Perl/Python/Ruby
  3. One language to bend your mind - likely Haskell/Clojure/Scala/F#
  4. One language for domain specific reasons - likely JavaScript/Objective C
  5. One language to get your hands dirty - likely C/Assembly
Eric Wilson
  • 12,071
  • @Den I didn't learn Python to get a job at a cool Python start-up. I learned Python because Java is lousy for many small tasks that can be easily automated with a scripting language. – Eric Wilson Sep 26 '12 at 13:31