‘프로그래머’라는 직업의 탄생

영화 <히든 피겨스>(Hidden Figures)가 한국에서는 3월 23일 개봉했다. 일반적으로는 이 영화를 1960년대 NASA를 배경으로 인종차별에 대해 이야기하는 작품으로 소개하지만, 이 영화는 한편으로는 프로그래머라는 직군이 탄생하는 순간을 그리고 있는 작품이기도 하다. 영화의 구체적인 내용을 언급하는 대신 최초의 프로그래머에 대해 이야기해보겠다.

역사상 최초의 프로그래머는 에이다 러브레이스 백작부인(Ada Lovelace, 1815-1852)이다. 그녀는 1842년 배비지가 설계한 해석기관을 이용해 베르누이 수를 계산하게끔 하는 알고리즘을 제안했는데, 이것이 최초로 컴퓨터를 위해 작성된 의미있는 프로그램인 것이다. 하지만 여기서 100년이 더 지난 뒤에야 프로그래머라는 직업이 생길 수 있었다.

프로그래머가 있으려면 우선 컴퓨터가 보급되어야 한다. 배비지의 해석기관은 최초의 컴퓨터로 불리지만 끝까지 미완성으로 남은 복잡한 기계였다. 20세기 초에 시중에서 쓰였던 것은 기계식 계산기였는데, 이는 마치 타자기처럼 묵직한 크기였지만 사칙연산 같은 간단한 계산밖에 할 수 없는 것이었다. 따라서 좀더 복잡한 계산을 하려면 계산기 앞에 앉아 수식을 사칙연산으로 근사화시킨 다음 그것을 일일이 입력해줄 사람이 필요했다. 당시에는 이렇게 전문적으로 계산을 하는 직업을 가진 사람들을 ‘컴퓨터(computer)’, 즉 계산수라고 불렀다. 아직 전기로 동작하는 컴퓨터가 등장하기 전의 일이다. (300년 전 항해사들에게 ‘컴퓨터’가 필요했던 이유)

Marchant XLA 계산기 (1923)

사회가 복잡해지고 과학이 발달하면서 20세기 초 서양 사회는 회계 결산부터 미사일 궤적까지 점점 다양한 분야에서 계산을 할 사람이 필요하게 되었다. 여성들의 사회 진출이 거의 불가능했던 당시에 계산수는 고학력 여성들이 가질 수 있는 좋은 직업 중 하나였다. 계산수는 복잡한 수학 지식이 요구되는 전문직이었지만 마치 타이피스트처럼 시키는대로 입력을 하는 반복노동직이라는 인식이 있어서 상대적으로 대우를 덜 받았고 남성들이 기피했던 것이다. 특히 2차 세계대전 때 대다수의 남성들이 징병을 당하면서 계산수의 대부분은 여성들이 맡게 되었다.

1943년 미국 육군은 군사 목적의 계산을 하기 위한 기계를 개발하는데, 이것이 최초의 전기식 컴퓨터 중 하나로 불리는 에니악(ENIAC)이다. 50평짜리 방을 차지하는 30t짜리 이 기계를 다루기 위해 미군은 군 소속의 계산수들을 차출해서 프로그래밍을 맡겼는데, 이들이 바로 최초의 직업 프로그래머이다. 계산수들은 수학적 지식과 주어진 함수의 계산을 빠르고 정확하게 하기 위한 노하우가 있었으며 여러 종류의 계산하는 기계를 다뤄본 경험이 있었기 때문에 당시의 계산수가 프로그래머가 되는 것은 자연스럽다고 볼 수 있다. 그렇게 뽑힌 최초의 ENIAC 프로그래머는 케이 맥널티(Kay McNulty, 1920-2006), 베티 제닝스(Betty Jennings, 1924-2011), 베티 스나이더(Betty Snyder, 1917-2001), 말린 멜처(Marlyn Meltzer, 1922-2008), 프랜 빌러스(Fran Bilas, 1922-2012), 루스 릭터먼(Ruth Lichterman, 1924-1986)으로, 6명 전부 여성이었다.

ENIAC의 제어반을 조작하는 베티 제닝스(왼쪽)와 프랜 빌러스

ENIAC은 혁신적인 발명품이었지만 구조 자체는 사칙연산을 하는 기계식 계산기에서 크게 벗어나지 않았다. 전기 신호가 들어올 때마다 10진수로 된 각 자릿수에 1씩 더해주는 덧셈기 수십 대와 그밖의 특수한 기능을 하는 기계 몇 대로 구성되어 있었다. 이것으로 의미있는 계산을 하려면 기계들의 입출력을 전선을 직접 꽂아서 이어주어야 한다. 당시의 소프트웨어는 디스크나 메모리 상의 파일에 저장된 것이 아니라 제어반에 꽂혀있는 전선과 스위치로 되어 있었던 것이다. 물론 프로그래밍 언어라는 개념도 나오기 전이었다. 많은 언어에서의 if-else에 해당하는 조건분기를 구현하기 위해 당시 개발자들은 데이터 출력 단자에서 나오는 신호를 제어단자에 직접 연결해버렸다. 처음부터 조건분기라는 개념을 상정하고 설계한 하드웨어가 아니었던 것이다.

6명의 프로그래머들은 ENIAC의 발전과 함께하며 컴퓨터 과학의 중요한 개념들을 개척했다. 전선과 스위치였던 ENIAC의 소프트웨어를 메모리 상에 저장하고 덧셈기 몇 개를 레지스터로 바꾸는 등 기계가 개선되자, 프로그래머들은 프로그램 카운터(program counter)를 조작해서 서브루틴(subroutine)을 구현하는 법을 발명해냈고 메모리나 점프 위치를 간접주소(indirect addressing)를 써서 지정하는 방법을 생각해냈다. 이것은 주어진 문제를 좀더 체계적으로 구조화하는 방법, 그리고 좀더 효율적으로 기계에 실행시키는 방법을 계속 고민한 결과라 할 수 있다. 이들 덕분에 미국 육군은 ENIAC을 이용해 탄도역학 계산이나 몬테카를로 방법을 통한 핵분열 시뮬레이션 등 복잡한 계산을 할 수 있었다.

하지만 유감스럽게도 이들의 활약은 오랜 시간동안 지워져 있었다. 여성 프로그래머들은 ENIAC 50주년 기념행사에 제대로 초청받지 못했다. 기계를 조작하는 여성들의 사진이 남아있었지만, 연구자 중에는 이들을 가전제품 광고에 으레 등장하는 여성 모델로 잘못 생각하고 제대로 조사하지 않은 사람도 있었다. 영화로 돌아가서, <히든 피겨스>라는 제목은 숨겨진 숫자, 그리고 숨겨진 인물이라는 두 가지 뜻이 있다. 뛰어난 재능으로 기술의 발전에 기여했지만 차별 때문에 조명받지 못했던 인물들의 이야기인 것이다.

300년 전 항해사들에게 ‘컴퓨터’가 필요했던 이유

여행을 하다가 길을 잃었을 땐 헤매지 않기 위해 몇가지 정보가 필요하다. 우선 가고자 하는 목적지가 어디 있는지 알고 있어야 하고, 동서남북 방위도 알아야 한다. 하지만 둘 다 알고 있더라도 자신이 있는 현재위치를 파악하지 못한다면 목적지로 갈 방향을 잡을 수 없다.

바로 300년 전 유럽의 항해사들이 겪었던 문제다. 그 당시 유럽인들에게 세계지도와 나침반, 그리고 북극성은 있었지만 넓은 대서양 위에 떠있는 배 위에서 현재위치를 알 수 있는 방법이 없었다. 한창 활발히 유럽과 아메리카 식민지를 오갔던 함선들은 바다를 지금까지 얼마나 건너왔는지, 얼마나 더 가야 반대편에 도달하는지 정확히 알지도 못하는 상태로 몇 달 동안 무작정 서쪽 또는 동쪽으로만 가는 무모한 항해를 계속하고 있었다. 수백명의 실종자가 나오는 조난사고도 적지 않게 일어났다.

17세기 항해용 세계지도
17세기 항해용 세계지도.

정확히 어떤 것이 문제였을까? 바다 위 배의 위치는 지도상의 좌표로 표시할 수 있고, 좌표는 위도와 경도로 나눌 수 있다. 남북으로 움직일 때마다 바뀌는 위도는 달라질 때마다 태양이 뜨는 높이가 달라지기 때문에 움직이는 배 위에서도 태양이나 별의 고도만 잘 측정할 수만 있으면 현재 날짜와 비교해서 계산할 수가 있었다. 하지만 경도를 잴 수 있는 방법이 없는 것이 문제였다. 이것을 해결하기 위해 1714년 영국 정부는 경도법(Longitude Act)을 발표하여 이 문제에 현상금을 걸었다. 바다 위에서 경도를 정확하게 측정할 수 있는 방법을 보여줄 수 있는 사람에게 10,000파운드 (2016년 기준 약 22억원) 이상의 상금을 지급하기로 한 것이다.

이윽고 경도를 찾기 위한 경쟁이 시작됐지만 쉽지 않았다. 경도가 바뀌면 해 뜨는 시각이 달라져 출발지와 시차가 생기므로, 출발지 시각으로 맞춰놓은 정확한 시계만 있다면 그 시계상의 시각을 현재위치에서 태양이 뜨고지는 시각과 비교해서 경도를 측정할 수 있다. 하지만 당시 기술로는 흔들리는 배 위에서 정확히 움직이는 시계를 만들 수 없었던 것이다. 결국 50여년이 지난 1765년에서야 존 해리슨(John Harrison, 1693-1776)이 항해용 정밀시계를 제작해 영국 정부로부터 상금을 받을 수 있었다. 하지만 이것도 행복한 결말은 아니었다. 해리슨의 시계는 제작하기 어렵고 비싸서 일반적인 선박에 보급할 수 없었고, 상금을 받을 정도의 정확도는 만족했지만 장거리 항해에 쓰기에는 여전히 미흡했다. 적어도 정밀시계를 양산할 수 있을 때까지는 다른 수단이 필요했다.

해리슨의 H1 시계
해리슨의 H1 시계. 이후 3번 개량을 거쳐 만든 H4가 검증에 성공한다. ©National Maritme Museum, London

만약 달의 궤도를 정확히 예측할 수 있다면 그것을 시계처럼 쓸 수 있다. 천구상의 별을 고정시켜서 봤을 때 달은 태양이나 다른 행성에 비해 상대적으로 빨리 움직인다. 런던 시각으로 몇월 몇일 몇시에 달이 어느 위치에 있을지를 전부 계산해놓는다면, 지구 어디에서라도 달만 보인다면 실제 관측한 달의 위치와 계산된 위치를 비교해서 런던의 현재시각을 알 수 있다. 독일의 천문학자 토비아스 마이어(Tobias Mayer, 1723-1762)는 달의 위치를 상당히 높은 정확도로 계산하는 방법을 고안했고, 이 연구를 바탕으로 그리니치 왕립 천문대는 하루하루 달의 위치를 예측한 자료를 만들어 매년 항해연감(The Nautical Almanac)을 출판했다.

이것은 결코 작은 사업이 아니었다. 달의 위치를 높은 정확도로 계산하는 것만 해도 어려운 일이었지만, 달이 출현할 날짜와 시간만 바꿔서 똑같은 계산을 되풀이하는 것은 상당한 시간이 들어가는 일이었기 때문이다. 당시에는 계산을 손으로 할 수밖에 없었으므로 이런 방대한 작업을 위해 오로지 계산만을 담당하는 사람들이 필요했는데, 그들을 컴퓨터(computer), 즉 계산수(計算手)라고 불렀다. 현재와 같은 전자식 컴퓨터가 생기기 전까지 ‘컴퓨터’는 사람의 직업을 부르는 말이었던 것이다. 산업혁명을 겪으며 근대에 접어든 영국과 유럽에서는 점점 정확한 계산이 요구되는 일이 많아지고 있었으므로 이처럼 계산수가 필요한 일도 덩달아 늘어나고 있었다.

항해연감을 만드는 계산수들은 재택근무를 했다. 혹시나 계산 실수가 없는지 서로 다른 계산수들의 결과를 이중삼중으로 비교하는 절차가 있었기 때문에 누구나 그들의 실적을 신뢰할 수 있었다. 계산량이 아무리 많더라도 종이 몇 장에 다 들어갔기 때문에 업무전달은 우편으로 했다. 하지만 우편마차의 배송이 며칠씩 걸리는 것이 큰 문제가 안 될 정도로 손으로 하는 계산작업은 오래 걸리고 번거로운 일이었다. 그렇게 50년이 넘는 세월동안 항해연감은 오로지 사람의 계산으로만 작성됐다.

19세기 초는 인간이 하던 많은 일들을 한창 증기기관으로 대체하던 시절이었으므로, 사람이 하는 계산도 기계에게 맡길 수 있을 것이라는 발상이 나온 것도 무리는 아니었다. 찰스 배비지(Charles Babbage, 1791-1871)는 해석기관이라는 것을 설계했다. 이것은 오늘날 우리가 쓰고 있는 컴퓨터의 조상 격으로, 전기를 쓰지 않는다는 점만 다를 뿐 CPU와 메모리를 갖추고 소프트웨어로 움직이도록 설계되어 있었다. 배비지의 아이디어는 시대를 너무 앞서나간 것이었기 때문에 정부의 충분한 지원을 받지 못했고 그는 해석기관이 실제로 완성되는 것을 보지 못했다. 하지만 배비지에게 영향을 받은 사람들이 이를 간소화한 기계식 계산기를 만들기 시작했다. 초기의 계산기는 사칙연산밖에 할 수 없었고 다이얼을 조심스럽게 하나씩 돌려가면서 써야 하는 섬세한 기계였지만 그것만으로도 많은 사람들의 시간을 크게 절약할 수 있었다.

해석기관
배비지의 해석기관. 20자리 숫자 두 개를 곱하는 데에 3분이 걸린다고 한다. ©Science Museum, London

역사를 돌이켜 보면 산업과 과학기술의 발전 사이의 맞물림이 흥미롭다. 18세기 초 유럽의 해운업은 민간, 정부, 그리고 해군의 관심이 모인 거대 산업이었다. 막대한 자금이 흘렀던 이 산업의 발전을 위해 당시 영국 정부는 관련 산업에 투자를 했고, 그 덕분에 언뜻 해운업과 관련이 없어 보일 수도 있는 수학 · 물리학 · 천문학 등 기초과학의 연구와 시계 같은 정밀기계의 기술에도 지원이 갈 수 있었다. 또한 해운업을 안정화시키기 위해 시작한 항해연감 계산사업을 꾸준히 유지시켜준 덕분에 컴퓨터라는 새로운 개념까지 나올 수 있었던 것이다. 배비지 이후 약 150년이 지난 지금은 컴퓨터가 그 자체로 거대 산업이자 첨단기술의 중심이 되었다. 앞으로 어떤 새로운 과학기술이 등장할지 기대해 본다.

글쓴이 : 정경훈 (Software Engineer @로켓펀치)