|
이 글은 컬처블룸으부터 도서를 제공받아 읽고 자유롭게 작성했습니다. 질문하고 답하며 알아가는 프로그래밍의 진짜 원리라는 부제가 달린 이 책은 질문과 대답을 통한 대화형 프로그래밍 수업에 대해 알려주어서 많은 도움이 되었습니다. "질문하고 토론하며 풀어가는 C 언어, 코딩의 매력은 여기서 시작된다!” 도대체 왜 C 언어를 배워야 할까요? 조건문 없이 음수와 양수를 구분할 수 있을까요? 이 책은 단순한 문법 나열식 설명에서 벗어나, 프로그래밍 과정에서 접하는 흥미로운 문제들을 대화형 에피소드로 풀어내는 새로운 형태의 입문서입니다. 교수자와 가상의 학생 4명이 나누는 생생한 질의응답을 따라가다 보면, ‘코딩 규칙’을 외우는 대신 주어진 문제에 다양한 방식으로 접근하고 최선의 해법을 찾아가는 ‘컴퓨터적 사고(Computational Thinking)’를 자연스럽게 익히도록 구성되어 있어서 저처럼 능숙하지 않은 사람에게도 많은 도움을 줍니다. 이 책의 가장 큰 장점은 순서와 상관없이 관심 있는 주제부터 골라 읽을 수 있어 학습 부담을 줄여주었다는 것입니다. 단순 지식 전달을 넘어 학습자의 동기 유발과 사고 확장을 도와주는 것도 장점입니다. 특히 C 언어 기초 문법을 넘어, 왜 이렇게 코드와 알고리즘을 짜야 하는지 깊이 있게 이해하고 싶은 프로그래밍 초보자에게 좋은 길잡이가 되어 줄듯합니다. 문법은 외웠지만 막상 코딩하려면 막히는 분들이나 이 코드는 왜 이렇게 작동하는지 원리가 궁금한 분들 컴퓨트는 실제로 어떻게 데이터를 처리하고 작동하는지 알고 싶은 분들 AI가 다 알려주는 시대에 컴퓨터적 사고가 왜 필요한지 궁금한 분들에게 이 책을 권해드립니다. #C언어로 키우는 코딩 스킬 #컬처블룸 #컬처블룸리뷰단 #안기수 #생능북스 |
|
이 책은 전공자나 실무자의 경우에도 다소 어려울 수 있는 부분에 대해 소개하는 가이드북으로 생각보다 우리의 현실과 일상에서도 활용할 만한 부분도 많고 요즘 시대에 어떤 형태로 배우며 일하거나 사용, 관리해 나가야 하는지도 함께 접하며 알아 볼 수 있는 가이드북이다. 이는 코딩 및 AI 활용, 또는 C언어 라는 체계와 사용법에 대해 잘 모르는 분들의 경우에도 자신이 속한 분야나 영역에서의 새로운 적용이 가능할 것이며 물론 기본적인 용어나 개념에 대한 이해도가 높다면 책에서 말하는 의미가 어렵지 않게 다가올 것이다. <C 언어로 키우는 코딩 스킬> AI 기술과 산업의 발전으로 인해 다양한 형태의 프로그램이나 프로그래밍이 빠르게 적용되고 있는 요즘 현실이다. 이로 인해 정보 및 데이터 처리, 보관, 관리 등의 행위가 더욱 중요해진 모습이며 이에 비전공자나 초보자의 경우에는 어떤 형태로 배우거나 이론적인 학습에서 오는 부분에 대한 적용, 또는 실무 상황에서의 자신 역량 강화 등에 있어서는 어떤 특장점이나 효용성 등이 있는지, 이에 대한 다양한 궁금증과 배우고자 하는 마음이 강할 것이다.
이 책도 이런 분들을 위한 현실적인 가이드라인을 강조하고 있는 책이며 어쩌면 상대적으로 많은 분들이 사용하지 않는 영역이라서 새로운 형태의 기회를 잡거나 주도해 나갈 수 있는 점도 또 다른 장점으로 볼 수 있는 영역이다. <C 언어로 키우는 코딩 스킬> 이는 C 언어 라는 의미에 대한 배움과 적용도 좋지만 이로 인해 파생되는 긍정의 효과나 실무적인 상황에서는 어떤 형태의 데이터 및 정보 처리, 관리 등이 가능한지도 체감해 볼 수 있어서 책에서 말하는 다양한 접근 방식이나 사례, 예시 분석 등을 통해 접하며 새로운 관점으로 생각해 보는 것도 좋을 것이다. <C 언어로 키우는 코딩 스킬> 기본적인 컴퓨터 및 프로그래밍 관련한 배경 지식도 배울 수 있지만 책에서는 코딩 분야에 대해서도 다양한 관점에서 표현하고 있어서 코딩 교육이나 활용에 관심 있는 분들의 경우에도 책을 통해 접하며 배워 볼 수 있을 것이다. 물론 컴퓨터 활용 능력에 대한 자신감이 있거나 기본기가 있는 분들이라면 더 쉽게 배우며 사용, 관리가 가능한 부분일 것이며 그럼에도 모를 수 있는 영역이나 새로운 형태의 적용 방식 등에 대해 궁금증이 있는 분들이라면 책에서 말하는 구체적인 관리, 사용 기법 등이 무엇인지, 그리고 이 과정에서 일상과 현실에서는 어떤 형태의 사용, 관리가 가능한지도 함께 접하며 참고해 보는 것도 좋을 것이다.
|
|
출판사에서 제공한 도서를 읽고 작성하였습니다. 이 책은 '컴퓨터는 실제로 어떻게 데이터를 처리하고 작동하는가?'에 대해 '질문하고 답하며 알아가는 프로그래밍의 진짜 원리!'를 담았다. C언어가 탄생한 지 50년이 넘었는데 이는 컴퓨터와 프로그램 세계에서 50년 전엔 인류 역사에서 신석기시대라고 볼 수 있다고 한다. 그만큼 오래되었지만 여전히 학교와 관련 산업 분야에서 폭넓게 사용되고 있으며, C언어만큼 제한된 성능의 기기들을 제어하는 프로그램으로 가볍고 효율적인 언어는 없다고 한다. 그리고 C언어가 어려운 이유는 친절하지 않다는 것이 가장 큰 이유이며, C언어의 문법을 잘 익힌다면 다른 프로그램 언어는 식은 죽 먹기로 배울 수 있다고 하니 더욱 C언어를 익히고 싶어졌다. 프로그램에서 문자나 숫자 데이터를 저장하기 위해 변수를 사용하는 데 이를 위해서는 데이터형과 이름을 지정해야 하는데 초기화하지 않은 변수는 이미 잘못된(엉뚱한) 값을 가지고 있기 때문에 예상치 못한 사고가 발생할 가능성이 존재하므로 이를 방지하기 위해서는 초기화하는 것이 좋다고 한다. 이에 예시를 통해 내용을 이해할 수 있었다. 각 장마다 'CHECK LIST'와 'SELF CHECK'를 통해 학습한 내용에 대해 중요하거나 의미 있는 부분을 다시 요약하고 이해를 확인하는 복습의 시간을 가질 수 있다. '프로그래밍에서 나눗셈 연산자는 몫 또는 어떤 값을 나누기 위해서 사용하고, 나머지 연산자는 나누고 남은 값을 계산하는 데 사용하지만, 수학 계산 외에 실생활에서도 유용하게 사용'된다고 한다. 저자는 '나머지 연산자를 활용하는 방법을 분초 계산 문제, 시분초 계산 문제, 거스름돈을 동전으로 계산, 거스름돈을 지폐와 동전으로 계산'하는 순으로 친절히 설명한다. 처음엔 눈으로 차이점을 확인하는 게 쉽지 않았지만 반복적으로 들여다보니 조금씩 익숙해지고 이해가 되었다. '나눗셈과 나머지 연산'에서 저자는 '프로그램을 작성할 때, 컴퓨터적 사고의 필요성'을 지적하며, 다양한 예제를 통해 이를 설명한다. 쉬운 듯 어렵게 다가왔는데 이러한 방법들은 조금만 응용하면 입력된 숫자를 자릿수별로 분리하는 데 사용할 수 있다고 한다. 컴퓨터는 모든 데이터를 0과 1의 이진수로 표현하여 처리한다. '컴퓨터에서 0과 1의 의미와 처리'에 대한 예시표를 통해 쉽게 이해할 수 있었고, '홀수와 짝수의 구분과 판단'에 대한 내용도 흥미로웠다. C언어 문법이 초보자들에게 어려운 건 글을 배우는 것이 말을 하는 것으로 자연스럽게 이어지는 게 쉽지 않기 때문이라고 한다. 그리고 책 속 선정 주제는 '실제로 프로그래밍 강의 중에 학생들과 함께 생각해 본 문제이고, 몇 가지 주제는 언젠가 책을 통해 다루고자 했던 문제'로 구성했다고 한다. 이를 네 명의 가상의 학생들과 교수자가 함께 진행하는 에피소드로 구성해 놓아 독자의 이해를 돕는다. 이 책은 '정답만 좇는 대신, 문제 해결을 위한 다양한 접근법과 컴퓨터적 사고의 즐거움을 선사'한다. 쉽고 흥미롭게 C 언어 코딩 스킬을 배우고자 하는 분들에게 이 책을 추천한다. 보다 유익한 도서가 될 것이다. |
|
[**네이버 카페 책과콩나무의 지원으로 개인적 의견을 솔직하게 작성한 리뷰입니다**]
인공지능 AI 시대에 C언어라니....라고 생각하는 많은 사람들이 있을 것이라 생각한다.하지만 아직도 우리는 수 많은 과정들이 존재하는 세계에 살고 있으며 그러한 과정들을 시스템화 해 간편한 삶과 일상을 만들고자 하는 일에 몰두하고 있다. 인공지능 AI가 우리 삶과 일의 많은 부분을 바꾼다고 하지만 그러한 일들 모두가 과정을 간편화 하는 시스템화의 결과라 생각하면 인간의 작업이냐, 혹은 인공지능 AI의 작업이냐만 다를 뿐 시스템화를 통한 변화라는 사실을 부인할 수 없다. C 언어는 범용 프로그래밍 언어로 유닉스 운영체제 개발과 밀접하게 연관되어 있으며, 하드웨어 제어 능력이 뛰어나고 속도가 빨라 시스템 프로그래밍 분야에서 널리 쓰인다고 한다. 우리는 C언어를 어떻게 배워야 하는걸까? 생각해 보면 문법적 학습은 아니라고 생각할 수 있다. 문법적 사항들은 인공지능 AI를 활용하면 사람보다 월등히 뛰어난 능력을 확인할 수 있지만 인간 사회의 다양한 문제들을 소화, 발생하는 다양한 문제들을 시스템화 하는 과정으로의 흐름을 C언어를 통해 배울 수 있다면 즐거운 시간이 되지 않을까 한다. Episode 중심의 프로그램밍 수업으로 C언어 코딩 스킬을 키울 수 있는 기회를 제공하는 책을 만나 읽어본다. 이 책 "C 언어로 키우는 코딩 스킬" 은 대부분의 프로그램밍 언어를 배우는 과정에서 발생하는 문법을 익히는 방식이 아니라 질문과 대화라는 방식으로 C언어를 배울 수 있도록 해 주는 책이다. 많은 사람들이 알고 있겠지만 거의 모든 것들의 문법이라는게 그리 즐거울 수만은 없고 또 재미 없다는 사실을 부인할 수는 없다. 이러한 방식으로의 프로그래밍 학습이 과연 학습자들의 호응과 성과를 이끌어 낼 수 있을지는 미지수라 할 수 있다. 더구나 전문가가 되고자 하는 이들이 아닌 이제 C 언어를 배워 보고자 하는 초보자들 같은 경우에는 더더욱 거부감이 들게 하는 방식이 아닐 수 없다. 저자가 제시하는 대화와 질문 형식의 수업방식은 학습자의 동기를 유발하고 사고의 확장을 돕는데 그러한 방식은 현실적 시공간에서 이뤄져야 하는 터라 책으로는 다분히 현실성이 떨어질 수 밖에 없다. 그러하기에 저자는 컴퓨터의 특성을 이해하는데 도움 주는 주제를 중심으로 교수와 학생이 서로 질문과 대답으로 진행하는 에피소드 형식의 이야기로 이 책의 전체를 구성해 놓았다. 문법적 내용에 고민하지만 어딘가에 상담하거나 프로그래밍에 대해 더 알고 싶은 경우 이러한 방식의 대화와 질문 형식의 과정은 매우 도움이 되고 친근하게 접근할 수 있다는 마음을 갖게 해 준다. 각기 다른 성격의 학생 4명이 등장 C언어 학습을 더욱 현장감 있게 구성하고 있어 아마도 우리의 성격 중 어느 하나는 일치하지 않을까 하는 생각을 해 보면 좀 더 우리 자신과 직접적인 느낌을 얻을 수 있지 않을까 싶다. 문법적으로는 어렵게만 느껴질 수 있는 C언어에 대한 학습과 코딩에 대한 의문을 간접적으로라도 우리가 가진 궁금증과 호기심을 해소할 수 있는 기회를 얻는 일은 직접 이러한 도서를 찾아 보지 않고는 확인하거나 만날 수 없는 일이다. AI 시대, 단순한 문법을 넘어 우리 삶에 존재하는 다양한 문제들을 시스템화 하는데 있어 최적의 답을 찾아가는 논리적 사고가 진짜 실력이라면 우리는 이 책을 통해 그 시작을 경험해 볼 수 있다. 범용적 언어라는 C언어를 통해 프로그래밍 시야를 한단계 넓혀 보는 소중한 기회가 되리라 판단해 보며 일독을 권유해 본다. |
|
인공지능 기술이 빠르게 발전하면서 이제는 복잡한 코딩 문법을 일일이 외우지 않아도 말 한마디로 프로그램을 짜는 바이브 코딩의 시대가 열렸다. 하지만 인공지능이 만들어주는 코드를 눈앞에 두고도 컴퓨터가 왜 이렇게 동작하는지 그 원리를 알지 못하면 오류가 생겼을 때 스스로 손을 대기 어렵다는 한계를 느끼곤 했다. 코딩의 기초를 제대로 다지고 컴퓨터의 생각법을 밑바닥부터 다시 배워보고 싶다는 생각 속에서 안기수 교수의 C언어로 키우는 코딩 스킬이라는 책은 그 가이드를 제대로 해준다. 오랜 세월 대학에서 학생들에게 컴퓨터 언어를 가르쳐온 저자의 글이라 그런지 첫 장부터 코딩을 처음 접하는 초보자의 막막함을 배려하는 부분이 전해졌다. 이 책의 가장 큰 장점은 딱딱한 이론 설명 대신 교수님과 가상 학생들이 서로 묻고 답하는 수업 형식으로 구성되어 있다는 점이다. 질문과 토론을 이어가며 마치 강의실 맨 앞자리에 앉아 직접 수업을 듣는 듯한 친절한 느낌을 받았다. 단순히 C언어의 문법을 무작정 암기하라고 다그치는 대신 조건문 없이 부호를 구분하는 방법이나 임시 변수를 쓰지 않고 값을 바꾸는 원리처럼 문제를 다각도로 풀어내는 사고력을 키워준다. 각 챕터마다 핵심 개념을 직관적으로 보여주는 실전 예제와 혼자서 배운 내용을 점검해보는 셀프체크 코너가 짜여 있어 스스로 생각하며 코드를 적어보는 재미가 쏠쏠했다. 평소 인공지능 도구를 활용해 프로그램을 만들어보면서 컴퓨터 밑바닥의 작동 원리를 모르면 결국 한계에 부딪힌다는 생각을 자주 해왔다. 컴퓨터가 데이터를 메모리에 어떻게 저장하고 이진수의 보수 연산으로 덧셈과 뺄셈을 처리하는지 기초 뼈대를 배우는 내내 예전에 배웠던 C언어의 기억이 떠오르기 시작했다. 코딩의 출발점이자 뼈대가 되는 C언어의 원리를 어느 정도 이해하고 나니 인공지능에게 명령을 내리고 코드를 검토할 때도 전체적인 흐름이 훨씬 더 빠르고 명확하게 눈에 들어왔다. 화려한 기술의 밑바탕이 되는 원리를 차근차근 다지는 시간이 왜 중요한지 몸소 깨닫는 계기가 되었다. C언어로 키우는 코딩 스킬은 코딩을 처음 시작하는 사람들은 물론이고 인공지능 시대에 진짜 문제 해결력을 기르고 싶은 사람들에게 훌륭한 길잡이가 되어주는 책이다. 문법 암기의 지루함에서 벗어나 원리를 탐구하고 직접 코드를 다듬어가는 과정도 큰 도움이 될 것이다. 인공지능이 짜준 코드에만 의존하지 않고 주체적으로 컴퓨터를 이해하고 다루고 싶은 생각이 들었다. #C언어로키우는코딩스킬 #안기수 #생능북스 #C언어 #책추천 @booksr_official |
|
생능북스 도서제공으로 작성된 서평입니다
정보 수업을 하다 보면 학생들에게 가장 자주 듣는 질문이 있다. "선생님, 이거 왜 이렇게 써요?" 그런데 대부분의 입문서는 어떻게 쓰는지만 알려 줄 뿐, 왜 그렇게 쓰는지에는 좀처럼 답하지 않는다. 이 책은 바로 그 '왜'에서 출발한다. 책은 교수자와 가상의 학생 네 명이 대화를 나누며 문제를 풀어 가는 형식으로 되어 있다. 문법을 순서대로 늘어놓는 대신 조건문 없이 음수와 양수를 구분할 수 있을까, 0.1 더하기 0.2는 왜 0.3이 아닐까 같은 질문을 장 제목으로 내세운다. 장마다 독립적이어서 궁금한 주제부터 골라 읽을 수 있다는 점도 부담을 덜어 준다. 가장 인상 깊었던 장은 5장 '함수 printf()도 반환 값이 있다고요?'였다. 학생들은 printf를 화면에 글자를 찍는 명령 정도로만 생각한다. 함수 원형 맨 앞에 int가 붙어 있다는 사실은 눈여겨보지 않는다. 책은 두 개의 예제를 보여 주고 결과를 먼저 상상해 보라고 한다. 첫 번째 예제는 printf(“Hello”)의 결과를 정수형 변수에 저장한 뒤 다시 출력하는데, Hello가 찍히고 다음 줄에 5가 나온다. printf가 출력한 문자의 개수를 돌려주기 때문이다. 두 번째 예제는 printf 안에 printf를 넣는다. 바깥 함수가 실행되기 전에 안쪽 함수가 먼저 실행되어 Hello를 출력하고 5를 돌려주니, 결과는 Hello5가 된다.
이 장면에서 책 속 학생 민호는 컴파일 오류가 날 것 같다며 황당해한다. 실제 교실에서 학생들이 보이는 반응과 똑같아서 읽다가 웃음이 났다. 교수는 함수 원형에 int형으로 정의되어 있으니 정수형 변수에 저장할 수도 있고 출력할 수도 있다고 차분히 설명한다. 짧은 두 쪽 안에 함수의 반환 값, 함수 원형을 읽는 법, 인자가 먼저 계산되는 순서까지 세 가지 개념이 자연스럽게 담겨 있다. 수업에서 출력 결과를 먼저 예측해 보게 하는 활동으로 그대로 옮겨 써도 좋겠다는 생각이 들었다. 예상과 실제 결과가 어긋나는 순간이야말로 학생들의 기억에 가장 오래 남기 때문이다. 정보교사로서 이 책이 반가웠던 이유는 세 가지다. 먼저 하나의 문제를 여러 방법으로 풀어 보게 한다는 점이다. 나머지 연산으로 거스름돈을 계산하고, 임시 변수 없이 두 값을 바꾸고, 비트 연산으로 같은 문제를 다시 푼다. 정답 하나를 외우는 것이 아니라 더 나은 해법을 비교하는 과정 자체가 컴퓨팅 사고력 수업이다. 다음으로 컴퓨터의 원리와 코딩을 함께 엮어 준다는 점이다. 보수 연산과 2의 보수를 쓰는 이유, 부동소수점 오차, 문자 1과 숫자 49가 같은 모양으로 저장된다는 이야기는 정보 교과의 자료 표현 단원과 바로 이어진다. 원리 따로, 코딩 따로 가르치던 내용을 하나로 묶을 수 있다. 마지막으로 학생들이 실제로 막히는 지점을 정확히 짚는다는 점이다. 초기화하지 않은 변수에 남아 있는 쓰레기 값, 입력 버퍼 때문에 생기는 문제, 누구나 어려워하는 포인터까지 대화 속 학생의 입을 빌려 자연스럽게 꺼낸다. 가르치는 입장에서는 학생들이 어디에서 헷갈리는지 다시 한번 돌아보게 된다. C 언어 문법은 배웠지만 왜 그렇게 동작하는지 궁금한 고등학생과 대학 신입생, 탐구형 수업 소재를 찾는 정보 선생님, 코딩 동아리나 방과후 수업에서 토론 활동을 해 보고 싶은 분들께 권하고 싶다. AI가 코드를 대신 써 주는 시대일수록 코드가 왜 그렇게 움직이는지 이해하는 힘은 더 중요해진다. 그 힘을 기르는 데 C 언어는 여전히 좋은 출발점이고, 이 책은 그 출발을 질문과 대화로 즐겁게 만들어 준다. #C언어로키우는코딩스킬 #C언어 #코딩 #프로그래밍 #컴퓨팅사고력 #정보교사 #정보교육 #서평 #서평단 |
|
*출판사로부터 도서를 제공받아 작성한 주관적인 리뷰입니다.
AI가 발전함에 따라 자연어만으로 코드를 생성하고 수정할 수 있는 세상이 왔습니다. 코딩을 하나도 모르는 개발자도 생겨났을 정도입니다. 그럼에도 불구하고, C언어 학습은 여전히 엔지니어와 개발자에게 대체 불가능한 핵심 역량으로 남아 있습니다. AI는 코드를 작성해 줄 수 있지만, 그 코드가 품고 있는 시스템의 본질을 완벽히 통제하는 것은 여전히 엔지니어의 몫이기 때문입니다. 또한, AI는 코드를 빠르게 만들어내지만, 메모리 누수, 버퍼 오버플로우, 댕글링 포인터 같은 미세한 메모리 결함을 완벽히 예방하지는 못합니다. C언어를 직접 다루며 스택과 힙의 차이, 메모리 할당과 해제의 생명주기를 뼈저리게 경험해 본 엔지니어만이 AI가 생성한 코드의 취약점과 구조적 결함을 정확히 간파할 수 있습니다. 위와 같이 C언어는 엔지니어에게 매우 중요하지만, 초보자들은 C언어를 마주할 때 유독 큰 벽을 느낍니다. C언어는 프로그래밍 언어 중 가장 컴퓨터의 언어에 가깝기 때문입니다. 최근 코딩 언어로 많이 활용되고 있는 파이썬(Python), JavaScript 등은 복잡한 내부 동작을 알아서 숨겨주지만, C언어는 컴퓨터의 날것 그대로의 구조를 마주하게 만듭니다. 파이썬은 문법 오류나 런타임 에러가 나면 어떤 줄의 어떤 부분에서 왜 문제가 생겼는지 친절하게 설명해 줍니다. 반면 C언어는 에러가 발생했을 때 스스로 에러를 찾아야 하거나, 디버거, 메모리 검사 도구 등의 디버깅 툴을 활용해야 합니다. C언어를 잘 활용하고 싶으시다면 단순 문법 규칙과 코드 예시만 나열한 교재보다는 질의 응답식으로 구성된 교재가 실무와 문제 해결 역량에 훨씬 큰 도움이 됩니다. 규칙 중심 교재는 규칙이나 문법만 딱 정의하고 끝내는 반면 Q&A 교재는 엔지니어가 마주할 법한 의문에서 내용을 시작합니다. 또한, 앞서 언급했듯이 AI 시대에는 코드를 타이핑하는 능력보다 정확한 문제를 정의하고 올바른 질문을 던지는 능력이 중요합니다. 질의응답 형식의 교재는 복잡한 시스템 이슈를 논리적으로 분해하고 핵심 질문으로 압축하는 사고방식을 훈련시켜 줍니다.
'C언어로 키우는 코딩 스킬'은 위와 같은 질의응답 방식을 차용한 C언어 교재입니다. 가상의 학생 4명과 교수가 등장하며, C언어의 원리 및 본질에 대해서 쉽고 자세하게 배울 수 있습니다. 대AI시대에서 C언어를 통해 코딩 역량을 키우고 싶으신 분들은 이 책을 읽어보시기 바랍니다. #C언어로키우는코딩스킬 #안기수 #생능북스 #책과콩나무 |
|
"출판사로부터 도서를 제공받아 작성한 서평입니다."
『C 언어로 키우는 코딩 스킬』은 C 언어의 문법을 하나씩 설명하는 데서 그치지 않고, 프로그래밍을 통해 문제를 바라보고 해결하는 과정을 함께 생각해 보게 하는 책이다. C 언어를 처음 접하는 사람에게 변수, 조건문, 배열, 연산자, 비트 연산 같은 개념은 어렵게 느껴질 수 있다. 특히 요즘은 파이썬처럼 비교적 쉽게 시작할 수 있는 언어도 있고, AI를 활용해 코드를 만들어 볼 수도 있기 때문에 굳이 C 언어를 배워야 할까 하는 생각이 들기도 한다. 이 책은 그런 질문에서 출발해 C 언어를 왜 배워야 하는지부터 차근차근 설명한다. 저자는 C 언어를 자동차의 엔진을 배우는 것에 비유한다. 단순히 결과를 만들어 내는 것을 넘어 컴퓨터가 데이터를 다루는 기본 원리와 프로그램이 작동하는 방식을 이해하는 데 C 언어가 도움이 된다는 설명이다. 책의 구성도 흥미롭다. 교수님과 네 명의 학생이 대화를 주고받는 형식으로 내용이 진행되기 때문에 일반적인 프로그래밍 교재보다 질문과 답변의 흐름을 따라가며 읽을 수 있다. 처음 배우는 사람이 가질 만한 궁금증을 등장인물이 대신 질문해 주는 점도 장점이다. 특히 인상적이었던 부분은 하나의 문제에 반드시 하나의 해결 방법만 있는 것은 아니라는 점을 반복해서 보여준다는 것이다. 조건문을 사용하는 일반적인 방법뿐 아니라 산술 연산이나 논리 연산, 비트 연산 등을 활용해 다른 방식으로 문제를 해결해 보기도 한다. 64쪽의 “프로그램을 이용하여 문제를 해결하는 방법은 한 가지만 있지 않고, 여러 다양한 방법이 있습니다.”라는 내용처럼, 이 책은 정답 코드를 외우는 것보다 문제를 여러 방향에서 바라보는 연습을 중요하게 생각한다. 또한 단순히 프로그램이 실행되면 끝나는 것이 아니라 효율성과 가독성까지 생각해야 한다는 점도 짚는다. 같은 결과를 만들어 내더라도 어떤 방식으로 표현했는지에 따라 코드를 읽고 수정하는 사람이 느끼는 어려움은 달라질 수 있기 때문이다. 이런 내용은 코딩을 처음 배우는 학생에게도 의미가 있지만, 어느 정도 프로그래밍을 경험한 사람에게도 다시 생각해 볼 부분을 준다. 처음에는 ‘일단 실행되는 코드’를 만드는 것이 목표였다면, 그다음에는 ‘왜 이렇게 작성했는가’, ‘더 나은 방법은 없는가’, ‘다른 사람이 읽기에도 괜찮은가’를 고민하게 되기 때문이다. 요즘처럼 AI가 코드를 만들어 주는 시대에는 이런 관점이 더욱 중요하게 느껴진다. AI에게 코드를 요청하는 것은 가능하지만, 만들어진 코드가 내가 원하는 결과를 내는지 확인하고 문제가 생겼을 때 원인을 찾아내려면 기본적인 프로그래밍 원리와 문제 해결 과정에 대한 이해가 필요하다. 그런 점에서 『C 언어로 키우는 코딩 스킬』은 단순한 C 언어 문법서라기보다 코딩을 통해 생각하는 방법을 연습하게 하는 책에 가깝다. C 언어를 처음 공부하는 사람은 물론이고, 프로그래밍의 기본기를 다시 다지고 싶은 사람, 코딩을 통해 문제 해결력을 키우고 싶은 학생에게도 괜찮은 입문서가 될 것 같다. 무엇보다 책을 읽으며 계속 만나게 되는 질문이 기억에 남는다. ‘다른 방법은 없을까?’ 프로그래밍에서 이 질문을 던질 수 있게 되는 순간, 단순히 코드를 따라 쓰는 단계에서 한 걸음 더 나아갈 수 있지 않을까 싶다. C 언어가 처음에는 어렵게 느껴질 수 있지만, 하나씩 원리를 이해하고 직접 코드를 작성해 보면서 따라간다면 프로그래밍의 기본 구조를 익히는 데 도움이 될 책이다. 한 줄 평: C 언어의 문법을 배우는 책인 줄 알았는데, 읽고 나니 문제를 여러 방향에서 바라보는 방법을 생각하게 하는 책이었다. |
|
이 리뷰는 컬처블룸을 통해 출판사에서 도서를 제공 받아, 직접 읽고 작성한 리뷰입니다.
단순히 새로운 문법을 익히고 정해진 규칙에 따라 코드를 작성해 오류 없이 실행되는 결과물을 만들어 내는 일일까요? 물론 그것도 중요하겠지만, 프로그래밍의 본질은 어쩌면 그보다 조금 더 깊은 곳에 있을 것입니다. 눈앞에 놓인 문제를 어떻게 바라볼 것인지, 당연하다고 여겼던 방법에 다른 가능성은 없는지, 그리고 수많은 선택지 가운데 어떤 방법이 가장 적절한지 고민하는 과정 말입니다. 이 책은 바로 그 지점에서 프로그래밍을 다시 생각하게 만드는 책입니다.
문법을 외우고 예제를 따라 하며 비슷한 문제가 나오면 기억해 둔 방식을 적용하면 됩니다. 처음에는 빠르게 실력이 느는 것처럼 느껴지기도 합니다. 하지만 조금만 낯선 문제가 등장하면 그동안 쌓아 올린 지식이 얼마나 얕았는지 깨닫게 됩니다. 알고 있는 것과 이해하고 있는 것은 다르기 때문입니다.
무엇을 입력하고 어떤 결과가 나오는지를 보여주는 데서 멈추지 않고, 왜 그런 결과가 나오는지 묻습니다. 그리고 그 질문을 통해 독자가 스스로 생각할 여지를 만들어 줍니다.
일방적으로 설명하는 교재에서는 저자의 지식이 독자에게 전달되는 것으로 학습이 끝나기 쉽습니다. 반면 질문과 답변이 오가는 구성에서는 하나의 문제를 바라보는 여러 시선이 드러납니다. 누군가 당연하게 받아들인 설명에 다른 누군가가 의문을 제기하고, 그 의문이 새로운 이해로 이어집니다. 혼자 책을 읽으면서도 마치 강의실 한편에 앉아 토론을 듣는 듯한 느낌을 받을 수 있다는 점이 이 책의 매력입니다. 무엇보다 질문하는 사람을 무지한 사람으로 취급하지 않는다는 점이 좋습니다. 질문은 모른다는 사실의 증거가 아니라, 더 깊이 알고 싶다는 마음의 표현이기 때문입니다. 책에 등장하는 문제들도 흥미롭습니다. 0.1과 0.2를 더했을 때 왜 우리가 기대하는 결과와 실제 컴퓨터의 계산 결과가 다를 수 있는지, 임시 변수를 사용하지 않고 두 변수의 값을 바꿀 수 있는지, 조건문 없이 숫자의 부호를 구분할 수 있는지와 같은 질문들은 얼핏 보면 작은 호기심에 불과합니다. 하지만 바로 그런 사소한 의문이 사고의 범위를 넓혀 줍니다. 익숙한 방법을 그대로 사용하는 것과 그 방법이 유일한 해법인지 의심해 보는 것은 전혀 다른 태도입니다. 하나의 답을 아는 사람은 비슷한 문제를 해결할 수 있지만, 여러 가능성을 비교하는 사람은 처음 보는 문제 앞에서도 새로운 길을 찾을 수 있습니다. 이 책은 특히 정답보다 접근법을 고민하게 한다는 점에서 여느 문법 중심의 입문서와 차별화됩니다. 같은 문제라도 해결 방법은 여러 가지일 수 있고, 가능한 방법이 모두 좋은 방법인 것도 아닙니다. 어떤 방법은 간결하지만 이해하기 어렵고, 어떤 방법은 직관적이지만 효율적이지 않을 수 있습니다. 중요한 것은 특별한 기술을 사용했다는 사실 자체가 아니라, 주어진 상황에서 왜 그 방법을 선택했는지 설명할 수 있는 능력일 것입니다. 이러한 관점은 코딩을 단순한 기술 습득에서 판단과 선택의 과정으로 확장합니다. 책을 읽으며 독자가 얻게 되는 가장 큰 자산도 특정 문법에 대한 지식보다는 문제를 대하는 태도에 있을 것 같습니다. 프로그래밍을 통해 인간의 사고방식까지 돌아볼 수 있게 해준다는 점도 인상적이었습니다. 우리는 살아가면서도 수많은 문제를 마주합니다. 그런데 문제를 해결하기도 전에 스스로 가능성을 제한할 때가 많습니다. 예전부터 그렇게 해 왔다는 이유로, 다른 방법을 생각하기 번거롭다는 이유로, 혹은 누군가 정해 놓은 답이 있다는 이유로 말입니다. 프로그래밍에서 하나의 문제를 다양한 방식으로 풀어 보는 경험은 이러한 습관을 되돌아보게 합니다. 조건문을 사용하지 않고도 어떤 결과를 얻을 수 있는지 고민하는 일은 단순히 코드를 작성하는 기술에 머물지 않습니다. 당연하다고 생각했던 조건이 정말 필요한지 묻는 태도, 문제를 구성하는 요소를 분해하고 다른 관계를 찾아보는 태도로 이어집니다. 물론 모든 문제에 독창적인 해법이 필요한 것은 아닙니다. 이미 검증된 방법을 사용하는 편이 더 안전하고 효율적인 상황도 많습니다. 그러나 기존의 방법을 선택하더라도 그 원리를 이해하고 선택하는 것과, 이유도 모른 채 그대로 따라 하는 것은 다릅니다. 자유로운 사고는 규칙을 무시하는 데서 생기는 것이 아니라 규칙을 충분히 이해한 뒤 그 적용 범위를 판단할 수 있을 때 가능해집니다. 그런 의미에서 C 언어의 기초부터 포인터와 비트 연산, 보수 연산, 부동소수점의 원리까지 다루는 이 책의 구성은 단순한 지식의 확장보다 사고의 기초를 다지는 과정에 가깝습니다. AI가 코드를 작성하고 복잡한 질문에도 빠르게 답하는 시대에는 프로그래밍을 배우는 방식 역시 달라질 수밖에 없습니다. 이제 문법을 기억하거나 코드를 빠르게 만들어 내는 능력만으로는 충분하지 않을 수 있습니다. 오히려 AI가 제시한 결과가 적절한지 판단하고, 예상하지 못한 오류의 원인을 찾으며, 여러 해결책 가운데 무엇을 선택해야 할지 결정하는 능력이 중요해집니다. 결과물을 얻는 일과 그 결과를 이해하는 일 사이에는 여전히 큰 갭이 있습니다. 이 책이 강조하는 컴퓨터적 사고는 그 갭을 좁히는 데 필요한 힘이라고 생각합니다. 기술이 발전할수록 인간의 사고가 불필요해지는 것이 아니라, 무엇을 질문하고 어떻게 판단할 것인지가 더욱 중요해지는 셈입니다. 이 책은 C 언어를 처음 배우는 학생들이나 프로그래밍 입문자들에게 좋은 출발점이 될 것 같습니다. 문법을 외우는 공부에 쉽게 지치거나, 예제를 따라 하는 동안에는 이해한 것 같지만 혼자 문제를 풀 때마다 막막함을 느끼는 분들에게도 추천하고 싶습니다. 이미 기본적인 코딩 경험이 있는 분들이라면 자신이 무심코 사용해 온 문법과 연산의 원리를 다시 살펴보는 기회가 될 것입니다. 좋은 입문서는 독자가 얼마나 많은 내용을 기억하게 했는지로만 평가할 수 없습니다. 책을 덮은 뒤 이전에는 지나쳤던 문제 앞에서 한 번 더 멈추고, 스스로 질문을 던지게 만들었다면 그것만으로도 충분히 가치가 있습니다. 이 책은 정해진 답을 전달하는 데 머무르지 않고, 답에 도달하기까지의 생각을 살펴보도록 이끕니다. 코딩을 잘한다는 것은 단순히 코드를 능숙하게 작성하는 일이 아니라, 문제를 정확하게 이해하고 자신이 내린 선택을 설명할 수 있는 사람이 되는 일인지도 모르겠습니다. 결국 실력을 키우는 것은 더 많은 답을 외우는 일이 아니라, 더 좋은 질문을 할 수 있게 되는 과정일 것입니다. 그런 점에서 이 책은 C 언어를 배우는 책이면서 동시에 생각하는 법을 배우는 책이기도 합니다. #C언어로키우는코딩스킬 #질문하고답하며알아가는프로그래밍의진짜원리 #안기수 #생능북스 #컬처블룸 #컬처블룸리뷰단 |
|
이 책은 문법을 설명한 책은 아닙니다. 어떤 문제를 해결하기 위한 프로그램을 작성하기 위해서 대부분 해당 언어의 문법을 익히는 것으로 시작합니다. 물론 문법도 중요하지만, 프로그램을 시작하거나 배우는 상황에서 순차적인 문법 설명을 탈피하여 좀 다른 접근으로 문제 해결을 도와줄 방법을 생각합니다. |