(View this PageEdit this PageUploads to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide)
[blog] [ML] [todo] [CVS] [bug] [apache log] [swiki log] [statistics] [map] [man] [info] [アンテナ]

副作用

一般には、薬を飲んだりしたときに、悪い影響が起こることを言う。

が、プログラミング言語では、そういうことを指さない。
(ニュアンスは一緒だけど)

Rubyでいうところの後ろに!がつくような処理(関数、モジュール)を
副作用があるという、ようするに破壊的な処理なのだ。

例えば、あるデータをソートする関数があるとするでしょ。C言語とかだと、
qsortなんかがいい例で、結局引数に入れたデータの並びを破壊して
しまうわけ。こういうのを副作用があるという。

副作用のない関数のみで構成したものは、当然、関数の出力のみに
気をつければよい。
じゃあ、C言語とかって思いっきり、副作用ありまくりのことばっかしてる
し、どうなの?と聞かれると、以下だということができるんじゃないかな?
  1. スピードと、メモリの削減など、コストを重視するところでは、あり。だけど、必要以上に使うのは悪。(だって、バグが入りやすくなるでしょ。)
  2. 手続き型言語では、再帰とか、高階関数とかあんまり使うことはない(っていうか、使わないことが多い)ので、気にしない。気にしない。

-----------

ツッコミ大歓迎






-----------

Link to this Page