

Ask HN: How many programming languages need to learn? - j03

So many popular programming languages out there. Would you saying knowing one scripting language and one compiled language is enough? What would your choices be?
======
ecopoesis
Knowing only one scripting and one compiled language is a joke. To be
successful you need to be able to pickup new languages quickly, like in a
week. Sure, after a week you're not and expert in any language, or maybe even
good at it, but you should be able to read and write it.

If you're just starting off, C (or something equivalent to C like Pascal) is
the way to go. If you can understand pointers and memory management then
you're better then many so-called programmers.

After C, you should then learn an objected-oriented language (Java's a good
choice, but you could try C++ if you're insane) and a functional language like
Scheme or Clojure. A logical language like Prolog may also come in handy.

Once you have C, Java, Scheme and Prolog, you're pretty close to unstoppable
and picking up anything new is just a matter of learning some syntax,
libraries and a few gotchas for each language.

------
nostrademons
If I had to pick the most bang for the buck, it would be Python + C. One
scripting language, one compiled, both work well together. You can easily
cover shell scripting, 3D graphics, computationally-intensive algorithms,
webapps, GUIs, network programming, and most other problem domains with it.
The only weak area of this combination might be compilers, and it's still not
_bad_ for that...

A lot of people will tell you "all of them", and it's true that every language
you learn will (probably) teach you something about computing. But that
ignores opportunity cost: learning your tenth programming language will
probably teach you less than learning a new problem domain and a new set of
algorithms.

------
auganov
The most important question is if you want to find a job utilizing those
skills. If you just want to work on your own projects then by all means learn
on-the-fly.

There's so many different things you can purse with programming skills so the
advice you get will be very diversified too. In the end it's all about
reaching your goal, so identify that and look at how you can get there.

The definition of "learning" a language varies a lot too. I'd rather focus on
particular functional areas. Generic knowledge of languages won't get you too
far unless you want to be a teacher.

I've done this and that in many languages but if somebody asks me which I know
I never know what to answer. I tend to say I know none and that I just know a
little about programming.

Actually I don't find it that much different from learning spoken languages.
When I know what I want to express/understand I find it very very easy to
learn quickly. When I am in the "let's look for some new stuff I don't know
mode" I tend to learn very little.

------
steventruong
No. You'll use different languages for different things depending on what
you're developing for. And to improve on your programming as a whole, the more
languages you explore, the better understanding you'll have about how to do
things differently. There's a ton of threads on here already on
recommendations but Python is a good starting language to go with.

------
cubicle67
I just sort of end up learning stuff without actually making a deliberate
effort to do so. Sometimes I learn because it interests me, sometimes because
I need to, but mostly because I find it interesting.

I guess I don't really set out to learn, I just sort of gather experience

Edit: What I'm trying to say is that I don't see much value in planning out
what you're going to learn as those sort of plans almost never work out.
Instead, just try stuff and see what you like; what you have an affinity for.
As you gain experience in one area you'll find yourself branching out
naturally. Let your curiosity and enjoyment guide you. The languages you
derive the most joy from are those where you'll be most productive

~~~
danneu
I think I'm the same as you and wonder if most people are

The OP question is something I would've obsessed over when I was in my teens,
wanted to start programming, but spent more time planning my eventual entry
into programming.

Once I started programming and making real applications, I became really
confident in my ability to pick up any other language as needed. I totally
agree that learning new languages are part of a natural progression that's
hard to avoid if you're truly enjoying your craft in whatever aspect of the
territory interests you.

------
r3570r3
Well, it totally depends on what you want to achieve from learning any
programming language.

IMHO, these are the ones you should know and they cover most of the scenario.

    
    
      1. A desktop programming language, compiled and robust like C.
      2. A regex wizard like Perl.
      3. A strong web based scripting language like Javascript.
      4. An interpreted and readable language like Python.
    

If you like to fire up your own codes from time to time, these are the ones
you should know. Though, if you are into specific development fields, this
list does not matter. You have to learn something specific in that case.

------
veyron
Depends on what you define programming language to be. In all seriousness,
some dont consider perl or bash or awk programming languages.

For every task, there are multiple programming languages suited for the task.
You can get away with knowing one language (ie C) to do everything, but it's a
pain for all but the most simple stuff.

Python and perl are nice languages in that they can do most things that you
would use a compiled language for, and most things that you would use a higher
level scripting language for.

------
winsbe01
I thought if I was ever going to be successful at programming, I needed to
learn a whole bunch of languages. Now I think that a language is only as good
as the person writing in it. Learn algorithms and logic, and read code that
other people have written, in all languages. Let it influence you. When it
comes time to pick a language for a project, you'll be prepared to write it in
the language that fits it best.

Of course, I've only been programming for 4 years, so feel free to reach for
the salt :)

------
beagle3
I would put languages into classes, in the sense that if you can program in
one language of this class, you can program the others. You won't be efficient
or idiomatic, but you will be able to program.

* Python, Ruby, Javascript

* C#, Java

* Haskell, Ocaml, F#

* Forth, PostScript, Factor

* Lisp, Scheme, Dylan, Pliant

* C++

* C, Assembly

You'll need one of each, although you can do very well with just C + Python.

------
LarryA
Learn what you need to get stuff done. Depending on what you are planning to
develop and how you wish to approach it is how you choose the language(s).

------
wrrice
If you're well-versed in C and Javascript, there's not much you can't do.

------
leftnode
Learn all of them. Yes, even Brainfuck and Piet.

