The journey to becoming a developer

My future is created by what I do today, not tomorrow.

Computer Science/Crash Course

Early Computing: Crash Course Computer Science #1

Millie 2021. 10. 1. 15:38

Crash Course의 첫 번째 수업! 바로 "초기 컴퓨팅"에 관한 이야기를 하고 있다. 

우리 삶에서 없어서는 안 될 필수적인 존재로 자리잡은 컴퓨터는, 어디서부터 시작되었고 어떻게 발전되었을까? 주판에서 시작된 연산의 역사가 어떻게 첨단 기계까지 올 수 있었는지 살펴보자. 


현재 컴퓨터는 세상에서 Life Blood(생명선)과 같은 존재. 

모든 컴퓨터가 만약 한 번에 꺼진다면 어떤 일이 생길까? 

  • power grid(전력망)는 꺼질 것이다.
  • 차량들이 충돌하고, 비행기들은 추락한다.
  • 정수처리장은 정지한다.
  • 증권 거래소도 멈춰버린다.
  • 음식을 실은 트럭들은 배달 목적지를 모르게 된다.
  • 일하는 사람들은 월급을 받지 못한다.
  • 컴퓨터와 연관이 없어 보이는 물건들도 만들어질 수 없게 된다. 예를 들면 의자, 티셔츠 같은 것들.

컴퓨터는 거의 모든 측면에서 인간의 삶을 바꿨다. 

 

사실 이렇게 기술이 주도하는 세계적인 변화는 컴퓨터 이전에도 있었다. 바로 산업 혁명. 이때 제조업의 발전은 인류 문명에 새로운 규모의 변화를 가져왔는데, 바로 컴퓨터 기술이 우리의 삶에 과거 산업 혁명과 같은 놀라운 변화를 가져오고 있다. 예를 들면 이렇다. 

  • 자동화된 농업, 의료 장비
  • 세계 어디에나 연결되는 통신 기술 (global telecommunications)
  • 더 나은 교육 기회들
  • Virtual Reality & Self Driving Cars

우리는 "전자 혁명 시대(The Electronic Age)"라고 말할 만한 시대에 살고 있다! 

 

Computing's origins : 연산의 기원 

  • 컴퓨터는 비교적 새롭지만 연산은 예전부터 있어 왔던 것이다. 그래서 우선 연산의 기원부터 알아 본다.

(1) Abacus

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

(2) Computing devices

  • 이후 4000년 동안 인류는 많은 종류의 똑똑한 computing device들을 개발했다. 또한 계산에 사용할 수 있는 수백 가지 유형의 시계들을 개발했다. 이것들은 일출, 밀물과 썰물, 천체, 시간들을 계산할 수 있었다.
    • astrolabe : 배가 바다 위에 있을 때 위도를 계산할 수 있는 천문 관측 장치
    • slide rule : 곱셈과 나눗셈을 할 때 도움을 주는 계산 자
  • 이러한 장치들은 기존에 계산하기 힘든 것들을 더욱 더 빠르고 쉽게 자주, 정확하게 계산할 수 있게 했다.
  • 사람들이 어려운 계산에 쉽게 진입할 수 있도록 장벽을 낮춰주었다.
  • 초기 컴퓨터 개척자인 Charles Babbage는 "각 분야의 지식이 증가하고 새로운 장치가 고안될수록, 인류의 노동력은 단축된다"고 말했다.

Computer 단어의 유래

  • 위와 같은 도구들은 Computer라고 불리진 않았다.
  • 이 단어가 가장 처음 나타난 것은 1613년 Richard Braithwait가 집필한 책이었다. 그 당시 Computer는 기계가 아니라 직업의 이름으로 사용되었다.
  • 그 당시에는 컴퓨터란 가끔 기계의 도움으로 계산을 할 수 있는 사람을 뜻헀다.
  • 직업의 이름으로서의 컴퓨터는 의미가 기계로 옮겨진 1800년 후반까지 사용되었다.

Step Reckoner

  • 독일 정치가 Gottfried Leibniz가 1694년에 개발한 장치
  • 이것은 단순히 자동차가 얼마나 주행했는지 더해주는 주행거리계와 같은 역할을 했다. 
  • 여러 종류의 기어를 가지고 있으며, 각 기어는 10개의 톱니를 가지고 있다. 10개의 톱니는 0부터 9까지 나타냈다. 하나의 기어가 9를 지나가면 0으로 다시 되돌아갔다. 그리고 인접한 기어를 한 단계 진행시켰다. 마치 주판이 10을 더할 때와 같다. 뺄셈을 할 때는 반대로 작동시키면 되었다. 곱셈과 나눗셈도 자동으로 가능했다.
  • 이것은 4가지의 연산을 모두 할 수 있는 최초의 장치였다.
  • 이 설계(design)는 매우 성공적이어서 이후 300여년 동안 이 계산기를 사용했다.
  • 그러나 mechanical calculator를 이용하더라도, 실제 세계의 문제는 답을 결정하기 전에 많은 단계의 연산이 필요했다. 하나의 답을 도출하는 데에도 몇 시간, 며칠이 걸렸다.
  • 또한 이 수작업 기계는 너무 비쌌고, 대부분의 사람들은 구하기 힘들었다.

Pre-computed tables

  • 20세기 이전의 대부분의 사람들은 "인간 컴퓨터"에 의해 조립된 "미리 컴퓨팅 된 표"를 통해서 컴퓨팅을 경험했다.
  • 즉 만약 엄청나게 큰 수의 제곱근을 구하고 싶다면, 하루 종일 step reckoner를 통해 답을 구하는 게 아니라, 제곱근 표들로 가득한 거대한 책을 찾으면 몇 분 안에 값을 확인할 수 있었다.

Computing in the war

  • 전쟁터에서는 특히 속도와 정확도가 중요한데, 그래서 군대는 복잡한 문제를 해결하기 위해 처음으로 컴퓨팅을 적용했다.
  • 특히 1800년대에 1km이상(또는 반 마일 이상)을 넘게 발사될 수 있는 포탄의 포격 위치를 맞추는 것은 정말 어려운 문제였다. 다양한 풍향 상태, 온도, 기압 때문에 큰 배를 맞추기도 힘들었다.
  • Range tables를 이용하니 사격수에게 사격이 가능한 환경 조건과 거리를 찾을 수 있게 도와주었고, 캐논을 세우는 각도도 알려주었다. 이것은 매우 잘 먹혀서 제 2차 세계 대전에서도 사용되었다.

Difference Engine by Charles Babbage

  • 그런데 캐논이나 포탄의 설계를 변경하게 된다면 새로운 계산 표가 필요했다. 이것은 만드는 데 많은 시간이 소요되었고 필연적으로 에러도 발생했다. Charles Babbage는 이 문제점을 인식하고 1822년에 "the Royal Astronomical Society"에 "천문학 그리고 수학적으로 계산된 표를 기계에 적용할 때 참고사항"이라는 글을 기고했다.
  • Charles Babbage는 "Difference Engine"이라 불리는 새로운 기계 장치를 제안했다. 이것은 다항식을 계산할 수 있는 더욱 복잡한 기계였다.
  • 다항식(Polynomials)은 여러 변수 간의 관계를 설명할 수 있다. 예를 들어 범위, 기압 등. 또한 손으로 계산하기 어려운 대수(approximate logarithmic)와 삼각함수(trigonometric functions)를 측정하는 데 사용할 수 있다. 
  • Babbage는 1823년 연구를 시작했고, 그 후 20년 동안 총 무게가 15톤에 달하는 25000가지의 부품들을 조립하고 만들었다. 하지만 이 프로젝트는 무산되었다.
  • 대신 1991년, 사학자들은 Babbage가 설계하고 만든 Difference Engine을 기반으로 한 개발을 마쳤고, 이것은 작동되었다.

Analytical Engine - general purpose computer

  • 더 중요한 것은 Babbage가 Difference Engine을 연구하는 동안 "분석 엔진(Analytical Engine)"이라는 더 복잡한 기계를 생각해 냈다는 것이다. 이것은 일반적인 모든 계산 장치와는 다르게 general purpose computer, 즉 범용적인 목적을 가진 컴퓨터였다. 하나의 계산에 국한되지 않고 많은 용도로 사용할 수 있다는 것.
  • 이것은 데이터를 받을 수 있었고, 순차적으로 작동이 가능했다. 심지어 메모리와 원시적인 프린터도 가지고 있었다.
  • Differnece Engine과 같이 이것은 시대를 앞서 간 것이었고, 완성되지 못했다.
  • 하지만 "automatic computer"라는 아이디어 자체만으로도 놀라운 것이었고, 자동화된 작업, 컴퓨터 프로그램으로 나아갈 수 있는 가이드 역할을 해 주었다.
  • Analytical Engine은 많은 컴퓨터 과학자들에게 엄청난 영감을 주었다.

Ada Lovelace, the world's first programmer

  • 영국인 수학자, Analytical Engine에 대한 가상 프로그램에 대해 저술함
  • 미래에는 분석을 위한 새롭고, 다양하고 강력한 언어가 개발될 것이라고 말했다.
  • Ada의 업적을 높여서 사람들은 세계 최초의 프로그래머라고 말한다. 

19세기 후반 Computing devices

  • 과학과 공학의 특정 작업에 목적을 두고 사용됨. 즉 사업, 정부, 일상생활에서는 잘 사용되지 않았다.
  • 미국에서는 인구조사를 매 10년마다 하기로 함. 그런데 1890년 당시 인구조사를 하는 데 예상 기간이 13년이었다. 그래서 인구조사부는 tabulating machine을 발명한 Herman Hollerith에게 연구를 맡김.
  • Hollerith는 electro-mechanical(전기 기계)라는 것을 개발했는데 이것은 수를 저장할 때 전통적인 계산 시스템을 사용했다. 그런데 전동장치를 결합시킨 것이다. 격자 무늬가 있는 punch card를 사용했다. 펀치를 뚫으면 데이터를 나타낼 수 있었다.

  • 예를 들어 결혼했다면 결혼 상태를 나타내는 구멍에 펀치를 뚫는다. 그리고 이 카드를 Hollerith의 기계에 넣었을 때 그 자리에 구멍이 뚫려 있다면, 작은 금속 핀이 카드를 향해 내려오게 된다.
  • 핀은 종이에 있는 구멍을 통과한다. 그 회로가 완성되면, 종이는 유리병 속으로 들어간다. 완성된 회로는 전기 모터를 하나 더 움직인다. 이렇게 되면 기어를 돌려 하나를 더 추가하도록 한다. 이 경우에는 결혼 합계를 말한다.
  • Hollerith의 기계는 manual tabulations로 계산하는 것보다 10배 이상 빨랐다. 인구 조사는 2년 6개월만에 끝날 수 있었고 인구조사는 수백만 달러를 절약할 수 있었다.

IBM의 탄생

  • 사업자들은 컴퓨터의 가치를 인식하기 시작했다. 회계, 보험 평가 및 재고관리와 같은 노동과 데이터 집약적인 업무를 개선하는 데에서 이익을 높일 수 있는 잠재력을 보았다.
  • 이들의 요구로 인해 Hollerith는 The Tabulating Machine Company를 설립하였고 이후 1924년 다른 기계 제작자와 합병하였다. 이것은 The International Business Machines Corporation 또는 IBM이라고 불리는 기업이 되었다.
  • Business Machines라고 불리는 전기 기계는 크게 성공하였고, 상업과 정부를 변화시켰다.
  • 1900년대 중반에는 세계 인구의 증가와 전 세계적인 무역의 증가로 데이터를 처리하는 데 더 빠른 속도와 유연성이 있는 도구가 필요했다. 이것은 디지털 컴퓨터의 무대를 만들었다.

후기

이제는 우리의 삶에 너무나도 깊게 침투되어 있고 삶의 일부가 된 컴퓨터는 심지어 아직 '유아기'에 불과하고, 아직 그 능력을 다 발휘하지 않았다고 한다. 즉 잠재력이 어마어마한 것이다.

이렇게 커다란 영향을 끼치고 있지만, 불과 백 몇년 전만 해도 컴퓨터는 일상에 아예 존재하지 않았다는 것은 놀라운 일이다. 이 모든 게 정말 짧은 시간 안에 일어난 변화이다. 미래는 또 얼마나 빠르게, 그리고 많이 변화하게 될까? 도태되지 않으려면 끊임없이 배워야겠다는 생각이 든다.