関数型言語の普及について
趣味でプログラミングを勉強しているものです。今までにJavaやRuby等、オブジェクト指向言語を中心に勉強してきました。
今日、あるきっかけで関数型言語のHaskellを勉強し始めました。
そして、実際にプログラミングをしてみたり、関数型言語について調べてみると、まだ大きなアプリは書けないものの、今までのやり方(手続き指向、オブジェクト指向)が不要なのではないかと危惧する程の斬新さ、強力さが感じられました。
しかし、そんな関数型言語も未だに普及しているとは到底言えません。Haskellは関数型言語の中でも新しいもののようですが、それでもJava、Rubyよりも昔に発表されている言語です。
どうしてHaskell等の関数型言語は主流になっていないのか、関数型言語が従来の言語に劣っている点を中心に、皆さんの意見を聞かせてください。
No.3ベストアンサー
- 回答日時:
難しいからではないでしょうか?
簡単で性能(パフォーマンス、保守性)が良ければ普及すると思います。開発に求められているのは、安定性、保守性、開発スピードなどだと思いますので、これらに対し効率が良ければ使用されるはずです。
ドキュメントやライブラリは後で充実させていけば良いのです。ある一定の水準に達すれば、実用になると思います。
あとは、資産も重要で、過去に作ったアプリやライブラリがCならC/C++で作るのが良いでしょう。
また、資産という意味では、手続き型の考え方がインプットされているという点も重要だと思います。
但し、開発にリソースを避けられるなど、必ずしも過去にこだわる必要がない場合もありますので、その場合は重要でないかもしれません。
例えば、趣味でフリーソフトを作るという場合は、必ずしも資産が重要でないと思います。
最近は関数型言語が注目されて、書籍やウェブの情報が充実してきているので、徐々に普及すると思いますが、C/C++やPythonレベルには行かないと思います。
また、C++は真面目に考えれば難しいですが、難しいことをしなければ簡単です。
関数型言語が強力と言っても、性能を引き出すのは難しいと思います。Ruby、Python、C#でもある程度関数型言語の機能を取り入れているため、Haskellで書くメリットはなかなか出てこないと思われます。
良いプログラミングをするには、単に書ければ良いのではなく、言語を知り尽くして初めて出来るものだと思います。
No.4
- 回答日時:
適用領域が狭いからではないでしょうか?
C/C++が普及している = 適用領域が広い
Haskellが普及していない = 適用領域が狭い
言語はそれぞれ得意分野を持ちます。不得意分野に対して、その言語で開発しないでしょう。Haskellが得意な分野というのは極端に狭いと思います。
No.2
- 回答日時:
個人的な意見でいいんですか?
1:静的型付けはメンド臭い。
Rubyと敢えて比較すると、単に動的型付けの方がプログラミングがラクだから。
2:スピードが遅い。
まあ、これは良く言われていますね。
3:副作用だらけでも困るけど、副作用が全くない、ってのも困る。
しかもモナドはややこしい。イスラエルの諜報機関もビックリです。
4:プログラマは理系のフリをしてるけど、実際は数学が嫌い。
......。
参考までに。
静的型付けはJavaやC++等、むしろ主流なのではないでしょうか?
スピードが遅いというのは知りませんでした。参照透過性によって最適化がしやすいとか
書いてあるのも見かけたのですが、Cより速くなることはあまりないみたいですね。
副作用については確かにそうですね。たかがIOにモナドという仕組みが必要なのは確かに
入門者には難しいです。
プログラマは数学が嫌い、はちょっと同意するところがあります(笑)
No.1
- 回答日時:
ある意味、いままでの手続き型やオブジェクト指向で今現在は間に合っているからではないでしょうかね。
実際の業務で使用するプログラムとなると、やはり信頼性、安定性などがもとめられますし。実際中身が優れているとしても、今まで使用している言語で、ある程度の水準のものが作成できるなら、無理に変化をもとめて新しい言語を使おうとは思わないからではないでしょうか。
あとは言語の普及には、単にその言語が優れているだけではなく、ドキュメントが整備されていたり、ライブラリが充実していたりなど、色々な要因が関係していますし。
早速の回答有り難うございます。
> 手続き型やオブジェクト指向で今現在は間に合っているから
Haskellが新しい言語であれば僕もそう思います。
しかし、Haskellはかなり昔からある言語ですし、関数型の概念はさらにその昔からあるようです。やはり関数型に明白な欠点(関数型の考え方が人の思考に合わなしていたり等)があるから、普及していないのだと思えるのです。
> ドキュメントが整備されていたり、ライブラリが充実していたりなど
確かにそうですね。しかし、僕の好きなRubyという言語は後発ということもあり、10年ほど前はかなりドキュメント、ライブラリ共に貧弱だったようです。それが今では少しずつ大きくなってきたコミュニティによって整備されてきたために、使いやすくなっています。
なので、もし良い言語であればライブラリもドキュメントもおのずと整備されていくのだと思っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学受験 数学が苦手で社会が得意な場合は一橋よりも東大の方が受かりやすい、ということはあり得ますか? 3 2022/04/16 16:46
- 高校 テスト勉強について 中間テストの結果がかえってきたのですがあまりよくありませんでした。 現代の国語と 2 2023/06/05 00:46
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- 日本語 日本語の適切な文法、使い方に詳しい方に教えていただきたいです。 2 2022/10/13 15:21
- 英語 語句節などの言葉の単位のことを、英語でなんと言いますか。 また、文の要素はElements of a 4 2023/06/26 14:38
- Java オブジェクト指向プログラミングの実践本を紹介してください 3 2022/09/19 04:56
- その他(言語学・言語) 24歳女です。私は言語が好きで、英語・韓国語は話せて今中国語を勉強中です。後にスペイン語や手話(si 4 2022/12/24 22:11
- 子育て 一歳半検診 6 2023/03/25 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
楽しくて最高のプログラミング...
-
C言語、C+、C++、C#の違い
-
VBSでDim、Private、Publicの違い
-
COBOLでのNOT = の AND条件
-
プログラムに書かれる"%"記号の...
-
C++ ってなんて読む?
-
Int('1234') で、strをかんたん...
-
COBOLで文字タイプを数字...
-
プログラムからアイコンファイ...
-
プログラミング言語の制作方法...
-
HTTPで .do という拡張子を見つ...
-
UNITY Float型の接尾辞fって
-
C++における継続行
-
Pythonって何を意識した言語な...
-
パスカルケースの由来。
-
C言語とhtmlの違いを どな...
-
最新のプログラム言語を学ぶに...
-
階乗の記号 ^
-
rpa化する言語としてら何があり...
-
質問失礼します。 プログラム言...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語、C+、C++、C#の違い
-
質問失礼します。 プログラム言...
-
最新のプログラム言語を学ぶに...
-
COBOLでのNOT = の AND条件
-
C言語って古いですか?
-
rpa化する言語としてら何があり...
-
UNITY Float型の接尾辞fって
-
TO_CHARで小数点以下がある場合...
-
プログラミング言語の制作方法...
-
COBOLで文字タイプを数字...
-
プログラムに書かれる"%"記号の...
-
C言語とhtmlの違いを どな...
-
Int('1234') で、strをかんたん...
-
C++ ってなんて読む?
-
Excel VBAで文字化けする (英語...
-
C言語 解答について。
-
VBSでDim、Private、Publicの違い
-
Excelの開発言語ってなんですか?
-
C# でソフト開発をした事のある...
-
C#とC++のざっくりとした違いを...
おすすめ情報