snoyman.com-content/posts/haskell-for-dummies.md

46 lines
2.1 KiB
Markdown
Raw Permalink Normal View History

2016-11-22 10:13:24 +00:00
There was an image that made the rounds a while ago.
<img src="/static/haskell-as-seen-by.png" alt="Haskell as seen by other language fans" style="max-width:100%">
The joke being: haha, Haskell is only for super-geniuses like
Einstein. There's lots to complain about in this chart, but I'm going
to pick on the lower-right corner. Specifically:
__Haskellers don't use Haskell because we think we're Einstein. We use
Haskell because we know we aren't.__
When I speak to Haskellers, the general consensus is: "I'm not smart
enough to write robust code in a language like Python." We're not
using Haskell because we're brilliant; we're using Haskell because we
know we need a language that will protect us from ourselves.
2016-11-22 10:49:12 +00:00
That said, I should acknowledge that Haskell does have a steeper
learning curve for most programmers. But this is mostly to do with
unfamiliarity: Haskell is significantly different from languages like
Python, Ruby, and Java, whereas by contrast those languages are all
relatively similar to each
other. [Great](https://haskell-lang.org/documentation)
[educational](http://haskellbook.com/)
[material](https://www.fpcomplete.com/haskell-syllabus) helps with
this.
You should set your expectations appropriately: it will take you
longer to learn Haskell, but it's worth it. Personally, I use Haskell
because:
2016-11-22 10:13:24 +00:00
* It gives me the highest degree of confidence that I'll write my
program correctly, due to its strong, static typing
* It has great support for modern programming techniques, like
functional programming and green-thread-based concurrency
* I can write more maintainable code in it than other languages
* It has a great set of
[libraries](https://haskell-lang.org/libraries) and
[tools](https://haskell-lang.org/get-started)
* It's got great performance characteristics for high-level code, and
allows low-level performance tweaking when needed
I'm certainly leaving off a lot of points here, my goal isn't to be
comprehensive. Instead, I'd like to dispel with this notion of the
Haskeller super-genius. We Haskellers don't believe it. We know why
we're using a language like Haskell: to protect us from ourselves.