topic★★★★★난이도 · 약 15분
절차형 · OOP · 함수형 — 패러다임 지도
3대 패러다임이 '누가·무엇을·어떻게' 다루는지 — 현대 언어는 대부분 멀티 패러다임.
#패러다임#OOP#함수형#선언형
왜 배우는가
"객체지향으로 짜줘" vs "함수형으로 짜줘" 같은 지시의 의미를 정확히 알고 쓴다. 패러다임을 모르면 AI가 주는 코드 스타일을 판단할 수 없다.
패러다임은 '프로그램을 어떻게 조직하는가'의 철학이다. 한 언어가 한 가지만 하는 경우는 드물고, 현대 언어(JS·Python·Kotlin·Swift·Rust)는 멀티 패러다임.
| 패러다임 | 중심 단위 | 데이터 | 대표 언어 |
|---|---|---|---|
| 절차형(Procedural) | 함수·순서 | 전역/지역 변수 | C, 쉘스크립트 |
| OOP | 객체(데이터+동작) | 객체 내부 상태 | Java, C#, Python |
| 함수형(FP) | 순수 함수 | 불변(immutable) | Haskell, Elm, JS(부분) |
| 선언형(Declarative) | 무엇을(what) | 상태 숨김 | SQL, HTML, React JSX |
| 논리형(Logic) | 규칙·추론 | 사실 선언 | Prolog |
javascript
// 같은 문제(배열 합계)를 3가지 스타일로
// 1) 절차형
let sum = 0;
for (let i = 0; i < nums.length; i++) {
sum += nums[i];
}
// 2) 객체지향
class Accumulator {
constructor() { this.total = 0; }
add(n) { this.total += n; return this; }
}
const acc = new Accumulator();
for (const n of nums) acc.add(n);
acc.total;
// 3) 함수형
const sum = nums.reduce((a, b) => a + b, 0);
// 4) 선언형 (SQL 비슷)
// SELECT SUM(n) FROM nums;같은 일을 4가지로. 현대 JS는 함수형 성향의 멀티 패러다임. React도 컴포넌트가 함수, 상태 불변 권장.
실전 선택 가이드. UI 상태·생명주기가 복잡 → OOP 또는 상태 관리 라이브러리. 데이터 파이프라인·불변성 중요 → FP. 단순 스크립트 → 절차형. 현대 웹 앱은 컴포넌트(함수형) + 내부 상태(OOP 힌트) + 데이터 파이프(FP) 혼합.
실기 드릴 1문항
edit실기 드릴 · 단답형
"무엇을 할지만 선언하고 방법은 런타임에 맡기는" 패러다임은?