Simon Peyton Jones先生からのお返事全文

**Simon Peyton Jones 先生からのお返事全文**
Simon Peyton Jones 先生はSPJとも呼ばれています。
[詳しくはこちらで](https://en.wikipedia.org/wiki/Simon_Peyton_Jone)
GHCのリードディベロッパーであり、Haskellの最大の貢献者の一人。
先生からのお答えに関しては、青色で表示しております。

<font color=orange>**Simon Peyton Jones先生のお返事全文**</font>
---

<font color=blue>
Hi Masako
It sounds like a great initiative -- well done!
You should definitely get input from other folk who are closer to the "real world" than me -- 
people who use Haskell in their day jobs.  
E.g. see the job adverts on the Haskell Weekly News,
the folk at FP Complete, Galois, Well Typed etc. Of speakers at the Haskell Exchange https://skillsmatter.com/conferences/8522-haskell-exchange-2017
To your questions</font>
返事1
---
1\. Do you think Haskell is underrated as an industrial, professional
programming language by IT project managers?
<font color=blue>
Yes. But it's not surprising that it's under-rated.
It's very different to other (imperative) mainstream programming languages.
</font>
返事2
---
2\.Do you think that the adoption rate of Haskell in industry will
  grow over time? If so, in what area will Haskell be used more
frequently?

<font color=blue>Yes. We can see that happening already. Eg I enjoyed this post
http://www.stephendiehl.com/posts/haskell_2018.html
which cites 14,000 new Haskell projects on Github in 2017.
I don't know about area:
Haskell is a general-purpose programming language so it's really good for anything!  
That's a strength -- 
but it means that Haskell doesn't have a "killer-app" niche where it dominates.
Yes. We can see that happening already. 
Eg I enjoyed this post
http://www.stephendiehl.com/posts/haskell_2018.html
which cites 14,000 new Haskell projects on Github in 2017.
I don't know about area:
 Haskell is a general-purpose programming language so it's really good for anything!  That's a strength -- 
but it means that Haskell doesn't have a "killer-app" niche where it dominates.</font>
返事3
---
3\. What are the strengths of Haskell that could help us to convince IT
managers to consider choosing Haskell when:
 - starting up a new project?
 - revisiting an existing project?

<font color=blue>There are the usual things:
productivity, conciseness, parallelism, control of side effects.
But I'll highlight /maintainability/.  
Most developers spend most of their lives modifying and refactoring existing code.  
It's a constant source of wonder to me that
it's even /possible/ to make large-scale changes to a 20-yr-old Ruby or Python code base. 
It's so /hard/ to refactor an untyped program written by someone else.
What are the consequences of changing this or that?
A highly-expressive static type system
like Haskell's gives you confidence to undertake ambitious refactorings with confidence.
I have personal experience of this.
GHC's code base is over 150k lines of Haskell and is 25 years old.
(This is a small code base by commercial standards, but it's plenty big enough to make my brain hurt.)
Yet I regularly make very substantial changes, guided by the type checker.
This is huge. I strongly suspect that large commercial code bases just get stuck, 
in a state where no one is brave enough to modify old code
(TDD or no TDD) because they are not confident that they won't introduce subtle bugs.</font>

返事4
---

4\.What would be the factors that may be discouraging project managersfrom adopting Haskell?

<font color=blue>
I think the biggest thing is simply cultural ecosystem. 
No one fires you for choosing Python
because there are zillions of Python books, Python libraries, Python programmers, ... 
a huge cultural ecosystem.
You feel safe.  Haskell has a pretty rich and dynamic ecosystem
but it is /smaller/, so the choice feels "braver" and managers don't like feeling brave.
Performance used to be a factor 15 years ago,
but I think it's really not now.
But there may still be a /perception/ that perf is a problem.</font>
返事5
---
5\.Do you think that adopting Haskell in wider scale in industry will
be a good thing?  Will it contribute to enhanced general human
productivity and to a better world?


<font color=blue>
Yes. I often put it like this: 
when the limestone of imperative programming has worn away,
the granite of functional programming will be revealed underneath.
There's something fundamental about functional programming that means,
I believe, that over time we will come to recognise 
that it is the right baseline, the right staring point.
Note: I say "functional programming" not "Haskell".
Haskell is the most pure example of the functional approach to programming,
but it's the approach not the language that's fundamental.
Of course I hope (and believe) that Haskell will continue to be influential,
and I think its wider use would indeed be beneficial.
Also I say "the right starting point" not "the right destination".
We need humility.  I think the basic fabric of computation should be functional, but we need side effects. 
Monads etc are Haskell's answer to that, 
but they aren't the last word.
E.g. there's interesting work going on in so-called "algebraic effects".</font>
最後の返事
---
Finally, is it acceptable to include your name and your words in our article
that will be viewable publicly online?

<font color=blue>
Yes,ok
Simon</font>

感想
---
Simon先生は、実は1番早くお返事を頂きました。
その中で何度かやりとりをしこのような形でまとめて頂きました。
お忙しい中本当にたくさんのHaskellの思いや
詳細を答えてくださり大変感謝しております。