Scientia Conditorium

[책리뷰] 전문가를 위한 C 본문

서평/IT-책

[책리뷰] 전문가를 위한 C

크썸 2022. 10. 30. 17:59

[책리뷰] 전문가를 위한 C

 

 

C++의 교과서였던 '전문가를 위한 C++'에 이어서 C 역시 탄생하였다.

C언어의 정신은 C99 Rationale에서 다음과 같이 묘사하고 있다.

  • 프로그래머를 믿어라(Trust the programmer)
  • 프로그래머가 작업을 못하게 방해하지 마라(Don't prevent the programmer from doing what needs to be done)
  • 언어를 작고 간단하게 유지하라(Kepp the language samll and simple)
  • 명령을 실행하는 방법을 하나만 제공하라(Provide only one way to do an operation)
  • 호환성은 장담할 수 없더라도 빨리 작동하게 만들어라(Make it fast, even if it is not guaranteed to be portable)

첫 번째 프로그래머를 믿으라는 부분이 C언어의 핵심이라고 본다. 즉, 프로그래머가 C언어로 이것저것 할 수 있는 것은 언어 자체에서 프로그래머를 제한하지 않았기 때문이다. C언어가 탄생할 당시에는 이것이 당연한 게 아니였다고 한다. 제한하지 않았기 때문에 흑마법이라 불리우는 이상한 짓들이 가능했고, C언어가 전무후무하게 모든 기종에 포팅될 수 있었던 것이 딱 한 가지 역할만 했기 때문이다. CPU는 원시 자료형과 빠른 계산을 고수하는데 그렇게 설계되었기 때문이다. 이러한 점에서 C언어는 CPU 수준의 로직과 그리 멀지 않으며 쉽게 번역될 수 있는 타입 시스템을 가진다. 이것이 몇몇 회사나 조직에서 핵심 프레임워크를 아직도 C언어로 작성하고 유지하려는 이유이다. 즉, 이 언어는 원시적이라 오랜 기간 살아남을 수 있었던 것이다.

 

하드웨어를 직접 사용할 수 있는 게 C/C++ 언어의 핵심이다. 그렇기 떄문에 책에서도 메모리에 대해 2챕터에 걸쳐서 설명하고 있다. C언어 공식 홈페이지 문서를 보면 놀라울 정도로 양이 적다. 정말로 언어 자체는 최소한의 기능만 할테니 나머지는 프로그래머가 알아서 하라는게 느껴진다. C언어는 B언어의 어려움과 단점을 보완하려고 했으며 사실상 어셈블리어를 대신하는 시스템 개발 프로그래밍 언어가 되었다. 유닉스의 성공에 따라 수십만 명의 사람이 C언어를 사용할 수 있게 되었다. 책에서 10장부터 유닉스에 대해 등장하는데, C언어를 공부하다보면 자연스럽게 운영체제의 커널 단까지 알게 된다. 

 

사실 C언어에 대해서만 본다면 이 책은 별로 권장하지 않는다. C언어에 대한 설명은 챕터 5장까지(약 250쪽, 책의 1/3)가 전부라고 볼 수 있다. 그 이후에는 C++도 언급하며 C와 어떤 차이가 있는지, C에서 어떻게하면 가능한지 등을 서술한다. 그 밖에도 C언어로 이런저런한 것이 가능하기 때문에 생기는 문법과 함수, 기능들을 설명한다. 대표적으로 상속과 다형성, 운영체제 커널과 동시성 프로그래밍, 프로세스 동기화, 소켓 프로그래밍이다. 마치 책은 C언어로 할 수 있는 모든 것을 총망라한 느낌이 든다.

 

'전문가를 위한 C' 책 타이틀 답게 이 책에서 가장 좋은 파트는 21장이라고 생각한다. 다른 언어와 통합하는 기능을 설명해주는데, C++을 가볍게 설명해주고, 자바와 파이썬, 심지어 Go언어에 사용할 수 있는 라이브러리를 만드는 방법을 설명해준다. 파이썬의 Numpy 라이브러리가 C언어로 구현된걸 생각하면 정말 좋은 챕터이다.

 

언어에서 프로그래머가 할 수 있는걸 제한하지 않았기 때문에 살아남았지만, 그만큼 배우기 어렵고 다루기 까다롭다.

단순히 언어 차원에서 제공해주는 라이브러리 뿐만 아니라 본인이 직접 필요한 기능들을 전부 구현할 줄 알아야 제대로 사용하는 언어이기 때문에 배우는 사람들이 줄어드는 추세다. 더군다나 최근 유튜브 댓글들은 보면 C언어는 구시대 언어며 사장될 언어이기 때문에 배울 필요가 전혀 없다는 사람들이 늘어나고 있다. 그러나 TIOBE 통계자료를 보더라도 여전히 많이 사용하는 언어이며, CPU 로직이 혁신적으로 바뀌지 않는 이상 C언어는 계속해서 살아남을 거라 생각한다.

 

원 제목은 Extreme C(극한 C)인데, 적절한 제목이라 생각한다. 말 그대로 C언어로 개발하는 사람들을 위한 전문가를 위한 책이다. 기본 서적으로는 적합하지 않지만, 시스템 호출과 임베디드 환경 등 C언어로 개발, 유지보수 하는 전문가들에게는 한권쯤 옆에 끼고 볼만한 책이라 보여진다.

 

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."