이지스 퍼블리싱 책들은 입문하기 좋은 책들이다. Do it! C언어 입문이 나온지는 시간이 좀 되었지만 여전히 서점의 자리를 지키고 있는 책이다. 요새 서점에 가면 어떤 분야의 책들이 서가를 지키는 건지는 대략 알 수 있다.
코딩쪽에서 가장 많은 것은 역시 파이썬이다. 일단 파이썬이 응용되는 분야가 광범위하다. 코딩은 주로 기본 프로그래밍과 웹 프레임워크 쪽이 많은 것 같고, 인공지능, 빅데이터, 심지어 퀸트같은 분야에도 파이썬 책이 들어가 있다. 오픈소스인 파이썬이 의도한 것인지는 모르겠지만 결국 분야를 가리지 않고 물량공세를 하다 보니 주목을 많이 받고 있다.
또 무조건 파이썬은 배우기 쉬워야 한다. 왜냐하면 파이썬의 프레임워크 중에는 비전공자들이 사용하는 넘파이나, 싸이파이 같은 학문적인 분야의 도구들이 많기 때문이다. 입문하기 쉽고 편리한 파이썬의 문법과 만나서 앞으로도 계속 저변이 확대될 것 같다는 생각이 든다.
한편 C언어는 어떤가? 전공자들에게 조차 쉽지 않은 낡은 프로그래밍 언어로 비춰지고 있는 것 같다. 그도 그럴 듯이 C언어가 탄생한지 50년이 다 되가고 있다. 너무 오래되었다. 그 계승자들인 C++ 과 C# 에서 보면 C는 너무 멀리 있는 것 같다.
그런데도 신기하게 티오비 인덱스에서 1위를 차지하고 있는 것은 여전히 C언어이다.
전 세계적으로 봤을 때 그럴 것이라는 생각이 든다. 모든 나라의 IT 환경이 다 다르니까. 한국의 특정한 상황만 가지고 언어의 흥망성쇄를 논하는 것은 한계가 있다. 현대에서 C의 유효성에 대한 논란은 아직 남아있는 것 같다.
단순히 티오비 인덱스 하나만 가지고 어떤 언어가 우위에 있다고 주장하는 것은 힘들 것 같다. 각자의 환경과 놓여있는 상황이 다를 테니까.
어쨋든 그런 C계열을 꾸준히 사용하고 강의하시는 Microsoft Visual C++ MVP 김성엽 저자님이 저술한 책이다.
대형 서점에서 매대를 오랫동안 지키고 있는 책이기도 하다. 지금 시점에 다른 C언어 책들이 더 나오기는 힘들지 않을까 싶다. 그래서 남아 있는 책들이 중요한 것인데 이지스의 Do it 시리즈 중에서 C의 입문 책이다.
개인적 리뷰는 아래와 같다.
* 난이도
- 난이도는 입문자들을 위한 책이다. 코딩도 예문도 많지만 C언어과 컴퓨터의 구조를 설명하는데 많이 치중되어 있는 책이다. 그렇지만 페이지는 570페이지 정도로 결코 가볍지 않다. 뒤의 컴퓨터 메모리에 대한 설명은 강의없이 책만 봐서 이해가 될까 싶긴 했다. 저자도 그걸 알았는지 고민을 많이 하고 넣은 챕터라고 한다.
어떤 프로그래밍 언어도 한권의 책으로 모든 원리를 아는 것은 불가능하다. 사람의 언어를 배우는데도 문법,독해,읽기,듣기 등 한권씩만 사도 네권인데... 비교하면 인간과 다른 종인 기계의 언어를 한권의 책으로 이해하는 것은 불가능하다. 얼마나 얻을 수 있는가가 중요하다.
C언어를 공부하는 사람들은 개념을 깊게 공부할 필요를 느끼는 사람들일텐데 입문자들에게 좀 어려울 수도 있는 C언어를 최대한 설명해 주고 있다.
물론 지금 코딩에 입문하는 사람들에게 C언어가 그렇게 추천할 만한 가의 문제는 논외다. 그러면 입문용으로 C언어를 골랐다는 것 자체가 미스가 있다. C언어를 배울 의지가 있는 사람에 한해 의미가 있는 책이다.
C언어가 제일 어렵다는 말은 아니다. C언어에서 다루는 포인터나 이런 컴퓨터 구조적인 프로그래밍에서 한차원 발전한 시스템이 현대의 객체지향 프로그래밍이라면 C와 연결고리가 있을 법도 한데 개념적인 부분에서 공통점을 찾기가 어렵다.
구조체나 클래스의 형태적인 연관관계나 동적 메모리할당(OOP의 new 연산자와 가비지컬렉선) 등의 부분들의 비교를 하기 위해서는 객체지향프로그래밍 언어를 이미 다뤄본 사람일 것이다.
객체지향이란 개념이 어떤 면에서는 매우 인간의 인식에 친화적이면서도 또 추상화되어 있다는 부분때문일까? C언어에 입문하면서 그 다음 단계가 객체지향이라고 자연스럽게 생각하기는 조금 힘들지 않을까 싶다.
일단 학습 의지가 있는 학생에게는 충분히 적당한 난이도라고 생각한다. 저자와 블로그 등으로 소통가능하고 네이버 카페와 소규모 개인강의도 운영하고 있으니 궁굼한 부분을 문의할 수 있다는 점도 장점인 책이다.
* 분량
두꺼운 프로그래밍 책과 씨름해야할 학생들에겐 분량도 중요하다. 원서 번역 교재들은 1000페이지가 넘는게 보통이니;;; 그래도 우리는 아직 그정도는 아니라서 다행이라고 해야할까... 요새 레퍼런스는 온라인에도 많이 있다. 책은 슬림하고 핵심적인 내용을 공부하고 그 외 추가적인 내용은 얼마든지 온라인에서 얻을 수도 있다.
모두의 코드는 C레퍼런스가 매우 잘 정리되어 있는 사이트이다. 게다가 주인장이 무료로 공개하셨다.
570페이지 분량 결코 적지는 않지만 개념 설명에 많은 페이지가 들어가 있다. 설명의 비중이 좀 높은 편이라고 생각된다. 역시 C 자체의 어려움이지 않을까 싶다. 이보다 적은 분량이면 제대로된 내용이 나올까 싶기도 하다. 파이썬 책들은 200페이지 안으로도 입문서가 나오는데 C언어는 그렇게 까지 분량을 줄이기가 힘들지 않을까 싶다.
내용
포인터에 대한 많은 분량의 할당이 좋은 책이다. 메모리 구조에 대해서 깊이 있는 내용을 볼 수 있다. 중반부가 넘어가면 약 200페이지 정도는 거의 포인터와 연관된 내용이지 않을까 싶다. 다른 언어에서는 포인터를 사용하지 않으니 잘 경험하지 못하는 내용인데 알차게 다뤄주는 부분이 가치가 높다.
물론 이 책을 한권 배운다고 C언어로 거창한 프로그램을 만들 수는 없을 것이다. 학습에 의한 자기 발전과 만족이지... C언어를 살려서 무언가 제대로 만들어 보려면 또 험난한 길이 놓여있을 것이다. 또 한국에서는 자바 스프링이 규격이 되어서 자바 개발자들에게 기회가 많다. C계열을 따라가다 보면 자바쪽으로 공부하고 갈 수 있는 기회가 적어질테니 그런 부분도 감안해야 할 것 이다. 댓글을 보니 그런 고민을 가진 학생들은 20년 경력의 Microsoft Visual C++ MVP 인 저자의 블로그나 카페에서 상담받을 수 있다.
프로그래밍 언어는 선택이지 어떤 절대적인 기준은 없다. 물론 사회가 추구하는 방향에 부합하는 언어는 있겠지만 그게 또 본인에게 맞는지 확인해 보려면 업계를 경험하지 않고는 모르는 법이다.
C는 시간적 마음적 여유가 있다면 한번 정도 시도해볼만 한 언어라고 생각한다. 오래전부터 많은 이들이 컴퓨터 구조와 메모리 사용법등에 대하여는 도움을 얻었다는 의견이 많다.
저자의 웹사이트와 유튜브 등은 아래의 링크를 참조하면 될 것이다.
저자 네이버 블로그