lvncerpedia

プログラミングパラダイム 全体マップ

プログラミングパラダイム
├── 命令型 (Imperative)
│   ├── 手続き型 (Procedural)
│   └── オブジェクト指向 (OOP)
└── 宣言型 (Declarative)
    ├── 関数型 (Functional)
    ├── 論理型 (Logic)
    └── リアクティブ (Reactive)

各パラダイム早見表

パラダイム核心思想代表言語一言
手続き型上から順に処理C, Pascal料理レシピ
OOPモノ中心に設計Java, Ruby役割分担
関数型関数の組み合わせHaskell, Elixir数学的
論理型事実とルールを宣言Prolog推論エンジン
リアクティブデータの流れで設計RxJSパイプライン

各パラダイムの詳細

手続き型

「どうやるか」を順番に書く

x = 1
x = x + 1
print(x)  → 2

一番直感的。最初に学ぶやつ。

オブジェクト指向

「モノ」に責務を持たせる

class Dog
  def bark → "わんわん"
end

犬.吠える()

Rails がまさにこれの塊。

関数型

「状態を変えない」「副作用を排除」

f(x) = x + 1
g(x) = x * 2

g(f(1)) → 4  // 合成するだけ

副作用ゼロが理想。React Hooksの思想もここから来てる。

論理型

「事実とルール」を宣言して推論させる

人間(ソクラテス).
死ぬ(X) :- 人間(X).

→ 死ぬ(ソクラテス)? → true

AIや推論エンジンで使われる。現代では超ニッチ笑

リアクティブ

データの流れをストリームで表現

クリックイベント
  └──→ フィルター
         └──→ マップ
                └──→ 画面更新

RxJSとかがこれ。非同期処理が得意。

現代の主流言語はどれ?

JavaScript / TypeScript
  └── OOP ✅
  └── 関数型 ✅(map, filter, reduce)
  └── リアクティブ ✅(RxJS, Signal)

Ruby(Rails)
  └── OOP ✅(主軸)
  └── 関数型 ✅(少し)

Haskell
  └── 関数型 ✅(純粋関数型の極み)

現代の言語はほぼマルチパラダイムだよ。 1つに縛られてない。