John Backus
김영택 : 서울대 컴퓨터 공학부
존 베커스 (John Backus) 는 1924 년 12 월, 미국 펜실배니어주 필라델피아에서 출생하였다. 1942 년 포츠타운의 힐고등학교 졸업후 2 차세계대전을 전후하여 군복무를 하였고 1949 년에 컬럼비아대학교에서 기초과학을 전공, 학사학위를 취득하였다. 대학졸업 후 그는 동 대학에서 수학을 1 년간 공부한 다음 IBM 사에 프로그래머로 취업했으며, 그후에는 특별한 학위과정을 이수한 기록은 없다.
BNF (Backus-Naur form) ; BNF는 프로그래밍 언어를 정의하기 위한 최초의 메타 언어였다. ALGOL 58 언어의 구문 기술을 위해 1959년에 John Backus에 의해 처음 도입되었으며, Peter Naur에 의해 강화되어 ALGOL 60을 정의하는데 사용되었다. BNF는 구문 요소를 나타내는 기호 < >, 둘 중 하나의 선택을 의미하는 기호 ∥, 좌변은 우변에 의해 정의됨을 의미하는 기호 ::= 등의 메타 기호들을 사용하여 규칙을 표현한다. BNF의 원형은 원래 "Backus normal form"이었으나, Peter Naur의 이름을 넣어 오늘날과 같이 바뀌었다.
그는 슬하에 두 딸을 두고 있는 것으로 알려지고 있는데 1985 년에는 영국의 요크대학에서 명예박사학위를 받았으며 기타 여러 곳에서 연구생활을 이수한 기록은 없다.
그는 1950 년에 IBM 사에 입사한 후 다양하고도 탁월한 연구경력을 쌓으면서 1963 년부터는 IBM 의 펠로우가 되고 그후에 캘리포니아대학교 (버클리분교) 의 객원교수를 수차 역임하는 등 화려한 경력을 쌓게 되는데, 이것은 아마도 그의 입사와 때를 같이 하여 IBM 이 컴퓨터를 개발하게 된 것이 인연이 아닌가 싶다.
그가 남다르게 화려한 학력을 갖고 있지 않으면서 오늘의 지위를 얻은 것은 그의 업적이 너무나 훌륭하기 때문이라고 볼 수밖에 없다. 그의 가장 큰 업적이라면 1950 년에서 1953 년 사이에 스피드코딩 (Speedcoding) 이라는 소프트웨어를 개발한 것과 또한 1953 년에서 1958 년 사이에 포트란 (Fortran) 이라는 컴퓨터프로그래밍 언어를 설계하여 「IBM 704」라는 기종에 구현한 것을 들 수 있다. 1960 년 알골 (Algol) 60 이라는 프로그래밍언어를 설계할 때 프로그래밍 언어의 문법과 체계를 수학적인 표현방법으로 정의하였던 것이 그의 세 번째 큰 업적이라고 보아야 하겠다.
이들 업적은 컴퓨터가 처음 발명되어 발달해나가는 과정과 일치했기 때문에 그는 초기의 컴퓨터개척자라는 행운을 한꺼번에 차지할 수 있었던 행운아라고 보는 것이 오히려 타당할지도 모른다. 결국 그의 이러한 업적은 오늘의 컴퓨터에로 발전하는 데 가로놓여있던 어려운 문제를 해결했을 뿐만 아니라 컴퓨터가 오늘의 정보산업을 이룩하는 데 밑거름이 되었다고 보아야 하겠다.
수상경력을 살펴보면 그는 컴퓨터학계의 노벨상이라고 볼 수 있는 투링상 (Turing Award) 의 수상을 비롯하여 다른 자연과학자나 공학자들이 받는 상들을 모두 수상한 것으로 볼 수 있다.
지금은 미국의 자연과학과 공학의 학술회원으로 있으면서 미국의 자연과학 및 공학을 위한 주요정책에 자문을 하고 있는 사람 중에 한 사람이기도 하다.
「베커스」의 경력은 1950 년에 IBM 에서 프로그래머로 시작된다고 볼 수 있는데 「IBM 701」기종에 스피드코딩이라는 프로그램기술을 개발하면서 그의 진로에 행운이 나타나기 시작하는 셈이다. 이 스피드코딩이란 것은 초기의 컴퓨터가 하드웨어의 결선으로 이용이 되었으나 프로그램이란 것으로 컴퓨터가 이용되도록 한 것인데, 지금의 어셈블리 (assembly) 프로그램의 시초라고 볼 수 있다.
스피드코딩의 출현은 컴퓨터를 프로그램이란 것으로 이용될 수 있도록 차츰 그 구조를 개선해 나가게 하였고 과거의 하드웨어 프로그램에서 소프트웨어 프로그램이 허용되도록 함으로써 컴퓨터는 훨씬 넓은 논리를 수용할 수 있게 되었다. 이러한 결과는 컴퓨터 소프트웨어에 새로운 가망성과 중요성을 암시하면서 컴퓨터 환경에 변화를 예고하게 되었다.
「베커스」는 스피드코딩의 경험을 토대로 1953 년부터는 컴퓨터와 사람 사이에 통화를 좀더 쉽게 할 수 있는 방법을 구상하게 되었는데 이것이 그가 「포트란」을 개발할 수 있을 것이라는 희망을 가질 수 있는 계기가 된 듯하다.
스피드코딩은 하드웨어 이용기술을 많이 쉽도록 하긴 하였으나 이용인구는 그렇게 쉽게 늘어날 수 없었다. 더 많은 사람이 컴퓨터를 이용하여 그 효과를 높이기 위해서는 더욱 편리한 이용기술을 개발해야 한다고 믿은 그는 포트란의 개발에 착수하였는데, 이 포트란은 일반 중학생 수준의 대수를 기계가 이해하여 기계가 이들 대수방정식을 처리해 주도록 설계한 것이다.
대수식 이라면 여러 가지 변수와 상수들 간에 각종 계산이 이루어지도록 한 것인데 이 식들을 컴퓨터가 인식하여 그가 처리할 수 있는 기계코드로 변환하여 처리하도록 한 것이다.
「베커스」가 스피드코딩 이후에 포트란을 구성하려고 할 때는 많은 과학자들로부터 호응을 얻지 못하였고 그가 이 프로그래밍언어를 설계하였을 때는 별로 반응이 없었다고 볼 수 있으며, 그가 2 년여에 걸쳐서 컴파일러 (compiler) 를 개발하였을 때도 보란 듯이 모두가 그의 공을 무시하려 하였다고 한다. 「컴파일러」란 컴퓨터 이용자가 수학적인 수식을 작성하여 컴퓨터에 입력을 하면 기계 안에 있는 소프트웨어가 이를 그 기계가 이해하는 코드로 변환해 주는 소프트웨어인데 이 소프트웨어를 컴파일러라고 한다. 이 컴파일러는 대수적인 수식이 컴퓨터에 입력이 되면 이들 입력을 모두 자기의 기계코드로 변환하여 기계가 처리할 수 있도록 해준다.
「베커스」는 다음 2 년간에 걸쳐서 포트란 컴파일러에 있는 각종 오류를 정리하여 그의 컴파일러는 많은 사람의 예상을 뒤엎고 가동이 되었다. 너무나 큰 성공일 뿐만 아니라 앞으로 컴퓨터과학이나 컴퓨터산업에 큰 발전을 예고하는 청신호이기 때문에 이 작업은 세인의 관심을 벗어날 수가 없게 되었다.
포트란 컴파일러의 개발은 당장 컴퓨터의 사용자 수준이 고졸 이상이면 충분하도록 되어 컴퓨터의 사용인구가 크게 늘어날 뿐만 아니라 일반 과학 발전에 크게 기여하는 현상이 발생하기 시작하였다. 일반 자연과학에서 풀리지 않던 문제들뿐만 아니라 푸는 데 지루한 시간을 요구하던 문제들이 순식간에 풀어지면서 자연과학은 이론에서 뿐만 아니라 그 운영에서 새로운 국면을 맞이하게 된 것이다. 아폴로계획 (Appolo plan) 에서 달나라까지 여행이 성공한 것은 바로 이 포트란의 힘이라고 볼 수 있는 좋은 예가 된다고 할 수 있다.
컴퓨터 이용자의 증가는 컴퓨터장비의 수요를 급격하게 늘이게 되어 각 대학이나 연구소에서는 서로 먼저 기계의 공급을 받기에 여념이 없게 되었고 컴퓨터 제작자들은 더 효율적이고 염가의 장비를 공급키 위하여 치열한 계기가 되었다. 즉 포트란 컴파일러의 개발은 컴퓨터과학과 컴퓨터산업이 발생하여 체계를 구성하고 발전하게 한 기폭제라고 볼 수 있을 정도이다.
포트란 컴파일러의 개발은 학계에 비상한 관심을 던졌을 뿐 아니라 새로운 프로그래밍언어의 발생을 자극하여 수없이 많은 프로그래밍언어들이 우후죽순처럼 솟아나게 하여 새로운 혼란을 맞게 하였다.
학계에서는 전세계의 컴퓨터과학자들이 모여 대책을 논의한 결과 가장 표준이 되며 공동적인 언어를 개발하는 데 의견의 일치를 보게 되었는데 이것이 「알골 60」의 개발계획이었다. 「베커스」는 이 언어의 표현을 모두 수학적인 방법으로 표현하면서 문법과 구조를 정의한 바 있는데 이것이 BNF (Backus Normal Form) 라고 하는 유명한 참조언어 (reference language) 로서 언어의 소통이 어려운 각국의 학자들 간에 통용되는 언어로 이용하게 되었다.
그는 「에밀 포스트」의 논문에서 이 개념을 찾았다고 하지만, 이 개념이 프로그래밍언어에 소개되면서 실용적인 면에서 위력을 발휘하게 된 셈이다. 프로그래밍언어도 자연언어와 같이 문법을 갖게 되었으며, 더구나 수학적인 완전한 문법을 갖게 되어 언어의 구조가 분명하게 되었을 뿐 아니라 수학적인 개념이 컴파일하는 기술에 자동이론을 활용할 수 있어 짧은 시간과 적은 노력으로 완성하는 혜택을 누릴 수 있게 되었다.
BNF 의 개념은 자연언어에도 적용이 가능하다는 이론과 더불어 자연언어의 처리가 컴퓨터로 될 수 있음을 시사하면서 앞으로 컴퓨터가 자연언어에도 관여할 수 있는 길을 튼 셈이다. 만일 컴퓨터가 자연언어를 이해한다면 컴퓨터 자신도 지능을 가질 수 있는 계기가 되지 않겠나 생각할 수도 있다.
「베커스」는 이상과 같은 커다란 업적을 남기면서 컴퓨터 과학계에 혜성과 같은 존재가 되었으며 컴퓨터 과학계는 튼튼한 기둥을 얻은 셈이 되었다.
1970 년부터는 캘리포니아주 산호세시에 있는 알마덴연구소에서 함수적 프로그래밍 (functional programming) 을 연구하고 있는데 그는 비록 자신이 개발하기는 하였으나 포트란이 대규모 프로그래밍에서 보여준 무기력함을 싫어하면서 프로그래밍은 어디까지나 수학적인 면모를 유지해야 하고 또한 컴퓨터도 그 속도가 어디에 제한을 받아서는 안된다고 믿고 있다.
오늘날 많은 소프트웨어가 구성되고 있는데 그 규모나 복잡성은 날로 증가해 가고 있는 반면, 컴퓨터의 하드웨어나 소프트웨어는 그 구성이 옛날 그대로라는 것이 그의 주장이다. 마치 자동차의 속도를 많이 증가시키려면 차의 모양에서부터 변해야 한다는 주장과 상통하는 이야기이다. 소프트웨어는 천정을 모르고 그 크기가 커지는데 반하여 소프트웨어 자체는 아무런 골격이 없는 것이 흠이라고 보는 것 같다. 또한 컴퓨터의 구조도 지금의 구조가 너무나도 비수학적이라는 것이 그의 의견이다.