컴퓨터언어의 역사는 기계가 알기위운 기계어로부터 점차 인간이 쓰기쉽고 빠르게 프로그래밍 할 수 있는 논리언어로 발전해왔다.
수세기에 걸쳐 수학자들은 함수관계나 통계를 기술하기 위한 아주 복잡한 표기법들을 연구하고 개발해 왔다. 이러한 표기법이나 문제를 풀 수 있는 방법의 개발이 최근 디지털 컴퓨터의 계산 처리 과정을 위한 표기법 연구에 커다란 자극을 주었다. 프로그래밍 언어(programming language)란 계산처리과정을 컴퓨터가 해독할 수 있는 방법으로 표현하는 체계적인 표기법이다. 오늘날까지 무수히 많은 종류의 프로그래밍 언어들이 여러 가지 목적에 맞추어서 설계되고 사용되었는데, 이 프로그래밍 언어들은 어떻게 변천되어 왔을까.
인간과 컴퓨터의 대화
세상에서 가장 초기에 작성되었다고 알려진 알고리즘(algoriithm)은 약 3천5백년에서 5천년 전에 바빌로니아인들이 사용한 60진법 표기와 부동소숫점 표기법이었다. 여기서 알고리즘이란 주어진 문제를 해결하는 구체적인 방법을 의미하는 것으로 알고리즘이 존재한다는 것은 문제가 해결되었다는 것을 의미한다. 그 후 B.C.300년경 그리스에 살았던 유클리드는 최대 공약수를 계산하기 위한 알고리즘을 기술했다. 그는 이 알고리즘을 표현함에 있어서 주어진 단계를 반복시키는 기법을 적용했는데, 이는 현재 컴퓨터에서 중요하게 사용되는 기법인 것이다.
근대에 들어와서는 1930년대와 1940년대에 프로그래밍 표기에서 창조적인 것들이 급격히 증가하였다. 이 시기의 대표적인 것으로 '주세'의 플랜 계산기(Plan Calculus), '튜링'의 튜링기계, '처치'의 램다계산기(Lambda Calculus), '아이켄'의 마크 I(Mark I), 그리고 '폰노이만'의 유체다이어그램(Flow diagrams)등이 있다. 그러나 불행히도 이 시기 대부분의 연구들이 디지털 컴퓨터의 초기 개발자들에게 알려지지 못했는데, 만일 이 기법들이 초기 개발자들에게 알려졌다면 큰 도움이 되었을 것이다.
1세대 언어(1950-58)/기계어에서 시작
이 기간에는 컴퓨터 하드웨어가 매우 귀하고 가격이 비쌌기 때문에 인간이 사용하는 자연 언어에 가까운 고급 언어를 설계한다는 것에 경제적인 측면에서 회의를 갖게 되었다. 이 새대 초기에는 기계어만이 사용되다가 곧이어 기계에 매우 밀접하면서도 기호화된 어셈블리 언어가 주로 이용되었다. 그러나 고급 언어를 사용하려는 시도가 다각적으로 이루어져 수치과학문제 언어로 포트란Ⅰ(FORTRAN Ⅰ)과 알골58(ALGOL 58)이 대두되었으며, 자료처리 언어로는 많은 자료들을 자연어에 가까운 방법으로 기술할 수 있는 플로우매틱(FLOWMATIC)이 발표되었는데, 이 언어는 다음세대의 코볼(COBOL) 언어에 큰 영향을 미쳤다. IPL 5는 리스트(목차)처리용 언어로서 가상 기계를 설정하여 사용했으며, 이 언어는 현재의 인공 지능 언어 개발에 커다란 기폭제가 되었다고 할 수 있다. 이들 언어는 미래 프로그래밍 언어들에 대한 포괄적인 방향을 제시하게 되었다.
2세대 언어(1959-61)/백가쟁명(百家爭鳴)의 시대
이 기간은 상당히 격렬하게 언어가 개발된 시기로 네 가지 주요 언어가 대두되었고(포트란 Ⅱ, 알골 60, 코볼, LISP) 이 언어들이 그 후에 개발된 프로그래밍 언어들의 근간이 되었다.
포트란 언어는 IBM의 '백커스'가 시작한 언어이고, 알골 60은 유럽의 수학자들이 중심이 된 위원회에서 제안되었으며 포트란의 영향을 받았지만 대단히 우아하고 정교하게 설계되었다. 코볼 언어는 미국방부에서 각군에서 사용할 단일 언어의 필요성을 느껴 정부 기업 학교의 학자들로 위원회를 구성하여 개발한 언어다. 코볼에서는 자료의 기술 방법이 좋아 자료 처리가 쉽다는 점과 자연어에 가깝게 설계된 점이 높이 평가받고 있다. LISP는 MIT대학의 '맥카드'가 설계한 언어인데, 기존의 언어와는 다르게 구조의 자료를 처리하기 쉬운 언어이며 인터프리트(interpreter)언어로 정의되었다.
1960년대 초 고급언어를 기계어로 번역해 주는 컴파일러(Compiler)에 관한 연구들이 이루어져 번역에서의 많은 문제점들이 해결됨으로써 수많은 새로운 프로그래밍 언어들이 나타났다. '장 사메'(Jean Sammet)는 이 시기에 관한 연대기에서 "이 시기부터 10년 동안에 2백여 가지의 언어가 개발되고 사라졌으며, 이 중 13가지 언어에서 사용된 개념이 현재까지 이용되거나 그 언어 자체가 사용되었다"라고 말했다.
3세대 언어(1962- )/베이직과 C언어의 등장
알골60 포트란 코볼에 뒤이어 새로 개발된 언어들은 어느 한 목적을 갖지 않고 여러 분야에 적용될 수 있는 범용 언어로 개발되었다. 대표적인 언어로 IBM의 위원회에서 개발한 PL/I과 유럽의 위원회에서 개발한 알골68이 있다. 이 후 60년대의 설계자들은 특별한 목적의 언어 개발에서 범용 프로그래밍 언어의 개발로 설계 방법을 전환했다.
알골60은 그 후에 개발된 언어들에 크게 영향을 미쳤으며, '워드'가 개발한 알골 유형의 언어로 알골-W와 율러(Euler)가 발표되었다. 워드는 그 이후 다시 새로운 알골 유형의 언어인 파스칼(Pascal)을 개발했는데, 파스칼은 위의 세 가지 알골 유형 언어 중 가장 성공적인 언어로 현재까지도 많이 사용되고 있는 언어다. 이 언어는 구문이 매우 간결하다는 점과 자료형을 사용자가 선언할 수 있도록 한 점이 매우 높게 평가되었다.
또한 60년대 초반에 알골60과는 전혀 관계가 없는 APL이라는 언어가 IBM의 아이버슨 박사에 의해 개발되었다. 이 언어는 배열 원소 하나하나에 대한 연산이 아닌 배열 자체에 대한 많은 연산을 제공하는 매우 강렬한 언어다.
60년대의 말경에는 노르웨이의 '달'과 '니가드'에 의해 시뮬라(SIMULA)가 발표되었다. 이 언어는 알골60을 기본으로 하여 시뮬레이션을 쉽게 할 수 있도록 한 언어인데, 선언문과 진행(procedure)문을 묶어 주는 클래스(CLASS)개념을 소개한 점이 높이 평가된다.
1964년에는 다트마우스대학의 '케메니'교수와 '커츠'교수가 프로그램을 처음 시작하는 초보자가 배우기 쉬운 매우 간단한 대화용 언어로 베이직(BASIC)을 개발했다. 현재에도 개인용 컴퓨터에서 많이 사용하고 있으나, 언어 개념으로서 좋은 점은 별로 없다. 1974년 벨 연구소의 '리치에'가 운영체계 등 시스템 프로그래밍을 작성하기 좋은 효율적인 언어를 개발했는데, 이것이 바로 C언어다.
그러나 1970년대에는 프로그래밍 언어에 대한 도박이 거의 없었다. 알골60 LISP APL 그리고 스노볼(SNOBOL)등 60년대에 다양한 방면으로 언어가 개발된데 비해, 70년대는 기본적인 명령 프로그래밍언어 형태를 발전시키는 연구에만 집중되었다. 이 시기에 새로 개발된 언어의 대표적인 것으로 ELI CLU 컨커런트파스칼(Concurrent Pascal) MESA 유클리드 모듈라(MODULA) 스몰토크(Smalltalk)와 최근에 발표된 ADA CHILL등이 있다. 이 시기의 언어들에 있어서의 커다란 특징은 추상 자료형(abstraction data type)이라는 새로운 자료의 개념과 예외 처리(exception handling)에 관한 사항, 병행 처리에 대한 기술이 포함되고 있다는 것이다.
ADA 언어는 미국방성 주관하에 개발된 언어인데, 프랑스 하니웰-불 연구소의 연구팀에서 설계했다. 언어의 개념이 대단히 좋고 새로운 개념들이 많이 포함되었으나 언어가 너무 방대하다는 결점을 안고 있다.
4세대 언어(1980년 이후)/소프트웨어의 대량생산
제4세대 언어란 용어는 '제임스 마틴'이 처음 사용한 용어로서 아직 많은 컴퓨터 과학자들에게 정설로 받아 들여지지는 않고 있지만, 그 의미하는 바가 중요하다. 지난 30여년 동안에 프로그래밍 언어의 발전 속도는 매우 느렸다. 새로 발표된 언어들은 포트란 코볼 PL/I 파스칼 등의 언어 구조와 개념을 기본으로 하여 구문만 설계된 것이다. 그러나 최근 소프트웨어 생산성을 극적으로 증가시켜 주는 새로운 언어와 도구들이 범람하기 시작했다. 이들을 '제4세대 언어' '고생산성 언어' '비절차적 언어' '응용개발생성기'라고도 부르며 컴퓨터의 사용에 있어서 프로그래밍 효율을 증대시키고 있다.
이러한 제4세대 언어는 80년대 초부터 나타났으며, 그 종류로는 맨티스(MANTIS) 내츄럴(NATURAL) 스프레드시트 SAS 디베이스 등이 있다.
또한 인공지능기술에 기반을 둔 지식기반시스템을 중심으로 하는 언어가 90년대에 많이 나타날 것으로 보이며 이를 '5세대 언어'라고 칭하기도 한다. 1970년대 중반에 프랑스 마르세이유 대학의 '콜머로이에' 교수가 논리언어인 프롤로그(PROLOG)를 개발한 것이 이 분야 언어의 기초를 이루고 있다. 이 4세대 언어와 5세대 언어는 (표1)과 같은 특징을 가지고 있다.