「関数型プログラミング」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator (ページの作成:「関数型プログラミングとは、手続き型プログラミングの記述方法をベースに、以下のコーディング規約で記述することをいう...」) |
imported>Administrator |
||
1行目: | 1行目: | ||
− | + | '''関数型プログラミング'''とは、[[手続き型プログラミング]]の記述方法をベースに、以下の[[コーディング規約]]で記述することをいう。 | |
− | * | + | * [[手続き型プログラミング言語]]であれば「[[グローバル変数]]は使わない」 |
− | * | + | * [[オブジェクト指向プログラミング言語]]であれば「[[スタティック変数]]は使わない」 |
− | * | + | * [[オブジェクト指向プログラミング言語]]であれば「[[スタティック関数]]だけを使う」 |
− | * | + | * 「[[関数ポインタ]]を使いまくる」 |
「[[グローバル変数]]を使わない」と「[[スタティック変数]]を使わない」というのは同じ意味である。つまり「[[関数]]と外部との[[データ]]のやりとりは[[引数]]だけ」という意味である。実のところ[[コボラー]]が好んで使った記法である。 | 「[[グローバル変数]]を使わない」と「[[スタティック変数]]を使わない」というのは同じ意味である。つまり「[[関数]]と外部との[[データ]]のやりとりは[[引数]]だけ」という意味である。実のところ[[コボラー]]が好んで使った記法である。 | ||
2018年8月23日 (木) 07:39時点における最新版
関数型プログラミングとは、手続き型プログラミングの記述方法をベースに、以下のコーディング規約で記述することをいう。
- 手続き型プログラミング言語であれば「グローバル変数は使わない」
- オブジェクト指向プログラミング言語であれば「スタティック変数は使わない」
- オブジェクト指向プログラミング言語であれば「スタティック関数だけを使う」
- 「関数ポインタを使いまくる」
「グローバル変数を使わない」と「スタティック変数を使わない」というのは同じ意味である。つまり「関数と外部とのデータのやりとりは引数だけ」という意味である。実のところコボラーが好んで使った記法である。
「スタティック関数だけを使う」というのはスタティックおじさんの主張に近い。
「関数ポインタを使いまくる」というのはいわゆる高階関数を再現するために使われる。大雑把にいえば関数の引数に関数ポインタを渡すような感じである。
これらのコーディング規約をプログラミング言語の仕様として取り入れ、半ば強制するものを「関数型プログラミング言語」という。
関数型プログラミングは2010年ごろよりJavaScript界隈で爆発的に流行した。この記法はprototype.jsやjqueryの登場が起点となり、さらにはブラウザ戦争でGoogleなどがJavaScriptの実行性能を宣伝しまくり、JavaScriptに注目が集まったことも重なり、さらにはさらにはNode.jsの登場など、次々とその頭角を現した。そして、そもそも関数型プログラミング言語として生まれたものではないJavaScriptであったが、このように書けば「結構イケてるぜ」という風潮ができあがり、この記法をしやすいようC#などは言語拡張をするに至った。