블로그메인ct_인명사전_존 배커스_20151007.png

 

수학이나 과학 분야에서 널리 사용되는 포트란(FORTRAN)은 1954년 존 배커스(John Warner Backus)의 주도로 개발됐습니다. 포트란은 고급 프로그래밍을 위해 만들어진 최초의 언어로, 빌 게이츠가 고등학교 시절에 처음 배운 언어 역시 포트란이었다고 하죠. 오늘날 프로그래머들이 가장 기본적으로 배우는 프로그래밍 언어도 포트란이라 할 정도로 포트란은 컴퓨터 프로그래밍의 발전에 지대한 영향을 미쳤습니다. 존 배커스는 포트란 외에도 함수형 프로그래밍 언어의 기초를 확립했을 뿐 아니라 C 언어와 자바 언어의 모태가 된 ALGOL 언어를 디자인하는 등 고급 프로그래밍 언어의 기초를 세운 인물로 알려져 있는데요. 이렇게 혁혁한 업적을 세운 존 배커스는 과연 어떠한 인물이었는지 함께 알아보도록 해요~!

 

title1 (45).png

1924년 펜실베이니아 주의 필라델피아에서 태어난 존 배커스는 펜실베이니아 주 바로 아래에 위치한 델라웨어 주의 윌밍턴(Wilmington, Delaware)에서 어린 시절을 보냈습니다. 하지만 학교는 펜실베이니아 주의 포츠타운 힐스쿨(Hill School)을 다녔는데요. 일각에서는 그가 부유한 환경에서 자랐기에 힐스쿨에 입학할 수 있었다고 말하기도 합니다. 그는 공부에 관심이 없던 자신의 유년 시절을 다음과 같이 회상하기도 했습니다.

 

“나는 매년 낙제했어요. 공부를 전혀 하지 않았어요. 공부가 정말 싫어서 항상 빈둥거리며 시간을 보냈어요. 매년 뉴햄프셔 주에서 열리는 여름학교에 갔는데 그 곳에서는 항상 배를 타고 놀 수 있어서 정말 즐거웠어요”

 

1942년 고등학교를 졸업한 존 배커스는 아버지의 뜻에 따라 버지니아대학교(University of Virginia)의 화학과에 입학했습니다. 그의 아버지가 한때 화학자였기에 아들에게도 화학과를 추천한 것 같다는 의견도 있는데요. 대학교에 입학한 존 배커스는 한동안 화학에 흥미를 느꼈지만 실험실이 따분해 여전히 공부는 뒷전이었고, 결국 1943년 돌연 학교를 그만두고 군대에 입대했는데요. 한 문헌에는 존 배커스가 1학년 2학기를 다닐 무렵, 일주일에 한 번만 수업에 참가하자 학교에서 그를 제적시켰다고 전하고 있습니다.

1943년 육군에 징병돼 육군 병원에서 근무하기도 했던 존 배커스는 2차대전 후 생계를 위해 군사용 무선기술학교에 입학하게 됩니다. 여기에서 배커스의 재능을 발견한 기술선생님은 그를 떠밀다시피 해 컬럼비아 대학에 입학을 주선하죠. 덕분에 수학에 재미를 느낀 그는 1949년 학사학위를 받은 데 이어 1950년에는 석사학위까지 받았는데요. 1950년, 졸업 후 진로를 고민하다 컴퓨터에 대해 아무런 사전 지식 없이 우연히 IBM에 입사하게 됩니다.

 

1 (81).png                                                                                      ▲ 젊은 시절의 존 배커스

 

그러나 입사 후 그는 뛰어난 재능을 보이기 시작했습니다. 스피드 코딩(Speedcoding)이라는 어셈블리어를 개발하여 프로그래밍 환경을 비약적으로 개선하기에 이릅니다. 그러던 중 IBM 701/704 등의 프로젝트 경험을 통해, 당시 컴퓨터 운영 비용 중 3/4 정도의 많은 부분이 프로그래밍과 디버깅에 사용된다는 불합리한 사실을 알게 되었죠. 이러한 과정을 겪으며 배커스는 사람의 언어와 유사한 프로그래밍 언어를 개발하려는 야심 찬 계획을 가지게 되는데요. 이 계획에는 사용자로 하여금 기계어나 어셈블리어를 몰라도, 또한 기계의 동작 과정을 몰라도 충분히 사용할 수 있는 언어개발에 대한 관심도 포함되어 있었습니다. 프로그래밍 언어는 오로지 사용자가 해결하고자 하는 문제 자체의 이해에만 집중하도록 하고 싶었던 것이죠. 이에 배커스는 1953년, 어셈블리 프로그램의 단점을 획기적으로 개선할 수 있는 보다 실용적인 고급 프로그래밍 언어 개발을 결심합니다. 바로 이것이 ‘포트란’의 시작이었던 셈이죠.

★ 여기서 잠깐! 당시의 컴퓨터 프로그래밍 환경은?

1940년대 에니악(ENIAC)과 같은 초기 컴퓨터가 개발되던 그 시기에는 프로그래밍 언어라고 볼 수 있는 것이 없었습니다. 1950년대에 이르면서 IBM과 같은 기업들에 의해 다양한 형태의 실용적인 컴퓨터가 개발됨에 따라 이러한 기계를 조작한다는 의미의 프로그래밍 언어가 고안되기 시작했는데요. 대표적인 언어가 어셈블리어였습니다. 그러나 하드웨어와 밀접하게 연관된 어셈블리어는 하드웨어마다 독자적인 어셈블리어를 사용해, 이를 배우기가 쉽지 않았죠. 이러한 문제를 해소한 최초의 고급 프로그래밍 언어가 바로 ‘포트란’이랍니다!

 

title2 (46).png

존 배커스가 포트란을 개발하게 된 이유는 프로그래밍과 디버깅에 들어가는 비용이 컴퓨터 가동 비용의 약 4분의 3을 차지하고 이 비율은 컴퓨터가 싸질수록 더 높아지기 때문이었습니다. 그래서 배커스는 1953년 실용적인 고급 프로그래밍 언어의 개발을 제안하는 편지를 그의 상사에게 보냈고, 상사의 회답은 대단히 희망적이었죠. 배커스와 그의 팀은 비용에 크게 구애 받지 않고 개발을 시작할 수 있게 되었습니다.

포트란을 개발할 때 그가 가장 중요시한 것은 효율적인 면이었다고 하는데요. 그 스스로가 뛰어난 어셈블리 프로그래머였으므로, 그는 아무리 훌륭한 것을 만들더라도 만들어진 기계어 코드가 비효율적이라면 프로그래머들은 절대로 그것을 사용하지 않을 것이라는 것을 너무도 잘 알고 있었습니다. 따라서 배커스와 그의 팀에게 핵심적이 문제는 언어의 설계가 아니라 효과적인 프로그램을 만들어내는 컴파일러의 설계였습니다. 그들은 과학자와 엔지니어들이 IBM 704에서 프로그램을 작성하는 데 편리함을 느낄 수 있는 언어를 만들어내고자 했는데요.

 

2 (86).png
▲ 포트란의 개발자 존 배커스

 

배커스는 포트란 언어의 특징으로 대입문의 도입과 Do 순환문 사용등 몇 가지를 정했습니다. 그 후 수정에 수정을 거듭하여 3년이 지난 1957년, IBM 704에서 동작하는 최초의 과학 기술 계산용 고급언어가 완성되었고 FORmula와 TRANslator를 합성하여 FORTRAN이라고 명명하였습니다. 마침내 기계어나 어셈블러를 모르는 사람들도 손쉽게 컴퓨터를 이용할 수 있는 세상이 된 것입니다. 그러나 전문 프로그래머들의 반응은 냉담하기만 했는데요.

이에 IBM은 이에 한가지 꾀를 냈습니다. 모든 IBM705 사용자에게 포트란 컴파일러를 무료로 보내주기로 한 것이죠. 그 결과 사용자들의 반응은 점차 호의적으로 바뀌었고 IBM은 IBM650용 포트란도 개발하게 됩니다. 이러한 과정 속에서 포트란 사용자들은 늘어가게 되었고 점점 상위 버전도 개발되었으며, 사용자들의 다양한 반응을 반영하여 포트란 컴파일러도 여러 종류가 시중에 나오게 되었습니다. 또한, 자신에 맞는 포트란 컴파일러를 개발하는 사람들도 늘어갔죠.

이러한 상황 속에서 표준안의 제정이 시급해지자 1977년 국제회의에서는 Fortran-77을 세계 표준으로 발표하였으며, 포트란의 성공으로 고급 언어의 개발이 상업적으로 성공할 수 있음을 알려주기도 했습니다.

 

title3 (31).png

이렇듯 포트란이 컴퓨터의 대중화와 프로그래밍 개발의 역사에 한 획을 그을 수 있었던 것은 ‘가상코드’의 사용 덕분이었습니다. 그 때 까지만 해도 하드웨어가 다르면 당연히 기계어도 달랐으므로, 사람들은 모든 코드를 처음부터 다시 작성하는 것을 당연하게 받아들였는데요. 그러나 포트란은 어떤 기종에도 해당하지 않는 ‘가상코드’를 채택하였고, 이 ‘가상코드’를 통해 어떤 기종에서도 사용할 수 있게 되었습니다. 추상화된 프로그래밍 언어와 현대적 의미에서의 소프트웨어의 탄생이었던 셈이죠.

 

3 (79).png

 

포트란 컴파일러는 컴퓨터의 사용자 수준이 고졸 이상 정도 되면 충분히 사용할 수 있도록 되어 있어 컴퓨터의 사용인구가 크게 확대했을 뿐만 아니라 일반 과학 발전에 크게 기여했는데요. 일반 자연과학에서 풀리지 않던 문제들뿐만 아니라 푸는 데 지루한 시간을 요구하던 문제들이 순식간에 해결되면서 자연과학은 이론뿐만 아니라 그 운영에서 새로운 국면을 맞이하게 되기도 했습니다. 아폴로계획(Appolo plan)이었던 달나라 여행이 성공한 것도 바로 이 포트란의 힘이기도 했죠. 포트란의 보급으로 컴퓨터 이용자 역시 증가하기 시작했는데요. 이에 컴퓨터 장비의 수요가 급격하게 늘어났습니다. 즉, 포트란 컴파일러의 개발은 컴퓨터 과학과 컴퓨터 산업이 발생하여 체계를 형성하고 발전하게 한 기폭제라고 볼 수 있을 정도였습니다. 또한, 학계에 비상한 관심을 던졌을 뿐 아니라 새로운 프로그래밍언어의 발생을 자극하여 수없이 많은 프로그래밍언어들이 우후죽순처럼 생겨나게 한 계기가 되기도 했죠.

마이크로소프트 Visual C# .NET 팀의 프로그램 매니저인 에릭 거너슨은 존 배커스가 없었다면 우리는 아직도 토글 스위치나 사용하고 있을 것이라고 말하기도 했는데요. 그는 포트란을 통해 루프, 변수 할당문, goto문, 본질적인 데이터 타입을 처음으로 사용했으며 소프트웨어 개발자의 코드 포멧팅에 대한 강박관념을 처음으로 심어주기도 했습니다. 당시 첫 1-5열은 숫자 라벨을 써넣어야 하고, 한 줄에 72자이상은 인식하지 않는 등 제약이 많았었죠. 오늘날에도 수치연산이 중요한 수학, 천문학, 기계공학, 항공 및 우주공학 등 다양한 분야에서 포트란은 여전히 중요한 역할을 하고 있습니다.

 

컴퓨터의 대중화와 컴퓨터 프로그래밍의 발전을 이끈 포트란의 개발자 존 배커스. 한때는 학교의 골칫거리 학생이자 문제아였던 그가, 자신의 재능을 발견하고 인류에게 유용한 업적을 만들어내기까지의 과정은 마치 한편의 영화처럼 드라마틱한데요. 공부에 흥미가 없다고 해서, 잘할 수 있는 것이 무엇인지 모른다고 해서 미리 낙담할 필요는 없겠죠. 기회는 언제, 어디에서 다가올지 모르는 것이니 우리가 해야 할 것은 기회를 놓치지 않기 위한 철저한 준비가 아닐까 싶습니다. 오늘 만나본 존 배커스 처럼 말이죠~!