5 ms·
4 Languages you should learn in 2009
The Pragmatic Programmer Books suggests you learn a new language every year. I suggest you learn 4 that will be beneficial to your career in 2009.
- schtog 18y ago"It is one of two official languages used at Google and it does power a lot of their most profitable products." One of 2? I thought 4: Java, Python, C++, Javascript. And does it really power a lot of their most profitable products? Like which? (Not bashing here, Python is my main language and I love it.)
- bdotdub 18y agoHaha I thought Google has only one profitable product, AdSense :) That said, a number of their high profile apps are in Python, most notably YouTube and App Engine.
- jimbokun 18y agoMy understanding is that Python is their go-to scripting language, for tying together all their low level tools that run in C++ and Java.
- whacked_new 18y agoTo be blunt and disrespectful, after seeing the author confusing Cantonese and Mandarin, I am quite skeptical of the assertions.
- BigCanOfTuna 18y agoOh, give me a break! I did approve the comment by the user who pointed out the mistake, kindly thanked him, AND struck the comment rather than try to hide it like so many other revisionist bloggers out there.
- whacked_new 18y agoPardon me for that, and I was aware of the undertones, but I still didn't see anything particularly informative, especially provided that you submitted this blog to HN: it is almost a given that everybody here programs to some degree. You did not make a strong case for any of your assertions. You merely asserted. This is different if your audience is, I dunno, designers, or people wanting to get their feet wet. That is certainly not the case in this forum. Also, a foreign language takes a lot of time and effort to even just become functional in it. If you are thinking in terms of managing a foreign dev team with your foreign language skills, you're thinking in terms of several years. Not just "in 2009." Maybe I have a bad temper today, but as you said you have over 10 years of OOP experience, one would expect something jucier.
- BigCanOfTuna 18y agoYou didn't find it informative? That's unfortunate. What is the audience of this forum. Looking through your list of submitted articles reveals no indication. For instance, your last submission was "Japanese Convenience Stores Thrive Despite Economic Downturn." Foreign languages are very hard to learn. I know, I speak three. I didn't say anything about managing a foreign dev team, just that you should learn a new language. The world is flattening and I don't always want to speak English. I don't know how 10 years of OOP correlates to a "juicy" blog post. All I can say is that in 13 hour, with close to 3500 unique visits, some people found it interesting.
- whacked_new 18y agoAlright, well, I just expressed an opinion inelegantly, but may it remain just one. I'll stop trolling already.
- xiaoma 18y agoAlso, a foreign language takes a lot of time and effort to even just become functional in it. I'll second that. I see a new westerners come here to Taiwan every year, many with grandiose goals of "mastering" Chinese. So far, it has broken every one of them, including myself. After six years, I can muddle my way through the Apple Daily and converse at a native-like level about topics I'm very familiar with, but all my illusions of becoming "literate" or "speaking flawlessly" died long ago. Even now my Chinese isn't sufficient to get me a job without the benefit of having my English skills as well. Learning Chinese has been great on a personal level, but in terms of career, it was one of the most expensive decisions I've ever made.
- cstejerean 18y agoI recommend checking out Clojure instead of Erlang.
- jimbokun 18y agoClojure comes close to answering almost all of my complaints with other languages. - The mature libraries and deployment environment of the JVM. So your code runs fast, runs almost anywhere, and a lot of work is already done for you. - Data literals for arrays and maps. One of the shortcomings of Common Lisp. And catches up with (surpasses?) Python/Ruby/Javascript in this regard. - ISeq interface means that a single set of functions works across all collection types. (Common Lisp has an amazing array of functions for working on lists, but hit and miss for other collection types.) - Lisp 1. I know this is an aesthetic thing, but I much prefer how the code looks than Lisp 2's. - Steals a lot of arc's good ideas, like abbreviated syntax for function literals and semantics for arrays/maps in function position. - Common Lisp style macros. Just more intuitive, for me, than the hygienic type. - Interesting place in the space of computer programming languages. Dynamic typing, with an emphasis on programming to interfaces, macros, first class functions, immutable data structures, and built in mechanisms to support parallel programming. I don't know of any other language that chooses this set of tradeoffs.
- deleted 18y ago[deleted]
- crabapple 18y agoi would recommend clojure if you want to learn "a lisp"...along the positives you cite, it has a growing community, very active development, hype (in a good way), and deployability.
- gaius 18y agoErlang is a great language, but I've never managed to do any useful work with it. Very few people are actually working on things that are othogonal to telecom switches. Single-paradigm languages will always be stuck in niches (this isn't necessarily a bad thing).
- vesan 18y agoI recommend checking out Ruby instead of Python.
- razzmataz 18y agoOut of curiosity, could you elucidate why?
- pavelludiq 18y agoChicks love rubies, but don't like snakes that much. :D Seriously, you should probably learn both.
- catch23 18y agowell if you already know one, you might as well spend the time to learn something else that would give your brain a level up.
- pavelludiq 18y agoyeah, a good tip, but still if you know one, you should at least go through the other ones tutorial just to know what you're missing :D
- admin 18y agoChicks Love hackers
- qwph 18y agoPython and Ruby are pretty equivalent in terms of what you can do with them. Given a choice between the two, I'd probably choose Ruby, as I personally find it to be less cognitively dissonant than Python. I'm really not fond of having to haul the self parameter around all over the place in Python, and there seems to be some confusion between what's a function and what's a method. (Some of this is being addressed in Python 3 I think.) The whitespace thing, I can just about cope with, but I always miss the colons off the end of lines. Oh, and at least on Windows, the supplied documentation is organized in a seemingly arbitrary manner (but at least it has an index if you know what you're looking for). Having said that, Python probably has a better standard library than Ruby, so, meh, learn both and see which you prefer.
- chris11 18y agoI'm surprised they didn't mention arabic with mandarin and russian at the end.
- tapostrophemo 18y agoI just took an informal survey amongst my teammates (including Arabic in the list), and "three out of four" developers said: Mandarin. The interesting thing is that on my team, two are from Russia, one from China, one from Lebanon, one from the UK, and one from India. The other two are Americans.
- wallflower 18y agoClassic essay: "Why Chinese is so Damn Hard" http://www.pinyin.info/readings/texts/moser.html http://www.pinyin.info/readings/texts/moser.html "Someone once said that learning Chinese is "a five-year lesson in humility". I used to think this meant that at the end of five years you will have mastered Chinese and learned humility along the way. However, now having studied Chinese for over six years, I have concluded that actually the phrase means that after five years your Chinese will still be abysmal, but at least you will have thoroughly learned humility."
- curiousgeorge 18y agoClassic Moser essay. I thought this would be a post about spoken languages as well, and would put mandarin at the top of the list as well. Since people are still hiring here (especially in tech related fields), I will happily take this opportunity to plug our Chinese learning product: http://popupchinese.com http://popupchinese.com The ability to roll your mouse over the characters and see exactly what they mean, or just change all of the characters to pinyin on-the-fly makes it an incredibly effective way to learn Chinese.
- light3 18y agoInstead of 5 years how about you move to China and study / communicate (as opposed to having fun) everyday for half a year to the fullest of your potential, you'll be up and talking and blowing Moser's article to smithereens. I say this because when I moved to Australia (I'm Chinese) I was speaking English in 3 month, given I was 9 yrs old - but it just shows how much more important your environment is compared to how much time you study a language (unless its a very close language).
- vegai 18y agoHaskell instead of anything else. And then some Factor. Mandarin is a nice touch. I'll try that. Indians, however, speak English pretty well -- even if their accent might take some getting used to.
- crabapple 18y agohaskell is the only programming language that made me reconsider most of my assumptions. its not a tacked-on, hacked-on functional layer on something else, its mind-bending at a fundamental level. because haskell makes no comprimises, it also is showing some insane performance on multicore. its no mistake that the google mapreduce tutorials use haskell in some explanatory examples... ten years from now, you will be dealing with a multicore world, and you will be using something that is conceptually tied to haskell. i see this as inevitable. factor i have looked at again and again, worked through some trivial problems...not sure i will ever "get" it. i would brute-force understanding it were it to take off.
- callmeed 18y agoReminds me to break out my russian books ... I'm getting rusty
- sherl0ck 18y agoI think in 2009, I just wanna dig deeper about python.
- truebosko 18y agoSame. I only got into Python this year, but I definitely want to say I'm an expert by next year. Of course, won't ever stop learning new tricks even as an expert :)
- jwilliams 18y agoNot sure I get the logic behind the line: With the economic slow down, countries with emerging technology sectors and talented, well educated developers will be getting a second look as a means of cutting applicationd(sic) development costs. Surely with the economic slowdown developers in "un-emerging" economies will be more competitive?