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실기 드릴 · 단답형

"무엇을 할지만 선언하고 방법은 런타임에 맡기는" 패러다임은?