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

9 points by bluedevil2k ↗ HN
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?

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.

Thanks!

12 comments

[ 3.6 ms ] story [ 39.3 ms ] thread
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.

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.

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.

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.

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.

Smalltalk, if you want to understand what the future will look like.
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.

Javascript as back-end? Is Node.js already at a point where it can be used for commercial websites?
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.

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)

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.