d라이브러리









현대의 컴퓨터 언어

풀어쓰는 컴퓨터 역사⑪

인공지능 언어의 양대산맥 리스프와 프롤로그, 교육용으로 가장 널리 쓰이는 파스칼, 미 국방부의 주도하에 만들어진 에이다(ADA), 벨연구소의 C언어 등 현대적인 감각을 지닌 컴퓨터언어들이 잇따라 등장했다.

우리는 지난 호에서 초기 프로그래밍 언어가 탄생해 그들이 어떻게 해서 고급 프로그래밍 언어인 포트란이나 코볼까지 진화해 왔는지를 살펴보았다. 상용프로그래밍 언어로서 미국에서는 포트란과 코볼, 유럽에서는 다소 혼란이 가라앉지 않은 상태에서 알골(ALGOL)이 정착하게 됐다. 알골이 프로그래밍 언어를 과학적 연구대상으로 끌어 올리는데 기여했다면, 포트란과 코볼은 언어개발도 상업적 성공을 거둘 수 있다는 확신을 사람들에게 심어주었다. 1960년대부터 시작된 컴퓨터의 일반 보급에 힘입어 새로운 언어가 포트란과 코볼의 영화를 꿈꾸면서 여기저기서 탄생했다.

IBM은 야심적인 시스템/360을 계획하면서 새로운 언어개발까지 계획했다. PL/Ⅰ으로 명명된 이 고급언어는 포트란과 코볼의 장점, 즉 포트란의 속도와 명료성 그리고 코볼이 자랑하는 높은 가독성과 사무처리의 편리함을 목표로 삼았다. PL/Ⅰ은 시스템/360이 공개될 때 매끈한 상태로 발표되지는 못했다. 그러나 시스템/360의 후광(?) 덕택에 10여년간 많은 사람들에게 애용됐다. 일반 사용자들은 PL/Ⅰ을 좋아했다.

포트란이나 코볼 프로그래머들은 곧 PL/Ⅰ에 익숙해질 수 있었다. 그러나 학자들은 불만을 표시했다. '덩치가 너무 큰 공룡'이라느니 '1백개의 날을 가진 주머니칼'이라느니, 즉 어느 것 하나도 빠진 기능은 없지만 막상 구체적인 용도에서는 별로 큰 힘을 발휘하지 못한다는 비난을 받았다.

정말 PL/Ⅰ은 공룡의 운명과 비슷한 길을 걸었다. 80년대초 마이크로컴퓨터가 대량 보급되기 시작했다. 파스칼이나 C언어는 자그마한 덩치를 가졌기 때문에 곧 소형컴퓨터에 보금자리를 잡을 수 있었다. 그러나 덩치 큰 PL/Ⅰ은 거리를 배회하며 자신의 지을 찾았으나, 거대한 덩치의 손님을 맞이해 줄 시스템은 없었다.

리스프와 프롤로그

범용언어의 개발이 성공함에 따라서 특별한 목적에만 적합하도록 구성된 언어도 같이 발표되기 시작했다. 그 최초는 APT(Automatically Programmed Tools)였다.

APT는 특별히 CAD(컴퓨터이용설계)프로그램을 위해 만들어졌다. APT의 위력을 보이기 위해 기계절삭이 시범으로 보여졌다. CAD로 만들어진 최초의 물건은 무엇이었을까. 그것은 알루미늄으로 만든 재털이였다. 1960년대 초만 해도 미국에 그렇게 금연열풍이 불지 않았으니까 재털이가 선택됐는지도 모르겠다.

특수목적언어로서 최고의 지위에 오른 것은 리스프(LISP)였다. 리스프는 리스트(list)라는 자료구조 형식으로 구성돼 있다. 리스프의 발명자는 존 매카시라는 거물급 인공지능 학자였다. 얼굴가득 수염으로 채운 매카시는 청년시절 사회주의 이상에 심취해 좌파운동도 열심히 했다. 그리고 반전운동의 선동가로서 캠퍼스를 휩쓸고 다녔다.

리스프는 그 간단하고 명료한 구조때문에 여러 사람들의 찬사를 받았다. 특히 복잡한 인간의 사고체계나 심볼(symbol)을 처리하는 인공지능 분야에서는 없어서는 안될 존재가 됐다.

리스프의 중요한 특징은 괄호가 많아서 처음 접하는 사람에게 공포심을 준다는 것과 프로그램과 데이터의 구별이 전혀 없다는 것이다. 즉 한 프로그램이 다른 프로그램 자체를 읽어서 고칠 수 있다. 마치 사람이 사고하고 계획하는 방식 그 자체를 바꾸어버리듯이. 그리고 리스프는 설계 당시 기억장치의 한계성에 대해 전혀 고려하지 않았다. 이 덕택에 기억장치 값이 비쌀 때 리스프는 황당하고 비현실적인 언어라고 구박도 많이 받았다. 그러나 최근들어 기억장치가 저렴해짐에 따라 이런 문제는 말끔하게 해결됐다.

시간이 지남에 따라 사람들은 매카시의 선견지명에 찬사를 아끼지 않았다. 사실 리스프로 프로그램하는 일은 어렵지는 않으나 일반 포트란이나 베이직 스타일의 범용언어에 익숙해진 사람들에게는 쉽지 않다. 다익스트라와 같은 컴퓨터 학자는 일찍부터 리스프를 가르쳐야 한다고 주장했다.

우리나라에서도 대부분의 전산관련 학과에서 리스프를 고학년에서 잠시 가르친다. 그러므로 대개의 학부 졸업생에게 리스프는 생소하고 꺼림칙하게 느껴진다. 이런 교육환경은 빨리 고쳐져야 할 것이다. 필자 역시 포트란 세대여서 스스로 짠 리스프 프로그램을 보면 마치 국민학생이 삐거덕거리며 바이올린을 연습하는 느낌을 받는다. 이후 리스프는 개량을 거듭해 미국내에서 움직일 수 없는 자리를 잡게 됐다. 유럽에서도 리스프에 필적하는 아름다운 언어를 개발하고자 하는 노력이 경주됐다.

2차대전후 과학발전의 선두를 미국에게 빼앗긴 유럽은 이를 만회하기 위해 안간힘을 쓰면서 미국을 추격했다. 그러나 유럽에서 시작된 알골은 실패작으로 엉거주춤한 상태였다.

1972년 마르세이유 공과대학의 알랭 콜메로어는 프롤로그(Prolog)라는 논리언어를 개발했다. 그 구조는 리스프만큼이나 단순하고 명료했다. 특히 문제를 해결하기 위한 과정을 적어야만하는 절차적 언어(procedual language)와는 달리 단지 문제가 무엇이냐는 것만 기술함으로써 프로그램을 완성하는 획기적인 방식을 프롤로그는 제공했다.

프롤로그가 발표되자 미국의 리스프가 독주하고 있던 인공지능학계에 약간 술렁거림이 있었다. 유럽사람들의 프롤로그에 대한 애착은 상당했다. 프롤로그가 리스프보다 우수하다는 논문이 유럽을 중심으로 마구 쏟아져 나왔다.

게다가 일본이 제5세대 컴퓨터의 전체 시스템 언어로서 프롤로그를 선택함에 따라 인공지능학계의 판도가 다소 바뀌게 됐다. 그 여파로 인공지능을 연구하는 사람들은 지능을 묘사하기 위해서 리스프와 프롤로그 중 어떤 언어가 더 적합한가에 대해서 옥신각신했다.

리스프쪽에서는 장난감같은 문제에만 프롤로그가 안성마춤이라고 빈정거렸다. 이에 맞서 프롤로그 진영에서는 병렬화하든지 절차(procedure)를 사용자가 명시해야만 한다는 점에서 리스프가 진정한 인공지능용 언어가 아니며 너저분하다고 비판했다.

대개 자신이 배워온 학교의 학풍에 따라서 리스프나 프롤로그를 열렬히 지지했다. 과학계에서도 과학하는 주체가 사람인 이상, 일정 정도의 정치적인 면은 항상 노출되곤 한다. 여하튼 프롤로그는 추론하는 기능이 뛰어났기 때문에 전문가 시스템을 구성하는데 크게 환영을 받았다.
 

리스프언어를 사용하는 컴퓨터에 내장된 리스프칩
 

새 고급언어 파스칼

이같이 특수 목적언어가 속속 나타날 즈음 범용언어 사이에서도 약간의 균열이 생기기 시작했다. 그 균열은 취리히공과대학에서 시작됐다.

지난 호에서 알골 표준안의 제정과정이 얼마나 엎치락뒤치락 했는지에 대해 이야기를 했다. 이후 계속 알골의 개량형이 나왔지만 어느 누구도 만족하지 않았고, 학계나 산업계에서 사용하지 않았다. 다들 이것이 표준으로 돼야 한다고 주장하면서도 정작 자신은 사용하지 않은 것이다.

알골W가 소개되었고, 1968년에는 알골68의 표준안이 제정됐으나 실질적인 도움은 누구에게도 주지 못했다. 논란은 거듭됐다. 이런 상황에 깊은 회의를 느낀 두사람이 있었다.

한 사람은 1980년 튜링상을 수상한 옥스포드 대학의 호어이고, 또 한 사람은 니콜라우스 비르트교수였다. 특히 호어는 많은 학자들이 자신들의 소아병적인 고집만을 주장하고 있음을 개탄했다. 그래서 아예 다른 종류의 고급 언어를 개발해야겠다고 생각했다. 당시 알골68을 실제 사용하고 있었던 기관은 유럽을 통틀어 영국 레이더 연구소 한 곳 뿐이었다.

드디어 비르트가 칼을 뽑았다. 5년간 스탠퍼드대학 객원교수 생활을 마치고 돌아간 비르트는 새로운 언어의 기초를 마련했다. 그 새로운 언어는 최초의 계산기 제작자인 볼레르 파스칼의 이름을 따서 파스칼로 정했다.

파스칼의 특성은 단단한 규율에 매여 있다는 것이다. 따라서 그 단단한 규율을 따라가면서 프로그램한다면 논리상 발생하는 오류를 최소한으로 억제할 수 있다. 단단하고 많지 않은 구문규칙이 파스칼 언어의 기본 철학이었다. 따라서 파스칼은 모든 변수의 타입을 처음부터 엄격히 규정했다. 입출력기능은 알골처럼 다소 약하지만 대신 교육용으로서는 아주 적합했다.

프로그래밍의 논리적인 구조를 공부하는 데에 파스칼을 대적할만한 언어가 없었다. 대학교를 비롯해 여러 연구소에서 파스칼 바람이 술렁이기 시작했다. 그러나 파스칼이 대성공을 거둔데에 결정적인 기여를 한 사람은 괴짜 과학자인 다익스트라였다.

1970년대가 시작되면서 대형 소프트웨어를 사용하는 기업체들은 큰 문제에 봉착하게 됐다. 덩치 큰 프로그램의 사후 관리를 어떻게 하는가는 대형 소프트웨어를 구성하는 만큼이나 골치덩어리였다. 대개 프로그래머마다 즐겨 쓰는 테크닉이 다르기 때문에 대형 프로그램은 마치 국민학생들이 그려놓은 공동벽화만큼이나 어지러웠다. 더욱이 국방부같이 관리자체가 어려운 곳의 절박함은 더했다.

1970년대 중반에 이르러 소프트웨어 개발 관리비용은 하드웨어 비용을 추월해 1년에 50억달러 이상 소요됐다. 프로그래밍 작성에 일대 혁명이 필요했다.

다익스트라가 선봉에 나서 '구조적 프로그래밍기법'을 소개했고, 그동안 아무런 죄책감없이(?) 즐겨 써온 GOTO 문장에 대해서 무차별 공격을 퍼부었다. 다익스트라에 따르면 GOTO 문장은 프로그램의 논리구조를 어렵게 할 뿐만 아니라 오류발생과 그 탐색을 엄청나게 어렵게 만드는 주범이었다. 파스칼은 이런 구조적 프로그래밍이란 유행을 타고 널리 퍼졌다. 이 시기는 이후 '소프트웨어의 위기'라고 한다.

파스칼 언어는 구조적 프로그래밍에 적합해 교육용으로는 만점이었지만 현실적으로 상용화하기에는 많은 결점이 있었다. 사실 소프트웨어의 위기시기에 통용된 고급언어는 무려 1천여 가지나 됐다. 어떤 연구소에서는 40여 가지의 방언들이 난무했다.

NATO 지원받은 에이다

바벨탑의 운명이 되려는 순간 HOLWG(High Order Language Working Group)라는 위원회가 탄생해 사제의 심정으로 스러지는 바벨탑을 정화하려 했다. 범용언어를 통합해 적어도 국방관련 연구소내에서만은 육해공에 상관없이 통일시키고자 했다. HOLWG위원회를 밀어주는 단체는 NATO의 세 동맹국인 프랑스 서독 영국 그리고 미국 국방부였다. 위원장은 비행사출신의 휘테커가 맡았다. 에이다(ADA)언어는 이렇게 잉태됐다.

에이다언어는 한 위원회의 독단적 결정에서오는 문제점을 피하기 위해 여러 전문가의 조언을 충분히 받아들였다. 위원회는 당대 최고의 학자들에게 보낸 편지에서 새로운 언어를 고안하고자 하니 한가지씩 시안을 제출해 달라고 했다. 그리고 반드시 PL/Ⅰ나 알골 68 파스칼 중 하나를 근간으로 삼아야만 한다는 단서조항을 첨부했다. 알골의 철학을 뼈대로 하고 게다가 구조적 프로그램이 가능하도록 언어가 구성되어야만 한다는 것이었다.

4개의 안이 선정됐고 각 안에 대해서 공개적인 경쟁이 시작됐다. 참가자는 소프테크 인터메트릭 스탠퍼드국제연구소 하니웰-불 네군데가 선정됐다. 치열한 경쟁끝에 장 이크비아가 이끄는 하니웰-불 연합팀에게로 승리가 돌아갔다.

그 이름은 최초의 프로그래머인 어거스터 에이다의 이름을 따서 에이다로 정해졌다. 에이다는 국방관련 프로젝트와 같은 대형프로젝트에 적합하게 설계됐다. 패키지구조, 추상적 자료제공, 구조적 프로그래밍기법 등 현대의 첨단 프로그래밍 기법이 완벽히 녹아있었다. 남은 것은 그러한 규격조건에 맞는 컴파일러를 만드는 것 뿐이었다.

미 국방부에서는 에이다를 보급시키기 위해 국방부에 납품하는 프로그램은 반드시 에이다여야 한다고 못을 박았다. 그리고 에이다 컴파일러의 기준도 엄격해 어떤 방언도 허락하지 않았으며 성공여부를 위해서 무려 2천여가지의 성능 테스트가 병행됐다. 덕택에 에이다는 가장 호환성이 좋은 언어로 변했다.

에이다의 등장은 소프트웨어 업계를 뒤흔들었다. 국방부를 등에 업은 에이다는 든든했지만, 일반기업체의 반발은 예상외로 강했다. 리스프나 포트란으로 짜둔 프로그램들이 일시에 걸레로 변할 위기에 처하게 된 것이다. 포트란이나 코볼은 에이다와 조상이 같아서 적당히 고치거나, 또는 번역프로그램으로 에이다로 쉽게 바꿀 수 있지만, 리스프를 에이다로 바꾸는 일은 사람이 일일이 할 수 밖에 없었다. 더구나 그런 경우 리스프 프로그램의 특성은 완전히 사라지게 된다. 그 일은 마치 아름다운 고대 금관유물을 다시 녹여서 무덤덤한 가락지로 바꾸는 것과 같았다.

리스프 옹호론자들의 반발은 갈수록 더했다. 국방부와 국립표준국(ANSI)도 일단 한발짝 후퇴할 수 밖에 없었다. 표준국도 리스프 옹호론자들에게 할 말이 있었다. 수많은 리스프의 방언과 개량종들 모두를 받아 들일 수는 없다는 것이었다. 즉 리스프도 쓸만한 표준안을 만들라는 주문이었다. 사실 리스프도 수많은 방언을 가지고 있으므로 언젠가는 이런 작업이 필요했다. 그렇다고 초기의 매카시 버전을 수정없이 표준안으로 쓰기에는 많은 문제가 있었다. 이에 따라 코먼(common)리스프라는 표준형 리스프가 탄생했다.

국방부에 납품하는 프로그래밍언어는 이렇게 에이다와 코먼리스플 두 가지로 한정됐다. 그러나 아직 불만이 완전히 가신 것은 아니었다. 일부에서는 에이다가 PL/Ⅰ의 운명을 되풀이하는 것이 아닌지 의구심을 품고 있다. 모든 것이 다 가능하면서 아무 것도 되지 못하는…. 최근 어느 잡지에도 에이다 진영을 빈정거리는 이런 제목의 글이 있었다.

'가진 것이 해머 뿐이라면 모든 문제는 조그만 못으로 보인다'. 즉 에이다를 해머에 비교해 그 우둔함과 여러 응용분야에 민첩하지 못함을 비꼬았다.

우리는 공구함에 작은 망치 스패너 큰 망치 드라이버 등 다양한 작업도구를 갖추어둔다. 사람들은 프로그래밍 언어도 마찬가지로 보다 열려있어야 한다고 주장했다. 즉 해머 하나만 가지고 모든 집안일을 처리 할 수 없듯이 프로그래밍 작업에서도 다양함을 허용해야 한다는 것이다.
 

프로그래밍언어도 일정 정도 통일성과 다양성을 동시에 보여줘야 한다. 이것이 바벨탑을 추구했다가 실패로 끝난 프로그래밍의 역사가 가르쳐준 교훈이다.
 

C언어는 왜 인기있는가?

현재 국내외 산업계를 보면 1972년 미국의 벨 연구소에서 어줍잖게(?) 만든 C언어가 가장 인기를 얻고 있다. 이론적으로 보면 허술하고, 단순한 구조를 가지고 있지만, 그렇게 널리 쓰이는 것을 보면 다소 아이러니컬하다. 물론 유닉스(UNIX)의 활발한 보급에 편승하긴 했지만 그것이 주된 이유가 될 수는 없다. C언어가 환영받는 이유는 사람들에게 편하기 때문이다. 보통 사람은 지나치게 구문법이 엄격하거나 기절할 정도의 아름다움을 지닌 언어를 원치 않는다.

유신론적 종교관이나, 또는 그 반대편에 있는 유물론적 세계관 하나 만으로 현실의 모든 문제를 통일적으로, 완벽히 설명할 수 없듯이 프로그래밍 언어도 일정 정도의 통일성과 다양함을 동시에 보여주어야 한다. 이것이 완벽을 추구했다가 대부분 실패로 끝난 프로그래밍언어의 역사가 가르쳐준 교훈이다.

1991년 12월 과학동아 정보

  • 조환규 교수

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 정보·통신공학
이 기사를 읽은 분이 본
다른 인기기사는?