들어가며

C 발라먹기는 발라먹기 시리즈의 첫 번째 책으로, 자율형 사립고 신일고등학교 2017학년 자율동아리 GIRL Is Recursion Lover의 동아리원의 효과적인 C 언어 학습을 위해 제작되었지만, 2018학년 자율동아리 BOY is Object-oriented programming Yearner를 위해 내용을 대폭 추가하고 약간의 오류를 정정했습니다.

입력과 출력과 같은 기본적인 내용부터 배열과 포인터 등에 대해서도 다루고 있으며, 잠깐 스쳐 지나가는 정도이지만 컴퓨터의 구조에 대한 약간의 정보도 담고 있습니다. 이 교재는 C 언어의 고급 내용까지 다루고 있지는 않지만, 여러분이 C 언어에 대해 충분히 체계적이고 탄탄한 기초를 쌓는 데에는 큰 도움이 될 것입니다.



이 책을 읽는 여러분이 배우려 하는 C 언어는 벨 연구소의 데니스 리치Dennis Ritchie가 만든 언어로, 그 목적은 운영체제OS: Operation System를 작성하는 데 있었습니다. C 언어로 만들어진 운영체제가 바로 리눅스Linux입니다. 물론 C 이전에도 포트란, Lisp 등의 여러 프로그래밍 언어가 있었으나, 이들은 운영체제를 만들 수 있을 만큼 충분히 섬세한 제어를 하지 못했고, 결국 C 언어가 등장하기 전까지 프로그래머는 운영체제를 만들기 위해 어셈블리 언어(기계어의 0과 1들을 묶어 영어 단어로 바꾼 것으로, 고급 언어에 비해 생산성이 매우 낮음)를 사용할 수밖에 없었습니다.

초창기의 C 언어는 어셈블리 언어보다 느렸지만, 잘 설계된 C 언어 프로그램은 그렇지 못한 어셈블리 언어보다 빠르게 동작했기 때문에 사람들은 C 언어를 사용하기 시작했습니다. CPU는 기계어밖에 읽지 못하기 때문에 C 언어 코드는 어셈블리어(기계어)로 변환될 필요가 있는데, 이 과정을 컴파일이라 하며 이 동작을 수행하는 프로그램을 컴파일러라 합니다. 현대의 컴파일러는 무척 고속으로 작동하며, 대부분의 경우 숙련된 어셈블리어 프로그래머보다 좋은 코드를 내놓습니다.

C 언어는 다른 언어들에 비하면 어려운 축에 속합니다. 특히 C의 포인터는 넘기 어려운 벽으로 유명합니다. 하지만 C 언어가 이렇게 어려운 데는 위와 같은 이유가 있습니다. 최근에는 Go나 Rust같은 언어들이 C/C++를 대체하려 시도하지만, 아직 C의 지위는 확고합니다. C 언어는 다른 거의 모든 프로그래밍 언어에 영향을 주었습니다. 다른 프로그래밍 언어를 공부해 보면 C의 흔적들을 찾을 수 있습니다.

여러분이 프로그래밍을 공부하게 되었다는 것은 다른 그 누구보다도 인류 최신 기술 전선에 있다는 뜻입니다. 분명 어려운 부분도 있을 것이라 생각하지만, 포기하지 않고 공부하면 그 속에서 기쁨을 찾을 수 있을 것이라 믿습니다. 


2018년 2월 1일

2017학년도 신일고등학교 자율동아리 GIRL Is Recursion Lover 동아리장,
2018학년도 신일고등학교 자율동아리 BOY is Object-oriented programming Yearner 동아리장

김환희




 [한빛미디어 C 언어 도서 보러가기]