言語パラダイムとは(全体像)
言語パラダイムは、プログラムをどんな考え方で組み立てるかのスタイルのこと。流派のようなもので、同じ料理(処理)でも作り方の流儀が違う。
身近にたとえると、料理の流派だ。手続き型は「レシピ通りに順に作る」、オブジェクト指向は「食材ごとに専門の担当を置く」、関数型は「各工程を独立させ、混ぜずに変換だけする」、というイメージ。
押さえるのは、パラダイムごとに代表言語があり、現代は複数を混ぜる(マルチパラダイム)のが主流だということ。
詳しく:主要パラダイムとOOPの3柱だけ覚えれば戦える
ここが記事の心臓部。まず主要なパラダイムを見ましょう。
主要な言語パラダイム
| パラダイム | 考え方 | 代表言語 |
|---|---|---|
| 手続き型 | 命令を順に書いて変数を更新する | C・Pascal |
| オブジェクト指向(OOP) | モノ(オブジェクト)単位でまとめる | Java・C++・Python |
| 関数型 | 副作用を避け、関数で組み立てる | Haskell・Lisp |
| 論理型 | 事実と規則を書いて質問で推論する | Prolog |
| 並行型 | 多くの処理を同時に動かす | Erlang・Go |
手続き型は、命令を上から順に書いていく基本のスタイル。オブジェクト指向(OOP)は、データと操作を「モノ(オブジェクト)」にまとめて組み立てるスタイルで、いちばん広く使われています。関数型は、副作用(変数の書き換えなど)を避け、関数の組み合わせで書くスタイルです。
OOPには、覚えておきたい3つの柱があります。
オブジェクト指向の3つの柱
| 柱 | 意味 |
|---|---|
| カプセル化 | データと操作を1つにまとめ、内部を隠す |
| 継承 | 既存のものを引き継いで広げる |
| 多態性 | 同じ呼び方で、相手によって違う動きをする |
ここで一番のひっかけが「Pythonはオブジェクト指向だけの言語」という誤解。実際のPythonは、手続き型・オブジェクト指向・関数型を混ぜて書けるマルチパラダイムです。
もう1つのひっかけが「関数型は高度で難しいだけ」。関数型は副作用が少なく、かえって学びやすい面もあるスタイルです。
わかりやすく言い換えると
要するに、料理の流派のたとえで覚えるとラクです。
①主要パラダイム … 手続き型(順に作る)、OOP(担当を分ける)、関数型(混ぜず変換だけ)
②OOPの3つの柱 … カプセル化(まとめて隠す)・継承(引き継ぐ)・多態性(同じ呼び方で違う動き)
③現代はマルチパラダイム … 複数を混ぜる(Pythonも手続き+OOP+関数型)
つまり、「主要パラダイムと代表言語」「OOPの3柱」、この2点が試験の急所です。
試験のツボ
🔴 一番出る:主要パラダイムと代表言語
①手続き型(C)/オブジェクト指向(Java・C++・Python)
②関数型(Haskell・Lisp)/並行型(Erlang・Go)
🔴 次に出る:オブジェクト指向の3つの柱
①カプセル化(まとめて内部を隠す)・継承(引き継いで広げる)
②多態性(同じ呼び方で相手により違う動き)
🟡 押さえると安定:マルチパラダイム
①現代は複数のパラダイムを混ぜるのが主流(Scala・Kotlin・Rustなど)
②Pythonはオブジェクト指向だけではない(手続き型・関数型も書ける)
よくある間違い
①「Pythonはオブジェクト指向だけの言語」→ ✗ Pythonは手続き型・オブジェクト指向・関数型を混ぜて書けるマルチパラダイム。
②「関数型は高度で難しいだけ」→ ✗ 関数型は副作用が少なく、かえって学びやすい面もある。
③「オブジェクト指向の柱はカプセル化の1つだけ」→ ✗ OOPの柱はカプセル化・継承・多態性の3つ。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(主要パラダイム)
言語パラダイムに関する次の記述のうち、正しいものはどれか。
- 言語パラダイムは紙に印刷する装置のことで、プログラムの書き方とは無関係なものだとされる
- 言語パラダイムは1種類しかなく、手続き型以外のスタイルは存在しないものだとされている
- オブジェクト指向は命令を順に書くだけの方式で、モノ単位でまとめることはないものとされる
- 手続き型は命令を順に書き、オブジェクト指向はモノ単位でまとめ、関数型は副作用を避ける
解答は 4 ですよ。
手続き型は命令を順に書き、オブジェクト指向はモノ単位でまとめ、関数型は副作用を避けるスタイルですね。料理の流派のように作り方が違います。
選択肢1の「印刷する装置」、選択肢2の「1種類しかない」、選択肢3の「OOPは順に書くだけ」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 印刷する装置ではない |
| 2 | ✗ | 複数のパラダイムがある |
| 3 | ✗ | OOPはモノ単位でまとめる |
| 4 | ✓ | 3つのスタイルの説明が正しい |
オリジナル問題2(OOPの3つの柱)
オブジェクト指向の3つの柱に関する次の記述のうち、正しいものはどれか。
- OOPの柱はカプセル化の1つだけで、継承や多態性は柱に含まれないものだとされている
- OOPの柱は紙に印刷する手順のことで、プログラムの設計とは無関係なものだとされている
- OOPの3つの柱はカプセル化・継承・多態性で、データと操作を1つにまとめて組み立てる
- OOPの3つの柱は手続き型・関数型・論理型で、モノ単位とは無関係なものだとされている
解答は 3 ですよ。
OOPの3つの柱はカプセル化・継承・多態性で、データと操作をまとめて組み立てるスタイルですね。専門の担当を置くイメージです。
選択肢1の「1つだけ」、選択肢2の「印刷する手順」、選択肢4の「手続き型など」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 柱は3つある |
| 2 | ✗ | 印刷する手順ではない |
| 3 | ✓ | カプセル化・継承・多態性 |
| 4 | ✗ | それはパラダイムの種類 |
オリジナル問題3(マルチパラダイム)
マルチパラダイムに関する次の記述のうち、正しいものはどれか。
- Pythonはオブジェクト指向だけの言語で、手続き型や関数型では書けないものだとされている
- Pythonは手続き型・オブジェクト指向・関数型を混ぜて書けるマルチパラダイムの言語だ
- マルチパラダイムは紙に印刷する装置のことで、言語の設計とは無関係なものだとされている
- 現代の言語はすべて手続き型だけで、複数のパラダイムを混ぜることはないものだとされている
解答は 2 ですよ。
Pythonは手続き型・オブジェクト指向・関数型を混ぜて書けるマルチパラダイムの言語ですね。現代は複数を混ぜるのが主流です。
選択肢1の「OOPだけ」、選択肢3の「印刷する装置」、選択肢4の「すべて手続き型だけ」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 手続き型・関数型でも書ける |
| 2 | ✓ | 複数を混ぜるマルチパラダイム |
| 3 | ✗ | 印刷する装置ではない |
| 4 | ✗ | 複数を混ぜるのが現代主流 |
まとめ
押さえどころ
- 🔴 主要パラダイム = 手続き型(C)/オブジェクト指向(Java・Python)/関数型(Haskell)/論理型(Prolog)/並行型(Erlang・Go)。
- 🔴 OOPの3つの柱 = カプセル化(まとめて隠す)・継承(引き継ぐ)・多態性(同じ呼び方で違う動き)。
- 🟡 マルチパラダイム = 現代は複数を混ぜるのが主流。Pythonはオブジェクト指向だけではない。
次に学ぶ
- 現代言語(Rust・Go・TypeScript) ── 複数のパラダイムを混ぜる、現代のプログラミング言語の特徴。
- コンパイラのフェーズ ── どのパラダイムの言語も通る、機械語への変換のしくみ。
執筆: SikakuQuest編集部