プロが教えるわが家の防犯対策術!

関数型言語の普及について

趣味でプログラミングを勉強しているものです。今までにJavaやRuby等、オブジェクト指向言語を中心に勉強してきました。

今日、あるきっかけで関数型言語のHaskellを勉強し始めました。
そして、実際にプログラミングをしてみたり、関数型言語について調べてみると、まだ大きなアプリは書けないものの、今までのやり方(手続き指向、オブジェクト指向)が不要なのではないかと危惧する程の斬新さ、強力さが感じられました。

しかし、そんな関数型言語も未だに普及しているとは到底言えません。Haskellは関数型言語の中でも新しいもののようですが、それでもJava、Rubyよりも昔に発表されている言語です。

どうしてHaskell等の関数型言語は主流になっていないのか、関数型言語が従来の言語に劣っている点を中心に、皆さんの意見を聞かせてください。

A 回答 (4件)

難しいからではないでしょうか?



簡単で性能(パフォーマンス、保守性)が良ければ普及すると思います。開発に求められているのは、安定性、保守性、開発スピードなどだと思いますので、これらに対し効率が良ければ使用されるはずです。

ドキュメントやライブラリは後で充実させていけば良いのです。ある一定の水準に達すれば、実用になると思います。

あとは、資産も重要で、過去に作ったアプリやライブラリがCならC/C++で作るのが良いでしょう。
また、資産という意味では、手続き型の考え方がインプットされているという点も重要だと思います。
但し、開発にリソースを避けられるなど、必ずしも過去にこだわる必要がない場合もありますので、その場合は重要でないかもしれません。
例えば、趣味でフリーソフトを作るという場合は、必ずしも資産が重要でないと思います。

最近は関数型言語が注目されて、書籍やウェブの情報が充実してきているので、徐々に普及すると思いますが、C/C++やPythonレベルには行かないと思います。

また、C++は真面目に考えれば難しいですが、難しいことをしなければ簡単です。

関数型言語が強力と言っても、性能を引き出すのは難しいと思います。Ruby、Python、C#でもある程度関数型言語の機能を取り入れているため、Haskellで書くメリットはなかなか出てこないと思われます。

良いプログラミングをするには、単に書ければ良いのではなく、言語を知り尽くして初めて出来るものだと思います。
    • good
    • 0

適用領域が狭いからではないでしょうか?



C/C++が普及している = 適用領域が広い

Haskellが普及していない = 適用領域が狭い

言語はそれぞれ得意分野を持ちます。不得意分野に対して、その言語で開発しないでしょう。Haskellが得意な分野というのは極端に狭いと思います。
    • good
    • 0

個人的な意見でいいんですか?



1:静的型付けはメンド臭い。

Rubyと敢えて比較すると、単に動的型付けの方がプログラミングがラクだから。

2:スピードが遅い。

まあ、これは良く言われていますね。

3:副作用だらけでも困るけど、副作用が全くない、ってのも困る。

しかもモナドはややこしい。イスラエルの諜報機関もビックリです。

4:プログラマは理系のフリをしてるけど、実際は数学が嫌い。

......。


参考までに。
    • good
    • 0
この回答へのお礼

静的型付けはJavaやC++等、むしろ主流なのではないでしょうか?

スピードが遅いというのは知りませんでした。参照透過性によって最適化がしやすいとか
書いてあるのも見かけたのですが、Cより速くなることはあまりないみたいですね。

副作用については確かにそうですね。たかがIOにモナドという仕組みが必要なのは確かに
入門者には難しいです。

プログラマは数学が嫌い、はちょっと同意するところがあります(笑)

お礼日時:2010/05/18 20:04

ある意味、いままでの手続き型やオブジェクト指向で今現在は間に合っているからではないでしょうかね。

実際の業務で使用するプログラムとなると、やはり信頼性、安定性などがもとめられますし。
実際中身が優れているとしても、今まで使用している言語で、ある程度の水準のものが作成できるなら、無理に変化をもとめて新しい言語を使おうとは思わないからではないでしょうか。

あとは言語の普及には、単にその言語が優れているだけではなく、ドキュメントが整備されていたり、ライブラリが充実していたりなど、色々な要因が関係していますし。
    • good
    • 0
この回答へのお礼

早速の回答有り難うございます。

> 手続き型やオブジェクト指向で今現在は間に合っているから
Haskellが新しい言語であれば僕もそう思います。
しかし、Haskellはかなり昔からある言語ですし、関数型の概念はさらにその昔からあるようです。やはり関数型に明白な欠点(関数型の考え方が人の思考に合わなしていたり等)があるから、普及していないのだと思えるのです。

> ドキュメントが整備されていたり、ライブラリが充実していたりなど
確かにそうですね。しかし、僕の好きなRubyという言語は後発ということもあり、10年ほど前はかなりドキュメント、ライブラリ共に貧弱だったようです。それが今では少しずつ大きくなってきたコミュニティによって整備されてきたために、使いやすくなっています。
なので、もし良い言語であればライブラリもドキュメントもおのずと整備されていくのだと思っています。

お礼日時:2010/05/16 00:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!