









[blog]
[ML]
[todo]
[CVS]
[bug]
[apache log]
[swiki log]
[statistics]
[map]
[man]
[info]
[アンテナ]
副作用
一般には、薬を飲んだりしたときに、悪い影響が起こることを言う。
が、プログラミング言語では、そういうことを指さない。
(ニュアンスは一緒だけど)
Rubyでいうところの後ろに!がつくような処理(関数、モジュール)を
副作用があるという、ようするに破壊的な処理なのだ。
例えば、あるデータをソートする関数があるとするでしょ。C言語とかだと、
qsortなんかがいい例で、結局引数に入れたデータの並びを破壊して
しまうわけ。こういうのを副作用があるという。
副作用のない関数のみで構成したものは、当然、関数の出力のみに
気をつければよい。
じゃあ、C言語とかって思いっきり、副作用ありまくりのことばっかしてる
し、どうなの?と聞かれると、以下だということができるんじゃないかな?
- スピードと、メモリの削減など、コストを重視するところでは、あり。だけど、必要以上に使うのは悪。(だって、バグが入りやすくなるでしょ。)
- 手続き型言語では、再帰とか、高階関数とかあんまり使うことはない(っていうか、使わないことが多い)ので、気にしない。気にしない。
- と書きましたが、やっぱり、意識することは大事ですし、副作用は、バグの混入を招くので、やっぱり自分でコントロールして使うべきでしょう。

ツッコミ大歓迎

Link to this Page