sou***
2022-10-18

실제 애플리케이션 개발과 유지 보수에 필요한 C의 기초 개념과 활용법, 고급 기능까지 살펴보는 C 중고급서. C와 유닉스의 역사부터 객체지향, 커널, 스레드, 프로세스, 다른 언어와 통합하는 법까지 폭넓은 주제를 다룬다.
이 책은 임베디드 및 커널 전문개발자인 캄란 아미니 저자가 쓰고 판교의 프런트엔드개발자인 박지윤역자가 번역한 책이다. 우주의 초기발생에 관심있는 임베디드 개발자가 쓴 책이라 그런지 스택을 직접 구현하는 등 매우 저수준내용부터 C++과의 테스트 등 고수준 내용까지 방대하게 다루고 있다. 이 책을 보면 C 언어도 C11을 시작으로 모던(modern) C로 변화가 이루어지고 있다는 사실을 확인할 수 있다. 이 책을 읽으며 인상적이었던 부분은 C11 이후의 변화뿐만 아니라 C 언어의 특성과 활용을 좀 더 깊이 있게 다룬다는 점이다. 예를 들면 C 언어를 C++과 비슷하게 사용하려면 어떻게 표현할 수 있는지, 소스 코드가 최종적으로 플랫폼에서 실행되기까지의 과정을 상세하게 설명한다. C 언어는 다른 언어와 통합하기 쉬운 언어인데 이와 관련된 내용도 다루며 C 언어로 작성한 라이브러리를 다른 언어와 연동해보는 연습도 매우 유용한 내용이다. 모던 C뿐만 아니라 C 언어가 실행 파일로 변환되는 과정과 C++ 언어와의 비교하여 테스트 더블을 해 보는 방법 등은 상당히 흥미로웠다.
이 책의 장점은 각각의 OS와 각각의 컴파일러에 대해서도 실행하는 방법을 알려주고 있고, 네트워크도 전화통신망(PSTN)부터 socket까지 매우 저수준의 내용을 잘 다루고 있다는 점이다.
이 책의 단점은 설명하는 문장들이 초보자가 보기에는 너무 어려운 상태라는 것이다. 예를 들면 "이 정의는 모든 스택 객체가 배열로 저장되며, 무엇보다도 스택에 어떠한 값이라도 저장할 수 있다는 의미입니다." 같은 내용이다. 그리고 역자가 영어에 능통한 사람이라서 원문 자체를 그대로 영어스럽게 번역을 한 부분도 살짝 이해하기 어렵다. 예를 들면 "macOS에서는 gcc가 알려진 명령어이고 clang컴파일러를 가리킬 때, 정확히 이와 같은 명령어를 실행할 수 있습니다." 같은 문장이다. 그냥 한국어로 "만약, clang컴파일러를 사용하시려면 셀 박스 21-3의 내용을 입력하세요." 정도가 간결하다. 추가로 욕심을 내자면 gui 연동도 함께 있었으면 싶었다.
하지만 역시 "전문가를 위한" 시리즈 답게 광범위한 내용을 다루는 점에서 많은 사람들에게 추천하고 싶다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."