

Ask HN: 1 Programming Language to Add to my Skills? - bluedevil2k

I have some free time from now until the new year, and am wondering from the community, if you were to learn 1 new programming language right now, with a focus on how important the language will be over the next 3 years, what would you learn?<p>Assume that you are very experienced in the "common" languages like C++, Java, and PHP and want to learn one of the "up and coming" languages that are becoming more important.  Assume also you want to become a 7/10 on the new language, and be able to apply to jobs in that language come 2011.<p>Thanks!
======
equark
Choose the domain first and then the language. Decide what type of programming
do you want to do and what type of company do you want to work for. Then
choose the biggest or hottest language / framework in that domain.

Do you want to do science and R&D? Then maybe Matlab, R, OpenCL/Cuda? Finance?
Maybe F#. Big Data and statistics? R, Hive, Scope, Pig, Cascading, DryadLinq,
Clojure. Web front-end? Javascript. Web back-end? Javascript, Python or Ruby.
Mobile? Objective-C or MonoTouch. Games? Lua. Etc, etc.

~~~
MisterWebz
Javascript as back-end? Is Node.js already at a point where it can be used for
commercial websites?

------
fnl
That probably much depends on what you are doing or want to do, and to chose a
language that best complements what you already know. If you want to make safe
bets, pick one from the "most popular" chart that you did not list
(JavaScript, Python, C#, Perl, and Ruby). However, some more exotic ones might
be worth your time, too: Scala might become more important in the future, for
example, as it offers concurrency support. Same for Clojure that has some
popularity on HN at least. On Erlang I probably do not need to comment,
either. An if you work Apple stuff, Objective-C, naturally. If you go into
games development, Lua is an option. Etc., etc., etc. In essence, it is not
very hard to pick up a new language - the real work is knowing an important
framework that the language provides really well; Which ties in with what you
want to do with it in the first place, again...

EDIT: And one more thing occurred to me: With NoSQL loosing popularity
currently, I think having good SQL skills will be of more value once again.
And, truly efficient DB management (and design) cannot be done from some ORM
alone; designing well-formed Schemas and writing good SQL (or knowing how to
use an ORM to produce the "right" SQL) is an art that should not be
underestimated.

------
inetsee
This isn't exactly an answer to your question, since you asked for just one
programming language, but there is a book coming out soon (pub date listed in
Amazon is Nov 10th) entitled "Seven Languages in Seven Weeks: A Pragmatic
Guide to Learning Programming Languages". It's written by Bruce Tate (author
of books on Ruby, Rails, Java, etc), and published by Pragmatic Programmers.

The book covers Ruby, Io, Prolog, Scala, Erlang, Clojure and Haskell, spending
presumably, a week on each. According to the book description, "you'll explore
the most critical programming models of our time". This would seem to be a
good way to learn about a lot of different programming languages, in a
relatively short amount of time. Of course, if what you want is something that
will be immediately useful on your resume, this may not be of interest to you
right now.

------
gtani
Besides Tiobe and Alioth shootout, here's some other attempted quantifications

<http://github.com/languages>

<http://news.ycombinator.com/item?id=1843083>

<http://therighttool.hammerprinciple.com/>

<http://www.hackernewsers.com/skills/index.html>

[http://www.reddit.com/help/faqs/programming#Whatlanguageredd...](http://www.reddit.com/help/faqs/programming#Whatlanguageredditsarethere)

------
jbarham
If you're interested in systems programming, I'd learn Go
(<http://golang.org>). The team behind Go (which includes Ken Thompson and Rob
Pike) is very strong technically, and there's a lot to learn about programming
style and techniques for any language by reading the source code to the
standard Go packages (<http://golang.org/pkg/>).

However, Go is still very young and being actively developed so it's probably
premature to add as a marketable skill to your resume.

------
cheald
Learn Ruby or Python if you don't know one of them yet. They are rapidly
becoming the go-to scripting languages, and you will not regret learning them.

(Plus, they're easy and stupid productive)

------
moilanen
I think that depends on where you do most of your work.

If you're a front-end developer then jQuery. If you're a mobile guy, then
objective-C. If you're a backend developer, then erlang.

------
iuguy
Rails seems to be popular for people that do C++, Java and PHP in terms of
jobs. Python is something that you can get to about 3/10 in an afternoon, but
there are less jobs (except in domain-specific areas where python has an
advantage).

Personally I'd recommend python to anyone to pick up and run with, see if they
like it and carry on if they do. Having said that, if it's coin you're after
with your current skillset I imagine that C sharp or a .NET-based language may
well be more appropriate for you.

~~~
bitwize
Python is your get-shit-done language. You will probably see it used a lot
playing a support role in places where the code base is, officially and
nominally, in C++, Java, or another language. Running automated test servers,
munging data out of CSV files, etc. Heck, a lot of shops are using scons and
that's _written_ in Python.

In short: Learn Python. But don't do it to get a job. Do it to get better at
the job you have.

------
charlesdm
This depends a lot on the person and what type of work you like to do.

Perhaps take a dive into iPhone (Obj-C) or Android development (Java)?

You could also consider going for something totally different -- most of my
experience lies in C based languages and I've noticed that picking up another
one of those languages is usually not that hard and thus less interesting than
trying out for instance Haskell, Erlang or Ruby.

------
Andrewski
Smalltalk, if you want to understand what the future will look like.

