컴퓨터의 구성
Last updated
Last updated
비전공자로서 서비스를 만들고 운영하면서, 항상 마음속 깊은 곳에 짐처럼 남아있는 무엇인가가 있었다.
컴퓨터에 대해 잘 모르는 채로 개발을 계속 해도 되는 것일까, 하는 두려움
메모리, 성능 등에 대한 이야기가 나오면 아무것도 모르는 채로 벙어리가 되어버리는 자신에 대한 실망감
요즘처럼 코딩을 배우는 것이 일상이 되어버린 세상에서, 짧은 강의를 듣고, 따라하며 프레임워크에 맞춰 개발해나가는 것은 어렵지 않다. 하지만 좋은 품질의 소프트웨어를 만드는 것은 여전히 많은 고민이 필요하며, 어려운 것이다.
난 단순히 서비스를 만드는데서 그치는 게 아니라, 많은 사람들에게 사랑받는 좋은 품질의 서비스를 만들고자 하는 욕심이 있었다.
그리고 그를 위해서는 기본기가 탄탄해야했다. 쓰는 언어가 달라지고 사용하는 라이브러리나 프레임워크가 바뀌어도 흔들리지 않고 변함없이 중요한 기본기. 그것을 위해서는 우선 내가 매일 마주하고 나에게 돈을 벌어다 주는 이 컴퓨터
라는 친구에 대해 좀 더 이해하고 다가갈 필요가 있었다.
그렇다면, 컴퓨터는 어떤 존재인가...? 요즘 우리가 알고 있는 컴퓨터는 모니터도 훨씬 얇고, 주변 기기도 많이 간소화 되어서 사실은 아래 그림과 조금 다르긴 하겠지만, 기본적으로 컴퓨터는 아래와 같은 구성으로 이루어져있다.
그리고 큰 맥락에서 보자면 위에서 말하는 컴퓨터란 아래 표의 하드웨어
에 해당되고, 전체적인 컴퓨터의 구성은 아래의 표처럼 좀 더 넓은 범위를 포함한다.
컴퓨터는 기본적으로 하드웨어와 소프트웨어로 나뉜다.
위키백과에 따르면, 하드웨어 는 케이스, 중앙처리장치, 모니터, 자판, 컴퓨터 기억장치와 같은 컴퓨터의 물리적 부품을 의미한다. 입력, 연산, 제어, 기억, 출력 등 다섯가지 주요 기능을 구현하며 이를 위해서 컴퓨터는 여러가지 부품들로 구성되어있다고 한다. 하드웨어와 반대되는 개념이 소프트웨어 인데, 소프트웨어는 컴퓨터에게 동작방법을 지시하는 명령어 집합의 모임이라고 한다.
쉽게 말하자면, 하드웨어는 우리가 실제 컴퓨터라고 부르는, 모니터, 본체, 키보드 마우스 등 손으로 만지고 조작할 수 있는 실제 기기이다. 소프트웨어는 컴퓨터를 키면, 그 내부에서 우리가 즐길 수 있고 사용할 수 있는 모든 콘텐츠이다. 컴퓨터가 하드웨어라면, 엑셀은 소프트웨어이고, 스마트폰이 하드웨어라면, 카카오톡은 소프트웨어이다.
컴퓨터와 인간은 쓰는 언어가 다르기 때문에, 컴퓨터와 소통을 하기 위해서는 반드시 번역의 과정을 거치게 된다. 예를 들면,
인간이 키보드를 통해서 hello
라는 글자를 적고, 파일을 저장하면,
이러한 인간의 언어는 컴퓨터의 언어인 0과 1로 번역되어 전달된다.
컴퓨터는 번역된 언어로 데이터를 저장한다.
인간이 이 데이터를 다시 꺼내어 보고자 한다면, 컴퓨터 내에 컴퓨터의 언어로 저장된 언어는 다시 인간의 언어인 hello 로 번역되어 출력장치인 모니터에 표시된다.
그렇다면, 컴퓨터 내에서는 데이터가 어떻게 저장되고 처리되는 것일까? 이를 위해서는 먼저 정보와 데이터의 의미에 대해서 명확히 할 필요가 있다. 대게 데이터는 정보와 비슷한 의미로 사용되곤 하는데, 둘은 사실 엄연히 다른 개념이다.
정보는 가공된 데이터로서, 어떤 사물에 대한 소식이나 자료이다. 이에 반해서 데이터는 쉽게 말하자면 정보의 원재료이다. 정보를 작성하기 위해서 필요한 자료나 정보를 처리하거나 전송할 때 이진이나 디지털과 같은 좀 더 편리한 형태로 바뀌어진 자료를 의미한다.
간단히 말하자면, 아래와 같다.
정보
어떤 사물에 대한 소식이나 자료
가공된 데이터
데이터
정보의 원 재료
정보를 작성하기 위해 필요한 자료
정보를 처리하거나 전송할 때 이진이나 디지털과 같은 좀 더 편리한 형태로 바뀌어진 자료
데이터는 세 가지로 그 종류가 나뉜다.
수치데이터 : 연산용 데이터 -> 컴퓨터의 언어
비수치 데이터 : 입출력용 데이터 -> 인간의 언어
특수문자 : 입출력/연산용 데이터