프로그래밍 언어의 패러다임

패러다임

  • 한 시대의 견해나 사고를 규정하는 양식, 규범, 체계 등을 통칭하는 말
  • 토머스 쿤은 과학 분야의 발전에 따라 이전의 믿음과 체계가 흔들리고 새로운 체계로 대체되는 과정에 주목

프로그래밍 패러다임

  • 프로그램을 작성하는 전형적인 방식
  • 특정 언어에 종속적인 것이 아닌 프로그래머가 추구하는 프로그램 작성 방식
  • 주어진 데이터에 어떤 연산을 어떤 순서로 할지 결정하는 것이 중요
    • 명령형 프로그래밍 패러다임 등장
  • 복잡한 데이터 처리를 위해 데이터 처리 방식 자체를 잘 정리하는 것이 중요
    • 절차형 프로그래밍 패러다임 등장
  • 데이터가 저장된 메모리를 관리하는 것이 어려운 문제로 대두
    • 함수형 프로그래밍 패러다임 등장
  • 계산 절차를 문제의 조건을 명시하는 규칙으로 생각
    • 논리 프로그래밍 패러다임 등장
    • 선언적 프로그래밍 패러다임의 한 종류
  • 같은 데이터에 대해 다른 처리 절차를 여러 개 명시해야 하는 경우가 흔히 발생
    • 객체지향 프로그래밍 패러다임 등장
  • 응용 도메인의 변화
    • 요구사항의 변화
    • 계산분야 → 다양한 응용 분야
  • 프로그램 구성 방식의 변화
    • 명령어 나열 → 존재하는 모듈의 조합
  • 계산 모델의 변화
    • 튜링기계 모델 → 새로운 방식의 계산 모델

프로그래밍 언어 패러다임

  • 프로그래밍 패러다임
    • 프로그램을 작성하는 방식이나 스타일
  • 프로그래밍 언어 패러다임
    • 해당 프로그래밍 언어가 지원하는 프로그래밍 패러다임
    • 일반적으로 프로그래밍 언어는 여러 프로그래밍 패러다임을 지원

프로그래밍 패러다임의 양립성

  • 다양한 프로그래밍 패러다임은 서로 양립할 수 있음
  • 새로운 패러다임의 등장으로 이전에 있던 패러다임이 더욱 공고히 완성
  • 주류 프로그래밍 패러다임이 바뀜에 따라 이를 언어가 수용하는 형태로 변화

여러 패러다임의 프로그램 예

  1. 명령형 프로그래밍
    • 프로그램 : 일련의 명령어 나열
    • 장점 : 프로그램을 쉽게 이해할 수 있음
    • 단점 : 프로그램이 복잡한 경우 효과적으로 다루지 못함

  2. 절차형 프로그래밍
    • 프로그램 : 서브루틴이라는 절차의 집합
    • 장점 : 재귀호출을 사용하여 프로시저를 간단하게 정의

  3. 구조화 프로그래밍
    • goto 없이 프로그램을 작성하는 방법
    • 블록과 서브루틴을 이용
    • 구조화된 제어문을 이용

  4. 객체지향 프로그래밍
    • 서로 통신할 수 있는 객체의 집합
    • GUI 개발에 큰 획
    • 프로그램 재사용 편의로 S/W 생산성에 크게 기여

    • 객체의 개념
      • 상태를 유지하며 외부의 요청에 반응하는 데이터
      • 상태 - 필드(멤버 변수), 반응-메소드(멤버 함수)
      • 상태는 외부에 숨기고 메소드는 외부에 공개

  5. 함수형 프로그래밍
    • 데이터는 값으로, 명령어는 함수로 취급
      • 명령어가 데이터를 바꿀 수 없음
    • 대입문과 반복문 없음
    • 함수 자체도 값으로 취급 가능

  6. 선언적 프로그래밍
    • 프로그램 : 논리식 집합
    • 논리식은 명제나 술어로 나타냄
      • 술어는 인수를 받을 수 있음

Updated: