Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
4 Languages you should learn in 2009 (anassina.com)
34 points by BigCanOfTuna on Nov 13, 2008 | hide | past | favorite | 38 comments


"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.)


Haha 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.


My understanding is that Python is their go-to scripting language, for tying together all their low level tools that run in C++ and Java.


To be blunt and disrespectful, after seeing the author confusing Cantonese and Mandarin, I am quite skeptical of the assertions.


Oh, 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.


Pardon 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.


Also, 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.


You 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.


Alright, well, I just expressed an opinion inelegantly, but may it remain just one. I'll stop trolling already.


Not 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?


I recommend checking out Clojure instead of Erlang.


Clojure 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.


i 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.


Erlang 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).


Haskell 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.


haskell 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.


I think in 2009, I just wanna dig deeper about python.


Same. 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 :)


I'm surprised they didn't mention arabic with mandarin and russian at the end.


I 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.


Classic essay: "Why Chinese is so Damn Hard" 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."


Classic 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

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.


Instead 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).


I don't know about English acquisition, but your timeline is way off for Chinese language acquisition, even for younger children brought to China. An aggressive timeline for adults in-country would be about 2 years to conversational fluency, and less for younger kids. This is more or less the pace you see for the faster Korean learners who come to China.

I'm happy you've had a good experience in Australia. You should remember that the barriers to learning English and Chinese are fundamentally different. English requires mastery of about 100 phenomes before reading and writing skills reinforce each other and learning accelerates: the language gets more difficult as you get better. In contrast, the difficulty curve for Chinese is steep when you start but gets much easier as you improve.

Working hard is important, but equally important is giving yourself the tools to maximize learning. Someone struggling to get through Dream of the Red Chamber with a traditional dictionary is at a huge disadvantage to someone using the proper tools and resources. Learning a language is like engineering in the sense that one should use the best tools for the job, and then put in the time needed to execute.


My estimation may be biased because I am Chinese, 2 years sounds like a more reasonably good figure, which is still a lot better then the 5 years Moser claims. Also there must exist at least one language genius who can do it in 6 month :)

Indeed as you say the Chinese language is hard at the start and gets easier. In my case when I moved to Australia I forgot a lot of my Chinese even after 1 year of not reading. 4 years later I could barely read, over the holidays I was forced to study Chinese, I did nothing but read a novel, some 10 pages a day which initially made next to no sense and took almost the whole day. But after two weeks of continuous reading, I could understand a lot more, and was reading much much faster(managed to finish a 400 page book). The trick to learning to read Chinese is to get going and not stop, and skip most of what you can't understand, and gradually you will pick it up.

I would also add that if you're not seriously committed to learning Chinese, why bother? Your progress would be so painstakingly slow it would seem you're forgetting as much as you learn - I'm trying to say don't do what Moser is claiming, tackle Chinese with less than 100% with slow progress and find out it is hard after 5 years.

It is also my view that much of the difficulty is a inherently negative mental illusion that the language is hard, and that also hinders learning. If people learned Chinese as if it were playing their favorite game, instead of something inherently dry and boring (which is another argument) this will speed up the learning process.


What significant technical work is being done in Arabic? (Note, I didn't say "in Arab countries"; the point is that they're using English).


I doubt much technical work is being done in arabic. It seems like most work is done in English. I think Arabic is a good language to learn just because of the number of speakers. And of course it will make business easier in middle eastern countries.


I was in Egypt recently, there is huge enthusiasm for English and Italian there.


Reminds me to break out my russian books ... I'm getting rusty


I recommend checking out Ruby instead of Python.


Out of curiosity, could you elucidate why?


Python 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.


"..but I always miss the colons off the end of lines"

Well, if you miss them so much, just put them in.


Yeah, that's what the interpreter says... :(


Chicks love rubies, but don't like snakes that much. :D

Seriously, you should probably learn both.


well if you already know one, you might as well spend the time to learn something else that would give your brain a level up.


yeah, 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


Ruby on Rails has much more support and evangelism than Django and Python. Learning Ruby, in that sense, has a much more direct impact on your opportunities.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: