プログラミングのパラダイム

パラダイムとは、スタイル、方法、考え方のこと。

 

プログラミングのパラダイムは大きく3つ。

①手続き型プログラミング
関数型プログラミング
オブジェクト指向プログラミング

 

パラダイムの大きな違いは状態(ステート)の持ち方の違い。
ここでの状態とは、変数の値のこと。

 

①手続き型プログラミング
・状態を常にグローバル変数として持つ。
・どこからでも状態(ステート)を書き換えられるので、予期しないエラーが起こりやすいのがリスク。


関数型プログラミング
・ラムダ計算が起源。

・関数に状態を持たせる(引数に状態を渡し、その戻り値を次の関数等の引数に渡す)。
グローバル変数を排除することで、手続き型プログラミングの問題点を解決。

関数型プログラミングには、副作用(コードがグローバル変数の状態を変えること)がないという重要な特徴があります。現在の関数外のデータに依存しませんし、現在の関数外に存在するデータは変更されません。」
メアリー・ローズ・クック

・しかし、関数外のデータを引数に処理をすれば、副作用はそのまま発生します。

 

オブジェクト指向プログラミング
関数型プログラミングのように引数に状態を渡す(関数に状態を持たせる)のではなく、オブジェクトに状態を持たせる。
・オブジェクトとは、クラスのインスタンス
・つまり、データ型はそのクラス型。

・メリットは、コードの再利用が促進されることで、開発、保守にかかる合計時間が短縮されること。
・一方で、デメリットは、プログラムを書く前の計画や設計により多くの時間を費やさなければならないこと。

・メリットとデメリットのトレードオフを考える必要がある。

 

Javaは3つのパラダイムを同時に扱うことが可能。

 

参考

https://www.amazon.co.jp/%E7%8B%AC%E5%AD%A6%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC-Python%E8%A8%80%E8%AA%9E%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%8B%E3%82%89%E4%BB%95%E4%BA%8B%E3%81%AE%E3%82%84%E3%82%8A%E6%96%B9%E3%81%BE%E3%81%A7-%E3%82%B3%E3%83%BC%E3%83%AA%E3%83%BC%E3%83%BB%E3%82%A2%E3%83%AB%E3%82%BD%E3%83%95/dp/4822292274/ref=mp_s_a_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&qid=1537693384&sr=8-1&pi=AC_SX236_SY340_QL65&keywords=%E7%8B%AC%E5%AD%A6+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC