差分

ナビゲーションに移動 検索に移動

関数

2,384 バイト追加, 2013年10月28日 (月) 15:11
ページの作成:「'''関数'''(英語:function)とは、ある変数に対して一定の答えを返す計算式のことである。 == 概要 == プログラミング言語...」
'''関数'''(英語:function)とは、ある変数に対して一定の答えを返す計算式のことである。

== 概要 ==
[[プログラミング言語]]の世界でいう「関数」とは、[[引数]]だけが外部を知り得る唯一の手段であり、[[戻り値]]だけが外部に情報を伝えれる唯一の手段である[[サブルーチン]]のことである。

関数とは本来は算数で登場する概念であるが、[[コンピューター]]はあくまで[[計算機]]であり、[[テキスト]]も[[CG]]も[[音声]]も[[コンピューター]]の内部では数字と計算で成り立っているので「関数」の概念がピッタリ適合するという。

なお、[[C言語]]などの日本語の教科書では[[サブルーチン]]を指して「関数」という単語が使われる風兆があるが、これらは[[引数]]のみならず[[大域変数]]などの外部の影響を受ける「[[サブルーチン]]」であって「関数」ではない。最近ではこの悪しき風潮も若干改善され、方法論を意味する「[[メソッド]]」という呼び方も定着しつつある。

ちなみに[[C言語]]などでも上記の関数の条件を意識して[[ソースコード]]を書けば関数になる。さらに[[プログラマー]]に対して無条件で上記の関数の条件を強制する[[プログラミング言語]]を[[純粋関数型プログラミング言語]]などと呼ぶ。

== 利点 ==
関数は入力と出力がすべてであり、それ以外の変数の影響を受けないので[[単体テスト]]が桁違いに作りやすい。

関数は入力と出力がすべてであり、その部分の差し替えが容易である。

関数は入力と出力がすべてであり、関数の内部は第三者の影響を受けないので[[並列化]]しやすい。

== 欠点 ==
関数ガチガチにするとキッチリカッチリと[[プログラミング]]していないとピクリとも動かないことが多い。
よって、とりあえず動くレベルのものを即席で作って、速攻で逃げるという逃げ道がない。
いわゆる[[Write once, run away]]には向かない。

== 関連項目 ==
* [[関数型プログラミング言語]]
** [[純粋関数型プログラミング言語]]

== 参考文献 ==
{{reflist}}

{{stub}}
匿名利用者

案内メニュー