質問: 関数型プログラミング言語について 私はオブジェクト指向からプログラミングを学びました。著名なプログラマが関数型プログラミングは素晴らしいということをブログの記事で取り上げてたのですが、その記事を読んでも、私には何が凄いのか全く伝わってきませんでした。 haskellやscalaといった関数型プログラミング言語が便利ならオブジェクト指向ベースのjavaやphpよりも、もっと普及しているはずなんですが、私の回りでは誰も使ってません。 皆さんの中で、関数型プログラミング言語で開発されている方がいましたらお聞きしたいのですが、普通のwebサービスを作る上で関数型プログラミングを使うメリットは具体的にどんな場面になるんでしょうか?
回答: 実務としてhaskellやscalaを利用した開発経験があるわけではありませんが、仕事として最初に使った言語がlisp系の言語でした。 しかし、最近よく目にする『関数型』という表現をlispという目線から見た時に(lispも関数型ではないという方もいらっしゃいますが) 何か違和感を感じます。 『関数型』という概念(副作用云々) に捉われず、オブジェクト指向とは違うアプローチの仕方があるんだな。というところから入るというのはいかがでしょう。 モダンなオブジェクト指向型言語が、ラムダやgcを今更追加しているのには理由があるのでしょう。 残念なのは、目的を達成するために最適な『実現方法の検討』をせずに、政治的な理由や過去の遺産、個人のスキルにに縛られ、環境や手法、言語が選択される案件がほとんどだということです。(見方によってはそれが最適なのかも知れませんが...) 『関数型』が素晴らしいのではなく、これから普及していくであろう環境において、より適した処理を実装し易い...ということなのではないでしょうか。 『普通のwebサービスを作る上で関数型プログラミングを使うメリットは具体的に...』に対してのアドバイスになっていませんが、何かの参考になればと思いコメントさせていただきました。