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

I think the advice to learn a new language is more incomplete than anything else; it's not learning a new language that's valuable, it's learning new ways to think about problems.

Learning a new language, on its own, isn't very beneficial - learning a new language thats different to the ones you already know is very beneficial. If you primarily work with statically typed languages, try a dynamically typed one (or one with type inference). If you're used to object oriented languages, try a functional language. If you're used to monitor based concurrency, try actor based concurrency. If you're used to imperative programming, try dataflow. If to you macro means the C preprocessor, try a language with lisp-style macros.

Its about the paradigms, core features, abstract concepts - not the languages themselves. If you know C++ and Java, you probably won't get much out of learning C#, aside from different APIs and libraries, but if you instead learn F#, you would get a lot out of the experience of using a completely different paradigm for conceptualizing and reasoning about problems. Thats why I like tinkering with languages that are radically different from the ones I already know.

Of course, this means that when you learn a new language, you have to put a conscious effort into programming in that languages idiomatic fashion. Programming in Haskell as you would program in Java isn't going to teach you anything and will probably only make you frustrated at how hard the language appears to make your life.



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

Search: