💡

宣言型と命令型プログラミングの違いをサクッと理解!

に公開

プログラミングには「宣言型」と「命令型」という2つの主要なスタイルがあります。この記事では、それぞれの違いや特徴を、初心者向けにわかりやすく解説します。

宣言型プログラミングとは?

「何をしたいか(What)」 を記述し、処理の手順はシステムに任せるスタイルです。副作用(外部の状態変更)は最小限に抑えられるか、厳密に管理されます。

ポイント

焦点: 結果や目的を記述。
副作用: ほとんどなし、もしくは厳密に管理。
メリット: 簡潔で読みやすく、保守性が高い。並行処理にも強い。
デメリット: 学習コストが高め。細かな制御は難しい。
例: SQL、Haskell、HTML(マークアップだが宣言的スタイル)。

簡単な例
SQLで「年齢が30以上のユーザーを取得」:

SELECT name FROM users WHERE age > 30;

→ 「どうやって」取得するかはデータベースが判断!

命令型プログラミングとは?

「どのように処理するか(How)」 をステップごとに記述するスタイルです。状態の変更や副作用が一般的で、現実世界の操作に強いです。

ポイント

焦点: 処理手順を明示。
副作用: 多い(変数の変更、ファイル操作など)。
メリット: 直感的で柔軟。パフォーマンスの最適化もしやすい。
デメリット: 副作用によりバグが発生しやすく、複雑化しやすい。
例: C、Java、Python(命令型ベースだが関数型要素もあり)。

簡単な例
Pythonでリストの合計を計算する:

numbers = [1, 2, 3]
total = 0
for num in numbers:
    total += num  # 変数 total を更新(副作用)
print(total)  # 出力: 6

→ 手順(ループや変数の更新)を一つひとつ指定するスタイル。

副作用って何?

副作用とは、関数や処理が「計算結果を返す」以外に、外部に影響を及ぼすことです。

宣言型では副作用を避けるのが基本(例: 純粋な計算)。

def add(a, b):
    return a + b  # 外部には影響を与えない

命令型では副作用がよく使われます(例: グローバル変数の更新)。

counter = 0
def increment():
    global counter
    counter += 1  # 副作用: counter を変更

まとめ

宣言型: 「何を」重視。副作用が少なく、簡潔で読みやすい。
命令型: 「どうやって」重視。柔軟でパフォーマンスに強いが、副作用による複雑さも。

Discussion