45 lines
2.1 KiB
Markdown
45 lines
2.1 KiB
Markdown
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.
|
|
|
|
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:
|
|
|
|
* 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.
|