본문 바로가기

TIL

컴퓨터의 역사 (22.07.04 TIL)

사전과제를 진행하다보니 모르는것이 꼬리에 꼬리를 물어서 점점 분량이 늘어나게 되었다. 이것까지 공부하는게 맞을까? 하는 생각이 들었지만 과제기한에 일주일도 모자라다는 말이 떠올라서 일단 전부 찾아보기로 했다! 알면 알수록 나한테 좋겠지라는 마인드로 ㅎㅎ 

다행이었던 점은 이제 개발로 먹고살아야 한다고 생각하니 평소에는 관심도 없었을 컴퓨터의 역사를 찾아보는데 은근히 시간가는 줄 모르고 자료를 조사할 수 있었다.

0. 컴퓨터, 프로그래밍?

컴퓨터의 구조를 공부하기 앞서서 컴퓨터가 무엇일까? 라는 생각을 해보았다. 26년동안 나와 가장 많은 시간을 보낸 도구인데 막상 정의를 내려보려니 쉽지 않았다. 과제도 하는겸 프로그래밍 까지 겸사겸사 정리해보려고 한다. 모르는 부분이 있다면 추가로 조사해서 포스팅 할 예정이다. 

컴퓨터

compute(계산하다)에서 알수있듯이 컴퓨터는 원래 수학 계산을 수행하는 사람을 부르는 말이었다. 그래서 역사를 살펴보면 기계적 계산기에서 시작하는 것을 볼수 있다. 현대의 컴퓨터도 계산기와 동일하게 입력을 받아 출력을 내보내지만 그 안에서는 입력, 제어, 기억, 연산, 출력 5가지 장치가 서로 밀접하게 연관되어 업무를 처리한다.

프로그래밍

수식이나 작업을 컴퓨터에 알맞도록 정리해서 순서를 정하고 컴퓨터 특유의 명령코드로 고쳐쓰는 작업을 총칭한다. 정의를 그대로 살펴보면 솔직히 너무 추상적이고 포괄적이라 어떤 말이 핵심일까 고민을 해보았다. '순서' 라는 말이 핵심이라고 생각한다. 만약 순서를 정하지 못한다면 우리가 미래시점에 원하는 작업을 미리 작성할 수 없기 때문이다. 내가 생각하는 프로그래밍을 다시 적어보자면, 컴퓨터에게 "제가 원하는 작업을 정해진 순서대로 처리해주세요~"라고 부탁하는 것이다.

1.  컴퓨터의 역사

계산기 ~ 현재 컴퓨터의 계보

주판 - 파스칼의 계산기 - 라이프니츠 계산기 - 배비지의 차분기관과 해석기관 - 천공 카드 컴퓨터 - 튜링기계 - 제 1, 2, 3, 4, 5세대 컴퓨터

이름에서 알 수 있듯이(compute : 계산하다) 컴퓨터의 시초는 계산기에서 시작되었다고 한다. 과제의 본 목적이 컴퓨터에 대한 이해를 하는 것이므로 컴퓨터에 영향을 준 요소들만 자세히 알아 볼 것이다.

라이프니츠의 계산기

덧셈, 뺄셈의 반복을 통해 곱셈, 나눗셈, 평방근을 구하는 방식의 계산를 고안하였다. 2진법의 강력한 옹호자로 이후에 컴퓨터 2진수 도입에 큰 영향을 주었음.

배비지의 해석기관

배비지는 단순 사칙연산을 넘어 방정식 계산이 가능한 기계를 고안하였다. 방정식을 푼다는 말은 한 번 주어진 입력을 푸는게 아닌 여러가지 명령을 동시에 입력하여 순차적으로 풀 수 있다는 말이다. 순차적(순서)으로 계산(작업)을 처리하는 현대 컴퓨터 프로그래밍의 최초라고 할 수 있다. 메커니즘을 살펴보면 천공카드에서 구멍을 통과하느냐 못하냐에 따라 작업지시(cpu)를 내리고 프로세스를 제어한 뒤 숫자카드로 저장(memory)을 하는 방식을 채택한다. 현대 컴퓨터의 중앙처리장치와 메모리와 상당히 유사한 요소들을 보여준다.

해석기관 사진

튜링기계

튜링머신 구상도

영국의 수학자 앨런 튜링이 논문에서 제시한 내용이다. 논문의 내용은 미국의 수학자 쿠르트 괴델이 "기계적인 방식으로는 수학의 모든 사실을 만들어낼 수 없다"라는 사실을 튜링머신이라는 가상의 기계로 재증명하는 내용이다. 이 기계는 테이프, 제어장치, 입출력 헤드의 총 3개 장치와 현재 상태, 읽은 기호, 다음 상태, 쓸 기호, 움직일 방향 등 총 5개의 요소로 구성되어 있다. 테이프의 각각의 칸에는 숫자가 적힐 수 있고 지워질 수도 있다. 이러한 숫자를 입출력 헤드가 읽으면 제어장치에서 그 상태와 테이프에 적힌 숫자에 따라 어떤 행동을 하고 다음 상태를 결정한다. 현대 컴퓨터 요소와 비교해보자면 테이프 : 메모리, 숫자 : 데이터, 제어장치 : cpu, 입출력 헤드 :  입출력 장치 에 해당한다고 볼 수 있다.

이러한 튜링머신 중 가장 완벽한 것을 궁극의 기계라고 부르는데, 튜링은 궁극의 기계로도 해결하지 못하는 수학문제가 있음을 주장한다. 하지만 아이러니하게도 이 튜링머신이 현재 컴퓨터의 원천 설계도가 되어 인류의 정보혁명을 이끌어낸다.

현대 컴퓨터

제1세대 컴퓨터

1세대 컴퓨터 중 에니악 사진

1세대 컴퓨터는 보다시피 엄청나게 거대한게 특징이다. 데이터의 저장과 처리를 진공관으로 진행했기 때문이다. 폰노이만 구조를 도입하기 이전이라 데이터를 컴퓨터 내부에 저장할 수 없었고 외부에서 데이터처리를 해주어야 했다. 이해를 돕기 위해 에니악으로 인스타그램을 쓴다고 생각해보자. 아마도 스토리 하나하나 볼 때마다 전선을 재배열해야 될것이다.

또 진공관에 얽힌 썰이 하나 있는데, 우리가 흔히 에러나 오류를 지칭하는 버그(bug)의 어원이 여기서 나왔다는 점이다. 수많은 진공관(1만 7천개 이상)을 이용해 연산을 하다보니 에러가 자주 발생했는데 그중 대부분이 진공관 안에 벌레가 들어간 것이 원인이었다. 공학자들은 진공관 안에 벌레를 제거(디버그)하기 위해 고생을 했고 이게 지금의 디버깅이 되었다는 썰이있다.

이 시기에는 아직 인간이 이해하기 편한 고급언어는 등장하지 않았다. 기계어, 어셈블리어와 같은 저급 언어(컴퓨터가 직독직해 할 수 있는 언어)들이 사용되었다.

제2세대 컴퓨터

2세대 컴퓨터 IBM 1401

2세대 컴퓨터는 회로 소자를 진공관에서 트랜지스터로 바꾸면서 굉장히 아담해진 것을 볼 수 있다. 크기뿐만 아니라 열발생, 전력소모 면에서도 전 세대에 비해 굉장히 획기적인 발전이 있었다. 폰 노이만 구조를 도입해서 컴퓨터 내부에 프로그램을 저장해 사용할 수 있었기 때문에 기존의 하드웨어 중심에서 소프트웨어 중심의 개발으로 전환되었다. 포트란, 코볼과 같은 고급언어와 컴파일러언어를 사용하였다.

제3세대 컴퓨터

3세대 컴퓨터 IBM 360

회로 소자가 트랜지스터에서 집적회로(전기회로와 반도체 소자를 하나의 칩에 모은 회로소자)로 바뀌면서 컴퓨터의 소형화가 발생한다. BASIC과 PASCAL과 같은 언어를 사용하였다. 운영체제가 처음 등장한 시기이다. UNIX가 이 시기에 처음 선보여졌다. 3세대 부터 집적회로의 밀도를 높임으로써 컴퓨터 성능의 혁신이 좌우된다.

제4세대 컴퓨터

mac 조상님 등장

회로소자가 대규모 집적회로로 발전하면서 컴퓨터가 굉장히 소형화 되었고, 가격이 감소하였다. 이때 처음 PC라는 개념이 도입되었고, 개개인이 컴퓨터를 보유함에 따라 인터넷이 등장하게 되었다. 언어 전반에 영향을 끼친 C언어가 탄생하였다. 마이크로 소프트와 애플도 이때 차업하였다. mac의 시조인 매킨토시가 보급되었다.

제5세대 컴퓨터

MacBook Air M1

초고밀도 집적회로가(VLSI) 개발되어 컴퓨터의 성능이 비약적으로 증가했고 인공지능과 병렬처리 기술이 개발되면서 AI분야가 두드러지게 발전했다. 자연어(인간이 일상에서 사용하는 언어)를 기계어로 변환하는 자연어 처리 기술이 굉장히 발달 되었다.(파파고, 텍스트 자동완성, 유튜브 사용자 맞춤 추천...)

 

첫 조사 과제의 소감을 솔직히 말하자면 이런 방식의 정리에 아직 많이 서툰편이라 남들이 생각하기엔 굉장히 많은 시간을 여기에 쏟아부은것 같다. 모르는게 굉장히 많이 튀어나오기도 했고, 글로 표현하는데 익숙하지 않은 것도 있는 것 같다. 하지만 기존에 모르던 배경지식이 쌓이니깐 다음 번에는 더 쉽게 학습할 수 있겠지? 하는 생각도 들고 다음에 학습해야할 키워드들도 하나씩 찾을 수 있어서 뿌듯한 기분도 들었다. 이맛에 블로그 쓰나보다 ㅎㅎ(얼른 백엔드 코스 시작해서 학습내용 TIL쓰고싶다!) 앞으로 성공적인 블로그 작성을 기원하면서 후다닥 찾아본 명언으로 마무리 해본다.

제대로 써내려 갈 수 없는 것은, 제대로 판단할 수 도 없다.
-르네 데카르트-