python-プログラムパラダイム
ビヤーネ・ストロヴストルック
世の中には2種類の言語しかない。一つはみんなが文句ばかり言い、もう一つは誰も見向きもしない言語さ。
プログラミングパラダイム
プログラミングのスタイル・手法のこと
pyhonでは
手続き型、オブジェクト指向型、関数型を同時に扱える
手続き型プログラミング-1
連続した手続きをこなし、途中途中でプログラムのステートを変えながら、すこしずつ欲しい答に近づく
小さいプログラムには向いている。グローバル変数に過度に依存したプログラムは予期しないエラーが起こりやす
プログラムが大きくなると、あちこちの関数でグローバルステートを読み書きするようになり、どこで何を参照しているのか、書き換えているのかを把握できなくなります。
手続き型プログラミング-2
コードがグローバル変数の状態を変えるという副作用の上で成り立っている手法です。
手続き型でプログラムを書くと、間違って値のインクリメンタルを2回実行してしまうような、意図しない副作用にたびたび出くわす。
関数型プログラミング
起源は、数学者アロンソ・チャーチによって作られた、ラムダ計算です。関数とそれに渡す引数だけで構成される。関数型プログラミングは、グローバルステートを排除すつことで手続きプログラミングの問題を解決しました。
欠点は、ステートを持たせた方が解決しやすい問題を扱いづらいということです。
オブジェクト指向プログラミング
関数型プログラムのように関数の引数に状態を渡す(関数に状態を持たせる)のではなく、オブジェクトに状態を持たせます。
複数のクラスで相互に作用するオブジェクトの集合を定義します。クラスは表現したいオブジェクトを定義・分類するプログラムの仕組みです。
バックにオレンジがいくつも入っている状況を例にすると。どのオレンジもそれれぞれがオブジェクトです。どのオレンジにも色や重さといった属性情報があります。どのオレンジにも、色や重さといった共通の属性情報があります。
クラスを使ってオレンジにどんな特徴(属性)があるのかを定義します。クラスから個々のオレンジオブジェクトを異なる属性値で作成します。