C언어의 존재를 알게 된 것은 대학 복학 후 2학년 때의 일이다. 전공 때문에 봤었고, 연구실에서 C 기초 플러스(C언어의 수학 정석과도 같은 책)와 GNU C Reference Manual1)을 제본하여 부지런히 따라 했던 기억이 있다.
그리고 25년이 지난 지금도 난 여전히 C언어와 씨름하고 있다.
이 책을 읽게 된 계기는 팀원이나 주위 사람에게 C언어를 어떻게 알려주면 좋을지 고민하고 있었던 찰나에 베타 리더를 모집하는 광고를 보고 신청하게 되었다.
책을 다 읽고 난 지금 'C언어는 이 정도만 알아도 충분하겠다'라는 생각이 든다. 그런데 뺄 것이 전혀 없다.
모두가 아는 얘기겠지만, 책에 있는 모든 내용 모두를 현업에서 다루지는 않는다. 중요한 것은 책을 읽는 초보자는 그 사실을 모른다는 것이다.
그나마 C언어로 지금까지 개발자로 지낸 관점으로는 중급으로 올라가기에 필요한 내용은 모두 담겨 있다. 우리는 목표를 잊으면 안 된다. C언어가 무엇인지, 어떻게 생겼는지, 어떻게 동작하는지 실행할 수 있고, 다른 사람이 작성한 코드를 볼 수 있을 정도면 되는 거다. 더는 배우면 탈 난다. (또다시 포기)
더 배우고 싶으면, 그때 가서 배우면 된다. 이 원칙은 다른 언어에서도 마찬가지이다.
629페이지 분량이면 적지 않지만, 빠짐없이 읽고, '직접 해보는 손코딩'은 무조건 따라 해야 한다.
그렇지 않으면 나중에 까만 화면에 눈만 껌뻑껌뻑하고 한 줄도 못 적을 것이 뻔하다. 나중에야 이 말을 이해하겠지만, 코딩도 머리보다는 손이, 몸이 기억해야 한다.
'+여기서 잠깐'은 반드시 기억하기를 권한다, 그렇지 않으면 몸이 고생이지 뭐~ (삽질을 많이 하게 된다)
책의 구성은 크게 기본편 9장과 고급편 10장, 전체 19장으로 구성되며, 기본편에서는 C언어의 개발환경 구성 및 기본 문법(변수, 데이터 타입, 연산자, 선택문, 반복문, 함수, 배열, 포인터)을 익히고, 고급편에서는 C언어에서 가장 난해한 배열과 포인터, 문자열 처리, 변수의 스코프, 메모리 할당, 구조체, 파일 처리, 전처리와 분할 컴파일을 주제로 설명한다.
각 장 설명하면 아래와 같다.
Chapter 1은 C언어 소개와 개발 환경(비주얼 스튜디오)을 구성할 수 있도록 그림과 함께 차근차근 설명한다.
Chapter 2는 데이터 출력 방법과 데이터 타입에 관해서 설명하고
Chapter 3은 변수 선언 방법과 데이터 입력 방법,
Chapter 4는 C언어에서 사용할 수 있는 연산자를 설명한다.
Chapter 5는 선택문(if, switch)을 설명하고
Chapter 6은 반복문(while, for, do ~ while)
Chapter 7은 함수 설명과 작성법에 해서 설명한다.
Chapter 8은 배열의 선언과 사용법, 초기화 방법에 관해서 설명하고
Chapter 9는 포인터 개념에 관해서 설명한다.
Chapter 10은 배열과 포인터의 관계,
Chapter 11은 문자 처리,
Chapter 12는 문자열과 포인터 및 문자열 관련 표준 함수에 관해서 설명하고
Chapter 13은 변수의 유효한 범위와 함수에 값을 전달하는 방법에 대해서 설명한다.
Chapter 14는 다차원 배열과 포인터 배열,
Chapter 15는 이중 포인터와 배열 포인터, 함수 포인터에 관해서 설명하고
Chapter 16은 메모리 동적 할당 및 해제, 명령행 처리 방법에 관해서 설명한다.
Chapter 17은 사용자 정의 자료형(구조체)과 공용체, 열거형 타입,
Chapter 18은 파일 관련 처리 방법
Chapter 19는 전처리와 분할 컴파일에 관해 설명한다.
끝으로 부록에서는 아스크 코드표, 선택 정렬 알고리즘, '여기서 잠깐' 목록과 가장 중요한 확인 문제 정답이 차지하고 있다. 물론 혼공시리즈에서 빠질 수 없는 혼공 용어 노트도 구성되어 있다.
각 장은 소주제 2개로 구성되며, 분량은 많지 않다. 하루하루 계획해서 보기에 좋다.
먼저 '핵심 키워드'를 제시하고 '시작하기 전에'에서는 배울 주제를 설명한다. '말풍선'으로는 기억해야 할 내용이나 분량이 많으면 QR코드로 저자의 동영상 강의가 이어진다. '직접 해보는 손코딩'은 꼭 따라 해보기를 추천하며(어렵지 않다), '좀 더 알아보기'에서는 추가 설명이 필요한 내용을 담고 있다. 설명이 끝나면 마지막에 '마무리'로 내용을 리마인드하고 확인 문제 풀면 끝.
사람들이 어렵다는 C언어를 초심자가 따라갈 수 있도록 친절하고 필요한 내용만 잘 전달한 책이다. 기본편을 통해 C언어를 작성하고 결과를 볼 수 있으며, 기본 문법을 학습할 수 있고, 고급편이라지만 내가 보기에는 필수편이 맞겠다. 배열, 포인터, 문자, 이차원 배열과 포인터, 함수 포인터, 메모리 할당, 구조체 등을 그림으로 이해하기 쉽게 설명하였다. 이 책으로 이해될 때까지 공부하면 C언어 할 수 있다. 더 쉬운 책은 아마 없을 걸!! ㅎㅎ
간절히 바라면 할 수 있다. 그러면 자바, 파이썬도 가능하니까 용기를 가지고, 굳은 결심으로 PC 앞으로 고고
참고로, 제 경험을 말씀드리면, 기본편은 무조건 알아야 하고(아니면, C언어가 아니니까),
먼저 구조체로 배열을 만든다. 문자열 처리와 표준 함수는 많이 알면 알수록 좋다.
구조체 배열을 처리할 때는 포인터로 하고, 함수에 포인터를 전달하여 주고받는다, 동적으로 메모리를 할당하고 파일에 저장한다. 이 모든 것을 한 파일에 할 수 없지 않은가? 분할 컴파일이다. 그러려면 변수 범위를 알아야 하고, 실행할 때 명령행 처리한다. 1~19장 모두 사용하지 않는가? 뺄 것이 없다.
여기까지만 해도 많은 것을 할 수 있지만, 알고리즘(트리, 스택, 리스트, 정렬, 그래프)을 알면 할 줄 아는게 더 많아진다. 그럼 또 욕심이 생기겠지?, 심화 학습으로 프로세스끼리 통신도 하고(채팅), 스레드 프로그래밍도 하고 다 할 수 있다. 물론 머신러닝도 <- 이건 파이썬에 양보하자.
책 디자인은 손코딩하기에 안성맞춤인 크기다. 들고 다니면서 볼 사이즈는 아니다. ^^
작으면 책 누르개도 필요하고 여간 불편한 게 아니다. 개인적으로 책사이즈는 정말 마음에 든다.
폰트와 코드 블록도 보기 좋고, 따라 하기 좋다. 굳굳굳
마지막으로, 58,000퍼센트 공감하는 저자의 문구로 리뷰를 마무리하고자 한다.
책과 동영상 강의, 예제와 도전 문제 등 C 언어 학습을 위해 잘 짜여진 시나리오가 여기 있습니다. ...... 이제 멋진 공연을 위해 대본을 숙지하고 끊임없이 연습하는 것은 주인공인 여러분의 몫으로 남기겠습니다.
"한빛미디어 베타리더로 책을 제공받아 작성된 서평입니다."
1) https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.pdf