What is the correct site on which to ask the question: "Which programming language should I learn?"

I searched for this question on Stack Overflow and saw that several variations have been closed. Even though it may not relate to professional programming, is programmers.stackexchange.com a better place to ask?

If Stack Exchange is not right for this question, what programming forum can be recommended?

  • @Mr - I think you should rephrase the question to specify your purpose for learning the language, e.g. "Which programming language should I learn to create web based app?" or something more precise. – Reinstate Monica - Goodbye SE Mar 12 '11 at 22:27
  • I would have quite a few details to add to the post, but I am not sure I could capture a fair description in the title, so I thought to leave it generic. Suggestions? – Mr.Wizard Mar 12 '11 at 22:30
  • 2
    @Mr - OK, as long as your realise the question - as it stands - can't be answered. I think that it is important for readers to understand that you get that. Maybe rephrase to: "Which programming language should I learn for [specific reason]?" – Reinstate Monica - Goodbye SE Mar 12 '11 at 22:32
  • OK, I shall be sure to make the title less generic. Should this go on SO or programmers ? Several of the closed SO questions bore the comment "this belongs on programmers." – Mr.Wizard Mar 12 '11 at 22:38
  • 9
    Those comments were probably left by people who've never been on Programmers' – ChrisF Mar 12 '11 at 22:41
  • 1
    I'll just answer your question - All of them. (Such a broad question deserves a broad answer.) – Hogan Apr 20 '11 at 20:45

Wizard, since the consensus here is that such a question is off-topic on all Stack Exchange sites, I would recommend the learn programming sub-reddit on reddit.com. There is a decent activity on that site. Although you might be tempted to post on the programming sub-reddit, the mods there are pretty uppity and will ban your post sooner than your mma post got closed last week :) I've also had some success with such questions on askreddit, mainly because it has 100 times the subscribers as the learn programming subreddit, and certainly a decent number of them are programmers.

As for your comment:

I already know a proprietary high-level largely function language (Mathematica). I want to learn something computationally efficient, open, more common, fairly terse, and not loop-based. Interesting options appear to be Haskell, F#, and Python. Is that good enough, or still doesn't cut it?

Here's my $0.02 on it:

Seeing your knowledge of Mathematica, I reckon Haskell will be the easiest for you to learn, as it is a purely functional programming language. However, the reason you're thinking of diversifying must mainly be to learn a different programming paradigm, or perhaps to learn a language that is strong in areas where Mathematica is not.

From that point of view, I'd highly recommend Python. Python meets nearly all your requirements - clean code, flexibility, open, commonly used, etc. In my case, I work mostly with MATLAB, and use Mathematica for all my symbolic computation + graphics. These two together satisfy nearly all my needs. However, I've been learning Python by the side, as I've found that it can do nearly everything that MATLAB can and more (perhaps there aren't as many dedicated toolboxes, as there isn't a large organization throwing its weight and money behind development), and the growth of the language has been phenomenal. Also because I think that in 5-10 years, Python will do to MATLAB, what MATLAB did to Fortran... phase it out of common use and force graduate students to be stuck with advisors' legacy code. But I could be wrong, which is why I still use MATLAB actively.

Python is also a general-purpose language. You can easily write a web application in Python and ship it, whereas you can't with MATLAB and Mathematica. Also, the string manipulation capabilities are far superior to that of MATLAB and Mathematica, and with the NumPy/scipy packages, the array manipulation capabilities parallel MATLAB's and are superior to Mathematica's (Mathematica is just not built for it).

Python also has some rudimentary support for functional programming with lambda calculus, map, etc. which were ported from Lisp, and I believe that it will improve greatly in the future. I don't know much about F#, but you can take a look at this comparison between Python and Haskell.

Lastly, I'd echo Bill and Chris in saying that the choice is highly dependent on what you want to do with it. If it's for a general non-functional programming experience/learning a new language, I'd say go for Python. If not, then the choice depends on your specific needs.


None of them. What language you should learn next is too localized to where you're at in your education and/or career. We don't need to collectively make this decision for each individual user. Talk to your professors, advisors, managers, and mentors. That's what they are there for.

  • That doesn't speak well of the utility of StackExchange. – Mr.Wizard Mar 13 '11 at 0:12
  • 15
    @Mr.Wizard: It is what it is. It's not a discussion board, it's a place for questions that can be reasonably answered and that will be useful to others. What programming language you should learn right now isn't going to have much utility to you 6 months from now, much less anyone else. – Bill the Lizard Mar 13 '11 at 0:14
  • Fair enough, but what if my question is "What is the correct forum to ask...?" That is, can I ask StackOverflow to direct me to a forum (outside of SE if necessary) that is appropriate for question X? I really am not trying to be obtuse or belligerent. – Mr.Wizard Mar 13 '11 at 0:19
  • 3
    @Mr.Wizard: That's a meta question, so this is the right place to ask. – Bill the Lizard Mar 13 '11 at 0:21
  • 2
    @BilltheLizard your comment is better than the answer itself :) – nawfal Jul 22 '14 at 19:03

The question as stated is definitely off topic for Programmers' - see our FAQ

If you have a specific project in mind you need to state what application is that you are wanting to build in as much detail as possible.

However, if you are just wanting to learn for the sake of learning then we can't help you.

Just pick one.

  • I feared as much. Is there a newbie-welcoming forum of diversely skilled programmers outside of StackExchange that I may petition? – Mr.Wizard Mar 12 '11 at 22:58
  • 7
    @Mr.Wizard - unless you have a specific goal in mind all you are going to get is everyone promoting their favourite language and you are going to be no better off. – ChrisF Mar 12 '11 at 23:00
  • 2
    @Mr.Wizard: There is no forum of any kind where the answer "Which programming language should I learn?" could ever be adequately answered. The question simply does not have a correct answer. Even if you limit scope to a specific area there are still too many equally adequate choices, so that any definite answer would simply state the answerer's personal opinion, which is as useful to you as flipping a coin would be. – sepp2k Mar 12 '11 at 23:02
  • This is frustrating. I don't know how to state my question without just asking it, and Meta certainly doesn't appear to be the right place. How specific do you think I need to be for this to fit SO? – Mr.Wizard Mar 12 '11 at 23:06
  • @Mr.Wizard - it will never fit SO. Why do you want to know what language to learn next? – ChrisF Mar 12 '11 at 23:08
  • The short-short version: I already know a proprietary high-level largely function language (Mathematica). I want to learn something computationally efficient, open, more common, fairly terse, and not loop-based. Interesting options appear to be Haskell, F#, and Python. Is that good enough, or still doesn't cut it? – Mr.Wizard Mar 12 '11 at 23:13
  • 1
    @Mr.Wizard - sorry, but no. This is still going to result in people promoting their favourite. Seriously, just pick one - any one. Write a random number generator, flip a coin, get the next person you see to pick one. – ChrisF Mar 12 '11 at 23:15
  • @Mr.Wizard - See - programmers.stackexchange.com/questions/57412/… - NOTE: This question is just about on topic. Note it's not asking which one to learn. – ChrisF Mar 12 '11 at 23:18
  • It seems it is possible to ask a similar question with enough detail for it to be well received. stackoverflow.com/questions/3770774/… – Mr.Wizard Mar 12 '11 at 23:19
  • @Mr.Wizard - that question predates Programmers' and probably wouldn't be allowed now. – ChrisF Mar 12 '11 at 23:21

The cynical answer is: Go to DICE.com, search on programmer jobs in your area, sort by salary (descending), and choose the one that appears the most often on the first page.

But, really, why are you looking for someone to tell you what to learn next? What do you want to do? Learn that!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .