티스토리 뷰

Hobby/Book

[Book] 전문가를 위한 C

생각많은 소심남 2022. 10. 30. 22:41

(해당 포스트에서 소개하고 있는 "전문가를 위한 C" 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)

 

전문가를 위한 C

실제 애플리케이션 개발과 유지 보수에 필요한 C의 기초 개념과 활용법, 고급 기능까지 살펴보는 C 중고급서. C와 유닉스의 역사부터 객체지향, 커널, 스레드, 프로세스, 다른 언어와 통합하는 법

hanbit.co.kr

항상 프로그래밍 언어와 관련된 책을 리뷰할 때면 TIOBE Index를 인용해오곤 하는데, 현재 시점에서 C는 Python에 이어 2위에 위치해있다. C는 1972년 Dennis Ritchie가 만들었고, 올해는 언어가 태어난지 만 50년이 되는 시점이다. 물론 최근에는 뭔가 다방면으로 활용할 수 있는 언어들이 인기를 얻고 많이 사용되고 있지만, 그 중에서도 시스템 어플리케이션이나 low level programming에서는 여전히 C가 많이 사용되고 있다.

사실 이 이야기를 꺼낸 이유는 이 책을 단순히 C와 관련된 언어책이라고 처음 생각했기 때문에 그런것이다. 그래서 막연한 생각에 여타 시중에 나와있는 C 책들과 같이 C에 대한 문법, 알고리즘 구현, 조금 고급진 내용을 다룬다면 C로 만든 프로그래밍 구현 정도가 담긴 책이라고 생각했었다. 그런데 책에 담겨 있는 내용은 그렇지 않다.

책이 상당히 두껍다..

이 책은 간단하게 말하자면 C 에 대해서 알수 있는 책이라기 보다는 C를 주로 활용하는 시스템 프로그래밍 책이라고 표현하는게 맞다. 그래서 책 서두부터 간단한 문법에 대한 내용이 아니라, C로 만든 프로젝트의 빌드방법부터 소개한다. 아마 다른 C로 구현된 오픈소스 코드를 보면 헤더나 소스에 막 복잡하게 정의되어 있는 전처리기 같은 것은 활용 방법과 빌드와 관련된 내용이 처음부터 소개되는 것이다. 이밖에도 C로 이뤄지는 Object Oriented Programming이나 Concurrency, IPC 같은 기초 책에서는 찾기 어려운 주제들로 내용이 구성되고 있다. 서두에서도 저자는 C를 활용한 다양한 프로젝트에서 겪은 극한의 주제에 대한 경험적 지식을 실용적으로 접근할 수 있다는 의미로 "Extreme C"라는 책이름을 지었다고 소개되어 있고, 사실 어떻게 보면 이책을 통해서 C로 할 수 있는 모든 내용이 거진 담겨져 있다. Unix를 다루는 부분에서는 조금더 실무적으로 시스템 프로그래밍을 어떻게 하는지에 대한 내용이 잘 담겨져 있다. 개인 여담을 좀 소개하자면, 이전에 블로그에 Xenomai 라고 하는 Custom kernel을 설치하는 방법에 대해서 소개했었는데, 그걸보고 연락주신 분이 안된다고 해서, 나도 처음부터 리눅스 커널을 빌드하고, 간단하게 모듈들을 수정하는 작업을 거쳤었다. 그런데 이게 참 C를 다룬지 오래되서 그런지 빌드부터 코드 수정이 익숙치가 않았다. 가령 어떤 부분이 잘못되었는지는 감이 오는데, 이 걸 수정하려니까 조금 막막했던 경험이 있었고, 사실 이 책을 통해서 조금이나 기름칠을 하려고 했었다. 물론 이 책을 통해서라면 조금 수월했을  일들이다. 이밖에도 후반부에는 다른 언어와의 통합성에 대한 내용도 다루고 있어서 C를 쓰는 사람들이 다른 프로그래밍 언어로 구현된 내용과 어떤식으로 통신을 할 수 있는지에 대한 내용도 소개되었다. 진짜 이런 내용은 어떻게 보면 stackoverflow나 이런데서 검색해야 찾을 수 있는 내용인데, 진짜 광범위한 내용을 다루고 있다는 느낌을 받았다.

다만 책의 분량 자체가 일반적인 책의 분량의 두배 수준이기 때문에(대략 900페이지?) 책의 전체 내용을 꼼꼼히 파악하는데까지는 시간이 많이 필요할 것으로 생각한다. 그리고 C로 다룰 수 있는 또다른 극한의 주제를 모두 다루기에는 이 책의 분량가지고도 부족할 것이다. 하지만, 적어도 주어진 분량내에서 이 책은 앞에서 언급한 고급 주제에 대한 내용과 예시들을 충분히 다루고 있으며, 이 내용만으로도 일일이 내가 경험했던 것처럼  stackoverflow를 찾아해메야 했던 사람들에게는 좋은 가이드를 제공하지 않을까 생각한다. 

댓글