-
-
김변수와 시작하는 코딩생활 with C언어 ㅣ 김변수와 시작하는 코딩생활
코뮤니티 운영진(휴몬랩) 지음 / 영진.com(영진닷컴) / 2024년 5월
평점 :
4차 산업혁명 시대를 맞아 어린이들에게도 코딩 교육을 더 강화해야 한다는 주장이 나오는 요즘입니다. 인간의 창의성이 한층 중요시되는 트렌드를 증명이라도 하듯 코딩에 대한 일반인들의 관심도 매우 높아지는 듯한데요. 네이버 카페 중 코딩에 관심 있는 분들이 모인 "코뮤니티"라는 곳이 있다고 합니다. 한 분야에 열정을 가진 이들이 모여 빚는 집단지성의 우수함이란 이미 우리 모두가 인정하는 바입니다. 코딩에 대한 멋진 아이디어들이 속출하는 매력적인 커뮤의 산물이기도 한 이 책을 통해 내 실력도 늘리고, 혼자 하는 공부보다 많은 이들이 서로를 독려하며 이끄는 집단 스터디가 더 효율적임도 확인하는 계기가 되기도 했습니다.
C언어는 정말 막강한 툴입니다. 교육용으로만 의미 있는 프로그래밍 언어도 있고, 개발자들이 특히 선호하지만 초보자에게는 두려움이 느껴지는 언어도 있지만, C언어는 그 두 목적과 효용을 모두 충족하면서도 대중성, 속도, 교육성을 모두 갖추었습니다. 가히 코딩의 왕이라고 불릴 만합니다. 책 서두에는 대체 왜 아직도 우리가 C언어를 배워야 하는지, 타의 추종을 불허하는 그 장점들은 무엇인지가 간략히 정리되었습니다. 최근에 정비된 프로그램인 Visual Studio Code와 함께 돌리면 더욱 막강해지는 C언어 초보 단계 학습을 위한 준비가 p36 이하에 화면과 함께 잘 안내됩니다.
변수를 생성하는 코드, 변수에 데이터를 저장한 후 출력하는 코드, 선언과 동시에 값을 초기화하는 코드... C언어에는 많은 코드들이 있으며 이를 통해 강력한 성능을 발휘하는 프로그램이나 애플리케이션, 혹은 플랫폼이 만들아지기도 합니다. 책에는 알록달록 천연색으로 예제들이 제시되며 우리가 손으로 직접 시도해 보게끔 연습 문제들도 추가로 제시됩니다. 대입 연산자에 대해 배운 후에는 상수(p70), 부동 소수점(p78) 등도 배우는데, 특히 어떤 실수가 주어질 때 컴퓨터는 이를 지수부와 가수부로 나누어 변환하고 저장합니다. 수의 용량을 줄이는 일종의 로그 처리인데 영국의 수학자 존 네이피어가 무려 300년 전도 넘은 옛날 고안한 방식입니다. 우리도 고교 1학년 때쯤 (코딩과는 무관하게) 배우는 내용이죠.
p102에서는 표준입력함수에 대해 배웁니다. 다음으로는 형 변환을 다루고, 챕터의 마지막에서는 챗GPT까지 잠시 분위기 전환을 위해 등장합니다(이 챕터뿐 아니라 책 다른 곳에서도, 챗GPT는 마치 이야기 한 소절이 끝나면 몇 마디 코멘트와 함께 등장하는 전기수[傳奇叟] 구실을 합니다). 요즘은 생성형 엔진이 똑똑해져서 코딩도 대신 해 준다고는 하지만, 교통이 아무리 발달해도 사람에게 튼튼한 두 다리가 여전히 필요하듯, 창의적이고 생산적인 코딩의 기술은 어른이건 어린 학생이건 반드시 갖춰야 하는 소양이라고 하겠습니다. 이 책을 읽다 보면 코딩이 절로 좋아지고 집필진이 얼마나 코딩을 사랑하는 이들인지 문구 하나하나, 일러스트, 편집 스타일에서꺼지 느껴집니다.
챕터4에서는 연산자를 배웁니다. 산술, 관계, 증감, 논리의 네 종류가 대종인데, 여기에 덧붙여 책에서는 비트 연산자까지 가르칩니다. p139 이하에서 집중적으로 다루는데, 비트라는 것은 우리가 아는 대로 컴퓨터가 이해하는 최소 단위인 0 또는 1의 값입니다. 우리들도 중 1때쯤에 십진수를 이진수로 바꾸거나 그 반대로 이진수를 십진수로 바꾸는 법, 이진수인 상태로 덧셈 뺄셈을 행하는 법 등을 배웠습니다. 이에 대한 개념이 있다면 책의 이 대목에서 가르치는 내용이 그리 어렵지만은 않을 것입니다.
p189에서는 else if와 그외 조건문들을 배웁니다. 구태여 이걸 사용하는 이유는 책에서도 설명하듯 직전의 상황을 고려하지 않아도 되게 하기 위해서입니다. p196에서는 switch 조건문도 배우는데 판단의 기준을 따로 지정할 수 있다는 게 편해서입니다. p214에서는 반복문을 배우는데, 코드 작성상의 효율을 기하기 위함이 그 목적입니다. for 반복문과 while 반복문의 차이는 p225 이하에서 다루네요. p243에서는 뒤의 코드를 건너뛰고 반복의 조건문으로 돌아가는 continue 제어문에 대해 공부하는데, 잘만 익혀 두면 소스 전체의 효율성을 높이고 구조를 최적화하는 데 아주 요긴합니다. 이어 8과에서는 배열, 그리고 문자열에 대해 공부합니다. 어느 챕터에서도 "문제로 익히는 개념"이 반드시 등정하는데 특히 코딩에서는 앙상하게 개념만 배운 채로 넘어가도 되는 경우가 없고 반드시 문제를 통해 그 뜻을 새겨야 한다고 랭각합니다. 그리고 9과에서 포인터가 나오네요. 한 마디로 포인터는, 데이터를 찾아가기 위한 메모리의 주소(p293)입니다. p302의 귀여운 일러스트도 그렇고, 이 책의 가장 매력적인 점은 텍스트에 잘 부합하는 컬러 일러스트가 곳곳에 깔려 독자의 이해를 돕는다는 점입니다.
많은 학습자들이 까다롭게 생각하는 구조체 변수. 특히 p337의 문제를 한번 풀어 보면, 멤버와 구조체의 관계, 배열 선언이 어떻게 이뤄지는지까지가 한번에 해명됩니다. 좋은 문제는 그래서 백 마디의 구구절절 설명을 대신합니다. 이렇게 해서 C언어의 기초가 끝나면 난이도 상중하로 나뉜 나만의 포트폴리오를 만들게 실습시킵니다. 설명이 쉬우면서도 친근해서, 여태 다른 책으로 C언어를 시도해 보았으나 번번이 중도포기했다면 이 교재로 재도전해 보라고 권해 드리고 싶습니다.
*리뷰어스 클럽의 소개를 통해 출판사에서 제공받은 도서를 읽고 솔직하게, 주관적으로 작성한 후기입니다.