프로그래밍

프로그래밍 패러다임의 종류

공부하는 뚱이 2025. 3. 10. 10:59
반응형

나열(SEQ)

명령형(Imperative) 프로그래밍 패러다임

  • 프로그램이 수행해야 하는 작업을 일련의 명령으로 기술.
  • 명령문들이 순차적으로 실행.
  • 명령의 실행 순서와 제어 흐름이 매우 중요.

절차형(Procedural) 프로그래밍 패러다임

  • 프로그램을 여러 개의 절차(또는 함수, 프로시저)로 분할하여 구성하는 방식(모듈화)
  • 명령형 프로그래밍의 한 분류
  • 명령어들이 나열된다는건 명령형과 동일
  • 명령어들을 기능별로 묶어서 관리(구조화)하고 재사용할 수 있도록 개선한 것(재사용성)

순차적 명령어 실행 방식이 복잡한 문제를 다루기에는 한계가 있다는 인식에서, 문제의 조건과 관계를 명확히 선언하여 자동으로 해답을 도출하는 논리형 프로그래밍 패러다임이 등장했습니다.
이는 특히 인공지능, 전문가 시스템, 자연어 처리 등 복잡한 규칙 기반 문제 해결에 강점을 보이며, 문제를 “어떻게” 해결할지보다 “무엇”이 해결되어야 하는지를 기술하는 선언적 접근 방식을 제공합니다

논리(Logic)

논리형(Logic) 프로그래밍 패러다임

  • 선언적 프로그래밍
    • 무엇이 사실이고 어떤 규칙에 따라 결론이 도출되어야 하는지 서술
  • 자동 추론
    • Prolog(언어): 사용자가 질의(query)를 제시하면, 시스템이 사실과 규칙을 바탕으로 자도으로 추론을 수행하여 해답을 도출
  • 제어 흐름의 추상화
    • 문제의 논리적 관계를 기술, 실행 순서를 시스템이 자동으로 결정
  • 문제 본질에 집중
    • 문제 조건과 논리를 명확하게 표현, 결과 도출을 위한 핵심 요소만을 기술

함수형(Functional) 프로그래밍 패러다임

  • 순수 함수
    • 동일한 입력에 대해 동일한 출력을 반환
  • 불변성
  • 고차 함수
  • 선언적 접근
  • 코드가 간결해지고, 부수 효과(side effect)가 줄어들어 디버깅과 병렬 처리에 유리

객체지향(Object-Oriented) 프로그래밍 패러다임

  • 캡슐화
    • 데이터 + 데이터 처리 메서드 = (하나의 객체)
  • 상속과 다형성
  • 추상화

리액티브 프로그래밍 패러다임

  • 비동기 데이터 스트림과 이벤트 흐름을 중심으로, 시스템이 변화에 실시간으로 반응하도록 설계

데이터 중심 및 선언적 패러다임

  • *"무엇을" 해야 하는지를 선언적으로 표현, 내부의 복잡한 실행 로직은 시스템이 처리하도록 맡김.*

분산 시스템 및 병렬 처리 패러다임

  • 시스템의 확장성과 내결함성을 위해, 여러 노드에 작업을 분산시키고 동시에 처리하는 접근 방식을 강조합니다.
반응형