他人様のブログを勝手に和訳・"Why I Don’t Care If You Think Functional Programming Matters"

またまた他人様のブログを勝手に和訳するよ


今日はONOR.IO(http://onorioc.wordpress.com/)さんのブログから、2012/02/28のエントリ、
"Why I Don’t Care If You Think Functional Programming Matters"
を和訳するよ!

2012/2/28 あなたが関数型プログラミングを重要だと考えているかどうか僕が気にしない理由

関数型プログラミング権威有名人であるJon Harropが最近、programmers.stackexchange.comのいくつかの質問へのリンクをツイートをしました(これとかこれ)。
少し一般化すると、これらの質問の基本的な要旨は以下の通りです:
「どうして関数型プログラミングを学ばなければならないのですか?」


なるほどもっともな質問です。
僕自身長い間開発者であり、また開発者とともに長い時間を過ごしてきました。
ですので、彼らがどんな事であれ頭から信じたり正当だと思ったりはしないという事をもうずっと前に学んでいます。
さらに僕は「ミズーリデベロッパー」という造語を造りました。
これが何を意味するか分からない人のために説明すると、ミズーリ州には「"Show me"(証拠を出せ)州」という愛称があります。
議論している議題を快適に感じるとき、多くの開発者は"Show me"群衆の中にいるといえます。
言ってしまえば懐疑論者であるといえます。


正直に言ってしまえば、僕は同じような趣旨の質問を聞いてきたので、このような質問にはうんざりしています。
「関数型プログラミングを学べば、クールな最新技術を扱う仕事に就けるでしょうか?」
JAVAがうまくいくか否かという重大な議論があった時を思い出すくらい、僕は長い間ソフトウェアを開発してきました。
MicrosoftVMに関する技術を多く持っているのに(VB6のことか?)SunがVMを構築しようなどとは馬鹿げたことだ、といった記事も思い出します。
同じような質問がJAVAの時にもありました。
「JAVAを学ぶべきでしょうか?」
この質問が言わんとしている事は同じです。
それ以前では、C++を学習することが有益か否かに関するソフトウェア開発の雑誌での議論を読んだことを思い出すことができます。


ある人々はクールな技術を使う仕事を得るために90年代前半にJAVAを習得しましたし、またある人々はしませんでした。


実際のところ、どんな最新の技術であれそれの習得にはある種のリスクを含んでいます。
あなたが学ぶ事でクールな仕事が得られるか否かという基準で新しい技術を学ぶか否か決めかねているのであれば、
喜びも新しい仕事も僕たちにもたらされます。
長年知っていて僕が尊敬して止まない開発者は学ぶ事が大好きな人達です。
彼らは誰かが彼らに新しい技術や考え方を学ぶように命じることなど必要としてはいません。
彼らがそうするのは、彼らがそれをしたいからなのです。
また彼らは、それを学ぶことによってどんなクールで新しい仕事を得られるかなどということは心配しません。
彼らが学ぶのはそれを知りたいからなのです。


今、僕は約2年間、関数型プログラミングで遊んでいます。
90年代前半のCやPascalに長年の経験を積んだ開発者に共感出来ます。
手続き型からオブジェクト指向への時代の流れを目の当たりにしつつも、それに適用するのが難しかった人達です。
オブジェクト指向の採用が開発に大きな変化をもたらしたのと同じように、関数型プログラミングの採用による現実的な変化を見据えています。


今、僕は何人かはこれを読みながら自分自身について考えていると分かっています。
ワオ!彼はピッチャーでKool-Aidを飲んだぞ!*1
僕は、関数型プログラミングは万能薬であるとは思いません。
一方では僕はオブジェクト指向も万能薬だとは思いませんでした。
しかし、世界中のJavaC#プログラマの多くにとっては、オブジェクトのないソフトウェアを想像することができないであろうと思います。
僕はまた、ソフトウェア工学ゼロサム・ゲームとして改善しようとも思いません。
つまり僕は、ソフトウェア工学の1つのエリアが改善されれば別のエリアが必ず苦しむに違いない、などと信じていません。
言語におけるデフォルトの変異性は偶然の複雑さです。
変異性にも一理ありますが、デフォルトであるべきではありません。*2


一方で、あなたが学び考えを広げたいと思うのであれば、僕は喜んで僕が学んできたものを全て共有します。
僕は知的好奇心の強い人とテクノロジーについて話をすることが好きです。
他方で、もしあなたが、関数型プログラミングを学んだ見返りとしてクールな技術を使う仕事がたくさんあると確信出来るまで
関数型プログラミングで遊びたいとは思わないのであれば、
しなくてけっこうです。
僕は構いません。
でも、何故あなたが関数型プログラミングを学ぶ必要があるのか私に質問するのは止めてください。
知的好奇心を持たないのであれば、参加せずに様子を眺めて変化が起こるのをじっと見ていてください。

(修正)

ご指摘ありがとうございます。Jon Harropさんについての記述を修正しました。

まとめ


僕にとっては翻訳が難しかったのですが、内容が素晴らしかったので頑張って翻訳しました。
Kool-Aidという単語が出てきたときはウオオと唸りました。

(追記)
事後承認は取りました。

*1:"Drinking the Kool-Aid"という慣用句 - もりぐち!!!!

*2:ここが何を言っているのかさっぱり分からない