[Haskell-cafe] RE: Haskell as a first language?
jeremy at n-heptane.com
Tue Jul 14 13:15:25 EDT 2009
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.
More information about the Haskell-Cafe