Haskell
Management

Simon Peyton Jones 先生からのお返事全文(翻訳)

前置き


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


こんにちは、まさこ
素晴らしいイニシアティブを感じます。おつかれさま!
私より、もっと”現実世界”に近いHaskellを業務に使う他の方々にも意見を聞くといいですよ。
例えば、Haskell Weekly Newsの職の募集、FP Complete, Galois, Well Typedの人達や、
Haskell Exchangeの講演者など。あなたの質問ですが...

返事1

  1. Do you think Haskell is underrated as an industrial, professional
programming language by IT project managers?


Haskellは、産業用プログラミング言語として、過小評価されていると思いますか?

Yes. But it's not surprising that it's under-rated.

It's very different to other (imperative) mainstream programming languages.

はいそうです。然しながら、それは驚くことではありません。
他のメインストリームの言語とは大きく違いますから。

返事2

  1. 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?

Haskellの産業界での採用率は、増えていくと思いますか?
どんな分野で、もっと使われていくと思いますか?

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.

はい。今まさにその分野では動きがあります。
例えば2017年、14,000の新しいgithubのプロジェクトが始まりました。
分野については、分かり兼ねますが、Haskellは汎用言語で、どんなことにも
本当に向いているんです!それが強みです。
然し、特殊用途がないことは同時にニッチな”キラーアプリ”がないことも意味します。

返事3

  1. 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?

産業界に、Haskellを実装言語に採用するよう検討してもらうとしたら、
どんな強みを売り込んだら良いと思いますか?

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.)

 大凡の開発者は、人生のほとんどを既存のコードの改変とリファクタに費やします。
 いつも驚くのは、20年もののrubyやpythonのコードベースに
 大きな改変を加えることがそもそも可能であるということです。
 ものすごく大変なことなんです、型のない、他の人が書いたプログラムを
 リファクタするということは。
 あれこれ書き換えると、結果はどうなるか?予測できません。
 Haskellの型システムのような、表現力の強い静的型システムは、野心的な
 リファクタリングを自信をもって行うことを可能にするのです。
 
私はこのことを個人的に経験しています。
 GHCのコードベースは150k行のHaskellで、25年ものです。
(産業界の基準でいうと小さいコードベースですが、
 私の脳を駆使するには十分過ぎるくらい大きいです。)

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.

 しかし、私は日常的にとても大きな変更を加えます。
 型チェッカーが導いてくれるのです。これは壮大なことです。
 私が強く疑っているのは、大きな商用コードベースはただ行き詰まって、
 だれも古いコードを変えようともしなくなるのではないか?ということです。
 分かりにくいバグを紛れ込ませてしまわないか、自信を持てないでしょうから。

返事4

  1. What would be the factors that may be discouraging project managers from adopting Haskell?

産業界がHaskellを避けるとしたら、どんな要因が考えられますか?


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.

 私が思うのは、最大の要因は単に文化的な生態系の問題だということです。
 Pythonをプロジェクトに採用したからといって誰もそのことで責任を問われる
 ことはないでしょう。
 数知れない本、ライブラリ、プログラマ。巨大な生態系です。
 産業界は、安全に感じるでしょう。
 Haskellはとてもリッチで躍動的な生態系を持っていますが、
 Haskellを選ぶのは、Pythonよりは勇気が必要です。
 そして、産業界は、勇気を嫌うのです。
 パフォーマンスは15年前には一つの要因と言えましたが、 
 私はもう問題ではないと考えいます。
 しかし、パフォーマンスが問題であるという認識は、確かにあります。

返事5

  1. 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?

Haskellを産業界で大きなスケールで採用することは、良いことだと
思いますか?そうすることは、人類の生産性と、よりよい世界を作るために、
貢献するでしょうか?

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".

 はい。私はしばしば、こう言います。
 逐次命令的プログラミングという石灰岩が消えいくとき、
 関数プログラミングという花崗岩がその下から現れるだろうと。
 関数プログラミングには、根本的な何かがあります。
 私が信じているのは、いずれ我々はそれこそ正しい出発点だと認識するように
 なるだろう、ということです。
 但し、注意してください。私は関数プログラミングと言っているので、Haskellとは
 言っていません。Haskellはもっとも純粋な関数的アプローチですが、根本的に
 大事なのは、アプローチそのものであって、言語ではありません。
 もちろん私はHaskellが影響力を持ち続けることを望んでいるし信じています。
 そしてもっと広い範囲での利用は、実際に有益だと思います。
 もう一つ、私は、正しい出発点といい、正しい目的地とは言いません。
 謙虚さが必要です。計算の基礎は関数的であるべきだと思いますが、
 私たちには副作用も必要です。
 モナド他はHaskellの答えです。でも、結論ではありません。
 例えば、代数的効果とよばれる興味深い仕事が発展しています。

最後の返事

Finally, is it acceptable to include your name and your words in our article
that will be viewable publicly online?

お名前と、お言葉を私たちの記事に含めてよろしいでしょうか?

Yes, ok
 Simon

はい、大丈夫です。
サイモン

感想

Simon先生は、実は多くの教授や先生の中で1番早くお返事を頂きました。

その中で何度かやりとりをしこのような形でまとめて頂きました。

お忙しい中本当にたくさんのHaskellの思いや
詳細を答えてくださり大変感謝しております。