views:

236

answers:

10

Once you learn one language does it become easier to learn a second and are there pairs of languages that go together? Also is it even a good idea to learn more then one language?

+1  A: 

I think it is more important to learn concepts rather than language syntax. That being said, to truly master a language you often have to have painful run-ins with its gotchas. Additionally, some languages may provide library-support which lends itself better to solving specific problems. Learning multiple languages is desirable; you don't golf with just one club, do you?

Alex
+1  A: 
  1. Yes, once you know one language very well it's easier to learn other languages because you can map techniques you know to different syntaxes in the other language. This assumes both languages are comparable- C++ won't compare cleanly to Ruby, for example.
  2. It is definitely a good idea to learn multiple languages. The more languages you learn, the broader your experience becomes. Eventually you begin to understand the differences in base architecture and design between languages and why some have advantages over others for particular programming tasks.
Dave Swersky
+1  A: 

Yes, yes, and yes.

In learning a language, you learn many of the basic principles of programming, as expressed by that language. Many languages use similar concepts, or even the same frameworks and basic structure. This can make learning a second "similar" language very easy. For example, if you learn C#, VB.NET is very easy, since it uses the same framework, and same basic concepts.

Learning different languages, however, can also force you to learn different ways to "think" about a problem. This is especially true if you go from a static typed language to an interpreted language, or a functional programming language. They will force you to rethink how you program, which can make you a better programmer overall.

Reed Copsey
+2  A: 

It's very useful to know more than one language. In fact, this very good book recommends learning one every year. It does become easier to learn new languages as there are always overlapping concepts in them.

Alex - Aotea Studios
+1  A: 

As you learn more languages, you tend to think of things in terms of concepts or images instead of specific features of your favorite language. It's definitely easier to learn a third or fourth language than your first or second, because you already understand many of the concepts (and possibly syntax) being showcased in the new language. It's a great idea to learn more languages.

Phob
+1  A: 

Yes, once you understand how to break a problem apart so you can code the solution and what the common code pieceparts are, then learning another language is easier. Some are harder than others.

Learning more programming languages is good in the same ways that learning multiple real languages is. You learn things across the languages, making you better in both. You also have another skill to sell. Some languages are more applicable to certain kinds of problems...knowing more languages makes you better able to tackle those problems.

Peter Loron
+1  A: 

Most of the time yes. Once you understand the general idea of programming you start picking up similar patterns in different languages. Especially if the languages are from the same family or are of the same type (for instance once you learn C or C++ it is very easy to learn Java, Javascript, C#, PHP and so on). Of course it is probably equally difficult to master them, but you will pick up 90% of things quickly.

For learning, however, it is much better to learn 2 languages from different families and with different foundations, like C and Haskell. It will widen your perspective and allow you to come up with solutions that are outside of the normal frame of mind for these languages.

BlackVoid
+15  A: 

Learning more than one language is an excellent idea -- not only does that give you that much more flexibility in job hunting &c, but it simply broadens your mind, your vision of what programming is all about.

The second language is often the hardest one -- because your first language has done so much to shape your thinking and operating when programming. The very hardest case is when the two languages are superficially similar but have deep, subtle differences: it's truly hard to perceive, understand and learn the subtle differences, as the surface similarity blinds you.

If you master two languages that are far apart from each other, the third one will be easier... and it only gets easier and easier after that. A great pair of languages to start from is one very high level language (such as Ruby or Python) and one pretty low level one (especially C); however, a functional language such as Haskell, and one that's the very antithesis of functional such as Java, should also work, almost as well.

Alex Martelli
The recommendation to learn languages that are very different is good all on its own. A lot of people just learn a lot of very similar languages and even once they've learned all the subtle differences between those, they haven't really learned different ways of doing things. (For example, people who know lots of high-level languages still get really confused in by low-level features, or object-oriented programmers feel like their legs have been cut off when they're forced to write functional code.)
Chuck
+1  A: 

Learning different languages teach you to think in different ways. These thought patterns can generally be utilized in any language so yes, it is good to learn more than one language.

That being said, knowing 5 languages superficially, will never amount to be as good as knowing one language to the bone. Again though if you already know one to the bone, knowing 5 more will let you sap the marrow.

Programming languages generally have very few words, and most words can be translated litterally to and from different languages. When you learn the first language however, along with learning the language you must learn to think in terms of programming. The second language is a lot easier, the third equally so, the fourth a stroll in the park, the fith a piece of cake, and the sixth a piece of cake at a nice little cafe, and so on, you get the picture :)

/B2S

Born2Smile
+2  A: 

Repeating all of the above sentiment, I strongly support the notion of learning multiple languages, and gaining high proficiency in at least two very different languages. I do in fact think that knowing five languages superficially is beneficial, if it piques your curiosity to learn more, but you should still master more than one language "to the bone."

Here are some (non-exclusive) categories of languages that you may want to consider.

  • Compiled (C, C++, ...) / Interpreted (Perl, Ruby, Python, PHP,...) / JIT (Java)
  • High level / Low level
  • Object-Oriented / Procedural / Declarative / Functional
  • Established / Experimental
  • General / Special purpose / Domain specific
  • Strongly typed / Loosely typed

Understanding the trade-offs and philosophies behind these languages and their implementation will necessarily make you a better programmer. Sure, it may take time to experiment with all of them, and become proficient in some of them. But the experience is rewarding starting even at the first step, with immediate gratification and benefits, so you shouldn't despair by the plethora of choices.

Eitan