- ベストアンサー
関数型プログラミングの利点は何ですか?
よく「副作用がない」ということが関数型プログラミングのメリットとして挙げられます。 しかし、手続き型プログラミングにおいても、副作用をもたらすモジュール設計は推奨されないと思います。 具体的に何がいいのかわかりません。
- mimimirror
- お礼率95% (21/22)
- その他(プログラミング・開発)
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1 ですが、あなたの補足について言わせてください。 >他の言語の流儀だけを不利な前提で貶めて、それを関数型言語の利点たらしめるという理屈を私は認めることができません。 私自身はそのようなつもりで回答したのではありません。 私は、「よく『副作用がない』ということが関数型プログラミングのメリットとして挙げられ」ることに対して、なぜそれがメリットとされるかという点を答えたつもりでした。 ただ、それが相対的にほかのパラダイムのプログラミング手法を貶めるような書き方になってしまったことは少々反省しております。 また、私は副作用がないことは関数型プログラミングの「メリット」ではなくメリットもデメリットもある「特徴」と考えております。 > というか、大抵のプログラミング言語では、柔軟性を持たせるという意味で非推奨な処理の記述を許しているのが一般的なのではないでしょうか。 > そして、非推奨な記述がなされることを前提にすれば、どんな言語でもメチャクチャになるのは至極当然です。 こちらは全くその通りだと考えます。 ただし、ある記述が禁止されているか非推奨か何でもないかは言語によって変わっております。 それゆえ、ある言語でコーディングするからにはその言語のパラダイムにあったコーディングをすべきであると私は考えます。 今回の場合は、関数型言語では副作用がない以上それを受け入れるべきであり、手続き型言語では副作用がありうる以上それを意識したコーディングをすべきでしょう。
その他の回答 (1)
- hitomura
- ベストアンサー率48% (325/664)
あなたの質問にその答が隠れています。 > 手続き型プログラミングにおいても、副作用をもたらすモジュール設計は推奨されない の「推奨されない」の一文が問題で、副作用がないように設計・コーディングすると決めたとしてもそれを簡単に破ることができます。これは意図的なものとも限らず、またチームで開発し互いにソースレビューを行うとしてもレビューでの見逃しは起こりえます。 したがって、言語仕様として > 「副作用がない」ということ を保障/強制されることが > 関数型プログラミングのメリット の一つとなります。
補足
手続き型言語で一般に推奨されないコーディングをなされることがあるのは確かです。 しかし、それは関数型言語でも同様でしょう。 というか、大抵のプログラミング言語では、柔軟性を持たせるという意味で非推奨な処理の記述を許しているのが一般的なのではないでしょうか。 そして、非推奨な記述がなされることを前提にすれば、どんな言語でもメチャクチャになるのは至極当然です。 他の言語の流儀だけを不利な前提で貶めて、それを関数型言語の利点たらしめるという理屈を私は認めることができません。
関連するQ&A
- 関数型プログラミングを料理の仕方でたとえてください
関数型プログラミングを料理の仕方でたとえてください。 作る料理はなんでも構いません。 料理の一般的なレシピというのは、手続き型プログラミングで たとえることが可能だと思っています。
- ベストアンサー
- その他(プログラミング・開発)
- オブジェクト指向プログラミング
一般に、オブジェクト指向プログラミングといわれているプログラミングに関してですが、 「関数・手続きを使用するプログラミング」と 「クラスを作成してプログラミング」というのは おおきな違いがあるのでしょうか? (クラスを作成しなくても関数・手続きで、プログラミングすれば 一緒じゃないかなぁと思っていますので・・・。) どなたか、これに関して、お返事をして頂けたら今後いろいろな面でかなり助かります。
- ベストアンサー
- フリーウェア・フリーソフト
- オブジェクト指向プログラミングについて
VisualBasicを対象にしたオブジェクト指向プログラミングに関する参考書、Webサイトなどはないでしょうか。 現在、クラスモジュールなどを多用しオブジェクト指向プログラミングを実践しているつもりですが、あまり勉強したわけではないのでいまいちよくわからないです。 (オブジェクト指向プログラミングのメリットとデメリットなど)
- ベストアンサー
- Visual Basic
- クラスの利点について
手続き志向プログラミングになれてしまって困っています。クラスは関数、構造体とはどう違うのですか。参考書に載っている<クラスを使った例題>を、<関数&構造体>に置き換えたほうが短くなりますし、見やすく感じてしまいます。クラスの良さというものが分かりません。固くなった私の頭を納得させるような説明やその例題(実用的なもの)をお願いします。
- 締切済み
- C・C++・C#
- エクセルの関数はプログラミングの何言語なんですか?
エクセルの関数はプログラミングの何言語なんですか? =sum(b3:b5) 例えばこの場合、sumは関数で(b3:b5)は引数ですか? :コロンはなんですか? =は関数の定義ですか?
- ベストアンサー
- その他(プログラミング・開発)
お礼
関数型言語は特徴的であるというだけで、他と比べて明確なメリットがあるわけではなさそうですね。 まあ、場合によっては強力ということになるのは確かですが。 一部で異様に人気のある言語ですが、私はそこまで魅力を感じません。 関数型言語を盲目的にべた褒めする連中はカルトでしょう。