프로그래밍 언어가 무엇인지에 대한 지식은 있다고 생각하겠습다..
여러 포털사이트에 가서 언어를 배운다고 하면
제일 많이 거론되는 언어가 C 언어입니다.
C언어는 고급언어(High-Level Language / 사람과 가까운 언어)의
시초라고 할 수 있는 언어입니다.
하지만 막상 처음 접해보면 C언어는 어렵고,
C를 통해 무언 것 같다고들 많이 생각합니다.
(내가 무언가를 만들 수 있다는 생각이 들지 않아서 그런것 같습니다.)
요즘 나오는 상용 프로그램들은 모두
GUI (Graphical User Interface / 그림, 이미지 등) 형태를 띄고 있습니다.
하지만 처음 C를 처음 배우게 되면
CUI (Character User Interface / 글자) 를 다루게 됩니다다.
그래서 GUI에 익숙한 세대는 C에 대해 쉽게 지루해지고,
C로 무언가를 만들 수 있다는 생각은 잘 느껴지지 않을 수도 있을 것 입니다.
하지만, 굳이 말하자면 C로도 GUI를 만들 수 있고(WinAPI),
C는 모든 다른 언어들의 시초이고, 고급언어라고 해도
C++ 과 함께 기계에 가까운 언어이기 때문에 컴퓨터의 구조를 이해하기에는 아주 좋은 언어입니다.
그런데 왜 프로그래밍을 하면서 컴퓨터의 구조를 이해해야 하는지에 대해 설명하자면,
무슨 언어를 사용하든, 최적화 라는 단계를 거치려면 메모리나 디스크(자원)를
어떻게 하면 효율적으로 관리할 수 있을지에 대해 알고 있어야 합니다.
이때 컴퓨터의 구조에 대한 이해가 있으면 어떤 것을 사용하면
이런 자원들을 효율적으로 관리하기가 수월해지고,
이는 곧 프로그래머의 질 향상에 도움이 되기 때문입니다.
그렇기 때문에 절대 C언어 공부를 소홀히 해서는 안된다고 저는 생각합니다.
서론이 너무 길었던 것 같습니다.
본론으로 넘어가겠습니다.. 후후..
먼저 IDE(통합 개발 환경, Code::Blocks, Visual Studio, Dev-C++ 등)은
설치되어 있는 상황이라고 생각하고 글을 쓰겠습니다.
이 블로그의 언어 카테고리에서는 대부분 IDE를 다루는 법을 설명하지 않고,
문법이나 팁 들에 대해서 설명합니다다.
C언어로 프로그램을 열심히 짰습니다.
그리고 컴퓨터에게 실행하라고 했더니, 컴퓨터는 이해하지 못했습니다.
컴퓨터는 컴퓨터만의 언어를 가지고 있는데,
C언어로 된 언어를 넘겨주니 당연히 이해할 리가 없습니다.
그래서 C언어를 컴퓨터의 언어로 바꾸어주는 과정이 있습니다.
그것이 바로 컴파일이고, 컴파일을 하는 프로그램을 컴파일러라고 합니다.
(조금 깊게 말하자면, 서로 다른 언어로 번역하는 것을 컴파일이라고 합니다.)
컴파일의 과정은 아래와 같습니다.
소스코드 (source.c)
-> 전처리기 (source.i)
-> 컴파일러 (source.s)
-> 어셈블러 (source.o)
-> 링커 (source / 윈도우라면 source.exe)
뭐가 엄청 복잡하네요..
솔직히 말해서 이 부분은 아직은 모르고 넘어가도 좋습니다.
하지만 각각의 과정에 대해 간략히 설명하자면
전처리기
전처리기 구문들을 처리하여 .i 파일로 만듭니다.
컴파일러
기계어와 1:1 매칭이 되는 어셈블리 언어로 변환한 뒤, .s 파일로 만듭니다.
어셈블러
어셈블리 언어를 기계어로 바꾸고, .o 파일로 만듭니다.
링커
기계어의 코드들을 링킹(파일들을 잇는다.)하고, 재배치(코드의 위치를 조절한다.)하여
각 운영체제에서 사용되는 실행 가능한 파일의 형식으로 파일로 만듭니다.
위에서도 말했지만 아직은 깊게 알지 않아도 됩니다.
지금 이것을 외운다면, 그건 미련한 암기라고 생각합니다.
이제 본격적으로 문법에 대해서 설명하겠습니다.
C 코드를 설명하기에 매우 좋은 소스가 한개 있습니다.
C언어 책이나 프로그래밍에 관심이 있다면 누구나 한번쯤은
봤을 법한 코드입니다.
먼저 저 소스코드를 컴파일하여 실행시키면
Hello World!
라는 출력이 나옵니다.
여기서 한줄한줄 설명하자면 끝이 없어질것 같아서
중요한 부분만 설명하고, 나중의 글에서 조금 더 자세히 다루겠습니다..!
먼저 Hello World! 라는 문자열을 출력하는 부분은
이부분 입니다.
그렇다면 나머지 부분들은 뭘까요?
먼저
이 부분은, printf 를 사용하기 위해서 써야하는 부분입니다.
(또, scanf, gets, puts 등을 사용하기 위해서도 필요합니다.)
그리고
이 것들은 프로그램이 처음 실행될 때, 필요한 것들입니다.
int main(void) 뒤에 붙은 중괄호 구역 안에
(세미콜론과 함께) 코드들을 넣고 마지막에 return 0;을 해주면 됩니다.
이 return 0;에서의 0은 종료 코드를 말합니다.
종료 코드는 일반적인 종료는 0이고, 에러가 났을때는 1로 종료합니다.
(이것은 일종의 약속입니다!)
(이곳에 조금 더 자세히 나와있습니다. / 외울 필요는 없습니다.)
조금 응용해보겠습니다..!
이런식으로 여러줄에 걸쳐서 많은 문장들을 쓸 수 있습니다..
출력은 다음처럼 됩니다.
Hello, Friends!
I am SHGroup!
Nice to meet you!
여기서 \n은 개행문자입니다. (\는 보통 엔터 위에 있는 달러표시 또는 역슬래시입니다.)
출력을 할 때 다음줄로 넘어가도록 해줍니다.
(엔터를 친 것처럼..)
이 글에서 기본적인 문법에 대해 다뤄봤는데, 초반에는 이해하기 힘들 수도 있습니다.
초반에는 암기를 조금은 해야합니다..
어렵다고 포기하지 않고, 끝까지 끈기를 가지고 배우면
꼭 활용할 수 있는 때가 올 것입니다...!
모두들 힘내세요!