프로그래밍 언어의 역사

History of programming languages

프로그래밍 언어의 역사는 초기 기계 컴퓨터의 문서화에서 소프트웨어 개발을 위한 현대 도구에 이르기까지 다양합니다.초기 프로그래밍 언어는 수학적 표기와 유사하게 모호한 구문에 의존하여 고도로 전문화되었습니다.[1]20세기 전반에 걸쳐 컴파일러 이론의 연구는 명령어를 전달하기 위해 더 접근하기 쉬운 구문을 사용하는 고급 프로그래밍 언어의 생성으로 이어졌습니다.

최초의 고급 프로그래밍 언어는 1942년에서 1945년 사이에 콘라드 주세(Konrad Zuse)에 의해 만들어진 플랑크ü(Plankalkül)입니다.관련 컴파일러를 가진 최초의 고급 언어는 1951년 코라도 ö이 박사 학위 논문을 위해 만들었습니다.상업적으로 이용 가능한 최초의 언어는 1956년 IBM의 John Backus가 이끄는 팀에 의해 개발된 FORTRAN(FORMULA TRANslation)입니다.

초기역사

1842년에서 1849년 사이에 에다 러브레이스는 이탈리아 수학자 루이지 메나브레아의 찰스 배비지의 최신 제안 기계인 해석 엔진에 대한 회고록을 번역했습니다. 그녀는 엔진으로 베르누이 수를 계산하는 방법을 자세히 설명한 노트로 회고록을 보완했습니다.대부분의 역사학자들은 세계 최초로 출판된 컴퓨터 프로그램으로 인식하고 있습니다.[4]

최초의 컴퓨터 코드는 그들의 용도에 특화되어 있었습니다: 예를 들어, Alonzo Church람다 미적분학을 공식적인 방식으로 표현할 수 있었고 튜링 기계는 테이프 표시 기계의 작동을 추상화한 것이었습니다.

Jacquard Bomeles와 Charles Babbage의 Difference Engine은 둘 다 이 기계들이 수행해야 할 동작을 설명하기 위한 간단한 언어를[citation needed] 가지고 있었기 때문에 그들은 최초의 프로그래밍 언어의 창시자였습니다.

최초의 프로그래밍 언어

1940년대에, 최초로 인지할 수 있는 현대식 전기 동력 컴퓨터가 만들어졌습니다.제한된 속도와 메모리 용량으로 인해 프로그래머는 손으로 조정된 어셈블리 언어 프로그램을 작성해야 했습니다.결국 어셈블리 언어로 프로그래밍하는 것이 많은 지적 노력을 필요로 한다는 것을 깨달았습니다.[citation needed]

고급 프로그래밍 언어에 대한 초기 제안은 1942년에서 1945년 사이에 콘라드 주세(Konrad Zuse)가 Z1 컴퓨터를 위해 개발했지만 당시에는 구현되지 않았습니다.[5]

컴퓨터에 명령어를 전달하기 위해 설계된 최초의 기능적인 프로그래밍 언어는 1950년대 초에 작성되었습니다.1949년에 제안된 존 모츨리짧은 코드전자 컴퓨터를 위해 개발된 최초의 고급 언어 중 하나였습니다.[6]Short Code 문은 기계 코드와 달리 수학적 표현을 이해할 수 있는 형태로 표현했습니다.그러나 프로그램이 실행될 때마다 기계 코드로 해석해야 했기 때문에 동등한 기계 코드를 실행하는 것보다 프로세스가 훨씬 느렸습니다.

1950년대 초, 앨릭 글래니맨체스터 대학에서 최초로 컴파일된 프로그래밍 언어인 오토코드를 개발했습니다.1954년 R. A. Brooker에 의해 Mark 1을 위한 "Mark 1 Autocode"로 알려진 두 번째 반복 언어가 개발되었습니다.브루커는 맨체스터 대학과 함께 1950년대에 페란티 수성을 위한 자동 코드를 개발하기도 했습니다.EDSAC 2의 버전은 1961년 캠브리지 대학 수학 연구소더글러스 하트리에 의해 고안되었습니다.EDSAC 2 Autocode로 알려진 이 제품은 Mercury Autocode에서 현지 상황에 맞게 개발된 것으로, 당시 발전된 객체 코드 최적화 및 소스 언어 진단으로 유명했습니다.현대적이지만 별개의 개발 스레드인 Atlas Autocode맨체스터 대학교 Atlas 1 기계를 위해 개발되었습니다.

1954년 IBM에서 존 배커스(John Backus)가 이끄는 팀에 의해 포트란이 발명되었습니다. 이 언어는 종이 위의 디자인과 대조적으로 기능적으로 구현된 최초의 널리 사용되는 고급 범용 언어였습니다.[7][8]FORTRAN이 처음 소개되었을 때, 버그, 개발 지연, 조립식으로 작성된 "핸드 코딩" 프로그램의 비교 효율성 등으로 인해 회의적인 시각으로 여겨졌습니다.[9]그러나 빠르게 진화하는 하드웨어 시장에서 언어는 결국 효율성으로 알려지게 되었습니다.여전히 고성능 컴퓨팅으로 인기 있는[10] 언어이며 세계에서 가장 빠른 TOP 500 슈퍼컴퓨터를 벤치마킹하고 순위를 매기는 프로그램에 사용됩니다.[11]

FLOW-MATIC이라는 이름의 또 다른 초기 프로그래밍 언어는 미국의 Grace Hopper에 의해 고안되었습니다.1955년부터 1959년까지 레밍턴 랜드UNIVAC I을 위해 개발되었습니다.Hopper는 비즈니스 데이터 처리 고객들이 수학적 표기에 불편함을 느낀다는 것을 발견하고 1955년 초에 그녀와 그녀의 팀은 영어 프로그래밍 언어에 대한 사양을 작성하고 시제품을 구현했습니다.[12]FLOW-MATIC 컴파일러는 1958년 초에 공개되었으며 1959년에 실질적으로 완성되었습니다.[13]Flow-Matic은 COBOL의 설계에 주요한 영향을 미쳤는데, 당시에는 Flow-Matic과 그것의 직계 후손 AIMACO만 사용되었기 때문입니다.[14]

오늘날에도 여전히 사용되고 있는 다른 언어로는 존 매카시가 발명한 LISP(1958)와 근거리 위원회가 만든 COBOL(1959)이 있습니다.1950년대 후반의 또 다른 획기적인 사건은 미국과 유럽의 컴퓨터 과학자들로 구성된 위원회에 의해 "알고리즘을 위한 새로운 언어"인 ALGOL 60 보고서(ALGORithmic Language)를 출판한 것입니다.이 보고서는 당시 유통되고 있던 많은 아이디어를 통합하고 다음과 같은 세 가지 주요 언어 혁신을 특징으로 했습니다.

  • 중첩된 블록 구조: 코드 시퀀스 및 관련 선언은 별도의 명시적으로 명명된 절차로 변환할 필요 없이 블록으로 그룹화될 수 있습니다.
  • 어휘 범위: 블록은 고유한 개인 변수, 절차 및 기능을 가질 수 있고, 블록 외부의 코드, 즉 정보 숨김을 보이지 않을 수 있습니다.

이와 관련된 또 다른 혁신은 언어를 설명하는 방법에 있었습니다.

  • 수학적으로 정확한 표기인 BNF(Backus-Naur form)가 언어의 구문을 설명하는 데 사용되었습니다.거의 모든 후속 프로그래밍 언어는 구문의 문맥 없는 부분을 설명하기 위해 BNF의 변형을 사용했습니다.

알골 60은 특히 후기 언어의 디자인에 영향을 미쳤고, 그 중 일부는 곧 더 인기를 끌게 되었습니다.Burroughs 대형 시스템은 확장된 ALGOL 서브셋에 프로그래밍되도록 설계되었습니다.

ALGOL의 주요 아이디어는 계속되어 ALGOL 68을 만들었습니다.

  • 구문 및 의미론은 익명의 루틴, 고차 함수를 갖는 재귀적 타이핑 시스템 등과 함께 훨씬 더 직교하게 되었습니다.
  • 문맥이 없는 부분뿐만 아니라 전체 언어 구문과 의미론이 형식적으로 정의되었습니다. 이 목적을 위해 특별히 고안된 형식주의인 Van Wijgaarden 문법의 관점에서 말입니다.

ALGOL 68의 많은 사용 빈도가 낮은 언어 기능(예: 동시 및 병렬 블록)과 구문 단축키 및 자동 유형 강제의 복잡한 시스템으로 인해 구현자들에게 인기가 없었고 어려운 것으로 명성을 얻었습니다.Niklaus Wirth는 실제로 더 단순한 파스칼 언어를 만들기 위해 디자인 위원회를 떠났습니다.

포트란

이 시기에 개발된 몇 가지 주목할 만한 언어는 다음과 같습니다.

기본적인 패러다임의 수립

스킴

1960년대 후반에서 1970년대 후반까지의 기간은 프로그래밍 언어의 주요 개화를 가져왔습니다.현재 사용되고 있는 대부분의 주요 언어 패러다임은 이 시기에 발명되었습니다:[original research?]

1960년대와 1970년대에는 또한 구조화된 프로그래밍의 장점에 대한 상당한 논쟁이 있었는데, 이는 본질적으로 사용되지 않는 프로그래밍을 의미했습니다.goto. 프로그래머의 상당 부분이 다음을 제공하는 언어에서도goto, 드문 경우를 제외하고는 그것을 사용하는 것은 나쁜 프로그래밍 스타일입니다.이 논쟁은 언어 디자인과 밀접한 관련이 있었습니다: 어떤 언어들은 그렇지 않았습니다.goto, 구조화된 프로그래밍을 사용하도록 강요했습니다.

훨씬 더 빠른 컴파일 시간을 제공하기 위해 일부 언어는 "원패스 컴파일러"를 위해 구성되었으며, 파스칼은 주요 루틴 또는 드라이버 기능이 프로그램 목록의 마지막 섹션인 것처럼 하위 루틴이 먼저 정의될 것으로 예상합니다.

이 시기에 개발된 몇 가지 주목할 만한 언어는 다음과 같습니다.

1980년대: 통합, 모듈, 성능

로고스
매트랩
에를랑
Tcl

1980년대는 명령어에서 상대적으로 통합된 해였습니다.이 모든 운동들은 새로운 패러다임을 발명하기 보다는 지난 10년 동안 발명된 아이디어를 정교화했습니다.C++ 결합 객체 지향 및 시스템 프로그래밍.미국 정부는 방위산업체들이 사용하기 위한 시스템 프로그래밍 언어인 에이다를 표준화했습니다.일본 등에서는 로직 프로그래밍 구조를 통합한 이른바 5세대 프로그래밍 언어를 조사하는 데 막대한 비용이 지출되었습니다.ML과 리스프를 표준화하기 위해 기능 언어 커뮤니티가 움직였습니다.게으른 평가를 가진 기능적 언어인 미란다에 대한 연구는 이 10년 동안 진행되기 시작했습니다.

언어 설계의 중요한 새로운 경향 중 하나는 모듈 또는 코드의 대규모 조직 단위를 사용하여 대규모 시스템을 위한 프로그래밍에 초점을 맞춘 것입니다.Modula, Ada, ML 모두 1980년대에 주목할 만한 모듈 시스템을 개발했습니다.모듈 시스템은 종종 일반적인 프로그래밍 구조에 결합되었습니다: 제네릭은 본질적으로 매개변수화된 모듈입니다[citation needed](객체 지향 프로그래밍의 다형성 참조).

명령형 프로그래밍 언어에 대한 주요한 새로운 패러다임은 나타나지 않았지만, 많은 연구자들은 이전 언어의 아이디어를 확장하고 새로운 맥락에 적응시켰습니다.예를 들어, Argus와 Emerald 시스템의 언어는 객체 지향 프로그래밍을 분산 컴퓨팅 시스템에 적용했습니다.

1980년대는 프로그래밍 언어 구현에도 발전을 가져왔습니다.컴퓨터 아키텍처의 축소된 명령어 세트 컴퓨터(RISC) 운동은 하드웨어가 인간 조립 프로그래머를 위해 설계되어야 한다고 가정했습니다.중앙처리장치(CPU) 속도가 향상되어 점점 더 공격적인 컴파일 방법이 가능해졌기 때문에 RISC 운동은 고급 언어용 컴파일러 기술에 대한 더 큰 관심을 불러일으켰습니다.

언어 기술은 1990년대까지 이러한 노선을 따라 계속되었습니다.

이 시기에 개발된 몇 가지 주목할 만한 언어는 다음과 같습니다.

1990년대: 인터넷 시대

로고스
해스켈
루아
PHP
레볼

1990년대 중반 인터넷의 급속한 성장은 프로그래밍 언어에서 그 다음으로 중요한 역사적 사건이었습니다.컴퓨터 시스템을 위한 근본적으로 새로운 플랫폼을 열면서, 인터넷은 새로운 언어가 채택될 수 있는 기회를 만들었습니다.특히 자바스크립트 프로그래밍 언어는 넷스케이프 네비게이터 웹 브라우저와의 초기 통합으로 인기를 끌었습니다.다양한 다른 스크립트 언어들은 PHP와 같은 웹 서버를 위한 맞춤형 응용 프로그램을 개발하는 데 널리 사용되었습니다.1990년대는 명령어에서 근본적인 새로움이 아니라 오래된 생각들을 재조합하고 성숙시키는 것을 보았습니다.이 시대는 기능적 언어의 보급을 시작했습니다.가장 큰 추진 철학은 프로그래머 생산성이었습니다.많은 RAD(Rapid Application Development) 언어들이 등장했는데, 이 언어들은 보통 통합 개발 환경(IDE), 쓰레기 수집과 함께 나오고, 오래된 언어들의 후손이었습니다.모든 언어는 객체 지향적이었습니다.여기에는 Object Pascal, Object Caml(OCaml로 이름 변경), Visual Basic, Java가 포함되었습니다.특히 자바는 많은 관심을 받았습니다.

RAD 언어보다 더 급진적이고 혁신적인 것은 새로운 스크립팅 언어였습니다.이러한 기능은 다른 언어에서 직접 파생되지 않았으며 새로운 구문과 기능의 보다 자유로운 통합을 특징으로 합니다.많은 사람들은 이러한 스크립팅 언어가 RAD 언어보다 더 생산적이라고 생각하지만, 종종 작은 프로그램을 더 단순하게 만들지만 큰 프로그램을 작성하고 유지하기가 더 어렵게 만드는 선택 때문입니다.[citation needed]그럼에도 불구하고 스크립팅 언어는 웹과 관련하여 사용되는 가장 중요한 언어가 되었습니다.

이 시기에 개발된 몇 가지 주목할 만한 언어는 다음과 같습니다.

현재동향

프로그래밍 언어의 진화는 산업과 연구 모두에서 계속되고 있습니다.최근 동향 중 일부는 다음과 같습니다.

로고스
D
그루비
파워쉘
긁다

이 시기에 개발된 몇 가지 주목할 만한 언어는 다음과 같습니다.[17][18]

다른 새로운 프로그래밍 언어로는 Red, Crystal, Hack, Haxe, Zig, Reason 등이 있습니다.

주요 인물

일부 혁신가
데니스 리치
니클라우스 워스
그레이스 엠.호퍼
비에른 스트러스트럽
안데르스 헤일스베르크
귀도 반 로섬
마츠모토 유키히로

프로그래밍 언어를 개발하는 데 도움을 준 주요 인물은 다음과 같습니다.

참고 항목

참고문헌

  1. ^ 호퍼 (1978) 16쪽.
  2. ^ Knuth, Donald E.; Pardo, Luis Trabb. "Early development of programming languages". Encyclopedia of Computer Science and Technology. Marcel Dekker. 7: 419–493.
  3. ^ 코라도 ö의 박사학위논문
  4. ^ Fuegi, J.; Francis, J. (October–December 2003), "Lovelace & Babbage and the creation of the 1843 'notes'", Annals of the History of Computing, 25 (4): 16–26, doi:10.1109/MAHC.2003.1253887
  5. ^ 1998년과 2000년에는 역사적 연습으로 언어를 위한 컴파일러가 만들어졌습니다.로하스, 라울 등.(2000)."플랑칼ü:최초의 고급 프로그래밍 언어와 그 구현."Institut frame Informatik, Freie Universität Berlin, 기술 보고서 B-3/2000. (전문)
  6. ^ Sebesta, W.S. (2006). Concepts of Programming Languages. p. 44. ISBN 978-0-321-33025-3.
  7. ^ "Fortran creator John Backus dies – Tech and gadgets". NBC News. 2007-03-20. Retrieved 2010-04-25.
  8. ^ "CSC-302 99S : Class 02: A Brief History of Programming Languages". Math.grin.edu. Archived from the original on 2010-07-15. Retrieved 2010-04-25.
  9. ^ Padua, David (Feb 2000). "The FORTRAN I Compiler" (PDF). Computing in Science and Engineering. 2 (1): 70–75. Bibcode:2000CSE.....2a..70P. doi:10.1109/5992.814661. Retrieved 7 November 2019.
  10. ^ Eugene Loh (18 June 2010). "The Ideal HPC Programming Language". Queue. Association of Computing Machines. 8 (6).
  11. ^ "HPL – A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers". Retrieved 2015-02-21.
  12. ^ 호퍼 (1978) 16쪽.
  13. ^ Sammet (1969) p. 316
  14. ^ Sammet (1978) p. 204.
  15. ^ Gordon, Michael J. C. (1996). "From LCF to HOL: a short history" (PDF). p. 3. Retrieved 2015-05-04. Edinburgh LCF, including the ML interpreter, was implemented in Lisp.
  16. ^ Manjoo, Farhad (July 29, 2020). "How Do You Know a Human Wrote This?". The New York Times. ISSN 0362-4331. Retrieved August 4, 2020.
  17. ^ "TIOBE Index, Top 100 programming languages according to TIOBE Index". www.tiobe.com. TIOBE index. 25 May 2018.
  18. ^ "GitHub's Octoverse 2018". Archived from the original on 2019-03-22.
  19. ^ Rojas, Raúl; Hashagen, Ulf (2002). The First Computers: History and Architectures. MIT Press. p. 292. ISBN 978-0262681377. Retrieved October 25, 2013.

더보기

외부 링크