Sign in to follow this  
kaktusas2598

Learning many languages?

Recommended Posts

Andy474    694
Well, that entirely depends on many things.

Q. What are you doing?
-Hobbist Game programming?
Probably better to stick to one language, don't overload yourself.

-Hoping to go Professional?
Very useful to know many languages, many time you might need to know Python for scripting and write the engine in C++ for instance.

Share this post


Link to post
Share on other sites
Nytegard    839
Honestly, I'd suggest to forget about concentrating on learning a language, and focus more about learning different programming paradigms.

Languages themselves are more like syntactical sugar and should not be viewed the same way as learning different linguistic languages.

For the most part, when you start programming, the basics are going to be the same in almost any language of a similar paradigm. It's when you are comfortable with that where you'll need to start knowing the language and all the little intricacies.

For example, I've been working with C++ for over a decade, and I wouldn't say I know it. I'm still learning it though. I can, however, develope programs with it. But with knowing the paradigms behind it, I can switch to other foreign languages and be able to start developing with no prior knowledge of the language fairly quickly.

Share this post


Link to post
Share on other sites
Telastyn    3777
It depends on where you are in your development. As a beginner, you should focus on one language and work at becoming a good programmer. Learning how to build, debug, design programs. Once you're very comfortable with that language, it's good to learn another similar one. It forces you to abstract out the concepts of the language away from the syntax of the language to make the transition. Once you're comfortable with the second, it's useful to learn a variety of languages to get exposure to diverse concepts.

Share this post


Link to post
Share on other sites
cignox1    735
Not only it is useful, but sometimes required if you are a professional developer used to (say, c++) and forced to move to other targets (say, java for web applications).
In the beginning I would suggest to learn one language well though before trying other: once you know a language well it is easier to use others. Moving from java to C# has been close to painless for me.

Share this post


Link to post
Share on other sites
dudeman21    423
Just to give an example as an answer to your question: During my average workday, I use C++, C#, WPF, and SQL to accomplish the tasks I need to do. At night, I often use a mix of C++ and ASM for my personal projects. It's very useful to know several programming languages, and in a lot of cases, almost necessary. Once you understand the principles and fundamentals of programming, picking up a new language is often just a matter of memorizing a few keywords and remembering what libraries do what.

Share this post


Link to post
Share on other sites
phresnel    953
Quote:
Original post by lithos
Does a carpenter only use one Saw?


But they also use not all available saws, only a handful of those. E.g. for what should they learn to command a large 2-man pruning saw normally used to down big trees?

And some jobs they do are only teached in limited local regions (e.g. only roofers in germany's northern regions learn how to build thatched roofs). Of course it is common practice here, even in these modern times, that carpenters go onto the "Walz", but they don't learn every local practice, only several ones.

Quote:
Learn as many languages as you can.

Imho, knowing several programming paradigms (and a handful of PLs) is a good thing, but it's not necessarily a good thing to know as many languages as possible.

Share this post


Link to post
Share on other sites
SamLowry    1865
I tend to distinguish two kinds of languages: some languages you know because you need to actually use them, while others teach you about certain concepts, which you'll start using in a language of the first kind. You could call them the practical and theoretical languages.

The first thing you need to do when learning to program is to focus on a single language and learn it well. Switching around will just confuse you, because languages can differ in some very subtle points, and these need to be made very explicit. Those little differences will go unnoticed if you change languages too early, and they can be quite important to know about. You don't want to end up using a trial-and-error approach all the time to get your code compiling.

Theoretical languages are important in my opinion because they give you new ideas: you can try out concepts in some sort of sandbox mode: the language provides nice syntax and probably also checks for errors specific to those concepts. You can have a feeling of how it works and how you can build things with it. A few examples: Haskell provides you first-order functions, monads, laziness, and many other things, Oz provides futures/dataflow variables, Erlang supports actors, Common Lisp teaches you about meta-programming, ...

More generally, when confronted with a problem you need to solve, you want to have access to as many "problem solving tools" as possible, which you collect by looking around, such as to other programming languages. Those tools may not be directly available in the language you're using, but you can always implement them yourself.

Now, there's a lot of gray area to all of this. The distinction between these two kinds of languages is far from clear-cut, and do you really want to program Oz-like in java, etc. I tend to use "external concepts" a lot (e.g. I use Haskell-stuff in my C#-apps) because it leads, in my opinion, to some very elegant code, which I like. However, if that makes me a good programmer, I don't know. Some might call it "too unidiomatic" for example.

Share this post


Link to post
Share on other sites
JoeCooper    350
Different languages fill different roles and meet different specs. If you want to be useful, you must know at least a few.

At my work I use Java, C, C++, PHP, Bash and once, some assembler.

The main app being written in Java, but I've used C to provide simple access to platform specific features, C++ to write components that must operate outside the JVM, PHP for server side scripting, Bash for shell scripting for development purposes... And assembler once to access an SSE feature that wasn't simply exposed by a gcc instrinsic.

Then on my amateur game project I use C++, Lua and Java. C++ for the game software, Lua for integrated scripting, Java for tools.

There are languages for writing applications, rapid app dev, shell scripts to automate tasks, server side scripts, integrated scripts... etc.

You need to be able to do all these things.

And to hit different platforms, sometimes you need to choose one based on circumstances. You cannot use Java, for example, if you're developing for the iPhone or Gameboy.

Which language you wind up using depends a lot on these circumstantial factors.

Quote:
Languages themselves are more like syntactical sugar and should not be viewed the same way as learning different linguistic languages.


QFT.

Its like learning to operate a new machine. Sometimes a project's specs will call for a different language than you already know, and you'll just have to hit the books.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this