컴퓨터의 역사


코딩을 지탱하는 기술이라는 책 2장에는 간단히 프로그래밍의 역사에 대해 소개한다. 이 부분을 읽다 보니 더 자세히 알고 싶어졌다. 그래서 컴퓨터는 언제 처음으로 생겼으며 프로그래밍은 어떻게 생겨났을까? 이번 글을 작성하면서 참고한 자료는 Computer History MuseumCrash Course: Computer Science이다. 컴퓨터와 프로그래밍의 시작을 살펴보기 위해서는 기원전 2500년으로 돌아가야 한다. 하나둘 셋 뿅!

주판

기원전 2500년 메소포타미아에서 발명된 주판은 계산을 위해 가장 예전부터 사용되던 장비이다. 주판은 마치 우리가 컴퓨터 하드디스크에 숫자를 저장하는 것과 같이 현재 계산의 상태를 기록한다. 주판은 점점 커져가는 규모의 사회 인원과 자원을 개개인이 기억하거나 다루는 것이 어려워졌기 때문에 만들어지게 되었다.

하지만 당연하게도 주판은 컴퓨터가 아니다! 그렇다면 컴퓨터라는 단어가 제일 처음 나타난 것은 언제일까?

1613년 Richard Braithwait가 집필한 책에서 기계가 아닌 직업의 이름을 말할 때 컴퓨터라는 단어를 사용했다. 그 시대에는 기계의 도움으로 계산을 할 수 있는 사람을 컴퓨터라고 일컫기도 했다. 이 직업의 명칭은 컴퓨터라는 의미가 기계로 옮겨진 1800년 후반까지 사용되었다.

Step Reckoner

독일 정치가 Gottfried Leibniz가 Step Reckoner라는 기계를 1694년에 개발했다. 이 기계는 주행거리계와 같은 역할을 했다. 주행한 거리를 더해주는 것뿐만 아니라, 곱셈과 나눗셈까지 가능했다. Step Reckoner는 이러한 연산을 자동으로 할 수 있었다.

step reckoner

이 기계는 네 가지 연산을 할 수 있는 최초의 장치였다. 그 당시에는 굉장히 획기적인 이 계산기를 약 300년간 사용했다고 한다. 하지만 하나의 결과를 얻기 위해서는 몇 시간, 며칠씩 걸렸다. 기계가 너무 비쌌기 때문에 대부분의 사람이 구하기 힘들다는 문제도 있었다.

Pre-Computed Tables

대책: 미리 계산 해둔 표 (table)을 확인함으로써 Step Reckoner를 가지고 계산하느라 며칠씩 메달리지 않아도 값을 얻을 수 있었다.

Difference Engine & Analytical Engine

Charles Babbage가 제안한 새로운 기계 장치가 바로 Difference Engine이다. 다항식을 계산할 수 있는 더욱더 복잡한 기계였다. 다항식은 여러 변수 간의 관계를 설명할 수 있다. 대수나 삼각함수를 측정하는 데에 사용할 수도 있었다. 그리고 Babbage가 생각한 또 다른 Analytical Engine은 범용적으로 사용 가능한 컴퓨터였다. 단순히 하나의 계산에 국한되지 않고 많은 용도로 사용 가능했다.

  • 데이터 받을 수 있음
  • 순차적 작동 가능
  • 기억장치와 원시적 프린터 가지고 있음

Difference Engine

하지만 Difference Engine과 마찬가지로 시대를 앞선 바람에 완성되지 못했다. 하지만 이 아이디어는 컴퓨터 프로그램으로 나아갈 수 있는 가이드 역할이 되었다. 분석 엔진은 Babbage의 아이디어를 그들의 기계에 접목한 첫 세대 컴퓨터 과학자들에게 엄청난 영감을 줬다. 그래서 그는 컴퓨팅의 아버지라고 불린다.

인구 조사와 컴퓨터의 필요성

1880년대, 미국에는 인구수가 폭발적으로 증가했다. 미국 헌법은 10년마다 인구 조사가 10년마다 실시될 것을 요구했다. 인구 조사부는 tabulating machine을 발명한 Herman Hollerith에게 연구를 맡겼다. 그가 개발한 electro-mechanical 기계는 수를 저장할 때 전통적인 계산 시스템을 사용했다. Step Reckoner와 비슷했지만, 그 장치에 전동장치를 결합했다.

Hollerith의 기계는 격자무늬가 있는 펀치 카드를 사용했다. 펀치를 뚫으면 데이터를 나타내는 방식이다. 카드를 기계에 넣었을 때 구멍이 뚫려있다면 작은 금속 핀이 그 구멍으로 내려오게 된다. 핀은 종이에 있는 구멍을 통과한다. 이런 식으로 합계를 구해서 인구 조사를 했다. 그래서 이 기계를 통해 인구조사를 2년 6개월 만에 끝냈고, 인구 조사부는 수백만 달러를 절약할 수 있었다.

사업자들이 컴퓨터의 가치를 인식하기 시작했다! 사업자들의 요구로 Hollerith는 “The Tabulating Machine Company”를 설립했고 1924년 다른 기계 제작자와 합병했다. 이후 “The “International Business Machines Corporation” 즉 IBM이라 불리는 기업이다.

Electronic Computing의 시작: Harvard Mark 1

인구수는 계속 늘고, 세계 무역 및 운송 네트워크가 연결되면서 데이터의 폭발적인 증가로 이어졌다. 곧 기계적인 컴퓨터가 유지하기에는 비싸고 에러는 증명하기 어려운 거대한 괴물로 변했다는 뜻이다.

가장 크기가 큰 전기식 기계 컴퓨터 중 하나는 IBM이 2차 세계대전 중인 1944년 개발한 Harvard Mark 1이다. 76만 5천 개의 부품들로 구성되어있고, 3백만 개의 연결, 500마일의 전선으로 구성된 컴퓨터이다. 이 컴퓨터는 전환 속도가 느리고 계전기의 마모라는 한계가 있었다. 또한 이 크고 어둡고 따뜻한 기계는 곤충을 끌어들였다.

그때부터 컴퓨터에 문제가 생겼다면 버그가 있다고 말했다. - Grace Hopper

Harvard Mark 1

기계식 컴퓨팅에서 전자식 컴퓨팅으로의 전환

컴퓨팅이 더 발전하기 위해서 전기식 컴퓨터보다 더 빠르고 신뢰할 수 있는 대안이 필요했다. 대안은 이미 존재해있었다. 1904년, 영국 물리학자인 John Amborse Fleming은 새로운 전기 구성 요소를 개발했다. 열이온 밸브는 밀폐된 유리 전구 안에 두 개의 전극을 가둔 것이다. 이것이 최고의 진공관이다.

열이온 밸브 (Thermionic Valve)

이 진공관을 보고 1906년 미국 발명가인 Lee de Forest는 전기의 흐름을 껐다 켤 수 있는 스위치를 만들었다. Fleming이 고안해낸 두 개의 전극 사이에 세 번째 제어 전극을 추가함으로써 말이다! 계전기와 비슷하지만, 진공관은 움직이는 부분이 없었다. 그 말은 마모가 적고, 1초에 수천 번을 전환할 수 있다는 뜻이다. 이 진공관은 라디오, 장거리 전화와 같이 많은 전기 기계들의 기본이 되었다.

하지만 이 진공관은 완벽하지 않았다! 부서지기 쉬웠고, 전구처럼 고장이 났다. 처음에는 비싸기도 했고 컴퓨터에 쓰이기 위해서는 수백, 수천 개의 전기적 스위치가 필요했다. 하지만 1940년대 진공관의 비용과 신뢰성은 상당히 나아져 실현 가능해졌다. 최소한 정부와 같이 재력을 지닌 사람들은 컴퓨터에 진공관을 사용할 수 있었다. 이것은 전자 기계식 컴퓨팅에서 전자식 컴퓨팅으로서의 전환을 의미한다.

Colossus

Tommy Flowers라는 기술자가 개발한 Colossus Mk 1은 최초의 진공관을 사용한 큰 규모의 컴퓨팅이다. 이 기계는 1943년 12월에 완성됐다. 공원에게서 만든 이 기계는 나치 통신을 해독하는 데 쓰였다. 컴퓨터의 아버지라 불리는 앨런 튜링이 2년 앞서 Bombe라는 전자 기계를 공원에서 만든 것과 비슷하다. Bombe는 나치의 에니그마 코드를 해독하기 위해 만들어졌다.

colossus mk 1

어쨌든! Clossus의 최초 버전은 1,600개의 진공관을 지녔고, 코드를 해독하기 위해 총 열 개의 Colossi가 만들어졌다. Colossus는 최초로 프로그래밍이 가능한 전자 컴퓨터로 여겨진다.

ENIAC

프로그래밍은 일종의 플러그 보드에 수백 개의 선을 꽂으면서 진행됐다. 1946년 ENIAC (Electronic Numerical Integrator and Computer)가 그 예다. 펜실베니아 대학에서 발명되었으며 John Mauchly와 J. Presper Eckert에 의해서 고안된 이 컴퓨터는 세계 최초의 진정한 범용으로 프로그래밍이 가능한 전자식 컴퓨터였다.

ENIAC

에니악은 1초당 5,000자리 숫자의 덧셈과 뺄셈을 할 수 있었고 이전에 나온 기계들 보다 훨씬 속도가 빨랐다. 하지만 1950년대, 진공관으로 설계된 컴퓨팅조차 한계에 다다랐다. 속도와 안정성을 개선하고, 가격과 크기를 줄이기 위해 급진적인 전자 스위치가 필요했다.

트랜지스터!

1947년, 벨 연구소 과학자 John Bardeen과 Walter Brattin, William Shockley는 트랜지스터를 발명했고, 이로 인해 컴퓨팅의 새로운 시대가 탄생했다!

트랜지스터는 진공관이나 계전기와 비슷하다. 스위치는 제어 전선을 통한 전력 공급으로 여닫을 수 있다. 반도체를 이용해서 전류를 흐르게 할 수도, 멈추게 할 수도 있다. 1초에 만 번이나 스위치를 끄고 켤 수 있게 되다니! 또한, 작은 크기는 훨씬 더 조그맣고 저렴한 컴퓨터를 만들 수 있게 했다.

IBM은 곧 컴퓨팅 제품을 모두 트랜지스터로 전환했다. 그리고 트랜지스터로 만들어진 컴퓨터를 사무실에, 궁극적으로는 집에 도입했다.

마무리

계전기 - 진공관 - 트랜지스터

이 세 가지 단계를 거쳐 컴퓨터가 우리 집에, 내 가방에 넣어 다닐 수 있게 되었다는 사실을 이 글을 작성하면서 알게 되었다! 무엇이든 간에, 그것의 기원을 알아보고 어떻게 이런 단계에 도달했는지 알아보는 과정은 참 즐겁다. 내가 1880년대에 살던 사람이라면? 난 어떻게 살고 있을까. 어쩌면 케이블의 연결을 이리저리 바꾸고, 문자 그대로의 버그를 잡느라 정신없을 수도 있겠다. 90년대에 태어난 게 이리보나 저리보나 뒤로보나 옆으로 보나 행운이라고 생각된다! 아주 아주 예전부터 편리한 계산을 위해 노력했던 결실을 제대로 맛보고 있는 시대가 바로 지금이니까. 선배님들의 노고를 생각하며 조금 더 감사하고 즐거운 마음으로 프로그래밍을 하도록 해야겠다.

Previous post:

Next post: