명령형 프로그래밍

  • Imperative Programming
  • How 에 초점
    • 원하는 목표를 달성하기 위해 수행해야하는 단계를 명시적으로 기술
    • 순차적인 지시 (컴퓨터에게 명령 내리는 것과 유사)
  • 예시
    • 절차적 프로그래밍
    • 객체 지향 프로그래밍
  • 특징
    • 알고리즘의 각 단계 명확히 정의
    • 상태 변화 추적 → 어떻게 실행될 지 제어
    • 프로그램 상태 추적 필요 → 복잡
  • 언어 : C C++ Java Python

선언형 프로그래밍

  • Declarative Programming
  • What 에 초점
    • 원하는 결과 정의

    • 결과를 달성하는 방법은 시스템에 위임

      → 개발자는 결과에 대한 명세만 제공

  • 예시
    • 함수형 프로그래밍
    • 논리 프로그래밍
  • 특징
    • 프로그램의 상태 변화 최소화
    • 코드 의도 더 명확하게
    • 높은 유지보수성, 가독성
    • 성능 최적화 어려움
  • 언어 : SQL HTML Prolog

함수형 프로그래밍

  • Functional Programming
  • 선언형 프로그래밍의 한 형태
  • 불변성 Immutability
    • 한 번 생성된 데이터는 변경 X

    • 변화가 필요한 경우 새로운 데이터 생성

      → 예측 가능성, 안정성

  • 순수함수 Pure Functions
    • 주어진 입력에 대해 항상 동일한 출력 반환

    • 외부 상태에 영향 X

    • side effect X

      → 테스트 및 디버깅 용이, 예측 가능성

  • 언어 : Haskell Scala Clojure F#

어떤 방식을 지향해야 하는가?

  • 프로그래밍 패러다임을 선택할 때는 애플리케이션의 요구 사항, 개발 팀의 경험, 프로젝트의 복잡성 등 다양한 요소를 고려 필요
  • 성능이 중요한 시스템 : 하드웨어와 밀접한 명령형 언어가 유리할 수 있음
  • 유지 보수와 확장성이 중요한 애플리케이션 : 선언형 또는 함수형 언어가 코드의 명확성과 안정성을 향상시키는 데 도움을 줄 수 있음

→ 적절한 도구와 패러다임의 선택은 프로젝트의 성공에 큰 영향을 미칠 수 있으므로, 프로젝트의 요구에 가장 잘 맞는 방식을 잘 판단하여 선택하는 것이 중요

profile
숭실대학교 컴퓨터학부 21

0개의 댓글