깐깐하게 배우는 C: 52단계 연습으로 배우는 실용 C 코딩 노하우

By | 2018년 1월 31일

요새 누가 C 언어를 배워요?

코딩을 정규 교육 과정에 넣는다는 말이 나오고 있고 실제로 이미 시작한 나라가 있을 정도로 프로그래밍의 존재감은 날로 커지고 있습니다. 컴퓨터가 생필품이 된 세상에서 프로그래밍은 더 이상 공학도의 전유물이 아니라 모든 사람이 배워야 할 ‘언어’로 대접받게 되었습니다.

그래서 좀 더 편리한 언어, 좀 더 쉬운 기술을 찾는 사람들의 요구에 맞춰 하루가 멀다 하고 새로운 기술이 쏟아져 나오고 있습니다.

이런 상황에서 세상에 나온 지 40년이 넘은 C 언어는 구닥다리에 어렵고 불편한 언어 취급을 받고 있죠. C는 이제 더 이상 필요 없는 언어일까요?

 

창의적 프로그래밍 VS. 방어적 프로그래밍

『깐깐하게 배우는 C』는 C를 사용해 궁극적으로 ‘방어적 프로그래밍’의 마음가짐을 몸에 배도록 하는 것이 목표입니다. 그럼 먼저 ‘방어적 프로그래밍’이 뭔지 알아야겠죠? 저자인 제드 쇼(Zed Shaw)는 프로그래밍에 임하는 두 가지 마음자세를 제시합니다. ‘창의적 프로그래밍’과 ‘방어적 프로그래밍’입니다.

먼저 창의적 프로그래밍이란 뭘까요?

나 쫌 천재인 듯? – 창의적 프로그래밍

– 나는 실수를 하지 않는다.

– 사람들이 생각하는 것은 중요하지 않다.

– 머릿속에서 떠오르는 모든 생각은 훌륭한 아이디어가 될 것이다.

이런 마음가짐은 최초의 아이디어를 발전시킬 때 필요합니다. 실패할까봐, 혹은 바보처럼 보일까봐 두려운 마음이 든다면 아이디어는 발전하지 못하고 멈춰 서게 됩니다. 떠오르는 대로 생각을 발전시켜서 프로토타입을 만들면 이제 방어적 프로그래밍의 마음가짐으로 갈아타야 합니다.

나도 나를 못 믿어 – 방어적 프로그래밍

– 소프트웨어는 오류를 내포한다.

– 당신은 당신의 소프트웨어가 아니며, 다만 오류에 대한 책임을 질 뿐이다.

– 당신은 절대 오류를 없앨 수 없다. 단지 그 가능성을 줄일 뿐이다.

방어적 프로그래밍은 내가 만든 프로그램을 제 3자의 입장에서 객관적으로 바라보는 것입니다. 이를 통해 자신이 만든 코드에 정직해지고 비판적으로 분석할 수 있게 되고, 이는 프로그램 개선으로 이어집니다.

불완전한 C로 배우는 방어적 프로그래밍

그렇다면 저자는 왜 C 언어로 방어적 프로그래밍을 익히는 방법을 택한 걸까요?

그것은 C가 불완전한 언어이기 때문입니다. C가 나온 시절에는 보안 개념이 희박했기 때문에 보안 기능이 거의 없습니다. 따라서 C로 프로그램을 작성할 때는 더 긴장해야 하고 로직을 자세히 파악하고 있어야 합니다. 만일 C 언어로 안전하고 견고한 코드를 작성할 수 있다면 어떤 프로그래밍 언어로도 견고한 코드를 만들 수 있습니다. 더 훌륭한 프로그래머로 도약할 수 있게 되는 거죠.

C를 배우기에도 좋은 책: C를 포기했던 사람이여 모여라

이 책은 C를 다시 공부하고자 하는 사람에게도 추천할 만합니다. C는 프로그래머에게 원죄 같은 언어입니다. C를 잘 모른다고 말하면서 죄책감을 느끼죠. ‘내가 언젠가는 C를 다시 공부해서…..’ 라고 생각하지만 웬수같은 포인터에 이르면 다시 포기하는 과정을 반복합니다. 저자인 제드 쇼는 일반적이고 교과서적인 설명 방법을 취하지 않습니다. 저자가 준비한 코드를 그대로 입력하고(복사-붙여넣기 절대 금지!) 실행하고 오류를 일으키고 이것을 다시 수정하면서 체험적으로 C를 배우도록 합니다. 마치 직장 선배가 신입사원을 트레이닝하듯 먼저 암기해야 할 것들을 제시하고 암기 방법까지 조언해줍니다.

완벽한 프로그램이란 존재하지 않습니다. 완벽한 C 코드를 작성하는 것은 불가능하며 어떤 언어로도 무결점의 코드를 작성할 수는 없습니다. 하지만 모든 코드에 결함이 있다고 가정하고 항상 결함을 예방하려는 자세를 갖는 것이 중요합니다. ‘별 문제 없겠지’ 하며 대충대충 코드를 작성하는 버릇은 나쁜 소프트웨어를 만드는 가장 큰 원인입니다. 『깐깐하게 배우는 C』로 더 꼼꼼하게, 집중해서 프로그래밍하는 훈련을 시작해보세요.

 

『깐깐하게 배우는 C』는 다음 서점에서 구입하실 수 있습니다.

깐깐하게배우는C_미리보기

교보문고 | Yes24 | 알라딘 | 인터파크