Ask HN: Which language would you learn this year?
16 comments
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.
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.
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.
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.
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).
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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..)
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..)
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.
Def Clojure.
It's gaining immense traction, and I'm definitely looking into doing my next web project with it.
It's gaining immense traction, and I'm definitely looking into doing my next web project with it.
Starting to learn Ruby and JavaScript.
[deleted]
Python (Django), definitely.
Scala. I'm saving clojure for last :-)
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?