문제 해결사 팀을 만들다

미국에서는 특히 컴퓨터 업계에서 머리를 써야 하는 난제인, 일명 '브레인티저(brainteaser)' 면접 질문을 적극 활용해왔다. 통상 IBM이 이 분야의 시초로 여겨진다. IBM의 전설적인 엔지니어인 존 W. 베커스(John W. Backus)는 인사부서의 악몽이었다. 그가 가진 많은 재능들은 도무지 측정이란 게 불가능했기 때문이다.

버지니아 대학교에서 성적 불량으로 퇴학을 당한 후 베커스는 제2차 세계대전 때 미군에 징집되었다. 군은 그에게 종합 적성검사를 실시했고 정규 복무를 하기에는 지나치게 똑똑하다는 결론을 내렸다. 그는 국가 세금으로 대학으로 보내졌다.

베커스는 뉴욕에 있는 컬럼비아 대학교 대학원에서 수학과 석사 과정을 밟았다. 어느날 그는 길을 걷다 아주 우연히 운 좋게도 메디슨 애비뉴에 있는 IBM 본사를 지나치게 되었다. 그곳에는 IBM의 신종 전자계산기가 전시되어 있었다. 맨해튼의 작은 사무실 크기 정도의 경이로운 미니어처였다. 베커스가 감탄하며 그것을 뚫어져라 보고 있자, 한 IBM 투어 안내원이 그에게 질문을 하기 시작했다. 베커스는 자기가 수학을 공부하고 있다고 말했다. 안내원은 그를 위층으로 올려 보냈고, 알고 보니 그게 면접이었다. 이 면접은 일련의 논리적 수수께끼로 이루어져 있었다.

때는 1950년이었고, IBM은 진퇴양난의 처지에 있었다. 소프트웨어 디자인은 절대 전자공학의 영역이 아니란 걸 뒤늦게 깨달았던 것이다. 그 분야는 완전히 생소해서 이름도, 적당한 학위 과정도 없었다. '소프트웨어'라는 용어조차 존재하지 않았을뿐더러, 당시 '하드웨어'라는 말은 화장실 배수관 뚫는 기구를 뜻했다. IBM이 꼭 필요로 하는 사람이라면 어떤 경력의 소유자여도 상관없었다. 논리 퍼즐로 테스트한 것은 비록 임시변통일망정, 새로운 방식으로 사고할 수 있는 사람을 가려내기 위한 고육지책이었다.

베커스는 그 자리에서 바로 채용될 정도로 이 퍼즐들에 훌륭하게 답했다. 그는 마침내 팀을 이끌어 최초의 고급 컴퓨터 언어인 포트란(FORTRAN)을 만들어냈다.

포트란이 소프트웨어 역사에서 갖는 중요성은 하드웨어 역사에서 트랜지스터가 갖는 중요성에 비견되어왔다. 당시엔 모든 사람에게 고급 프로그래밍 언어와 관련된 경험이나 교육 배경이 전무한 상태였기 때문에, 베커스는 다양한 분야에서 적극적으로 사람을 모아야 했다.

"그들은 문제해결 기술에 특별한 소질을 보이는 사람이라면 누구든 데려갔죠. 브리지 카드 게임 선수, 체스 선수, 심지어 여자들까지도."

바사르 칼리지에서 수학을 전공했던 로이스 하입트(Lois Haibt)의 말이다. 팀 인원은 10명까지 늘어났으며, 그중에는 결정학자(crystallo-grapher)와 암호 해독자도 포함돼 있었다.

– 당신은 구글에서 일할 만큼 똑똑한가? Chapter 2. 51쪽.

1957년 4월: 포트란 출시

프로그래밍 언어에서 가장 중요한 초기 개발은 IBM 704용으로 만들었던 포트란이다. 포트란 프로젝트는 29세의 수학자이자 프로그래머였던 존 배커스의 지도 아래 IBM의 기술 컴퓨팅국에서 진행되었다. 배커스는 IBM 701 사용자들과 모임을 가지면서 이들이 통상적으로 30~40명의 프로그래머를 고용하고 있으며 가용한 컴퓨터 시간의 절반을 프로그램 디버깅에 투입하고 있음을 알게 되었다. 그는 컴퓨터 운영 비용(컴퓨터 사용 시간 측면에서나 인력 측면에서나)의 4분의 3이 프로그램 개발에 나가고 있다고 추정했다. 1954년 11월에 배커스는 포뮬라 트랜슬레이터(줄여서 포트란)의 사양을 정했고 관심을 가진 사용자들에게 배포했다. 배커스는 프로그래머가 작성하는 기계어 코드에 90% 수준까지 근접하는 기계어 코드 생성 시스템을 만들겠다고 약속했다. 대부분의 프로그래머와 관리자들은 아주 회의적이었다. 하지만 유나이티드 에어크래프트의 로이 너트가 힘을 북돋워주는 반응을 보였다. 유나이티드 에어크래프트는 이 프로젝트를 위해 로이를 잠시 IBM에 빌려줬다.

배커스는 포트란 시스템을 완성하는 데 6개월 정도가 걸리리라고 예상했다. 초기의 소프트웨어 프로젝트 대부분이 그랬듯이 훨씬 더 오래 걸렸다. 포트란이 마침내 출시된 것은 1957년 4월이었다. 십수 명의 프로그래머가 2년 반을 작업한 후였다. 이 시스템은 약 18,000줄의 코드로 되어 있었다. 사용자들로부터의 반응은 즉각적이었고 환상적이었다. 제너럴 모터스는 프로그래머의 생산성이 5~10배 증가했으며, 컴파일러 자체가 잡아먹는 컴퓨터 시간을 고려하더라도 프로그래밍 전체 비용이 40% 수준으로 줄어들었다고 추정했다. 출시 후 18개월 사이에 60대의 기계에서 포트란이 사용되었다. 배커스의 팀은 사용자들로부터 피드백을 받아서 시스템을 개선했고 1959년에 새 버전을 내놓았다. 포트란 II는 50,000줄의 코드로 구성되었고 50 맨-이어의 공수(프로그래머 50명이 1년 동안 일해야 하는 수준의 일)가 들어갔다.

포트란은 빠르게 과학 및 엔지니어링 응용 프로그램 작성의 산업 표준이 되었다. 다른 제조사들은 IBM과 경쟁하기 위해서 이 시스템을 채택할 수밖에 없었다. 여기에 음모 같은 것은 없었다. 단순히 포트란은 효율적이면서 신뢰할 수 있는 최초의 프로그래밍 언어였다. 후에 경제학자들이 "네트워크 효과"라고 불렀던 것이 포트란을 표준 언어로 만들었다. IBM으로부터의 도움은 거의, 아니 전혀 없었다. 사용자들은 포트란으로 수천만 줄의 프로그램을 작성했고 새로운 컴퓨터를 선택할 때는 그것이 IBM 제품이든 다른 제조사의 제품이든 간에 소프트웨어 작성에 들어간 투자를 보호하기 위해서, 그리고 다른 사용자들과 프로그램을 공유하기 위해서, 포트란 시스템을 원했다. (포트란이 과학용 프로그래밍에서는 실질적 표준이었지만 후에 공식적으로 승인된 표준 언어는 데이터 처리 언어인 코볼이었다.)

– 소프트웨어는 어떻게 밥벌이가 되었나. 2장. 64쪽.

Bjarne Stroustrup이 쓴 John Backus 이야기

Fortran은 IBM에서 존 배커스John Backus가 이끈 팀이 처음 정의하고 구현했다. "우리는 우리가 무엇을 원하는지, 그것을 어떻게 해야 하는지 알지 못했다. 그냥 (Fortran이)자라났다고 해야 할지도 모르겠다." 사실 이전에 누구도 해 본 적이 없던 일이었으니 잘 모르는 것도 당연했을 것이다. 그들이 개발 또는 발견한 것은 어휘 분석, 구문 분석, 최적화 같은 컴파일러의 기본 구성요소들이었다. 오늘날까지도 수치 계산 최적화 분야는 Fortran이 선도하고 있다. 또한 문법 명세를 위한 표기법도 하나 만들어졌다(초기 Fortran 이후에). 바로 [[/jargon/backus-naur-form]]{배커스-나우어 형식(Backus-Naut Form, BNF)}이다. 이것은 Algol60($22.2.3.1)에 처음 쓰였으며, 이제는 대부분의 현대적 언어들에 쓰인다. 제6장과 제7장의 계산기 예제 들에 쓰인 수식 문법도 일종의 BNF이다.

한참 후 배커스는 메모리 장소들의 읽기/쓰기에 기초한 기계적 시각에 맞서 수학적인 프로그래밍 접근 방식을 주창하면서 완전히 새로운 프로그래밍 언어 어족("함수적 프로그래밍")을 개척하게 된다. 순수한 수학에는 배정이라는 개념이 없으며 행동(action)이라는 개념도 없음을 주목하기 바란다. 대신 수학에서는 주어진 조건들에서 무엇이 참인지를 "그냥" 진술한다. 함수적 프로그래밍(functional programming, 또는 함수형 프로그래밍)의 뿌리 중 일부는 Lisp($22.2.2.3)에 있으며, 함수적 프로그래밍의 일부 착안들은 STL(제21장)에 반영되었다.

– C++로 배우는 프로그래밍의 원리와 실제. 22.2.2.1 장. 903쪽.

함께 읽기

  • [[/jargon/backus-naur-form]]

참고문헌

  • C++로 배우는 프로그래밍의 원리와 실제 / Bjarne Stroustrup 저 / 류광 역 / 대웅출판사 / 발행일 2010년 08월 01일 초판 1쇄 / 원제: Programming: Principles and Practice Using C++, 1st Edition
  • 당신은 구글에서 일할 만큼 똑똑한가? / 윌리엄 파운드스톤 저/유지연 역 / 타임비즈 / 초판 2쇄 발행 2012년 05월 10일 / 원제 : Are You Smart Enough to Work at Google?
  • 소프트웨어는 어떻게 밥벌이가 되었나 / 마틴 캠벨-켈리 저/이재범 역 / 지식함지 / 초판 1쇄 2021년 06월 22일 / 원제: From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry by Martin Campbell-Kelly