Chapter 2 배비지: 최초의 컴퓨터 엔지니어
찰스 배비지라는 인물
배비지는 학계에서도 크게 인정받아 1816년에는 왕립학회(Fellow of the Royal Society) 회원으로 선출되었습니다.
이후 1824년에는 계산 기계를 발명한 공로로 영국 천문학회에서 초대 골드 메달을 받았으며, 1828년부터 1839년까지 케임브리지 대학교의 루카시안 수학 석좌 교수직(Lucasian Chair of Mathematics)을 맡기도 했습니다.
그렇다고 해서 배비지가 실질적으로 성공적인 삶을 이루었다고 보기는 어렵습니다.
그의 연구나 발명품 대부분이 완성되거나 상업적 이익으로 이어지지 못했기 때문입니다.
또 성격이 까다롭고 자기주장이 강해서 함께 일하기 무척 힘든 까칠한 천재(irascible genius)였다는 평도 있습니다.
그는 권력자들을 신랄하게 비난하는 편지를 자주 썼지만, 바로 그 권력자들에게 자신의 프로젝트 자금을 요청하기도 합니다.
이런 부분을 보면 배비지가 공손하고 신중한 태도를 가진 사람이라고 보기는 어려운 것 같습니다.
계산표
프로그래머로서 찰스 배비지 이야기는 1821년 여름에 시작됩니다.
배비지와 그의 평생 친구인 존 허셜은 천문학회에서 사용할 계산표(tables)를 검토하는 일을 하고 있었습니다.
거기에는 각기 다른 두 팀이 만든 계산표가 두 개 있었고, 두 팀이 모두 계산을 올바르게 수행했다면 두 계산표는 완전히 일치해야 했습니다.
배비지와 허셜은 계산표 두 개를 비교하여 일치하는지 확인하고 오류를 찾아내는 작업을 했습니다.
계산표 제작
그 시대에 수학적 계산표 수요는 정말 많았습니다.
수학자들은 물론이고 항해사, 천문학자, 공학자, 측량사까지 모두 이런 표가 필요했습니다.
로그표, 삼각 함수 표, 탄도학 표, 조수(潮水) 표 등 종류도 매우 다양하고 그 수요는 끝이 없었습니다.
게다가 이 표들은 단순히 대략적인 값이 아닌 소수점 이하 자리까지 정확하고 정밀해야만 했습니다.
로그, 사인, 코사인 같은 함수들은 초월 함수(transcendental functions)라고도 합니다.
본래 이런 함수는 다항식으로는 정확히 계산할 수 없습니다.
하지만 놀랍게도 다항식을 이용하여 근사치(approximated)는 구할 수 있습니다.
유한 차분법(finite differences)
수학의 대가들이 근사하고자 하는 초월 함수를 가장 잘 표현할 수 있는 다항식을 도출합니다.
그런 다음 그 다항식들을 숙련된 수학자 몇 명에게 맡겨서 함수를 여러 구간으로 나누고, 각 구간에 대한 차분표를 작성하게 합니다.
마지막으로 그 차분표는 단순 덧셈과 뺄셈에 능숙한 수십 명에게 전달되어 실제 계산표를 작성하는 데 사용합니다.
이 단순 계산을 담당하던 사람들은 당시 ‘컴퓨터(computers)’라고 불렸습니다.
그들은 반복적으로 덧셈을 수행하며 각 구간의 항목을 차근차근 채워 나갔습니다.
표에는 수천수만, 아니 그보다도 더 많은 행이 작성되었습니다.
덧셈 수만 번이 수많은 자릿수를 맞추어 가며 수행되었습니다.
이 모든 작업은 오직 연필과 종이로 이루어졌습니다.
보통 이 ‘컴퓨터’들은 두 팀으로 나뉘어 동일한 작업을 맡았습니다.
양쪽이 모두 완벽하게 계산을 수행했다면 결과는 정확히 일치해야 합니다.
바로 그것을 1821년 여름 어느 운명적인 날에 배비지와 허셜이 확인하고 있었습니다.
배비지의 비전
이 ‘컴퓨터’들을 신뢰할 수 있는 기계로 대체할 수만 있다면 그와 허셜은 더 이상 사람 손으로 계산한 값을 하나하나 대조할 필요가 없을 것입니다.
배비지는 미래에 계산 기계를 사용하는 것이 과학 발전에 필수적인 역할을 하리라고 내다보고 있었습니다.
1822년 “증기로 계산할 수 있다면”이라고 외친 후 배비지는 이렇게 예견하듯이 썼습니다.
“내가 감히 예언하건대, 수학 공식을 수치화하기 위해 들어가는 이 막대한 노동은 지속적으로 과학 발전을 저해하는 요소로 작용할 것이다. 이런 수치 계산의 압도적인 부담에서 해방시켜 줄 내 아이디어 또는 이와 동등한 어떤 방식이 마련되지 않는다면, 결코 과학은 크게 진보하지 못할 것이다.”
차분기관
왜 단순한 계산을 위해 산업용 규모의 거대한 기계가 필요했을까요?
여기에는 두 가지 측면의 문제가 있습니다.
첫째, 기계는 무엇보다도 정확도를 유지해야 합니다.
어떤 부품이든 움직여야 할 때가 아니라면 절대로 움직여서는 안 됩니다.
진동이나 마찰, 그 외에 의도치 않은 작은 움직임조차도 부품을 틀어지게 만들 수 있기 때문입니다.
이를 방지하기 위해 배비지는 수천 번에 달하는 크랭크 회전 동안 기계의 정밀도를 유지할 수 있도록 해야 했으며, 각 부품을 정해진 순간에만 움직이게 고정하고 풀어 주는 다양한 잠금 장치를 설계에 포함시켜야 했습니다.
두 번째 문제는 학창 시절 누구나 겪는 문제이자 덧셈 기본인 올림(carry)에 있습니다.
숫자가 9에서 0으로 넘어갈 때는 왼쪽 자릿수에 1을 올려야 하죠.
당시 전통적인 기계에서는 각 자릿수를 톱니바퀴로 표현했고, 어떤 바퀴가 9에서 0으로 넘어가면 그에 연결된 탭이 다음 바퀴를 움직이도록 되어 있었습니다.
이 방식에서는 올림이 얼마나 연쇄적으로 발생하는지에 따라 바퀴를 돌리는 데 필요한 힘이 달라졌습니다.
그래서 배비지는 이 문제를 해결하기 위해 매우 영리한 메커니즘을 고안합니다.
올림이 발생하면 즉시 전달하지 않고, 기계 작동 주기 중 특정 시점에 하나씩 순차적으로 전달되도록 설계했습니다.
이 올림 정보를 저장하는 장치는 각 바퀴에 연결된 작은 레버로, 이 레버는 ‘올림 있음’ 또는 ‘올림 없음’이라는 두 가지 상태 중 하나를 가질 수 있습니다.
이를 보면 배비지는 분명히 프로그래머입니다.
비록 그가 작성한 프로그램은 레버와 톱니바퀴, 기어, 크랭크로 이루어진 물리적인 형태였지만 그 본질은 다르지 않습니다.
그가 만든 기계는 일련의 연속적인 덧셈 과정을 정교하게 수행하는 작지만 아름다운 절차를 처리하고 있으니까요.
오늘날 우리가 그 프로그램을 코드로 작성한다면 아마 이런 모습이지 싶습니다.
(defn crank [xs]
(let [dxs (concat (rest xs) [0])] (map + xs dxs)))
기계식 표기법
배비지는 자신이 구상한 기계의 동작을 표현하기 위한 표기법 체계를 만들었습니다.
이 체계에는 타이밍 다이어그램, 논리 흐름도, 움직이는 부품과 정지한 부품, 그 밖에 기계 의도를 설명하는 데 필요한 다양한 상태를 나타내는 기호들이 포함되어 있습니다.
배비지는 이 표기법을 상호 작용하는 부품들의 ‘보편적인 추상 언어’로 생각했습니다.
실제로 그는 이 방법이 기계뿐만 아니라 모든 형태의 상호 작용에 적용될 수 있다고 믿었습니다.
차분기관의 실패
기계 규모가 너무 컸고, 배비지는 꾸준하게 집중하지 못하고 주변과 조화롭게 일하기 어려운 성격이었습니다.
그는 예민하고 자존심이 강했으며 작은 모욕이나 상처에도 민감해서 주변 사람들의 불만을 사기도 했습니다.
결국 10년 넘게 이어진 작업과 계약자와 갈등, 여러 차례 작업 중단, 심각한 예산 초과로 자금 지원이 중단되고 맙니다.
제 개인적인 견해로는 그의 실패 원인은 끊임없이 더 야심 찬 새로운 아이디어에 마음이 빼앗겼기 때문이라고 봅니다.
즉, 배비지는 무엇인가를 완성하기보다 새로운 일을 시작하는 데 더 큰 즐거움을 느꼈다고 생각합니다.
해석기관
배비지는 차분기관보다 더 효율적인 연산 장치인 이 밀이라는 기계를 만들기 위해 많은 노력을 기울였습니다.
그는 이 기계가 50자리 숫자의 덧셈과 뺄셈을 1초 이내에 처리할 수 있으리라 예상했습니다.
또 곱셈은 시프트와 덧셈 방식(shift-and-add)을, 나눗셈은 시프트와 뺄셈 방식(shift-and-subtract)을 사용하도록 설계하여 배정도(double-precision)의 곱셈과 나눗셈도 1분 이내에 수행할 수 있도록 했습니다.
그는 이 기계가 작동하는 모습을 머릿속에 그려 냈고, 그 의미를 깊게 이해하고 있었습니다.
그는 “이제 모든 산술은 기계 영역으로 들어간 것 같다.”라고 말했습니다.
나아가 이 기계는 체스까지도 프로그래밍할 수 있다고 생각했습니다.
1832년 그는 저서 <The Life of a Philosopher(철학자의 삶)>에 “모든 숙련된 게임은 자동 기계로 수행될 수 있다.”라고 적기도 했습니다.
하지만 이 기계 역시 결국에는 완성되지 못했습니다.
배비지는 밀의 소형 시제품을 만들고 여러 가지 장치를 시험해 보지만, 이 거대한 기계를 완성하는 데 필요한 엄청난 자금과 시간, 에너지는 결코 구할 수 없을 것이라고 생각했습니다.
배비지는 이 거대한 기계를 포기하고 여러 가지 조정과 최적화 끝에 부품 수는 3분의 1로 줄이고, 속도는 세 배 빠르며, 용량은 기존보다 두 배 이상인 차분기관 2를 설계했습니다.
이것을 보면 그 당시에도 무어의 법칙은 살아 숨 쉬고 있었던 듯합니다.
배비지는 차분기관 2도 실제로 완성하지는 못했습니다.
하지만 바로 이 차분기관 2가 지난 세기말 런던 과학박물관에서 복원한 기계입니다.
배비지는 분명 프로그래머입니다.
그는 기호와 숫자 사이의 연관성을 이해했고, 숫자를 조작할 수 있는 기계라면 그 연관성을 통해 기호도 조작할 수 있다는 사실을 알았습니다.
에이다: 러브레이스 백작 부인
에이다의 튜터 중에는 메리 서머빌(Mary Somerville)이라는 인물이 있습니다.
그녀는 당시 수학과 과학 분야의 여러 중요한 인사들에게 에이다를 소개해 주었는데, 그중에는 찰스 배비지도 있습니다.
에이다는 배비지가 주최한 만찬에 초대되어 차분기관 시제품을 보고 그 작동 원리에 매료됩니다.
이후 그녀는 자주 배비지를 찾아가 그의 기계와 비전에 대해 이야기를 나눕니다.
그 과정에서 배비지는 자신이 고안한 해석기관의 숭고한 목표를 설명하고, 에이다는 그 복잡함과 가능성에 강한 흥미를 느낍니다.
그렇게 에이다는 배비지의 기계에 빠져들어 프로그래머가 됩니다.
이후 에이다는 19세 때 제8대 오컴 경(Lord Ockham)이자 초대 러브레이스 백작(Earl of Lovelace)인 윌리엄 킹과 결혼했고, 그렇게 에이다는 러브레이스 백작 부인이 됩니다.
비록 병약한 몸과 자녀 양육으로 힘들었음에도 그녀는 수학과 배비지의 아이디어 연구를 계속 이어 갑니다.
에이다가 배비지에게 튜터를 추천해 달라고 요청하자 배비지는 어거스터스 드 모르간을 소개합니다.
에이다는 배비지를 자주 찾아갔고, 편지와 메시지를 주고받으며 열정적으로 협력했습니다.
실제로 그녀는 “미친 듯한 열정으로 일하며 수많은 요구를 하고, 때로는 일을 엄청 시키고, 애교를 부리기도 하며, 짜증을 내기도 했다.”라고 합니다.
그렇게 작업이 거듭될수록 그녀의 열정은 더욱 커져만 갔습니다.
에이다는 이런 광기 어린 열정으로 배비지의 해석기관에 대한 학술 논문에 A부터 G까지 노트 일곱 개를 작성합니다.
이 노트 분량은 원래 논문 내용보다 세 배나 많습니다.
1843년에 출판된 이 노트들은 매우 훌륭했고 에이다의 열정이 담겨 있습니다.
예를 들어 주석 A에는 다음 내용이 적혀 있습니다.
“해석기관은 단순한 ‘계산기’와는 완전히 다른 독창적인 기계이며, 이 기계가 가지는 여러 가지 본질적인 특징들은 매우 흥미롭다. 특히 이 기계는 일반적인 기호들을 결합할 수 있도록 설계되어 있다.”
이 같은 노트와 더불어 해석기관이 단순한 숫자뿐만 아니라 기호를 표현할 수 있다는 에이다의 발언을 토대로 그녀는 종종 ‘최초의 프로그래머’라고 평가받습니다.
최초의 프로그래머?
에이다의 노트를 꼼꼼히 살펴보면 그녀가 엄연한 프로그래머였다는 것을 알 수 있습니다.
그녀는 해석기관을 이해했고 깊게 매료되어 있었습니다.
또 에이다는 기계의 작동 방식을 머릿속에 그리고 그 실행 과정을 따라갈 수 있었습니다.
에이다가 실제로 해석기관을 만져 볼 수 있었다면 더 완벽하게 그 기계를 다룰 수 있었을 것입니다.
그토록 애착을 갖는 기계가 무엇을 할 수 있는지 아주 명확히 알고 있지만, 정작 에이다는 그 해석기관이 실제로 작동하는 모습은 볼 수 없었습니다.
에이다는 이미 그 기계가 작동하는 모습을 평생 보지 못할 것을 알았습니다.
아마도 에이다는 해석기관에 대해 기쁨과 안타까움, 거대한 꿈과 절망적인 희망이 뒤섞인 복잡한 감정을 가지고 있었을 것입니다.
러브레이스 백작 부인 에이다가 비록 최초의 프로그래머는 아닐지라도, 그녀와 배비지는 분명히 최초의 공동 프로그래머였다고 말이죠.
복잡한 결말
후대의 많은 선구자는 배비지와 에이다에게 깊은 존경을 표했습니다.
배비지의 해석기관을 전자 기계 방식으로 구현한 하버드 마크 I의 개발자 하워드 아이켄(Howard Aiken)과 그레이스 하퍼(Grace Hopper)의 사례에서 배비지와 에이다 간 협력 관계가 재현되는 모습을 엿볼 수 있습니다.
다만 앞서 이야기했듯이 이런 선구자들이 배비지와 에이다에게서 직접적인 영향을 받거나 그들의 지도를 받았다고 단정하기는 어렵습니다.
차분기관 2의 실현
1980년대 후반에서 1990년대 초반, 런던 과학박물관의 연구진은 작동 가능한 차분기관 2를 제작했습니다.
런던 과학박물관의 컴퓨팅 큐레이터이자 이 프로젝트를 처음부터 끝까지 이끈 도론 스웨이드(Doron Swade)는 배비지의 설계에 대해 이렇게 말합니다.
“배비지는 디버깅을 위한 어떤 대비책도 마련하지 않았다. 기계의 특정 부분을 다른 부분과 분리하여 고장의 원인을 국소화할 수 있는 방법이 전혀 없었다. 마치 기계 전체가 하나의 거대한 ‘하드 와이어드(hard wired)’ 유닛 같았으며, 구동봉과 연결 부품들은 고정 핀이나 리벳으로 영구적으로 고정되어 있어 조립 후에는 분해하기가 매우 어려웠다.”
하지만 부품 4,000여 개가 모두 정확하게 정렬되고 고쳐야 할 부분들을 모두 적용하자, 결국 차분기관 2는 완벽하게 작동했습니다.
https://youtu.be/be1EM3gQkAY?si=C7I2rviSLCovUz87
Chapter 2 배비지: 최초의 컴퓨터 엔지니어
찰스 배비지라는 인물
배비지는 학계에서도 크게 인정받아 1816년에는 왕립학회(Fellow of the Royal Society) 회원으로 선출되었습니다.
이후 1824년에는 계산 기계를 발명한 공로로 영국 천문학회에서 초대 골드 메달을 받았으며, 1828년부터 1839년까지 케임브리지 대학교의 루카시안 수학 석좌 교수직(Lucasian Chair of Mathematics)을 맡기도 했습니다.
그렇다고 해서 배비지가 실질적으로 성공적인 삶을 이루었다고 보기는 어렵습니다.
그의 연구나 발명품 대부분이 완성되거나 상업적 이익으로 이어지지 못했기 때문입니다.
또 성격이 까다롭고 자기주장이 강해서 함께 일하기 무척 힘든 까칠한 천재(irascible genius)였다는 평도 있습니다.
그는 권력자들을 신랄하게 비난하는 편지를 자주 썼지만, 바로 그 권력자들에게 자신의 프로젝트 자금을 요청하기도 합니다.
이런 부분을 보면 배비지가 공손하고 신중한 태도를 가진 사람이라고 보기는 어려운 것 같습니다.
계산표
프로그래머로서 찰스 배비지 이야기는 1821년 여름에 시작됩니다.
배비지와 그의 평생 친구인 존 허셜은 천문학회에서 사용할 계산표(tables)를 검토하는 일을 하고 있었습니다.
거기에는 각기 다른 두 팀이 만든 계산표가 두 개 있었고, 두 팀이 모두 계산을 올바르게 수행했다면 두 계산표는 완전히 일치해야 했습니다.
배비지와 허셜은 계산표 두 개를 비교하여 일치하는지 확인하고 오류를 찾아내는 작업을 했습니다.
계산표 제작
그 시대에 수학적 계산표 수요는 정말 많았습니다.
수학자들은 물론이고 항해사, 천문학자, 공학자, 측량사까지 모두 이런 표가 필요했습니다.
로그표, 삼각 함수 표, 탄도학 표, 조수(潮水) 표 등 종류도 매우 다양하고 그 수요는 끝이 없었습니다.
게다가 이 표들은 단순히 대략적인 값이 아닌 소수점 이하 자리까지 정확하고 정밀해야만 했습니다.
로그, 사인, 코사인 같은 함수들은 초월 함수(transcendental functions)라고도 합니다.
본래 이런 함수는 다항식으로는 정확히 계산할 수 없습니다.
하지만 놀랍게도 다항식을 이용하여 근사치(approximated)는 구할 수 있습니다.
유한 차분법(finite differences)
수학의 대가들이 근사하고자 하는 초월 함수를 가장 잘 표현할 수 있는 다항식을 도출합니다.
그런 다음 그 다항식들을 숙련된 수학자 몇 명에게 맡겨서 함수를 여러 구간으로 나누고, 각 구간에 대한 차분표를 작성하게 합니다.
마지막으로 그 차분표는 단순 덧셈과 뺄셈에 능숙한 수십 명에게 전달되어 실제 계산표를 작성하는 데 사용합니다.
이 단순 계산을 담당하던 사람들은 당시 ‘컴퓨터(computers)’라고 불렸습니다.
그들은 반복적으로 덧셈을 수행하며 각 구간의 항목을 차근차근 채워 나갔습니다.
표에는 수천수만, 아니 그보다도 더 많은 행이 작성되었습니다.
덧셈 수만 번이 수많은 자릿수를 맞추어 가며 수행되었습니다.
이 모든 작업은 오직 연필과 종이로 이루어졌습니다.
보통 이 ‘컴퓨터’들은 두 팀으로 나뉘어 동일한 작업을 맡았습니다.
양쪽이 모두 완벽하게 계산을 수행했다면 결과는 정확히 일치해야 합니다.
바로 그것을 1821년 여름 어느 운명적인 날에 배비지와 허셜이 확인하고 있었습니다.
배비지의 비전
이 ‘컴퓨터’들을 신뢰할 수 있는 기계로 대체할 수만 있다면 그와 허셜은 더 이상 사람 손으로 계산한 값을 하나하나 대조할 필요가 없을 것입니다.
배비지는 미래에 계산 기계를 사용하는 것이 과학 발전에 필수적인 역할을 하리라고 내다보고 있었습니다.
1822년 “증기로 계산할 수 있다면”이라고 외친 후 배비지는 이렇게 예견하듯이 썼습니다.
차분기관
왜 단순한 계산을 위해 산업용 규모의 거대한 기계가 필요했을까요?
여기에는 두 가지 측면의 문제가 있습니다.
첫째, 기계는 무엇보다도 정확도를 유지해야 합니다.
어떤 부품이든 움직여야 할 때가 아니라면 절대로 움직여서는 안 됩니다.
진동이나 마찰, 그 외에 의도치 않은 작은 움직임조차도 부품을 틀어지게 만들 수 있기 때문입니다.
이를 방지하기 위해 배비지는 수천 번에 달하는 크랭크 회전 동안 기계의 정밀도를 유지할 수 있도록 해야 했으며, 각 부품을 정해진 순간에만 움직이게 고정하고 풀어 주는 다양한 잠금 장치를 설계에 포함시켜야 했습니다.
두 번째 문제는 학창 시절 누구나 겪는 문제이자 덧셈 기본인 올림(carry)에 있습니다.
숫자가 9에서 0으로 넘어갈 때는 왼쪽 자릿수에 1을 올려야 하죠.
당시 전통적인 기계에서는 각 자릿수를 톱니바퀴로 표현했고, 어떤 바퀴가 9에서 0으로 넘어가면 그에 연결된 탭이 다음 바퀴를 움직이도록 되어 있었습니다.
이 방식에서는 올림이 얼마나 연쇄적으로 발생하는지에 따라 바퀴를 돌리는 데 필요한 힘이 달라졌습니다.
그래서 배비지는 이 문제를 해결하기 위해 매우 영리한 메커니즘을 고안합니다.
올림이 발생하면 즉시 전달하지 않고, 기계 작동 주기 중 특정 시점에 하나씩 순차적으로 전달되도록 설계했습니다.
이 올림 정보를 저장하는 장치는 각 바퀴에 연결된 작은 레버로, 이 레버는 ‘올림 있음’ 또는 ‘올림 없음’이라는 두 가지 상태 중 하나를 가질 수 있습니다.
이를 보면 배비지는 분명히 프로그래머입니다.
비록 그가 작성한 프로그램은 레버와 톱니바퀴, 기어, 크랭크로 이루어진 물리적인 형태였지만 그 본질은 다르지 않습니다.
그가 만든 기계는 일련의 연속적인 덧셈 과정을 정교하게 수행하는 작지만 아름다운 절차를 처리하고 있으니까요.
오늘날 우리가 그 프로그램을 코드로 작성한다면 아마 이런 모습이지 싶습니다.
기계식 표기법
배비지는 자신이 구상한 기계의 동작을 표현하기 위한 표기법 체계를 만들었습니다.
이 체계에는 타이밍 다이어그램, 논리 흐름도, 움직이는 부품과 정지한 부품, 그 밖에 기계 의도를 설명하는 데 필요한 다양한 상태를 나타내는 기호들이 포함되어 있습니다.
배비지는 이 표기법을 상호 작용하는 부품들의 ‘보편적인 추상 언어’로 생각했습니다.
실제로 그는 이 방법이 기계뿐만 아니라 모든 형태의 상호 작용에 적용될 수 있다고 믿었습니다.
차분기관의 실패
기계 규모가 너무 컸고, 배비지는 꾸준하게 집중하지 못하고 주변과 조화롭게 일하기 어려운 성격이었습니다.
그는 예민하고 자존심이 강했으며 작은 모욕이나 상처에도 민감해서 주변 사람들의 불만을 사기도 했습니다.
결국 10년 넘게 이어진 작업과 계약자와 갈등, 여러 차례 작업 중단, 심각한 예산 초과로 자금 지원이 중단되고 맙니다.
제 개인적인 견해로는 그의 실패 원인은 끊임없이 더 야심 찬 새로운 아이디어에 마음이 빼앗겼기 때문이라고 봅니다.
즉, 배비지는 무엇인가를 완성하기보다 새로운 일을 시작하는 데 더 큰 즐거움을 느꼈다고 생각합니다.
해석기관
배비지는 차분기관보다 더 효율적인 연산 장치인 이 밀이라는 기계를 만들기 위해 많은 노력을 기울였습니다.
그는 이 기계가 50자리 숫자의 덧셈과 뺄셈을 1초 이내에 처리할 수 있으리라 예상했습니다.
또 곱셈은 시프트와 덧셈 방식(shift-and-add)을, 나눗셈은 시프트와 뺄셈 방식(shift-and-subtract)을 사용하도록 설계하여 배정도(double-precision)의 곱셈과 나눗셈도 1분 이내에 수행할 수 있도록 했습니다.
그는 이 기계가 작동하는 모습을 머릿속에 그려 냈고, 그 의미를 깊게 이해하고 있었습니다.
그는 “이제 모든 산술은 기계 영역으로 들어간 것 같다.”라고 말했습니다.
나아가 이 기계는 체스까지도 프로그래밍할 수 있다고 생각했습니다.
1832년 그는 저서 <The Life of a Philosopher(철학자의 삶)>에 “모든 숙련된 게임은 자동 기계로 수행될 수 있다.”라고 적기도 했습니다.
하지만 이 기계 역시 결국에는 완성되지 못했습니다.
배비지는 밀의 소형 시제품을 만들고 여러 가지 장치를 시험해 보지만, 이 거대한 기계를 완성하는 데 필요한 엄청난 자금과 시간, 에너지는 결코 구할 수 없을 것이라고 생각했습니다.
배비지는 이 거대한 기계를 포기하고 여러 가지 조정과 최적화 끝에 부품 수는 3분의 1로 줄이고, 속도는 세 배 빠르며, 용량은 기존보다 두 배 이상인 차분기관 2를 설계했습니다.
이것을 보면 그 당시에도 무어의 법칙은 살아 숨 쉬고 있었던 듯합니다.
배비지는 차분기관 2도 실제로 완성하지는 못했습니다.
하지만 바로 이 차분기관 2가 지난 세기말 런던 과학박물관에서 복원한 기계입니다.
배비지는 분명 프로그래머입니다.
그는 기호와 숫자 사이의 연관성을 이해했고, 숫자를 조작할 수 있는 기계라면 그 연관성을 통해 기호도 조작할 수 있다는 사실을 알았습니다.
에이다: 러브레이스 백작 부인
에이다의 튜터 중에는 메리 서머빌(Mary Somerville)이라는 인물이 있습니다.
그녀는 당시 수학과 과학 분야의 여러 중요한 인사들에게 에이다를 소개해 주었는데, 그중에는 찰스 배비지도 있습니다.
에이다는 배비지가 주최한 만찬에 초대되어 차분기관 시제품을 보고 그 작동 원리에 매료됩니다.
이후 그녀는 자주 배비지를 찾아가 그의 기계와 비전에 대해 이야기를 나눕니다.
그 과정에서 배비지는 자신이 고안한 해석기관의 숭고한 목표를 설명하고, 에이다는 그 복잡함과 가능성에 강한 흥미를 느낍니다.
그렇게 에이다는 배비지의 기계에 빠져들어 프로그래머가 됩니다.
이후 에이다는 19세 때 제8대 오컴 경(Lord Ockham)이자 초대 러브레이스 백작(Earl of Lovelace)인 윌리엄 킹과 결혼했고, 그렇게 에이다는 러브레이스 백작 부인이 됩니다.
비록 병약한 몸과 자녀 양육으로 힘들었음에도 그녀는 수학과 배비지의 아이디어 연구를 계속 이어 갑니다.
에이다가 배비지에게 튜터를 추천해 달라고 요청하자 배비지는 어거스터스 드 모르간을 소개합니다.
에이다는 배비지를 자주 찾아갔고, 편지와 메시지를 주고받으며 열정적으로 협력했습니다.
실제로 그녀는 “미친 듯한 열정으로 일하며 수많은 요구를 하고, 때로는 일을 엄청 시키고, 애교를 부리기도 하며, 짜증을 내기도 했다.”라고 합니다.
그렇게 작업이 거듭될수록 그녀의 열정은 더욱 커져만 갔습니다.
에이다는 이런 광기 어린 열정으로 배비지의 해석기관에 대한 학술 논문에 A부터 G까지 노트 일곱 개를 작성합니다.
이 노트 분량은 원래 논문 내용보다 세 배나 많습니다.
1843년에 출판된 이 노트들은 매우 훌륭했고 에이다의 열정이 담겨 있습니다.
예를 들어 주석 A에는 다음 내용이 적혀 있습니다.
이 같은 노트와 더불어 해석기관이 단순한 숫자뿐만 아니라 기호를 표현할 수 있다는 에이다의 발언을 토대로 그녀는 종종 ‘최초의 프로그래머’라고 평가받습니다.
최초의 프로그래머?
에이다의 노트를 꼼꼼히 살펴보면 그녀가 엄연한 프로그래머였다는 것을 알 수 있습니다.
그녀는 해석기관을 이해했고 깊게 매료되어 있었습니다.
또 에이다는 기계의 작동 방식을 머릿속에 그리고 그 실행 과정을 따라갈 수 있었습니다.
에이다가 실제로 해석기관을 만져 볼 수 있었다면 더 완벽하게 그 기계를 다룰 수 있었을 것입니다.
그토록 애착을 갖는 기계가 무엇을 할 수 있는지 아주 명확히 알고 있지만, 정작 에이다는 그 해석기관이 실제로 작동하는 모습은 볼 수 없었습니다.
에이다는 이미 그 기계가 작동하는 모습을 평생 보지 못할 것을 알았습니다.
아마도 에이다는 해석기관에 대해 기쁨과 안타까움, 거대한 꿈과 절망적인 희망이 뒤섞인 복잡한 감정을 가지고 있었을 것입니다.
러브레이스 백작 부인 에이다가 비록 최초의 프로그래머는 아닐지라도, 그녀와 배비지는 분명히 최초의 공동 프로그래머였다고 말이죠.
복잡한 결말
후대의 많은 선구자는 배비지와 에이다에게 깊은 존경을 표했습니다.
배비지의 해석기관을 전자 기계 방식으로 구현한 하버드 마크 I의 개발자 하워드 아이켄(Howard Aiken)과 그레이스 하퍼(Grace Hopper)의 사례에서 배비지와 에이다 간 협력 관계가 재현되는 모습을 엿볼 수 있습니다.
다만 앞서 이야기했듯이 이런 선구자들이 배비지와 에이다에게서 직접적인 영향을 받거나 그들의 지도를 받았다고 단정하기는 어렵습니다.
차분기관 2의 실현
1980년대 후반에서 1990년대 초반, 런던 과학박물관의 연구진은 작동 가능한 차분기관 2를 제작했습니다.
런던 과학박물관의 컴퓨팅 큐레이터이자 이 프로젝트를 처음부터 끝까지 이끈 도론 스웨이드(Doron Swade)는 배비지의 설계에 대해 이렇게 말합니다.
하지만 부품 4,000여 개가 모두 정확하게 정렬되고 고쳐야 할 부분들을 모두 적용하자, 결국 차분기관 2는 완벽하게 작동했습니다.
https://youtu.be/be1EM3gQkAY?si=C7I2rviSLCovUz87