이제까지 컴퓨터 내부에 어떤 부품들이 있는 가와 컴퓨터는 숫자로 모든 것을 처리한다는 것을 배웠지. 이제 프로그램은 무엇이고 컴퓨터는 이것을 어떻게 실행시키는지 알아보자.
기계어 (Machine Language)
CPU는 컴퓨터의 두뇌로서 계산/판단/처리를 하는 중심적인 역할을 한다고 배웠지. CPU에는 여러 부속 장치들이 연결되어 있는데 그 중에 가장 중요한 것이 메모리야. 메모리(memory)는 단어 뜻 그대로 자료를 저장하고 있다가 필요할 때 꺼내 쓸 수 있도록 만든 장치야. 마치 책상에 붙어 있는 책장이나 서랍과 같이 원하는 장소에 물건을 잠시 넣어 놓았다가 필요할 때 즉시 찾아서 볼 수 있는 것을 생각하면 돼.
메모리는 마치 아파트처럼 값을 기억할 수 있는 곳 마다 주소(물론 당연히 이것도 숫자임)가 지정되어 있고 이 주소마다 숫자를 담아둘 수 있게 되어 있어. 메모리에 담겨져 있는 숫자들은 이것이 프로그램일 수도 있고, 사진 혹은 영화 동영상일 수도 있고, 사전 속의 단어장일 수도 있어.
위의 그림처럼 CPU는 메모리에 저장된 값들을 읽어 들여가는데 기본적으로 주소 차례대로 읽어가게 된다. 이렇게 읽어간 숫자를 보고 CPU는 일을 하게 돼. CPU라는 부품을 처음 개발할 때 이미 각 숫자는 어떤 일을 시키려는 것 인지를 정해 놓았어. 즉 명령을 숫자로 내리는 셈인데 이를 기계어라고 해.
어느 날 학교 선생님이 목이 너무 아프셔서 말을 많이 하기 힘든 상황이 되었다고 가정하자. 선생님은 칠판에 다음과 같이 적어서 규칙을 학생들에게 알려준 후 손가락으로 숫자를 표시하여 학생들에게 지시하는 것과 비슷하지.
1 = 공부(자습) 시작하기
2 = 쉬는 시간 시작하기
3 = 점심 식사 시작하기
4 = 청소하기
5 = 집에 돌아가기
이제 선생님은 수업 시작할 때는 손가락 1개를 학생들에게 보여주고, 수업 시간이 끝나면 손가락 2개를 펴서 보여주고, 식사 시간이 되면 손가락 3개를 펴서 보여주고.. 이렇게 어떤 일을 해야 할 것 인지를 숫자로 정해 놓을 수 있잖아? 기계어라는 것은 숫자밖에 알지 못하는 CPU에게 일을 시키기 위해서 역시 숫자를 이용해서 명령들을 정의해 놓은 것이야.
컴파일러 (Compiler)
숫자로 명령들을 정해 놓긴 했지만, 숫자 무엇이 무슨 명령이고 하는 이걸 다 외워서 프로그램을 만들어야 한다면 정말 어려운 일이야. 컴퓨터가 아주 처음 나왔을 때는 기계어로 프로그램을 만드는 경우도 있긴 했는데 아주 복잡하고 지겨운 일이어서 보통 사람은 잘 할 수가 없었어. 물론 아빠는 할 줄 알았지. 그래서 사람의 입장에서 명령을 만들어내기 쉬운 방법들이 만들어졌어. 영어 단어 몇 가지와 기호들을 가지고 규칙을 정한 것인데 마치 우리가 다른 사람과 대화하기 위해 사용하는 말을 언어라고 하듯이 컴퓨터와 대화를 하기 위해 사용하기 때문에 이런 것들도 언어라고 불러. 앞에서 설명한 기계어도 엄밀하게 따지면 언어 중의 하나라고 볼 수 있어.
이렇게 만들어진 언어들 중에 많이 사용되는 것이 Basic, C/C++, JAVA와 같은 것이 있어. 한국어를 쓰는 우리가 영어, 중국어, 프랑스어 등등 외국어를 배우기도 바쁜데 컴퓨터랑 대화를 하는 데에도 배워야 할 언어가 여러 가지가 있지(OTL). 하지만 컴퓨터 언어를 한 가지 만이라도 제대로 배우고 나면 다른 언어들은 쉽게 사용할 수가 있으니 너무 걱정하지 않아도 돼.
우리는 C/C++ 언어를 배우기로 했으니 앞으로는 C를 기준으로 설명해 줄께. C라는 언어가 먼저 생기도 나중에 이것과 유사하지만 더 강력한 C++이란 언어가 추가로 개발되었는데, 처음 언어를 배우는 지금은 C를 배운다고 생각하고 어느 정도 진도가 나가면 C++은 C와 어떻게 다른 지를 설명해주도록 할께.
이제 우리가 C로 프로그램을 만들면 될 것 같은데, 여전히 컴퓨터(CPU)는 숫자로만 되어 있는 기계어밖에 할 줄 모른다고 했으니 뭔가 방법이 있어야 할 것 같지? 그래서 C로 작성한 프로그램(이걸 원시 코드=source code라고 부른다)을 기계어로 바꾸어주는 프로그램이 있어. 이걸 컴파일러(compiler)라고 해. 컴파일러는 외국 영화를 받아다가 처음부터 끝까지 번역해서 자막을 달아주는 일을 하는 것과 비슷해. 즉, 우리가 C로 프로그램을 만들어서 실행하려고 할 때 프로그램의 시작부터 끝까지를 기계어로 다 바꾸어준 후 컴퓨터(CPU)가 실행할 수 있도록 해주는 것이지. 조금 다른 방식으로 프로그램을 부분 부분 필요한 만큼만 기계어로 바꾸어 가면서 실행해주는 방식도 있는데 이런 것은 인터프리터(interpreter) 방식이라고 해. 꼭 동시 통역을 해주는 사람과 비슷하달까?
세상과 인사하기
우리가 사용할 컴파일러는 마이크로소프트라는 회사에서 만든 Visual C라는 컴파일러야. 마이크로소프트라는 회사는 많은 사람이 매일 사용하는 윈도우, 오피스 등등을 만든 어마무지한 회사야. 컴파일러 자체도 프로그램이기 때문에 돈을 주고 사서 컴퓨터에 설치해야 하는데 설치하는 방법은 생략하도록 할께. 왜냐면 아빠가 다 설치해줬으니까..
컴파일러를 사용하는 방법에 대해서만 공부하려고 해도 무지무지하게 알아야 할 것이 많은데 지금 그걸 다 알 필요는 없고 단지, 아래와 같은 것만 알아 두도록 하자.
0. Visual C (프로그램 명이 Visual Studio일수도 있다)를 실행한다.
1. 프로그램을 만들 때는 [File 파일] 메뉴의 [New... 새로만들기...] 아래의 [Project... 프로젝트...]를 실행시키고, Win32 콘솔 응용 프로그램을 선택한다.
2. 다음과 같은 내용을 입력하고 Ctrl+F5를 눌러 실행시킨다.
void main(void)
{
printf( "Hello World!\n" );
exit( 0 );
}
여기까지 내용을 대략 이해하고 위의 프로그램을 실행시킬 수 있으면 이제 프로그래밍 공부를 본격적으로 시작할 수 있게 된 거야. 다음 시간에 C의 기본에 대해 공부해 보자.