Learning Haskell makes you a better programmer?
Phil Lavoie
maidenphil at hotmail.com
Wed Dec 26 10:02:41 PST 2012
I have learned Haskell during my bachelor's degree and I cannot
say it has made a big difference for me, although I do understand
why people like the concepts of it. Recently, I was suggested by
a professor to re-learn it. He suggested me so because I was
making a presentation on how to extend the standard library of my
university's pet language NIT, which is pure object oriented.
Apparently, he thought that my additions were influenced by the
functional paradigm.
Therefore, following his suggestion, I re-learned Haskell and
tried to implement my master's project in it, to sort of test it
out.
I was pleased because Haskell:
-Emphasizes more on formalism than actual machine code algorithms
-Abstract much of the machine oriented concepts in the favor of
more mathemathical ones
-The resulting code CAN BE much, much more lightweight
I was displeased because:
-When it comes to IO, you have to work harder, and IO it is for
real world applications
-IO and mutable states also include a whole bunch of complicated
data structures /algorithms which are just a pain to implement in
Haskell compared to machine oriented languages
So I just abandoned the idea (I used complicated data
structures). I think what Bearophile said sums it up the best:
It's really a matter of what is the problem you and how you are
planning to solve it. Sometimes a paradigm fits best, sometimes
its a burden. Sometimes a language is better, sometimes it isn't.
Most of the times, I find extensions of procedural languages to
be the best answers. And this is why I love D. Power,
flexibility, support for A LOT of paradigms with the right amount
of compromises. Describing the language features and comparing it
to others just don't show how great it is. D starts to shine when
you actually program something complicated in it.
Often, when using D, I found myself thinking: "Oh! I can do that,
sweet!", rather than: "Oh! I can't do that, right... So how to I
workaround it...". Some people think that the "working around it"
is the true benefit of functional languages, and there are times
when they are right, and there are times when they aren't.
In conclusion I'd say that yeah, maybe Haskell can make you a
better programmer, but maybe it won't change a thing.
Incorporating many concepts and paradigms and knowing when which
is best, that is the true challenge: not being forced to use one
for everything. So maybe Haskell will help you understand
functional paradigm, and that is what's great about it. But,
IMHO, when you construct a huge software using multiple
inputs/outputs/data structures/arcane algorithms/..., the
functional paradigm might get in your way...
More information about the Digitalmars-d
mailing list