STUDY

프로그래밍 패러다임

Lim임 2026. 1. 6. 15:29

프로그래밍 패러다임


1. 선언형 프로그래밍 & 함수형 프로그래밍

선언형 프로그래밍 (Declarative)

특징

  • 어떻게가 아니라 무엇을 할지 표현
  • 내부 동작은 시스템에 위임

예시

  • SQL (SELECT ...)
  • React JSX
  • Array 메서드 (map, filter, reduce)

장점

  • 코드 가독성 좋음
  • 의도가 명확

단점

  • 내부 동작을 제어하기 어려움
  • 성능 튜닝이 제한적일 수 있음

함수형 프로그래밍 (Functional)

핵심 개념

  • 순수 함수
  • 고차 함수
  • 불변성
  • 부수 효과 최소화

순수 함수

  • 같은 입력 → 항상 같은 출력
  • 외부 상태 변경 없음

고차 함수

  • 함수를 인자로 받거나 함수를 반환
  • map, filter, reduce

장점

  • 테스트 용이
  • 예측 가능
  • 병렬 처리에 유리

단점

  • 러닝 커브
  • 상태 관리가 직관적이지 않을 수 있음

연관

  • React hooks, Redux
  • 선언형 UI와 궁합이 좋음

2. 객체지향 프로그래밍 (OOP)

핵심 특징

추상화

  • 공통된 특징만 뽑아내 모델링

캡슐화

  • 내부 구현 은닉
  • 접근 제어자(private, public)

상속성

  • 기존 클래스 재사용
  • 코드 중복 감소

다형성

  • 같은 인터페이스, 다른 동작

오버로딩 / 오버라이딩

오버로딩

  • 같은 이름, 다른 파라미터
  • JS는 개념적으로만 존재

오버라이딩

  • 부모 메서드를 자식이 재정의
  • 실제 다형성 구현 핵심

SOLID 원칙

S — 단일 책임 원칙 (SRP)

  • 클래스는 하나의 책임만 가져야 함

O — 개방 폐쇄 원칙 (OCP)

  • 확장에는 열려 있고 수정에는 닫혀 있음
  • 전략 패턴, 팩토리 패턴과 강한 연관

L — 리스코프 치환 원칙 (LSP)

  • 자식은 부모를 대체할 수 있어야 함
  • 상속 설계의 핵심 기준

I — 인터페이스 분리 원칙 (ISP)

  • 범용 인터페이스보다 역할별 인터페이스
  • 옵저버, 전략 패턴과 연관

D — 의존 역전 원칙 (DIP)

  • 구현이 아닌 추상에 의존
  • DI, 테스트, 확장성과 직결

장점

  • 대규모 시스템에 유리
  • 유지보수성, 확장성

단점

  • 설계 비용 큼
  • 과한 추상화는 오히려 복잡

3. 절차형 프로그래밍

특징

  • 위에서 아래로 순차 실행
  • 함수와 상태 중심

예시

  • C
  • 초기 JS 코드 스타일

장점

  • 구조 단순
  • 성능 예측 쉬움

단점

  • 규모 커질수록 유지보수 어려움
  • 상태 관리가 취약

연관

  • 알고리즘 문제 풀이
  • 스크립트성 프로그램

4. 패러다임의 혼합

특징

  • 현대 언어 대부분은 멀티 패러다임

예시

  • JavaScript
    • 함수형 (map, reduce)
    • 객체지향 (class, this)
    • 절차형 (if, for)
  • React
    • 선언형 UI
    • 함수형 컴포넌트
    • 내부적으로는 상태 기반

장점

  • 문제에 맞는 방식 선택 가능
  • 현실적인 개발에 최적

단점

  • 일관성 없는 코드가 되기 쉬움
  • 팀 컨벤션 중요

 

'STUDY' 카테고리의 다른 글

오픈소스  (0) 2026.01.09
실전 오픈소스 기여 프로젝트  (0) 2026.01.07
디자인 패턴  (0) 2026.01.06
github  (0) 2025.12.26
MDN Web Docs  (0) 2025.12.25