|
I think that saying you can 'learn Haskell in a week' is really short sighted. You can learn to parse a Haskell program and write a guess-the-number program in a week, but learning how to write good Haskell is going to take months, if not years, especially if you want to do fancy things. Hell, I'd guess it'd take me a month or two just to learn the ins and outs of the lens library and I'm already a good Haskell programmer. > 1) What would give greater and longer-term benefits than that? Learning Reactive Extensions? Yet another ORM framework? Node.js? Those are only tools. One can learn them in some days when a project requires it. I think that unless something is completely and utterly trivial, you can't really learn it in 'some days'. You can get enough of an understanding of it to solve a small-medium problem with it, but you can't actually learn it. If you want to learn something really weird, try playing with higher-order polymorphism, type theory, dependent types, or something that's not 'yet another OO language/framework'. > 2) What is the rush for? Do you remember the time you learnt OO programming? I would say to learn it properly, in the beginning of your career as most of us do it, required much more effort than to learn Haskell and FP when you are already an experienced programmer. Not for me. Really learning Haskell as an experienced programmer took as long as it took to learn Python as a novice, and I've heard similar reports from other people. I certainly agree that if you know, say, Java, learning C# probably isn't going to maximize your 'skill increase per time'. But saying that going from Java to Haskell, or even farther to something super-weird like Agda or Forth or Prolog, is just as easy as going from Java to C# is just wrong. Personally, the reason I'm sticking with Haskell as my current thing-to-learn as opposed to jumping to other things is that I've hit that point in the curve where the language is really opening up to me; I had a small problem recently that I wanted to solve, and I was able to use some really cool techniques that don't really have simple equivalences in other languages (the pipes library, if you're curious) to solve it in a nice way. |
That was exactly my point, sorry if it wasn't clear.
> Really learning Haskell as an experienced programmer took as long as it took to learn Python as a novice, and I've heard similar reports from other people. I certainly agree that if you know, say, Java, learning C# probably isn't going to maximize your 'skill increase per time'. But saying that going from Java to Haskell, or even farther to something super-weird like Agda or Forth or Prolog, is just as easy as going from Java to C# is just wrong.
I am not saying that the "Java after C#" learning curve is the same as "Haskell after C#". It isn't. But I believe that the general experience of abstract thinking that one learns in many years must give an advantage over a novice learner. I am not talking about a script-kiddie who spent five years hacking code, or somebody who has the same one year experience 20 times instead of real 20 year experience. I believe that if you spent your development life actively then you must get a new concept easier than a beginner. And not only that. Concepts of a paradigm or language leak into others. Linq in .Net leverages "monads". Eric Meijer, one of the creators of Linq, loves Haskell and they borrowed ideas from Haskell. Now, if one is a "too pragmatic" programmer, they can use Linq for years successfully and never get closer to understand monads. However is one takes the time and looks behind the curtains, they got closer to understand at least this one concept of Haskell. And I am pretty sure that over let's say 10 years you are exposed to many ideas in some way if you keep your eyes open.
As I said, my gut feeling (can't tell how good the estimation is) is that in about six months I "get Haskell and fp". But it's not black or white: obviously spending 6 more years in the fp world would make a difference. There must be a decision made (and here I agree with gfodor) when the further gain doesn't justify the investment. I won't stop at 6th month if I don't feel the power yet :)