Live data from Hacker News

Learning new languages makes you a master of none?

news.ycombinator.com

1–10 of 18 posts

Re: Learning new languages makes you a master of none?

#2
I try to learn a new language every 2 years and learn the basic principles of at least 3-4 each year. I still have 1 or 2 languages I do almost all my work in, but knowing other languages has made me much better in those 1 or 2. You learn new idioms, new ways of thinking etc.

Most programmers come from an imperative background. Something in the Algol family. Learning a scheme/lisp, a functional language like Haskell, a stack based on like Factor or any of the numerous other types of languages is only going to make you a better programmer.

Think type languages are awful? Maybe its just the type systems you've encountered ( see haskell for a type system that I would call non-broken ).

Think OOP languages are garbage? Maybe encountering something like Self will give you a different view of OO than what you get from C++ or Java. Maybe encountering CLOS will open your eyes to a different way of doing OOP.

Another bonus via anecdote:

I don't use Ruby anymore, but I still follow the community because people are doing interesting things, things I might want to steal an idea from and use in my language(s) of choice.

Re: Learning new languages makes you a master of none?

#3
You don't use the new language exclusivity, it's just an extra tool in your toolbox. You just use it to expand your horizons. Knowing even a little Haskell will show you that a little type inference can go a long way. Or that reasoning about correctness is easier in a purely functional language.

I think the primary advantage of knowing many languages is knowing when you're using the wrong tool for the job.

Re: Learning new languages makes you a master of none?

#4
Nonsense. Learning Python helped my JavaScript and PHP, and learning JavaScript in turn has helped my Python. Learning Erlang has helped both. PHP didn't help anything.

By making you approach the same problems in different ways, new languages make you a more versatile programmer less tied to a particular technology while improving existing skills.

Re: Learning new languages makes you a master of none?

#5
Learning lisp or any other language in which closures are a common idiom should be a prerequisite for building anything of any size out of Javascript. An understanding of closures will aid in a big way in figuring out why your browser rapidly grows to 1 gig when running your applicatiion.

Re: Learning new languages makes you a master of none?

#6
One new language per year is too fast a rate. And it's really about learning new perspectives, not so much about the language themselves.

It would probably make you a better programmer to master all of purely functional programming, syntaxic abstraction, pattern-matching and logical inference, distributed and fault-tolerant computation by message-passing, stack-oriented programming, etc.

It just happens that some languages are predominantly based on each of those principles so the act of learning those languages in depth make you master those useful principles for free.

  Haskell = Purely functional programming
  Lisp = Syntaxic abstraction
  Prolog = Pattern-matching and logical inference
  Erlang = Distributed and fault-tolerant computation by message-passing
  Forth = Stack-oriented programming
(completely unexhaustive list of language/specialty mappings)

Re: Learning new languages makes you a master of none?

#7
I guess to be a master you need to focus a lot, so it takes much hard focused work. The time you spend with other languages could be used to go more deep in at just one. So the point is

HOW FREAKY ARE YOU READY BE TO GET THE POINT OF MASTERING 2 OR MORE LANGUAGES ?

Most part of programmers are good at some languages, but not masters ... being a master of one is difficult, what if master of two or three.

So the answerer is : depends of the freaky behind the try !

Re: Learning new languages makes you a master of none?

#8
There's a difference between learning a language and mastering it.

Every little bit helps. Read one book and you've learned a new point of view. Read that book and build a sample project and you've learned more. To really understand a language or framework requires still more work. To master it might take years.

You should master one or two things (or more, if there are enough hours in the day or if you are superhumanly good at mastering languages). But that doesn't mean that you shouldn't also have lower levels of expertise in a broad range of other subjects. Half the battle in life is knowing what to master at any given moment, and the only way to figure that out is to sample a lot of things.

Re: Learning new languages makes you a master of none?

#9
You're not trying to be the master of a programming language. You're trying to make solutions happen in the best, quickest way possible.

Seriously. I could care less the order of constructor evaluation in a multiple inheritance language. If that becomes a problem, I'll look it up.

This isn't like school where you try to pick one subject and become the complete overlord of it. This is about building a toolbox: learning how different tools work and being able to switch instantly between them when the time is right. The meta knowledge of languages is infinitely more important than the abstract details of a particular one. If you're a good programmer, you'll naturally optimize the code you write.

Thinking about writing a solution in an imperative language is fundamentally different than thinking about one in a functional language. Thinking about a web solution in terms of Javascript/client-side/jsonp is fundamentally different than in terms of client-server, or in terms of post-response. It's the thinking about those problems, before you start hacking, that gets you the most mileage. And the best way to learn how to think using those paradigms is to write solutions using them.

Re: Learning new languages makes you a master of none?

#10
I find learning each new language is easier than the one before it; the concepts of software development are largely the same from language to language and are often transferable from language to language.

Then again, I started out on C, so pretty much everything besides Haskell seems like a piece of cake.

Post reply on HN