At Tue, 14 Jul 2009 03:01:44 -0700, Michael Vanier wrote: > Haskell is a wonderful language (my favorite language by far) but it is > pretty difficult for a beginner. In fact, it is pretty difficult for > anyone to learn in my experience, because it has so many advanced > concepts that simply don't exist in other languages, and trying to > absorb them all at once will likely be overwhelming.
I think that all programming languages are hard to learn, because it involves a new way of thinking. It maybe be that Haskell is harder to learn as your *second* language because you have to unlearn things. Especially if your first language was something like C or Python. Additionally, I suspect people forget how hard it was to learn their first language. They get used to the idea that if they know Python, they can learn Ruby with out to much difficulty. But that is only because Python and Ruby share a lot in common. When moving from Python to Haskell, there is simply more to learn (and unlearn). But, if you start by knowing nothing, then it is not clear that you have to learn more to learn Haskell than you would some other language. Also, Haskell may be easier to learn because it's concepts are more 'pricipled' and 'sensible'. Imperative languages tend to allow all sorts of silly errors. For example, letting you use unitialized variables (nearly impossible to do in Haskell). And automatic type casting has burned me so many times. (Especially automatic conversion between floating ponit numbers and integers.) I seldom get off-by-one errors in Haskell, but I do get them in imperative/OOP languages. I suspect that if you don't know any language and want to become a Haskell expert as quickly as possible, then the quickest, straigtest path is to start with Haskell. Also, it depends on what you mean by 'learn' and 'Haskell'. Just as a beginning C++ programmer is not going to learn about templates on day one, a beginner Haskell programmer probably won't be learning type families on day one. Additionally, Haskell includes numerous libraries which are not part of the language itself. Things like parser combinators, pretty printing, applicative functors, etc, are all just libraries. But each of those libraries brings a bunch of new concepts. - jeremy _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe