

Ask HN: Which language would you learn this year? - alcuadrado

It's well known that Pragmatic Programmer advices to learn a new language every year, which would you learn this year?<p>I'm doubting about scheme/clojure/other-lisp-dialect because it's a really different world, java because there are lots of interesting projects and libraries for java, and smalltalk because it blown my mind when I first saw it. Which would you choose? Why?
======
boyter
Actually im advising not to learn a new language this year, but act using what
you already know to built cool stuff.

I realised sometime last year I was spending more time learning stuff like
Django/Rails etc... then building stuff with the excuse "Oh it will make me
more productive in the future." Only this never happend.

For the moment I learn new things but only as I need them. Right now I don't
need Clojure, so I am not learning it. I am plodding along feeling productive
with PHP/Python/MySQL.

To each their own, but I am finding this works better for me at the moment.

~~~
alcuadrado
I feel confident an productive with LAMP and the Open Web/HTML5, and have been
building some cool apps with them, mostly as a freelance developer.

I wanna learn something new mostly to stop feeling that I might be missing
something cooler than building webapps, and to make me a better programmer
(also for webapps) by using other language/community's concepts and best-
practicies.

------
rguzman
Javascript. I mean, learn javascript really well. While I like python much
better than js, the prospect of writing the same language for both the server
and client side is very appealing.

Also, things like jquery templates, sproutcore, capuccino, and the node.js
ecosystem are just starting. In a couple of years, these will likely be good
technologies to be an "expert" in. (just like it paid very handsomely to know
how to do iphone development in ~08).

------
dstein
Although technically it's an API rather than a language, I am going to make an
effort to learn WebGL. The Chrome Experiments
(<http://www.chromeexperiments.com/webgl/?f=webgl>) are simply mindblowing. I
have always had interest in 3D programming and I know JavaScript, so no more
excuses.

------
frobozz
I don't understand your misgivings about lisp. Particularly since you are
citing PragProg as your inspiration for this question.

One good reason to learn a language is because it is radically different to
the languages you currently know. Exposure to different paradigms will make
you a better programmer.

Regarding learning Java, it's not a bad idea. Another good reason to learn a
language is because it is used in a specific project you want to contribute
to, or because you think that a novel project would best be achieved using it.

If you know one squiggly bracket imperative language, there's little point in
learning another one prior-to-need. Anything you can pick up going through dry
tutorials, you should be able to pick up on-the-job quickly enough. To achieve
mastery, you need to really be using it, so learning it one year for its own
sake, without a reasonably complex project, won't get you there.

~~~
alcuadrado
Lisp attracts me just because it seems different to me, and my only experience
with functional programming is with Haskell, so trying a loosly typed FP
language seems cool. Particularly, I have seen Scheme used in the PL community
and some books about that; and Clojure seems to have been gaining popularity
lastly, mostly because of it's concurrences features.

I know learning another language of a paradigm I already know is more or less
usless, and although you can put Java and Smalltalk in that category, Java has
an enormous community, full of different projects, libraries, frameworks, and
more, which IMO would teach me a lot. And smalltalk, just for fun :)

About using a language to achieve mastery, I totally agree.

~~~
frobozz
I've just reread your original post, and now I understand what you mean by
"doubting". When I first read it, I thought you were discounting it because it
was so different, now I see that it is one of your options.

~~~
alcuadrado
Sure it is, after reading a little about it in the book The computational
beauty of nature ( <http://bit.ly/fEJ8Cn> ), I've been quite attracted by it,
and Scheme and Clojure are the dialects which seem more promissing to me.

------
kd0amg
I'm currently working on Haskell. Others on the short list would be Go and
Clay (since it sounds nice to have a systems language other than C, and they
look interesting), OCaml (to go with Types and Programming Languages), and
Objective-C (since I'm primarily on OS X). It probably wouldn't be hard to
talk me into working on a Lisp either.

------
bendmorris
What languages do you already know? You should learn a language in a paradigm
you're unfamiliar with. i.e., if you've only worked with Ruby, either Haskell
or C would be good choices, etc.

I'd definitely suggest learning C, especially if you've only used more
abstract languages. It will teach you a lot more about low level details that
other languages handle for you, and many popular languages today are
implemented over C.

~~~
alcuadrado
I used to be a somewhat good ANSI C programmer, I've never used third party
libs, so the applications I have done where fairly limited, but I liked it.

And in the university (CS student) I have to face all the time with C, C++ and
asm, so I don't know if it would teach me that much.

------
dheerosaur
I am constantly trying to improve my Python and JavaScript. I haven't
programmed in C/C++ for a very long time. I think I will learn some Scheme by
the time I finish reading SICP and some other texts. I am also learning Common
Lisp when I am away from the Internet.

------
ruslan
Hardware. Seriously. I have been programming since I was 11 (I'm 34 atm).
Couple of years ago I came to conclusion that designing your own hardware +
software drives much more fun and it's not as difficult as it seems.

------
andrest
Well, depends on a few factors:

a) What languages do you currently know b) What do you want to program

These 2 factors are different for everybody, as such, there is no one answer
for your question.

~~~
alcuadrado
Most of my expirience is in web development, but I'm interested in many more
topics, like PL, game development, "low-level" systems, and else.

Being mostly a web developer, I have spent the last five years developing PHP
applications, and I feel very confident with the language and it's
environment.

For the last year I've focused more in javascript (although I0ve been fiddle
with it much more years) and it's probably my favorite language.

I have some experience with ANSI C, which I really like, but never used it in
a production project, also C++, but I don't like it that much.

I wanna learn a new language to gain new experience and discover different
concepts and practices from them, and also because I'm a PL enthusiast.

------
rrrhys
Objective C for me.

It's not 'new new' in a sense that I use C# regularly enough, but it is new
enough that I can get lost in it without being demoralised (so far..)

------
JoshCole
Spanish and Common Lisp most likely. The former is a transfer requirement for
the UC system and the latter will be needed for The Paradigms of AI book I
purchased.

------
yuvadam
Def Clojure.

It's gaining immense traction, and I'm definitely looking into doing my next
web project with it.

------
Dramatize
Starting to learn Ruby and JavaScript.

------
pathik
Python (Django), definitely.

------
mahmud
Scala. I'm saving clojure for last :-)

