1.3. The Evolution of Programming Languages
1940년에 전기 컴퓨터가 처음 나왔는데 0과 1의 순서로 프로그램이 되었다.
low level operation은 location 이동, 레지스터 2개 내용 추가, 값 2개 비교 등을 함.
하지만 느리고, 지루하고, 에러 발생이 쉬웠다.
그리고 한번 작성하는 것에 있어서 이해와 수정이 어려움.
1.3.1. The Move to High-level Languages
- 1950년에 인간과 친한 assembly language 개발됨.
- assembly languages는 처음에 단순 기계언어를 기억하는 용도였다.
- 하지만 나중에 assembly에 macro 기술이 추가되서 프로그래머가 parameterized shrothands for frequently used sequnces of machine language를 정의 가능해졌음.
- 1950년 후반에 과학적인 계산 : Fortan 개발. 이는
- bussniess data processing : Cobol 개발.
- 상징적인 계산 Lisp 개발
- 이러한 언어철학은 high-level notations이 되었다.
- 쉬운 숫자 계산, 비즈니스 응용, 상징적 프로그램
- 여전히 요즘에도 성공적으로 사용됨.
이후에 쉽고 자연스럽고 robust한 언어들이 만들어짐
나중에 우리는 현재 PL에 대해서 배움.
1세대 : 기계어
2세대 : 어셈블리
3세대 : Fortan, Cobol, C, Java, ...
4세대 : SQL, NOMAD, Postscript
폰노이만 언어는 계산적인 모델의 기초가 되었음. -> 폰노이만 아키텍처
오늘날의 많은 언어들의 기초.
기능언어 : ML, Haskell, Prolog
객체지향 언어 : Simula67, Smalltalk
스크립트 언어 : 고급 연산자를 사용해서 해석 ( Awk, PHP, Javascript, Python, ...)
보통 짧은 코드를 구성해서 사용.
1.3.2. Impacts on Compilers
- Programming Language와 Compiler는 밀접한 관계다. 그래서 Programming Language 기술은 compiler writer에게 새로운 기술을 요구한다.
- 1940년 이후 Compiler writer는 새로운 PL을 알아야할 뿐만 아니라 하드웨어의 기능을 최대한 끌어내는 알고리즘을 창작해야 한다.
그래서 어려운듯.
- 컴파일러는 (overhead를 최소화 시킨)high-level languages 사용을 촉진한다.
- high-performance를 만드는 것에 있어서도 Compiler의 기능을 최대한 끌어내는 것이 중요.
1.3.3. Exercise for section 1.3.
'Compilers(Principles,Techniques,&Tools) > Chapter1' 카테고리의 다른 글
1.5. Applications of Compiler (1) | 2019.02.03 |
---|---|
1.2 The Structure of a Compiler (0) | 2019.02.03 |
Introduction + 1.1 Language Processor (0) | 2019.02.03 |