宣言型と命令型プログラミングの違いをサクッと理解!
プログラミングには「宣言型」と「命令型」という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