Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I didn't read it that way. He's seems to be claiming that getting good at a new language involves a lot of non-mind-expanding overhead---which, in the author's estimation, isn't worth the opportunity cost past one or two additional (sufficiently different) languages. I think this passage sums it up:

Aside from the immediate reasons, there's some merit to the mind expansion argument. I think being proficient in at least two languages is indeed important for boosting your ability as a developer. This resembles human language: learning a second one changes the way you think and your perception of the world. The third or fourth, not as much. But it can't be any two languages. If you know Portuguese and Spanish, your mind didn't have to expand much. Likewise, learning VB.net and C# doesn't count.



I've found that most languages I consider worth learning have fairly small overhead. The syntaxes of ML, Lisp, Haskell, Smalltalk, Prolog, Lua, Ruby, Qi and Python are small, simple and easy to learn[0]. Most of those have small standard libraries as well. Learning any one of those, assuming you don't already know a very similar language is likely to change how you think about programming. Even if you don't use that language much, it will alter how you code in other languages.

Is this worth it, from a strictly professional perspective? I have no clue. I've never met a strictly professional programmer who was any good.

[0] This should not be taken to mean that these are the only languages I consider worth learning - they're just the first ones that came to mind.


"I've found that most languages I consider worth learning have fairly small overhead...Lisp..."

Scheme yes, maybe not Common Lisp :P


Note that I said the syntax is small for all of (list of languages) and most of those have a small standard library. CL has a simple syntax and a large standard library. By extension, so does Qi.


There's more to the syntax than just the parenthesis. That you write

   (let ((x 4)) (print x))
instead of

   (let x 4 (print x))
is part of it. So is the order of arguments.


Sure, those are all parts of the syntax of a language, but I still maintain that CL's syntax is simpler and more regular than that of Ruby and vastly simpler than that of Java.

As an aside, the first form of the example you gave is what most Lisps use. CL, Scheme, Emacs and Goo all use this. The second, as far as I know is only used by Arc, which has a more complicated syntax than most Lisps.




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

Search: