설계 기준의 역사적 변천
- 언어 설계 기준 : 언어의 구조, 특징의 구현 난이도
- 언어 평가 기준 : 실행 효율성, 판독성, 작성력, 신뢰성
- 판독성, 추상화, 복잡성 제어는 시대를 막론하고 모든 PL 설계 문제에 공통으로 해당되는 사항들이다.
1. 1950's
- 1950년대 프로세서의 처리 속도는 매우 느렸고, 절대적 메모리 공간 또한 부족했다.
- 초기의 PL 설계 기준은 Effiency of Execution(실행 효율성)이었다.
- 그 당시, PL의 프로그램 Writability(작성력)*은 실행 효율성 보다는 중요시되지 못했다.
- 그 당시, 프로그램을 작성하는 사람은 소수에 불과해 Readability(판독성) 또한 중요시되지 못했다.
* Writability : PL을 사용해서 계산을 분명, 정확, 간단, 빠르게 표현할 수 있게 하는 성질이다.
주요 프로그래밍 언어의 설계 목적
- Fortran : 실행 코드의 압축과 빠른 속도 구현을 통한 실행 효율성 향상
- Cobol : 군인들이 사용가능하도록 자연어(영어)와 유사한 문법 구조로 프로그램 판독성 제고
- Algol 60 : Block구조, Recursion 용법을 지원하여 용이한 알고리즘 작성
주요 프로그래밍 언어의 외적 성공 요인
- Fortran : IBM사의 후원
- Cobol : 미 국방성의 지원
- Lisp : AI 프로그래밍에 이용
- Pascal : 교육용, 마이크로컴퓨터의 표준 언어 역할을 수행, 그 당시 표준 프로그래밍 언어 역할
- PL/1 : IBM사의 적극적인 후원
- C : Unix와 Linux의 성공
- Ada : 미 국방성 지원
2. 1960's
- 본격적으로 프로그램의 Complexity(복잡성)이 증가되기 시작하면서 Complexity Control(복잡성 제어)의 필요성이 대두되었다.
- 복잡성을 제어할 목적으로 Abstraction(추상화)와 배우기 쉬운 형태의 PL이 요구되었다.
- Simula 67 : class를 통한 강력한 추상화 기법 제공, 이후 많은 언어들의 추상화 구현 기법에 영향을 끼침
- Algol 68 : Generality(일반성)와 Orthogonality(직교성)을 제공하여 PL의 복잡성을 감소
3. 1970's
- Simplicity(간결성)*과 Abstraction(추상화)** 개념이 중요시되기 시작했다.
- Formal(형식적인) 수학적 정의를 PL 구성에 도입하여 프로그램의 정확성을 증명할 수 있고, 이를 통해 프로그램의 신뢰성이 증진되었다.
* Simplicity를 구현한 PL : C, Pascal, Euclid, Modula-2
** Abstraction을 구현한 PL : Ada, C++
4. 1980's
- PL에 논리적, 수학적 개념의 삽입이 본격화되었다.
- Functional Language(함수형 언어)*에 대한 관심으로, ML, Miranda, Scheme과 같은 언어의 사용률이 증가했다.
- C++이 개발됨에 따라 Object-Oriented Language(객체 지향 언어)에 대한 관심도 크게 증가했다.
* 대표적인 함수형 언어로, Lisp가 있으며, 표준은 Common Lisp이다.