프로그래밍 언어 이론
Programming language theory프로그래밍 언어 이론(PLT)은 프로그래밍 언어로 알려진 공식 언어의 설계, 구현, 분석, 특성화 및 분류를 다루는 컴퓨터 과학의 한 분야입니다.프로그래밍 언어 이론은 수학, 소프트웨어 공학, 언어학을 포함한 다른 분야와 밀접하게 관련되어 있습니다.그 지역에는 많은 학술 회의와 저널이 있다.
역사
어떤 면에서, 프로그래밍 언어 이론의 역사는 프로그래밍 언어 자체의 발전보다 앞선다.1930년대에 Alonzo Church와 Stephen Cole Kleene에 의해 개발된 람다 미적분은 비록 프로그래머가 알고리즘을 컴퓨터 시스템에 기술하기 위한 수단이 아니라 계산을 모델링하기 위한 것으로 일부 사람들에 의해 세계 최초의 프로그래밍 언어로 여겨진다.많은 현대 함수형 프로그래밍 언어들은 람다 [2]미적분 위에 얇은 베니어(vener)를 제공하는 것으로 묘사되어 왔고, 많은 언어들은 람다 미적분이라는 관점에서 쉽게 묘사된다.
최초로 발명된 프로그래밍 언어는 1940년대에 Konrad Zuse에 의해 설계되었지만 1972년까지 공개적으로 알려지지 않은 Plankalkül이었다(그리고 1998년까지는 구현되지 않았다.최초로 널리 알려져 성공한 고급 프로그래밍 언어는 Fortran으로, John Backus가 이끄는 IBM 연구팀에 의해 1954년부터 1957년까지 개발되었습니다.FORTRAN의 성공은 "범용" 컴퓨터 언어를 개발하기 위한 과학자들로 구성된 위원회를 구성하는데, 그 노력의 결과는 ALGOL 58이었다.이와는 별도로 MIT의 John McCarthy는 학계에서 최초로 성공한 언어인 리스프를 개발했다.이러한 초기 노력의 성공으로, 프로그래밍 언어는 1960년대 이후 활발한 연구 주제가 되었다.
그 이후 프로그래밍 언어 이론 역사에서 몇 가지 다른 주요 사건:
1950년대
1960년대
- 시뮬라 언어는 올레-조한 달과 크리스텐 니고르에 의해 개발되었다. 시뮬라는 또한 코루틴의 개념을 도입했다.
- 1964년, 피터 랜딘은 처치의 람다 미적분을 프로그래밍 언어의 모델링에 사용할 수 있다는 것을 처음으로 깨달았습니다.그는 람다 식을 "해석"하는 SECD 기계를 소개합니다.
- 1965년에 Landin은 J 연산자를 도입했습니다.이것은 본질적으로 계속의 한 형태입니다.
- 1966년, 랜딘은 그의 기사 The Next 700 Programming Languages에서 추상 컴퓨터 프로그래밍 언어인 ISWIM을 소개했습니다.이는 해스켈 프로그래밍 언어로 이어지는 언어 설계에 영향을 미칩니다.
- 1966년 Corrado Böhm은 CUCH(Curry-Church)[3]라는 프로그래밍 언어를 도입했습니다.
- 1967년 Christopher Strachey는 R-values, L-values, 파라메트릭 다형 및 애드혹 다형이라는 용어를 소개하면서 그의 영향력 있는 강의 노트 세트를 출판했습니다.
- 1969년 J. Roger Hindley는 The Principle Type-Scheme of a Object in Combinatory Logic을 발표하였고, 나중에 힌들리-밀너 유형 추론 알고리즘으로 일반화하였다.
- 1969년에 토니 호어는 자명한 의미론의 한 형태인 호어 논리를 도입했다.
- 1969년, 윌리엄 앨빈 하워드는 자연 연산으로 언급되는 "고수준" 증명 체계가 람다 미적분으로 알려진 계산 모델의 유형 변형으로 직감적인 버전에서 직접적으로 해석될 수 있다는 것을 발견했습니다.이것은 Curry-Howard 대응으로 알려지게 되었다.
1970년대
- 1970년에 Dana Scott은 처음으로 표현 의미론에 대한 그의 연구를 출판했다.
- 1972년에 논리 프로그래밍과 프롤로그가 개발되어 컴퓨터 프로그램이 수학 논리로 표현될 수 있게 되었다.
- Alan Kay가 이끄는 Xerox PARC의 과학자 팀은 혁신적인 개발 환경으로 널리 알려진 객체 지향 언어인 Smalltalk를 개발합니다.
- 1974년, 존 C. 레이놀즈는 시스템 F를 발견한다.그것은 이미 1971년에 수학 논리학자 장 이브 지라르에 의해 발견되었다.
- 1975년부터, Gerald Jay Sussman과 Guy Stele은 어휘 스코핑이 통합된 리스프 방언인 Scheme 프로그래밍 언어, 통합된 네임스페이스 및 배우 모델의 요소를 개발했습니다.
- 1977년 튜링상 강연에서 배커스는 산업용 언어의 현주소를 비판하고 기능 수준 프로그래밍 언어라고 알려진 새로운 프로그래밍 언어 클래스를 제안했다.
- 1977년, Gordon Plotkin은 추상형 함수 언어인 Programming Computable Functions를 도입했습니다.
- 1978년 로빈 밀너는 ML을 위한 힌들리-밀너 유형 추론 알고리즘을 도입했다.유형 이론은 프로그래밍 언어에 대한 학문으로 적용되었고, 이 응용은 수년간 유형 이론의 엄청난 발전을 이끌었다.
1980년대
- 1981년, 고든 플롯킨은 구조화된 운영 의미론에 대한 논문을 발표한다.
- 1988년, Gilles Kahn은 자연 의미론에 관한 논문을 발표했다.
- Robin Milner의 커뮤니케이션 시스템의 미적분, C. A. R. Hoare의 커뮤니케이션 시퀀셜 프로세스 모델 및 Carl Hewitt의 배우 모델과 같은 유사한 동시성 모델이 출현했다.
- 1985년 미란다의 출시는 게으른 평가를 받은 순수 함수형 프로그래밍 언어에 대한 학계의 관심을 불러일으켰다.위원회는 개방형 표준을 정의하기 위해 1990년에 Haskell 1.0 표준을 발표하게 되었습니다.
- Bertrand Meyer는 계약으로 방법론 디자인을 만들어 에펠 프로그래밍 언어에 통합했습니다.
1990년대
- 그레고르 키잘레스, 짐 데 리비에레스, 다니엘 G. 보브로는 메타 오브젝트 프로토콜의 예술이라는 책을 출판했습니다.
- Eugenio Moggi와 Philip Wadler는 함수형 프로그래밍 언어로 작성된 프로그램을 구조화하기 위해 모나드의 사용을 도입했습니다.
프로그래밍 언어 이론 안에 있거나 프로그래밍 언어 이론에 깊은 영향을 미치는 몇 가지 연구 분야가 있습니다; 이들 중 많은 분야는 상당한 중복을 가지고 있습니다.게다가, PLT는 계산 가능성 이론, 범주 이론, 집합 이론을 포함한 수학의 많은 다른 분야를 이용한다.
형식 의미론
형식 의미론은 컴퓨터 프로그램 및 프로그래밍 언어의 동작에 대한 공식 사양입니다.컴퓨터 프로그램의 의미론 또는 "의미"를 기술하는 세 가지 일반적인 접근법은 표현 의미론, 운영 의미론 및 자명한 의미론이다.
유형 이론
유형 이론은 유형 시스템을 연구하는 학문으로, "계산된 값의 종류에 따라 구문을 분류함으로써 특정 프로그램 행동의 부재를 증명하는 다루기 쉬운 구문적 방법"[4]이다.많은 프로그래밍 언어는 유형 시스템의 특성에 따라 구분됩니다.
프로그램 분석 및 변환
프로그램 분석은 프로그램을 검사하고 주요 특성(프로그램 오류 클래스 없음 등)을 결정하는 일반적인 문제입니다.프로그램 변환은 프로그램을 한 형태(언어)에서 다른 형태로 변환하는 과정입니다.
비교 프로그래밍 언어 분석
비교 프로그래밍 언어 분석은 프로그래밍 언어를 그들의 특성에 따라 다른 유형으로 분류하는 것을 추구합니다; 프로그래밍 언어의 광범위한 범주는 종종 프로그래밍 패러다임으로 알려져 있습니다.
범용 및 메타프로그래밍
메타프로그래밍은 실행 시 결과적으로 다른 언어 또는 원본 언어의 하위 집합으로 프로그램을 생성하는 고차 프로그램의 생성입니다.
도메인 고유의 언어
도메인 고유의 언어는 도메인의 특정 부분의 문제를 효율적으로 해결하기 위해 구성된 언어입니다.
컴파일러 구성
컴파일러 이론은 한 언어로 작성된 프로그램을 다른 형식으로 번역하는 프로그램인 컴파일러(또는 번역자)의 이론입니다.컴파일러의 액션은 전통적으로 구문 분석(스캔과 파싱), 의미 분석(프로그램이 무엇을 해야 하는지 결정), 최적화(일부 메트릭으로 나타나는 프로그램 성능 향상; 일반적으로 실행 속도) 및 코드 생성(일부 타깃에서 동등한 프로그램 생성과 출력)으로 나뉩니다.언어, 많은 경우 CPU 명령어 세트).
런타임 시스템
런타임 시스템은 프로그래밍 언어 런타임 환경과 가상 시스템, 가비지 컬렉션 및 외부 기능 인터페이스를 비롯한 해당 구성 요소의 개발을 의미합니다.
저널, 출판물 및 컨퍼런스
회의는 프로그래밍 언어 연구를 발표하는 주요 장소입니다.가장 잘 알려진 회의로는 프로그래밍 언어의 원리(POPL), 프로그래밍 언어 설계 및 구현(PLDI), 기능 프로그래밍에 관한 국제회의(ICFP), 객체 지향 프로그래밍, 시스템, 언어 및 애플리케이션 국제회의(LAOPS)가 있습니다.ASPLOS(Programming Language and Operating Systems) 아키텍처 지원에 관한 회의.
PLT 연구를 발행하는 주목할 만한 저널로는 ACM Transactions on Programming Language and Systems(TOPLAS), Journal of Functional Programming(JFP), Journal of Functional and Logic Programming, 고차 및 심볼 계산 등이 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Abelson, Harold (1996). Structure and Interpretation of Computer Programs. Gerald Jay Sussman, Julie Sussman (2nd ed.). Cambridge, Mass.: MIT Press. ISBN 0-262-01153-0. OCLC 34576857.
- ^ http://www.c2.com/cgi/wiki?ModelsOfComputation
- ^ C. Böhm과 W. Gross(1996)CUCH의 개요. E. R. Caianiello(편집), 오토마타 이론, 35-64페이지/
- ^ 벤자민 C.피어스2002. 유형 및 프로그래밍 언어.MIT Press, 매사추세츠, 캠브리지, 미국.
추가 정보
- 아바디, 마르틴, 카델리, 루카.사물의 이론스프링거-벨라그.
- 마이클 J. C. 고든프로그래밍 언어 이론과 그 구현.프렌티스 홀.
- 건터, 칼과 미첼, 존 C. (에드)객체 지향 프로그래밍 언어의 이론적 측면: 유형, 의미론 및 언어 설계.MIT 프레스
- 하퍼, 로버트프로그래밍 언어를 위한 실용적인 기초.초안 버전
- Knuth, Donald E. (2003)컴퓨터 언어에 관한 논문 선택.스탠포드(캘리포니아):언어와 정보 연구 센터
- 미첼, 존 C프로그래밍 언어 기반
- 미첼, 존 C프로그래밍 언어 이론 소개
- 오핸, 피터 W.와 테넌트, 로버트D. (1997년)알골어족 언어이론 컴퓨터 과학의 진보.보스턴의 Birkhauser.
- 피어스, 벤자민 C. (2002)유형 및 프로그래밍 언어.MIT 프레스
- 피어스, 벤자민 C유형 및 프로그래밍 언어의 고급 항목.
- Pierce, Benjamin C. et al. (2010).소프트웨어 재단
외부 링크
- Lambda the Ultimate는 프로그래밍 언어 이론에 대한 전문 토론 및 문서 저장소를 위한 커뮤니티 웹 로그입니다.
- 프로그래밍 언어의 훌륭한 작품.벤자민 C가 수집했습니다. 피어스(펜실베이니아 대학교).
- 프로그래밍 언어와 로직의 클래식 페이퍼.Karl Crary (카네기 멜론 대학)에 의해 수집되었습니다.
- 프로그래밍 언어 연구마크 리온의 디렉토리.
- §-계산: Dana S의 Then & Now. ACM 튜링 100주년 기념식에 참석한 스콧
- 에는 프로그래밍 언어에서.POPL 2009에서 Panel 세션.