오늘은 초심으로 돌아가서 C언어에 관련된 책을 리뷰해보려 한다.
KERNIGHAN의 C언어 프로그래밍 이란 책인데 이 책은 C언어를 만든 사람이 쓴 책으로 2016년에 수정판이 발매되었다. 정말 유명한 고전이고 그만큼 꾸준히 읽히는 책이라 생각된다.
이 책은 입문자가 읽기에는 다소 어렵다. 아니 입문자가 읽기에는 적합하지 않다는 표현이 맞을 것 같다. 대부분의 문법을 소개하지만 핵심만 설명하기 때문에 건너뛰거나 배우지 않은 개념들이 군데군데 튀어나온다. 따라서 입문자라면 이 책으로 시작하는 것을 추천하지 않는다.
중급이상의 프로그래머라면 한번 쯤 읽어 보길 권한다. 이 책의 특징은 입문서처럼 기본적인 문법 사항들을 체크해 나가면서 어쩌면 중급 프로그래머가 모르고 있을지도 모르는 사항들을 군데군데 설명한다. 물론 아주 자세히 설명하지는 않고 한두줄로 쓰윽 설명하고 넘어가기도 하지만 이런 내용들이 분명 C프로그래머로 하여금 정교한 코딩에 도움을 줄 거란 생각이 들었다. 또한 군데 군데 문제들이나 주옥같은 예제 소스들을 보다 보면 중급자에게 초심으로 돌아가 정리해보자!라고 말하는 것 같다.
가장 맘에 드는 건 군더더기 없는 설명이다. 물론 번역판이기는 하지만 정말 C언어의 기본을 위한 핵심 요약본이다. C개발자라면 반드시 읽어야할 책이라 생각든다.
|
최근에는 프로그래밍을 처음 시작할 때 C언어보다 파이썬이나 스크래치 같은 고급 프로그래밍 언어를 택하는 것 같다. C언어에 대한 관심이 점점 줄어드는 것 같지만 개인적으로 이런 추세가 나쁘지는 않다고 본다. 고급 프로그래밍 언어로 다양한 분야의 코딩을 쉽게 경험하면서 포괄적인 안목을 갖기가 수월해지기 때문이다.
그렇다면 C언어는 다양한 분야의 코딩을 경험하기 힘든 것인가?
사실 입문자 입장에서는 그렇다고 볼 수 있다. C는 문법을 익히고 익숙해지는데 다른 고급언어들에 비해 많은 공을 들여야 한다. 그래서 그런지 이런 추세가 프로그래밍 입문자들에게 큰 숲을 보여준다는 측면에서 꽤 효과적인 것 같다.
따라서 이런 고급 프로그래밍 언어에 익숙해 졌고 특별한 경우가 아니라면 C언어를 굳이 배울 필요가 없다. 특히 취미로 공부하는 분이라면 파이썬 같은 언어 하나면 많은 것을 할 수 있다. 굳이 머리아프게 복잡한 C언어를 공부하다가 힘을 빼다가 중도 포기를 할 필요는 없을 것이다.
하지만 C언어를 사랑하는 입장에서 C언어가 가진 매력을 포기할 수는 없다. 물론 C언어로 입문했고 배움의 과정에서 들인 노력을 포기할 수 없기 때문일 수도 있겠지만 C언어는 C언어 나름대로의 매력을 가졌다.
성능적인 관점에서도 그렇고 좀더 시스템 내부를 직접 보면서 프로그래밍 한다는 느낌이랄까? 물론 C언어는 기계어는 아니지만 포인터를 이해하는 C프로그래머라면 포인터가 프로그래밍을 할 때 얼마나 강력한 무기인지 알 것이다. 포인터를 이해 한다는 것은 데이터가 메모리에서 어떻게 저장되는지에 대해서 이해할 수 있다. (이런 무기들을 제대로 사용하지 못 하면 오히려 독이 될 수도 있다.)
아마 C언어를 포기하는 분들 중 반이상이 포인터에서 포기할 것이란 생각이 든다. 이렇게 어렵다고 하는 포인터는 아마 한번에 이해해서 써먹을 수 있는 개념은 아닌 듯 싶다. 그래도 꾸준히 프로그래밍을 하다 보면 언젠가는 머리 속에 당연한 상식처럼 자리 잡게 된다.
C언어에는 포인터와 같이 상식처럼 알고 있어야할 사항들이 다른 언어에 비해서 많다고 생각된다. 그 중에 악명높은 녀석이 포인터일 뿐이다. 우리가 살아가는 데도 상식을 모르면 가끔 힘들 때가 있다. 마찬가지로 C언어에서의 상식을 모르면 코딩이 괴로워진다. 어쨌든 배우는 데도 꽤 걸리고 익숙해지는 데도 꽤 걸린다.
이 책은 이렇게 어렵게 배운 상식들을 되집어 준다는 측면에서 의미가 있는 것 같다.