비 개발 직군의 사람으로서 IT 분야에 대해 이것저것 공부하면서 알게 된 내용을 저 나름대로 정리해보고 있습니다. 아직은 지식이 부족해서 정확하지 않은 내용이 있을 수 있는데요, 혹시라도 틀린 내용이 보인다면 피드백 부탁드립니다 :)
컴퓨터를 전혀 못 쓰는 사람을 최근엔 거의 못 본 거 같아요. 컴퓨터를 전혀 못하면 학교에서 과제도 제대로 하기 힘들고, 아마 일을 하는 데에도 많은 어려움이 있지 않을까 생각됩니다. 그만큼 불과 몇십 년 사이에 컴퓨터의 보급률도 올라가고, 꽤 대중화가 된 거 같아요.
그런데, 너무나도 친숙하게 사용하는 컴퓨터지만, 막상 그게 뭔지 설명해 보라고 하면 꽤 막막하죠. 컴퓨터가 그냥 컴퓨터지 뭐겠어요. 그런 거 몰라도 컴퓨터로 인터넷도 하고, 엑셀도 사용하고, 영상 편집도 할 수 있으니, 굳이 알려고 하지 않는 사람이 대부분일 거 같습니다. 저도 그랬었고요.
그런데, IT 분야에 대해 넓게 얕게 공부하려고 할 때, 아무래도 가장 출발점은 '컴퓨터가 뭐다'가 돼야겠더라고요. 이렇게 IT 분야가 핫해진 것도 사실은 컴퓨터가 더 많이 보급되고 사용되었기 때문일 테니까요. 언제나 무엇인가를 배울 때에는 지식의 시작지 첫 시작점으로 하는 게 좋지 않을까 생각하고 있기 때문에, 넓고 얕은 IT 학습의 시작점도 컴퓨터가 무엇인지로 잡아봤습니다.
컴퓨터는 뭐다?
컴퓨터가 무엇인지를 여기저기서 찾아봤는데요. 그냥 제가 내린 한 줄의 정의는 크고 똑똑한 계산기입니다. 게임도 하고, 유튜브도 보고, 문서 작업도 하고, 컴퓨터를 이용해서 이것저것 많은 작업을 할 수 있긴 한데요. 본질은 그냥 계산기입니다.
컴퓨터(Computer)의 어원 역시 계산한다라는 뜻의 라틴어 콤푸타레(computare)에서 유래됐고, 영어 표기로도 Compute는 '계산하다'라는 뜻이 있죠? 아무리 복잡한 작업들을 처리해 낸다고 하더라도, 결국 컴퓨터는 숫자를 계산하는 계산기일 뿐입니다.
그런데, 사실 우리가 컴퓨터를 사용할 때에는 숫자만 처리되진 않습니다. 지금 보는 이 글도 숫자가 아니라 텍스트고, 영상이나 소리 같은 것도 컴퓨터에서 처리할 수 있는데 이것들은 숫자가 아닌 거 같잖아요? 그런데, 우리 눈과 귀로 보고 들을 때에만 그렇습니다. 컴퓨터 안에서 동작할 때에는 텍스트도, 영상도, 소리도 다 숫자로 인식돼서 '수의 계산'으로 작업을 처리합니다.
예를 들어, 알파벳 a에 1, b에 2, c에 3, 이렇게 모든 알파벳에 차례대로 숫자를 부여했다고 해볼게요. 그러면, 'h.e.l.l.o'라는 단어는 '8.5.12.12.15'라는 숫자로 변환될 수 있겠죠? 그러면 컴퓨터는 'hello'라는 알파벳이 아니라 '85121215'라는 숫자를 가지고 텍스트의 의미를 인식한 뒤에, 그걸 사람들에게 보여줄 때 텍스트로 변환해서 보여줄 뿐입니다. 컴퓨터 안에서 처리는 수의 계산으로 이루어지고, 보일 때만 텍스트로 보이게 되는 거죠(실제로 컴퓨터에서 텍스트를 숫자로 인코딩할 때에는 아스키 코드라는 걸 사용합니다).
이미지, 영상, 소리 등도 마찬가지로 특정한 정보에 대응하는 숫자 값으로 표현되어 처리됩니다. 결국, 컴퓨터는 어떠한 정보든 숫자의 형태로 변환해서 처리해 주기 때문에, 아무리 복잡한 기능을 가지고 있다고 하더라도 결국은 계산기일 뿐입니다.
참고로, 컴퓨터는 이진법을 사용합니다. 그 의미는, 모든 숫자를 0과 1로 표현한다는 뜻이죠. 그래서 'h'라는 알파벳에 '8'이라는 숫자가 부여되면, 숫자 8이 아니라 이진법으로 표현된 숫자 1000이 부여된다는 뜻입니다(혹시라도 이진법이 뭔지 어색한 분들이 있다면 영상을 참고해 보시기 바랍니다).
컴퓨터로 뭘 할 수 있는가?
컴퓨터로 뭘 할 수 있는가?라고 물으면 여러 대답이 나올 수 있습니다. 웹 서핑도 하고, 게임도 하고, 포토샵도 쓸 수 있죠? 컴퓨터로 할 수 있는 일들은 무궁무진한 거 같은데요. 그 모든 작업들을 유사한 것들끼리 묶고, 범주화하기를 계속하다 보면 결국 본질은 데이터(정보)를 입력받아서, 처리하고, 저장하고, 필요할 때 보여주는 것입니다. 그게 컴퓨터가 하는 작업의 전부입니다.
영상을 편집하는 건, 원하는 영상을 입력해서, 필요한 방식대로 편집(처리)하고, 컴퓨터에 저장한 다음에, 원할 때 켜서 보는 거죠. 편집한 영상을 유튜브에 업로드하는 건, 데이터(영상)를 유튜브 웹 사이트에 업로드하면, 데이터가 유튜브 서버 컴퓨터로 전송(처리)되어서 서버에 저장되고, 다른 사람의 컴퓨터에서 영상을 볼 수 있도록 보여주는 것입니다. 개인의 컴퓨터에서 작업을 하는 것과, 컴퓨터 간 네트워크 통신이 있었다는 것에는 차이가 있지만, 입력하고 처리하고 저장하고 보여주는 작업을 한다는 건 동일하죠.
정리하면, 컴퓨터는 각종 정보(데이터)를 숫자 0과 1의 형태로 입력받아서 저장하고, 처리하고, 보여주는 기계입니다. 이 과정에서 필요한 숫자 연산을 해서 결괏값을 보여주는 계산기 역할을 하는 게 바로 컴퓨터입니다.
즉, 사람이 컴퓨터를 이용한다는 것은 원하는 숫자 계산을 컴퓨터에게 해서 결과를 반환하도록 시키는 작업인 것입니다. 실제 계산기에 1+1이라는 요청을 보내서 2라는 결과를 받아 보는 것처럼, 컴퓨터에게 'hello라는 단어를 화면에 출력해 줘'라는 요청을 print('hello')라고 보내면 그 결과로 hello라는 단어가 화면에 출력되는 것입니다. 그리고, 컴퓨터 안에서 그 과정은 0과 1의 숫자로 된 어떤 정보들의 계산으로 처리가 되겠죠.
컴퓨터의 구조
컴퓨터는 크게 CPU, 메모리, HHD/SSD, 입력 장치, 출력 장치로 구성되어 있는데요. 각각의 역할은 다 다르지만, 종합해 보면 컴퓨터의 기능(데이터를 입력받아서, 처리하고, 저장하고, 필요할 때 보여주는 것)을 잘 처리하도록 해주는 것들입니다.
먼저 CPU(Central Processing Unit; 중앙 처리 장치)는 입력 장치를 통해 전달받은 명령을 전달받아서 필요한 연산을 처리해 줍니다. 컴퓨터가 복잡한 연산을 해주는 계산기라고 했었죠? 그 연산을 실제로 해주는 곳이 바로 이 CPU입니다.
메모리와 HHD/SSD는 저장을 위한 장치입니다. 다만, 둘이 저장하는 방식에는 조금 차이가 있는데요. 먼저, 메모리(주 기억 장치)는 명령이 들어오고, CPU에 전달돼서, 작업을 처리하고, 결과를 반환해 줄 때까지의 작업 진행 과정에서 중간 저장이 필요한 것들을 저장해 주는 것입니다.
흔히, 컴퓨터를 살 때 RAM이 얼마인지를 잘 따져봐야 한다는 얘기를 한 번쯤 들어봤을 수 있는데요. 이 RAM이 바로 주 기억 장치입니다. RAM의 용량이 크다는 것은 작업이 처리되면서 임시로 저장할 수 있는 공간의 용량이 크다는 것이고, 그러면 컴퓨터가 여러 명령을 동시에 받은 경우에 여러 작업에 필요한 것들을 많이 저장할 수 있게 되죠. 그래서, RAM이 좋은 컴퓨터를 쓰면 여러 프로그램을 한 번에 돌려도 버벅거리지 않고 잘 돌아갑니다.
HHD/SSD(보조 기억 장치)는 조금 더 장기적으로 컴퓨터에서 보관하고 있어야 하는 것들을 저장해 주는 장치입니다. 흔히 컴퓨터에 파일이나 프로그램을 저장할 수 있는 용량이 몇 기가인지 얘기하는 경우가 있는데요. 이때 얘기하는 '용량'이라는 것이 바로 보조 기억 장치인 HHD/SSD가 저장할 수 있는 정보의 양을 뜻합니다.
마지막으로, 입력 장치와 출력 장치가 있는데요. 입력 장치(키보드, 마우스 등)는 컴퓨터에게 처리하도록 시킬 명령을 입력하는 데 사용되는 도구들을 뜻합니다. 대표적으로 키보드와 마우스 같은 것들이 있습니다. 이외에도 CPU가 어떠한 연산을 수행하도록 작업을 명령하는 데 사용되는 모든 도구들은 입력 장치로 구분됩니다.
그리고 출력 장치(모니터, 스피커 등)는 컴퓨터에서 처리한 결과를 보여주는 도구들을 뜻하죠. 모니터나 스피커는 컴퓨터에서 처리된 결과를 확인하는 데 사용되기 때문에 대표적인 출력 장치입니다.
이번 글에서는 컴퓨터가 뭔지에 대해서 이것저것 알아본 다음 정리해 봤는데요. 다음으로는 프로그램과 프로그래밍이 뭔지에 대해서 좀 더 공부를 해 본 다음에 글을 써보겠습니다.
'프로그래밍을 한다'는 것은 결국 '개발을 한다'라는 것과 거의 같은 의미이기 때문에, 프로그램과 프로그래밍이 뭔지에 대해 좀 더 잘 알면 개발이 뭐고, 개발자(또는 프로그래머)는 뭘 하는 사람인지 좀 더 잘 이해할 수 있는데요. 여러 자료들을 찾아보면서 최대한 쉬운 설명으로 잘 정리해 보도록 하겠습니다.