d라이브러리









프로그래밍언어의 행진

풀어쓰는 컴퓨터역사⑩

컴퓨터언어는 기계가 이해하기 쉬운 기계어에서 점차 인간이 사용하기 편리한 고급언어로 발전해왔다.

바벨탑은 왜 무너졌을까. 그것은 A급 태풍이나 강력한 지진에 의해서가 아니었다. 탑을 건설하고자 하는 인간들이 혼란스런 언어때문에 서로 의사소통을 하지 못했기 때문이었다. 언어의 혼란이 빚어낸 최초의 비극으로 기록된다. 물론 설화에 의한 것이긴 하지만.

옆 그림을 보면 컴퓨터시대의 새로운 바벨탑이 있다. 이 그림은 컴퓨터 과학자인 진 새멋이 혼란스럽게 발표된 프로그래밍언어를 비유해서 표현한 것이다. 수많은 국제회의와 첨단기업들간의 암투로 점철된 프로그래밍언어의 세계가 이 속에 고스란히 녹아있다. 우리는 이 바벨탑이 어떻게 쌓여져 왔는지 살펴볼 필요가 있다.

최초의 컴퓨터 에니악에서 프로그래밍 작업을 한 사람은 마치 국수집 점원같았다. 작업을 제대로 수행하기 위해서 수천개의 토글(toggle)스위치를 손으로 재조정 해야만 했다. 그리고 수백개의 케이블 뭉치를 들고서 제 위치에 꼽기 위해 이리저리 뛰어다녀야만 했다. 프로그램이 다 된 에니악은 영락없이 국수 뽑은 기계모양으로 변해 있었다. 여기저기서 케이블이 삐져나와 온통 기계를 뒤덮었다. 이건 완전히 체력전이었다. 프로그램만 있고 프로그래밍 언어의 개념이 전혀 없을 때의 이야기다.
 

포트란은 파스칼이 출현하기 전까지 과학기술분야 컴퓨터언어의 대명사였다. 수십종의 포트란 변종이 나타나자 77년 국제회의에서 「포트란 77」을 세계 표준으로 정하기도 했다.


기계어 시대

근대적 의미의 프로그래밍 언어에 대한 기초는 2차대전 패전국인 독일 출신의 공학자 콘라드 추제에 의해서 마련됐다. 연합군의 십자포화 소리를 들으며 추제는 바이에른 근처의 한 마을로 피신했다. 그곳에서 그는 자신이 설계한 Z4 전자식 계산기에서 동작순서를 기호로 표시하기 위한 표시시스템에 대해서 생각했다. 그리고 노트에 몇가지 중요한 개념을 정리해 두었다. 그 발상은 획기적인 것이었지만 먼지에 쌓인 원고가 빛을 보게 된 것은 무려 30여년이 지난 1972년에 이르러서였다. 추제의 아이디어는 패전국의 운명과 같았다.

전승국 미국과 영국에서도 국수 뽑기식 프로그래밍의 한계를 분명히 깨닫기 시작했다. 그 선두에는 그레이스 머레이 호퍼(Grace Muray Hopper)라는 아주 조그만 체구의 여성 과학자가 버티고 있었다. 호퍼는 에커트모클리사에서 생산한 유니백컴퓨터에 어떻게 하면 보다 나은 프로그래밍 체계를 심어줄까를 연구했다. 그녀의 방식은 사실상 추제와 동일하게 대수학에 쓰이는 용어를 이용해 기계에 입력을 시키는 것이었다. 따라서 수학에 익숙한 사람들은 복잡한 2진법이나 8진법대신 자신들이 흔히 보아온 수학기호를 쓰게 되었다.

1949년 호퍼에 의해서 최초의 원시적 인터프리터인 쇼트코드(Short Code)가 탄생했다. 쇼트 코드는 이후 윌크스(Wilkes)에 의해서 확장, 정리되어 어셈블러(assembler)로 나타난다. 어셈블러는 간단한 표현의 기호를 하나씩 기계명령으로 바꾸어주는 번역기였다. 그때부터 프로그래머들은 어셈블러가 지원해주는 기호를 암기했다.

그러던중 1952년 영국 출신의 애릭 글레니에 의해서 오토코드(Auto Code)란 고급언어 번역기가 발표됐다. 오토코드는 마크 I 컴퓨터에 사용됐으며, 최초의 컴파일러로 기록된다. 따라서 쇼트 코드와 달리 오토코드에서 번역된 기계어프로그램은 저장이 가능하며, 사용할 때마다 그냥 불러다 쓰기만 하면 됐다. 서브루틴이라는 개념이 이때부터 생겨났다.

그러나 글레니의 천재적인 아이디어는 많은 프로그래머들에게 경계의 눈초리를 받았다. 그 시절 암호와 같은 어셈블리언어나 그보다 더한 기계어로 능수능란하게 프로그램하는 능력은 신비스런 기술로 추앙받았다. 자기만의 프로그래밍 비법을 숨기고 있는 터라 누구나 쉽게 프로그램할 수 있는 도구의 출현은 웬지 꺼림직했다.

새로운 기술에 대한 전통적 기술의 기득권자들이 보이는 맹렬한 저항은 어느 시대든지 있어 왔다. 오토코드를 본 전문프로그래머들의 가슴은 뜨끔했다. 하늘의 기술이 땅에 내려오는 것을 막아야만 했다. 그러나 컴퓨터사용의 폭발적인 요구는 새로운 프로그래밍 기술의 도입을 강력히 요청하고 있었다. 신전을 지키며 버텨온 프로그래머는 신전을 떠나든지 아니면 새로운 경전(프로그래밍 언어)을 공부해야만 했다.

이후 호퍼는 오토코드보다 나은 A-O라는 언어번역시스템을 고안해 그 이름을 최초로 컴파일러(Compiler)라고 붙였다. A-O는 A-1, A-2의 개량형으로 이어졌다. 호퍼가 일한 레밍턴 사업부에서는 그 컴파일러에 매스매틱(Math-Matic)이란 이름을 붙여 널리 선전했다. 컴퓨터의 급속한 보급과 함께 컴파일러의 보급도 가속화됐다. 그러나 일반적인 사용자들이 대수적 기호나 표현에 익숙할 리는 만무했다. 예나 지금이나 수학은 보통사람들에게 공포의 대상이기 때문에 컴파일러가 일반사용자에게 만만해보이지는 않았다.

호퍼와 그의 팀은 보다 영어문장같이 보이는 프로그래밍언어의 자료처리를 위해 필요한 동사, 예를 들면 더하라(Add), 비교하라(Compare), 옮겨라(Move)등을 추려보니 30여개가 됐다. 이 동사를 기호로 하여 드디어 플로매틱(Flow-Matic)이라는 상업용 컴파일러가 등장하게 되었다. 플로매틱은 이후 폭발적으로 증가하는 프로그래밍 언어개발의 물꼬를 터 놓았다. 이와 유사한 스피드코딩이라는 컴파일러도 IBM-701컴퓨터와 함께 개발됐다.

포트란의 성공

진정한 의미의 프로그래밍언어 시대는 포트란(FORTRAN)과 함께 시작됐다. 1957년 웨스팅하우스 원자력연구소에서 포트란 컴파일러의 성능테스트가 있었다. 테스트는 대성공이었고, 참가한 연구원들은 탄성을 멈출줄 몰랐다.

성공의 장본인은 어린 시절 비행청소년의 첨단을 달린 존 배커스(John Backus)였다. 배커스는 고교시절, 자신이 마지막으로 다닌 고등학교가 어딘지도 모를 정도로 많은 학교에서 퇴학당했다. 거리를 배회하던 배커스는 군에 입대했다. 2차대전 끝난뒤 배커스는 군사용 무선기술학교에 입학해 밥벌이 길을 찾고 있었다. 그러다 한 기술선생님의 선견지명으로 그는 컬럼비아대학에 떠밀려 입학하게 된다. 이 학교에서 수학석사를 마친 배커스는 IBM에 입사하여 스피드코딩 번역기작업에 참여했다.

배커스는 인간의 사용언어와 유사한 언어를 개발하려는 야심을 가지고 있었다. 즉 사용자로부터 기계어나 어셈블리언어를 분리시켜 컴퓨터 동작과정을 잘 몰라도 필요한 일을 할 수 있게끔 하려는 것이었다. 따라서 효율적인 프로그래밍언어는 사용자를 해결하고자 하는 문제자체의 이해에만 집중하게 한다. 배커스가 주도한 포트란팀은 포트란언어의 특징을 몇 가지로 정했다. 먼저 대입문(X=15)를 도입했으며, 반복루프구조를 도입했다. 이제부터는 반복순환을 사용자가 작성할 필요가 없이 단순히 포트란의 Do루프구조를 불러쓰기만 하면 됐다.

수정에 수정을 거듭하여 포트란 컴파일러가 1957년 4월 발표됐다. 역시 전문 프로그래머들의 반응은 냉담했다. IBM은 한 꾀를 생각해냈다. IBM705사용자에게는 공짜로 포트란 컴파일러를 보내주었다. "까짓것 공짜라는데…". 사람들의 경계심은 다소 수그러졌다.

1958년에는 40여개소에서 포트란 컴파일러가 사용됐다. 여기저기서 웅성거리는 소리가 들렸다. "거 생각보다 쓸만한데". 소문은 소리없이 퍼졌다. 신이 난 IBM은 IBM650 시스템용 포트란도 개발했다. 사용해본 사람들이 늘어남에 따라 불만의 소리도 많았다. "이건 이렇게 하면 좋겠고, 저건 저렇게". 1958년과 1962년에 포트란 II III IV버전이 속속 발표됐다. 사람들은 포트란을 자신에게 맞도록 약간씩 땜질했다. 시중에 떠도는 포트란 변종의 수가 수십종이나 됐다. 따라서 표준안의 확립이 시급하게 됐다. 그 결과 1977년 국제회의에서 포트란-77을 세계 표준으로 확립했다. 지금도 포트란을 배우는 사람이라면 포트란-77을 배우게 된다.

포트란의 성공은 고급프로그래밍언어의 성공이 상업적인 이득을 가져다 줄 수 있음을 보여주는 계기가 됐다. 이제는 너도나도 돈벌이가 되는 고급언어 컴파일러 개발에 뛰어들었다. 사무용 컴퓨터 사용자들이 먼저 불만을 토로했다. 회사에서 필요한 것은 고차미분방정식을 푸는 것이 아니고 급료나 세금계산을 신속히 하는 것이었다. 또한 보고서 작성, 고객 관리 등이었다. 이러한 업무에 포트란은 다소 부적합했다.

잡초처럼 끈질긴 코볼

이런 업체들의 요구가 1959년 펜실베이니어대학의 한 회의에서 터져나왔다. 그러나 모두들 아전인수식 요구만 했다. 회의가 거듭 될수록 혼란만 가중됐다. 한가지 결론이 나왔다. 그것은 그 누구도 객관적이지 못하기 때문에 중립적인 판정관을 새로이 선택하자는 것이었다. 판정관은 당시 최대의 자금줄인 국방부였다. 왕년의 스타인 호퍼여사가 국방부를 방문해 문제의 심각성을 지적했다. 아닌게 아니라 국방부 역시 언어의 혼란성에 깊은 우려를 나타냈다.

국방부 주최의 긴급위원회가 소집됐다. 새로운 사무용 언어의 표준화 작업에 모든 회사들이 찬성했다. 그러나 그 속셈은 표준안이 어느 특정 회사로 넘어가는 시장 독점을 막아보겠다는 것이었다. 자기 회사의 요구사항이 완벽히 받아들여지지 않을 바에야 남 잘되는 것도 못본다는 심사였다. 특별회의가 소집됐다.

회의는 그 유명한 CODASYL(Conference On Data Systems Language)였다. 회의 결과 몇개의 위원회가 각 회사의 대표들로 구성됐다. 각 위원회에서는 서로 자신들의 안을 고수하기 위해 끊임없이 싸웠다. 탄생될 언어의 이름은 코볼(COBOL)로 정해졌다. 그런데 갑자기 IBM이 자신이 속한 단기작업위원회에서만 언어를 설계할 수 있다고 우겼다. 왜냐하면 IBM은 자신들이 열심히 개량하고 있던 커머셜트랜스레이트라는 상업용컴파일러가 표준안으로 채택되기를 강력히 희망했기 때문이었다. 그러자 갑자기 모두들 벌떼같이 들고 일어났다.

하니웰이 속한 위원회에서는 자신들이 은밀히 만들어온 FACT(Fully Automatic Compiling Technique)라는 언어로 코볼을 대치해야 한다고 우겼다. 거의 완성된 FACT의 위력은 대단했다. 불안을 느낀 나머지 회사들이 단결해 FACT를 몰아 냈다. 담합의 결과 1960년 1월에 열린 전체집행위원회에서 FACT안이 투표결과 참패를 당했다. 우여곡절끝에 코볼안이 통과됐다. IBM과 하니웰의 공격에 맞선 나머지 기업들의 연합전선이 성공했다. 1960년 4월에는 코볼이 공표되어 여러 회사에서 다투어 컴파일러개발에 몰두했다.

코볼은 그 커다란 덩치때문에 공룡이라는 별칭도 있지만 아직까지 상업용으로 건재하다. 코볼은 방대한 양의 데이타처리에 유리했으며 특히 보통의 영문과 표현이 유사해 읽기가 수월했다. 그 덕택에 전체 프로그램의 길이는 좀 늘어나지만 별 문제가 아니었다. 한편 다익스트라같은 컴퓨터 과학자는 "컴퓨터 과학도에게 코볼이나 포트란을 가르치는 것은 중벌로 다스려야 한다"고 혹평했다.

상업용 프로그램의 초기 시장을 석권한 코볼의 생명은 많은 학자들의 저주와 험담에도 불구하고 오랫동안 지속되고 있다. 비록 몇번의 개정이 따르긴 했지만. 어떤이는 코볼을 잡초와 같다고 했다. 아무리 뜯어내도 어느새 다시 피어나는 언어라고 비아냥거리기도 한다. 코볼은 깐깐한 과학자들의 성미엔 도무지 맞지 않았다.

현대 언어의 산파 알골

언어자체에 관심이 많은 학자들은 정말로 깨끗하고 아름다운 언어를 만들어 보려고 했다. 전자기학에서 맥스웰의 방정식을 '아름다운 여섯개의 방정식'으로 부르듯이 보다 수학적으로 잘 짜여진 언어에 대한 욕심이 학자들사이에 생겼다. 그런 사연으로 알골(AlGOL, Algorithmic Language)이 탄생했다.

알골 역시도 수많은 싸움끝에 탄생했다. 그러나 그 배경에는 갈수록 부흥하는 신대륙(미국)의 위세에 위기를 느낀 구대륙(유럽)의 반항이 섞여있다.

1958년 5월28일 취리히 공과대학에서 과학기술용 범용언어에 대한 회의가 열렸다. 배커스도 초대 됐다. 학자들 특유의 소아병적 고집이 나타나기 시작했다. 소수점을 문장의 분리기호로 쓸 것인가의 문제로 격론이 벌어졌다. 위원장인 웨그슈타인의 중재로 그 문제는 뒤로 돌려진채 각자 방에서 분을 삭인 대표들은 다시 회의장으로 돌아와 회의를 진행했다.

사소한 논쟁을 피하고 구조의 아름다움만 추구하다보니 입출력과 같은 사소한(?) 규정에 소홀 했다. 그 결과 알골은 포트란의 인기를 따라잡지는 못했지만, 이 후에 나타날 파스칼(PASCAL) 등과 같은 현대 언어의 탄생에 산파역을 충실히 했다. 특히 배커스 표준형식(BNF, Bactus Normal Form)이 도입돼 언어설계는 단순한 장인들의 기술수준에서 하나의 훌륭한 언어과학으로 진일보하게 됐다. 미국의 포트란 추종자들은 알골을 무자비하게 헐뜯었다. 입출력도 제대로 없다는 등, 구조가 모호하다는 등, 그러나 유럽인들은 알골을 아꼈다. 이후 알골은 유럽 컴퓨터계의 국제어로 채택됐다. 미국에서는 알골이 갈수록 시들어갔다.

그러나 알골의 설계에 담긴 철학은 살아있었다. 블록구조, 자기 호출기능(recursion), BNF형식에 의한 구문정의-이는 알골의 선물이었다. 이 선물을 이어받은 파스칼은 알골이 포트란에게 당한 멸시를 멋지게 갚아주었고, 포트란 숭배자들에게 맹렬한 포격을 가했다. 그 결과 파스칼은 미국 대학에서 거의 완벽히 포트란을 밀어내고 교육용언어로서 확고부동한 자리를 잡게 됐다.

그레이스 호퍼여사의 표현대로 알골은 기절할 정도의 절묘한 구조의 아름다움이 있지만, 아무도 쳐다보지 않아 좀 쓸쓸할 따름이었다. 쓸쓸한 아름다움, 이는 알골의 운명이었다. 입출력도 제대로 없는 알골은 먹지도, 배설하지도 않는 우아한 천사들이 천국에서 열심히 사용하고 있는지도 모른다.

이 기사의 내용이 궁금하신가요?

기사 전문을 보시려면500(500원)이 필요합니다.

1991년 11월 과학동아 정보

  • 조환규 교수

🎓️ 진로 추천

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