본문으로 이동

프로그래밍 언어 이론

위키백과, 우리 모두의 백과사전.
소문자 그리스 문자 λ(람다)는 프로그래밍 언어 이론 분야의 비공식적인 상징이다. 이 용법은 1930년대 알론조 처치가 도입하고 프로그래밍 언어 연구자들이 널리 사용하는 계산 모델람다 대수에서 유래한다. 이는 고전적인 텍스트인 Structure and Interpretation of Computer Programs의 표지를 장식하고 있으며,[1] 스킴 언어 개발자인 제럴드 제이 서스먼가이 L. 스틸 주니어가 쓴 1975년부터 1980년까지의 소위 Lambda Papers의 제목이기도 하다.

프로그래밍 언어 이론(Programming language theory, PLT)은 프로그래밍 언어로 알려진 형식 언어의 설계, 구현, 분석, 특성화 및 분류를 다루는 컴퓨터 과학의 한 분야이다. 프로그래밍 언어 이론은 언어학, 수학, 소프트웨어 공학을 포함한 다른 분야와 밀접한 관련이 있다.

역사

[편집]

어떤 면에서 프로그래밍 언어 이론의 역사는 프로그래밍 언어 개발보다 앞선다. 1930년대 알론조 처치스티븐 클레이니가 개발한 람다 대수는 프로그래머가 컴퓨터 시스템에 알고리즘설명하는 수단이라기보다는 계산을 모델링하기 위한 것이었지만, 일부에서는 이를 세계 최초의 프로그래밍 언어로 간주한다. 많은 현대 함수형 프로그래밍 언어는 람다 대수 위에 "얇은 베니어판"을 제공하는 것으로 묘사되었으며,[2] 많은 언어가 람다 대수 관점에서 쉽게 설명된다.

최초로 발명된 프로그래밍 언어는 1940년대 콘라트 추제가 설계한 플랑칼퀼이지만, 1972년까지 대중에게 알려지지 않았고 1998년까지 구현되지 않았다. 최초로 널리 알려지고 성공한 고급 프로그래밍 언어는 1954년부터 1957년까지 존 배커스가 이끄는 IBM 연구팀이 개발한 FORTRAN (Formula Translation)이었다. FORTRAN의 성공으로 과학자 위원회가 "보편적인" 컴퓨터 언어를 개발하기 위해 구성되었으며, 그 노력의 결과가 ALGOL 58이었다. 별도로 매사추세츠 공과대학교(MIT)의 존 매카시는 학계에서 성공을 거둔 최초의 언어인 리습을 개발했다. 이러한 초기 노력의 성공으로 프로그래밍 언어는 1960년대 이후 활발한 연구 주제가 되었다.

연표

[편집]

그 이후 프로그래밍 언어 이론 역사에서 몇 가지 주요 사건들:

1950년대
  • 노엄 촘스키는 언어학 분야에서 촘스키 위계를 개발했는데, 이는 프로그래밍 언어 이론 및 기타 컴퓨터 과학 분야에 직접적인 영향을 미쳤다.
1960년대
1970년대
1980년대
1990년대

하위 분야 및 관련 분야

[편집]

프로그래밍 언어 이론 내에 있거나 이에 깊은 영향을 미치는 여러 연구 분야가 있으며, 이들 중 상당수는 상당한 중첩을 이룬다. 또한 PLT는 계산 가능성 이론, 범주론, 집합론을 포함한 많은 다른 수학 분야를 활용한다.

형식 의미론

[편집]

형식 의미론은 컴퓨터 프로그램과 프로그래밍 언어의 동작에 대한 형식적인 명세이다. 컴퓨터 프로그램의 의미 또는 "의미"를 설명하는 세 가지 일반적인 접근 방식은 표시적 의미론, 동작적 의미론공리적 의미론이다.

유형 이론

[편집]

유형 이론은 자료형 체계에 대한 연구이며, 이는 "계산하는 값의 종류에 따라 구문을 분류하여 특정 프로그램 동작이 없음을 증명하는 다루기 쉬운 구문 방법"이다.[4] 많은 프로그래밍 언어는 자료형 체계의 특성으로 구별된다.

프로그램 분석 및 변환

[편집]

프로그램 분석은 프로그램을 검사하고 주요 특성(예: 특정 종류의 프로그램 오류 부재)을 결정하는 일반적인 문제이다. 프로그램 변환은 한 형식(언어)의 프로그램을 다른 형식으로 변환하는 과정이다.

비교 프로그래밍 언어 분석

[편집]

비교 프로그래밍 언어 분석은 언어의 특성에 따라 언어를 다른 유형으로 분류하려고 한다. 넓은 범주의 언어는 종종 프로그래밍 패러다임으로 알려져 있다.

제네릭 및 메타프로그래밍

[편집]

메타프로그래밍은 실행될 때 프로그램(다른 언어로 또는 원본 언어의 하위 집합으로)을 결과로 생성하는 고차원 프로그램의 생성이다.

도메인 특화 언어

[편집]

도메인 특화 언어는 주어진 도메인 또는 해당 부분의 문제를 효율적으로 해결하기 위해 구성된 언어이다.

컴파일러 구성

[편집]

컴파일러 이론은 컴파일러(또는 더 일반적으로 번역기)를 작성하는 이론이다. 즉, 한 언어로 작성된 프로그램을 다른 형식으로 번역하는 프로그램이다. 컴파일러의 동작은 전통적으로 구문 분석(스캔구문 분석), 의미 분석(프로그램이 무엇을 해야 하는지 결정), 최적화(일부 측정 기준에 따라 프로그램의 성능 향상; 일반적으로 실행 속도) 및 코드 생성(일부 대상 언어로 동등한 프로그램 생성 및 출력; 종종 중앙 처리 장치(CPU)의 명령어 집합)으로 나뉜다.

런타임 시스템

[편집]

런타임 시스템가상 머신, 쓰레기 수집외부 함수 인터페이스를 포함한 프로그래밍 언어 런타임 환경과 그 구성 요소의 개발을 의미한다.

학술지, 출판물 및 학회

[편집]

학회는 프로그래밍 언어 연구를 발표하는 주요 장소이다. 가장 잘 알려진 학회로는 프로그래밍 언어 원리 심포지엄(POPL), 프로그래밍 언어 설계 및 구현(PLDI), 국제 함수형 프로그래밍 학회(ICFP), 객체 지향 프로그래밍, 시스템, 언어 및 응용에 대한 국제 학회(OOPSLA) 및 ASPLOS가 있다.

PLT 연구를 게재하는 주목할 만한 학술지로는 ACM Transactions on Programming Languages and Systems(TOPLAS), Journal of Functional Programming(JFP), Journal of Functional and Logic ProgrammingHigher-Order and Symbolic Computation이 있다.

같이 보기

[편집]

각주

[편집]
  1. Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (1996). 《Structure and Interpretation of Computer Programs》 2판. Cambridge, Massachusetts: MIT Press. ISBN 0-262-01153-0. OCLC 34576857. 
  2. “Models Of Computation”. 《wiki.c2.com》. 2014년 12월 3일. 2020년 11월 30일에 원본 문서에서 보존된 문서. 
  3. C. Böhm and W. Gross (1996). Introduction to the CUCH. In E. R. Caianiello (ed.), Automata Theory, p. 35–64.
  4. Benjamin C. Pierce. 2002. Types and Programming Languages. MIT Press, Cambridge, Massachusetts, USA.

추가 자료

[편집]

외부 링크

[편집]