Reference
Brian W.Kernighan., and Dennis M.Ritchie. "The C Programming Language, 2nd edition", Prentice Hall

들어가기 전에
내용은 위의 참고서적을 기반으로 하고 있다.
The C Programming Language 를 TCPL 로 줄여서 표기하도록 한다.

프로그래밍을 처음 접해보는 사람을 상대로 설명하는 글을 쓸 예정이다.
그렇다고 기초만 하는것이 아니라 TCPL 에 들어있는 모든 내용을 설명할 예정이다.

개발 환경
Windows XP, MinGWStudio 환경에서 설명할 것이다.
하지만, 내용은 TCPL 을 따르며 실행환경만 이것으로 한다.

Programming Language?

프로그래밍 언어란 쉽게 말해 컴퓨터가 실행할수 있는 언어 (혹은 프로그램)를 만드는 언어 (혹은 도구)라고 할 수 있겠다.

High-Level Language 가 있고 Low-Level Language 로 나눌수 있는데,

High-Level Language 는 인간이 알아보기 쉬운 언어이고,
Low-Level Language 는 컴퓨터가 알아보기 쉬운 언어이다.

C Programming Language 는 High-Level Language 에 속한다.
한마디로, C 언어는 인간이 알아보기 쉬운 언어이다. 하지만, 막상 해보면 인간이 이해하는것도 그렇게 만만하지가 않다는 것을 느낄수 있다.

Compiler?

컴파일러란, High-Level Language 로 짜여진 소스(source) 를 컴퓨터(기계)의 언어(실행파일)로 바꿔주는 도구이다.
이것은 OS 에 종속적이다.
소스(source) 는 OS 에 독립적이지만(완전히 독립적인 것은 아님) 컴파일러는 OS 에 따라 달라진다.
내가 설명하고자 하는것은 C Language(C 언어) 이고 이것을 컴파일 해주는 Compiler 는 GCC 가 되는 것이다.
MinGWStudio 는 소스와 컴파일을 쉽게 해주는 도구이다.

나중에 다시 설명하겠지만, printf("Hello, World"); 란 문장을 Compiler 가 번역하면
OS에 종속적인 실행파일이 만들어진다.
C Language 는 printf 의 기능만 명시되어 있을뿐 컴파일러가 어떻게 동작해야 된다고는 나와있지 않다.
때문에 printf 가 어떻게 동작하는지에 대해서는 알 필요가 없지만, 나중에 컴파일러를 만들고 싶다면 알아야 할 것이다.

주저리 주저리...

본인이 처음 프로그래밍을 접한것은 초등학교때이다.(286AT DOS 시절)
그당시 내가 좋아하는 게임이 하고 싶어서 게임을 만들어 볼 생각에 일단 게임만드는 책을 샀었다.
그 책에는 상당히 어려운 것들이 막 적혀져 있었는데, 예제 소스라고 나와져 있던것들을 어디에 적어야 하는지도 몰랐었다.
내가 읽을수 있는 말이라곤 표지에 적혀져 있는  'C언어를 이용한' 이란 말이었다.
그래서 C언어를 공부해볼꺼라고 PC통신 에서 C언어 강좌를 봤었다.
거기도 역시 이렇다할 설명없이 그냥 소스코드를 치고 ctrl+F5 인가 하면 실행이 된다는 얘기뿐이었다.

그래서 그당시 컴퓨터에 깔려있는 HWP 2.1 에 코드를 치고 저장을 .hwp 말고 .exe 로 하고 실행해 보기도 하였다.
그리고 그렇게 프로그래밍이란 말만 들어보고 접게 되었다.(책에 있는걸 해볼수 없으니)
그러다가 중3때 다시 인연이 되었는지 컴퓨터에 관심을 가지게 되었고, 리눅스란 놈을 시작해보다가
고등학교때 '안녕하세요 터보C' 란 책으로 입문하게 되었다.

컴퓨터 관련 책을 보면서 드는 생각인데, 입문자들은 언제나 불편하다. 책에 나와있는 환경과 조금이라도 틀리면 해볼수 없기 때문이다. 그렇다고 책에 자세히 나와있는 것도 아니다.

이 문제는 책을 쓰는 저자도 마찬가지 일것이다. 모든 환경을 고려하다보면 도입부분만 해도 엄청 방대해 질것이기 때문이다.
한가지 더,
책에서 사용되는 프로그램은 대부분 상용프로그램들이다.
독자들은 겨우 데모버전 가지고 실행해 보는것이 전부이다.
그래서 Free software 버전인 GCC, MinGWStudio 를 선택하였다.

+ Recent posts