컴퓨터 프로그래밍의 역사 2 - kuimoani/dev-cheatsheet GitHub Wiki
https://github.com/kuimoani/dev-cheatsheet/wiki/컴퓨터-프로그래밍의-역사-1 에 이어서...
분석기관(Analytical Engine)의 탄생
1833년에 찰스 배비지(Charles Babbage)는 삼각함수와 로그계산을 위한 차분기관을 개발하던중에 이를 좀 더 범용적인 계산 용도로 사용하기 위해 분석기관(Analytical Engine)의 연구를 시작한다.
찰스 배비지의 분석기관 |
이 과정에서 현대 컴퓨터의 형태가 되는 여러가지 아이디어를 구체화 하는데
- Mill 이라는 부분에서 산술계산(사칙연산), 반복계산(loop), 논리계산(if)을 하도록 함
- 미래에 CPU/ALU 의 아이디어로 활용된다.
- 이 아이디어를 낼 때 제작중이었던 차분기관이 산술계산이 가능했기 때문에 여기에 반복, 논리 계산 기능을 추가한 듯 하다. 구조가 굉장히 비슷하다.
- 40자리수(10^40)를 계산하기 위해 1개의 축에 40개의 톱니바퀴가 달려있고 이 축이 여러개로 되어 있다.
- 2개의 계산용 숫자를 기억하도록 축 2개를 내장하였다. (CPU Register 개념)
- 입출력장치로 천공카드를 사용함
- 미래에 IBM이 이 방식을 사용한다.
- 자카드 직기(Jacquard loom)로부터 아이디어를 얻었다.
- Operation, Variable, Number 카드를 각각 입력하는 방식이다.
- 카드에 계산결과를 펀칭하여 입력에 재사용할 수 있도록 했다.
- Control barrel 은 천공카드에 기록된 Operation을 읽어서 기계동작을 제어하도록 했다.
- 미래에 제어 장치(control unit, CU)의 아이디어로 활용된다.
- 오르골 같은 악기에 쓰인 장치와 같은 원리로, 스터드를 여러개 박아놓은 원통을 회전시키면서 다른 기구와 연결되는 구조이다.
- Storage는 입력장치로 입력된 숫자나 계산결과를 기억하고 꺼내 쓸 수 있도록 했다.
- 미래에 Memory나 Disk의 아이디어로 활용된다.
- Mill 의 Register로 사용된 축과 동일한 구조인데 1,000개의 숫자를 기록하려면 1,000개의 축이 필요해서 규모가 어마어마 해야 했다.
- 10진수 40자리를 1,000개 저장해야 했으니 즉, 약 16.6kb 용량을 저장할 수 있었다.
- 증기기관을 연결하여 손으로 기어를 돌리던 작업을 자동화 한다.
분석기관의 각 파트 (각 인물은 배버지와 에이다) |
위의 아이디어를 처음부터 완성한 것은 아니었고 찰스 배비지는 당시에 유명했기 때문에 신문이나 강의나 학회 등등에서 다른 학자들과의 교류를 통해 초기 아이디어를 점점 더 구체화 하던 중이었다. 1840년에 배비지는 어느날 이탈리아 토리노에 방문했을 때 분석기관에 대해 강의한 적이 있는데, 1842년 이탈리아의 한 수학자는 이 강의를 바탕으로 프랑스어로 된 논문을 냈다.
참고
- https://history-computer.com/charles-babbage-analytical-engine/
- https://www.youtube.com/watch?v=eMy4vSZ-J_I
최초의 프로그래머
1842년에 영국의 수학자이자 작가인 에이다 러브레이스(Ada Lovelace)는 이 논문을 영어로 번역하는 일을 맡았는데 설명만으로 분석기관의 동작방식을 다른 과학자나 대중에게 이해시키기는 너무 난해했다. 에이다는 원래 친분이 있었던 배비지의 발명품에 관심이 많아서 분석기관에 대한 아이디어를 내거나 조언을 받으며 교류했고 이후 분석기관을 사용하여 베르누이의 수를 계산하는 예제를 만들어 논문에 포함시킨다.
베르누이의 수 계산 알고리즘을 설명한 에이다의 Note G |
이 노트를 보면 마치 인간의 풀이과정을 컴퓨터가 이해할 수 있도록 알고리즘과 자료구조를 사용한 디버깅 시트처럼 보인다. 또한 절차적인 처리 방식이나, 연산코드(opcode), 반복문(loop/goto), 서브루틴, 상수, 작업변수, 출력변수 등 현대의 프로그래머가 보기에 익숙한 것들도 많이 보인다.
안타깝게도 배비지는 예산 문제, 작업자들과의 갈등 등으로 분석기관을 완성시키지 못했고 에이다의 알고리즘도 실제로 실행되지는 못했지만 이 노트로 인해 에이다는 훗날 최초의 프로그래머로 인정받게 된다. 먼 훗날 1978년에 미국 국방부는 내부의 표준 프로그래밍 언어로 ADA를 선택했는데, 이는 에이다 러브레이스 이름에서 따 온 것이다.
Note G를 작성한 1843년의 Ada 사진 |
참고
- https://en.wikipedia.org/wiki/Ada_Lovelace
- https://namu.wiki/w/Ada(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%96%B8%EC%96%B4)
그 이후로 배버지의 아들이나 다른 발명가들이 이 분석기관을 만들거나 개선하기 위해 노력했지만 제대로 완성된 것은 없었다.
당시에...
- 1837년 미국의 사무엘 모스가 모스 전신기를 발명했다.
- 1844년 미국의 사무엘 모스가 모스 부호를 만들었다.
Boolean의 탄생
1847년 영국의 수학자인 조지 부울(George Boole)은 "The Mathematical Analysis of Logic (논리의 수학적 분석)"이라는 저서를 시작으로 논리적 추론 과정을 기호 대수학(Symbolical Algebra)으로 정리하기 시작한다.
1854년 부울의 "Laws of Thought(생각의 법칙)" 논문 일부 |
예를 들면,
- "men and women", "men or women"는 "men + women"으로 표현할 수 있다.
- "women and men", "women or men"는 "women + men"로 표현할 수 있다.
- men을 x로, women을 y로 치환하면
- "x + y = y + x" 가 성립한다.
여기에 "유럽사람"을 붙인다면,
- "European men and women"으로 표현할 수 있다.
- "European men and European women"으로도 표현할 수 있다.
- men을 x로, women을 y로, European을 z로 치환하면
- 즉 "z(x + y) = zx + zy" 가 성립한다.
동시대에 유명했던 드모르간이나 다른 많은 학자들의 아이디어도 많았지만, 부울의 아이디어가 좀 더 단순하면서도 잘 정리가 되어 있어서 점차 부울의 아이디어가 주목받기 시작한다. 이때는 이러한 부울의 아이디어를 지칭하는 이름이 없었는데, 1880년 다른 과학자의 저서에서 "Boolean Algebra"라는 이름으로 부울의 아이디어가 불려졌다. 이후로 이 Boolean Algebra는 전자공학의 토대가 되며, 현대 프로그래밍에서의 bool 또는 boolean 은 여기서 따 온 이름이다. 구글은 2015년11월2일에 조지 부울 탄생 200주년을 기념하여 다음과 같은 로고를 사용하기도 했다.
조지 부울의 탄생 200주년 기념 구글 로고 |
참고
계산기의 상업적 성공
19세기는 산업혁명으로 인해 별의 별 발명품이 나오던 시대였다. 파스칼의 계산기는 상업적으로도 성공할 수 있다는 것을 보여줬고 이후 수많은 제품들이 출시되고 사라졌다.
19세기 기계식 계산기의 생산기간 |
참고:
당시에...
- 1879년 에디슨은 백열전구를 발명한다.
- 1882년 에디슨은 뉴욕에 최초의 전기 발전소를 만들었다.
천공카드를 활용한 Tabulating machine 개발
1880년경 미국은 인구조사 문제로 고민이 생겼다. 미국은 헌법상 10년마다 인구조사를 해야 했는데 1790년의 첫번째 인구조사는 9개월 밖에 걸리지 않았지만, 이후 인구가 크게 증가하여 1880년의 인구조사는 무려 8년이 걸렸고 천문학적인 돈이 들었다. 다음 1890년의 인구조사는 훨씬 더 오래걸리고 많은 비용이 들 것이 분명했기 때문에 미국의 인구조사국은 인구조사에 도움을 주는 발명가를 뽑기 위해 공모전을 연다.
허먼 홀러리스(Herman Hollerith)는 대학 졸업 후 교수의 추천으로 미국 인구조사국에서 임시직으로 근무했기 때문에 인구조사 방법이나 어려움을 잘 알고 있었다. 이후 세수부족으로 인한 규모축소로 인구조사국을 나와야 했으며 MIT에서 기계공학 강사를 하다가 특허청에서 특허 심사관으로 근무하던 중이 었는데, 어느날 기차에서 주운 티켓을 본인 것이라고 주장하는 것을 방지하기 위하여 철도원이 티켓의 여러 위치에 구멍을 내어 승객의 성별,나이,피부색 같은 승객정보를 펀칭으로 기록하는 것을 보고 영감을 얻어 천공카드를 인구조사에 활용하기 위한 연구를 시작한다.
당시에 쓰인 철도티켓 |
홀러리스는 자카드 직기(Jacquard loom)의 방식을 참고하기도 했는데, 기계식으로 한 줄씩 읽어서 자카드의 방식은 속도가 중요한 통계목적에는 맞지 않았기 때문에 수은과 핀을 사용하여 천공카드의 정보를 전기신호로 바꾸고 이 전기신호가 카운터를 올리는 방식으로 개발했으며 특허 전문가 답게 특허까지 출원했다.
결국 미국 인구조사국은 홀러리스와 계약했고 1890년 9월에 첫번째 인구데이터를 일부를 가지고 통계를 냈는데 기존 방식으로 2년이 걸릴 일을 홀러리스의 Tabulating machine은 3개월만에 통계를 낼 수 있었다.
홀러리스의 Tabulating machine |
이후 홀러리스는 Tabulating machine의 여러가지 가능성을 보고 직접 회사를 차려서 사업을 시작했는데 인수, 합병 등등을 거치면서 이 회사는 1924년에 International Business Machines(IBM)이 된다.
참고:
- https://en.wikipedia.org/wiki/Herman_Hollerith
- https://www.immigrantentrepreneurship.org/entries/herman-hollerith/
- https://en.wikipedia.org/wiki/Tabulating_machine
당시에...
- 1904년 영국의 플레밍이 최초의 진공관인 2극 진공관을 발명했다.
- 1906년 미국의 디포리스트가 3극 진공관을 발명했다.
이후 전자공학의 시대가 열리기 시작했다.
- 1914년 제1차 세계 대전이 발발한다.
- 1918년 제1차 세계 대전이 끝난다.
그리고 1939년에 독일은 제2차 세계대전을 일으키는데...
https://github.com/kuimoani/dev-cheatsheet/wiki/컴퓨터-프로그래밍의-역사-3 에서 계속