ScholarGate
어시스턴트

언어 패러다임

프로그래밍 패러다임은 명령형 상태 변경부터 함수형, 논리형, 선언형 모델에 이르기까지 계산이 표현되는 방식을 조직하는 근본적인 스타일입니다.

PaperMind(으)로 주제 찾기곧 제공Find papers & topics
Tools & resources
슬라이드 다운로드
Learn & explore
동영상곧 제공

Definition

프로그래밍 패러다임은 언어 내에서 계산을 조직하기 위한 일관된 개념 및 구조화 원칙의 집합으로, 프로그램의 기본 단위(문, 표현식, 객체, 관계)가 무엇이며 이들이 어떻게 구성되는지를 정의합니다.

Scope

이 분야는 프로그래밍 언어의 주요 패러다임과 이를 뒷받침하는 계산 모델을 다룹니다. 즉, 가변 상태와 메시지 전달을 기반으로 하는 명령형 및 객체 지향 프로그래밍; 표현식 평가와 고차 함수를 기반으로 하는 함수형 프로그래밍; 관계와 탐색을 기반으로 하는 논리 및 제약 프로그래밍; 그리고 프로그램이 프로그램을 조작하는 메타프로그래밍을 포함합니다. 이 영역은 패러다임이 언어 설계를 어떻게 형성하는지, 패러다임이 내포하는 장단점, 그리고 현대의 다중 패러다임 언어가 이들을 어떻게 결합하는지를 다룹니다.

Sub-topics

Core questions

  • 하나의 패러다임과 다른 패러다임을 구별하는 것은 무엇이며, 이러한 구별은 명확한가 아니면 강조점의 문제인가?
  • 패러다임은 프로그램의 정확성, 모듈성 및 추론에 어떻게 영향을 미치는가?
  • 명령형 및 선언형 스타일을 통합할 수 있는가, 그리고 이들을 혼합함으로써 얻거나 잃는 것은 무엇인가?
  • 기저의 계산 모델(폰 노이만 머신, 람다 계산법, 해상도)은 패러다임에 어떻게 영향을 미치는가?

Key theories

프로그램 대수로서의 함수형 프로그래밍
배커스는 함수형, 조합기 기반 프로그래밍이 프로그램에 추론 및 변환을 위한 등식 법칙의 대수를 제공함으로써 폰 노이만 병목 현상으로부터 언어를 해방시킨다고 주장했습니다.
알고리즘 = 논리 + 제어
코왈스키(Kowalski)는 문제의 논리적 명세와 이를 해결하는 데 사용되는 제어 전략을 분리함으로써 선언형/논리 패러다임의 기반을 마련하고, 절차적 코드와 구별되는 점을 명확히 했습니다.
다중 패러다임 커널 언어 프레임워크
반 로이(Van Roy)와 하리디(Haridi)는 패러다임을 작은 커널 언어의 점진적 확장으로 제시하며, 상태, 동시성, 지연 평가와 같은 개념을 추가하거나 제거하여 각 패러다임을 복원하는 방법을 보여줍니다.

Clinical relevance

패러다임 선택은 소프트웨어 공학에 실질적인 영향을 미칩니다. 함수형 및 선언형 스타일은 등식 추론, 테스트 용이성, 병렬화를 돕는 반면, 객체 지향 분해는 대규모 모듈성을 지원합니다. 현대 언어는 패러다임을 점차 혼합하고 있으므로, 그 장단점을 이해하는 것은 언어 선택과 관용적인 설계에 도움이 됩니다.

History

명령형 프로그래밍은 저장 프로그램 방식의 폰 노이만 아키텍처와 포트란(Fortran), 알골(Algol)과 같은 초기 언어에서 유래했습니다. 리스프(Lisp, 1958)는 람다 계산법에 뿌리를 둔 함수형 아이디어를 도입했습니다. 1970년대에는 논리 프로그래밍(프롤로그, Prolog)과 구조적 프로그래밍, 그리고 객체 지향 프로그래밍(시뮬라, Simula; 스몰토크, Smalltalk)이 부상했습니다. 1977년 배커스(Backus)의 튜링상 강연은 명령형 스타일에 대한 함수형 비판을 구체화했으며, 이후 수십 년 동안 점점 더 많은 다중 패러다임 언어가 등장했습니다.

Debates

주요 조직 원리로서의 명령형 대 선언형
오랜 논쟁은 명령형 코드의 직접성과 성능 제어와 선언형 및 함수형 스타일의 추론 및 구성 가능성 이점을 비교합니다. 대부분의 현대 언어는 둘 다 지원함으로써 이 문제를 해결합니다.

Key figures

  • John Backus
  • Robert Kowalski
  • Peter Van Roy
  • Harold Abelson
  • Gerald Jay Sussman

Related topics

Seminal works

  • backus1978
  • kowalski1979
  • vanroy2004
  • abelson1996

Frequently asked questions

객체 지향 프로그래밍은 명령형 프로그래밍과 별개의 패러다임인가요?
객체 지향 프로그래밍은 일반적으로 명령형 패러다임 위에 계층화된 구조화 원칙으로 다루어집니다. 즉, 가변 상태를 캡슐화된 동작을 가진 객체로 조직하지만, 여전히 상태 변경과 순차 실행에 의존합니다.
패러다임은 상호 배타적인가요?
아닙니다. 널리 사용되는 많은 언어는 다중 패러다임이며, 함수형, 객체 지향, 명령형 기능을 결합하여 프로그래머가 각 작업에 가장 적합한 스타일을 선택할 수 있도록 합니다.

Methods for this concept

Related concepts