독하게 시작하는 C 프로그래밍

아프리카 TV에서 생방송 강의 진행!!!기초 문법은 물론 실무 활용 코딩 기법까지 코드 한 줄 한 줄을 독하게 파고든다!C는 정말 독하게 마음먹지 않고서는 숙달하기 어려운 프로그래밍 언어이다.

www.yes24.com

 

현재 국내에는 C언어 교재들이 다양하게 나와있다.

 

글쓴이가 C언어를 처음 접했던 90년대 후반과는 전혀 다른 환경이다. 교재는 물론이거니와 각종 인터넷 강의의 수준은 당시와 비교하면 엄청난 격차가 있다. 그때의 IT기술과 지금을 비교하면 안되겠지만, 따지고 보면 그때도 빌게이츠와 스티브 잡스의 시대였다. 그러니까 기술은 진보했으나 사람은 별로 안바뀐 느낌이다.

 

이 분들은 상업적으로 성공해서 대중의 인지도가 높지만,

 

C언어의 데니스 리치와(2011년 스티브 잡스와 일주일 사이에 세상을 떠남)

 

유닉스의 켄 톰프슨,

 

리눅스의 리누스 토발즈,

 

C++의 비야네 스트롭스트룹,

 

파이썬의 귀도 반 로썸,

 

3D 게임 둠의 존카맥 등등

 

현재 IT생태계의 근간이 되는 시스템을 개발한 사람들의 영향력은 20년이 지난 지금도 여전하다.

 

현재 빌게이츠 말고 대중적으로 조명을 받는 사람은 구글, 페이스북, 아마존의 창업자 정도 될 것이다.

 

이들의 공통점은? 모두 C언어에 대해서 완전히 이해하는 것이다. 귀도 같은 파이썬의 창시자도 그 구조와 사고방식에서는 C를 기반으로 한다고 해도 과언이 아니다. 왜냐하면 C언어는 인간이 기계와 소통할 수 있는 가장 완벽한 언어이기 때문이다. IT GURU들에게 들으면 표현하는 방식은 제각각이지만 의미는 공통한다는 것을 알 수 있을 것이다.

 

기계에 친화적이면서도 인간의 문법을 가진 언어. 그것이 C언어이다. 물론 기계어와 직접 대응하는 니모닉(의미) 언어는 시스템 종속적인 어셈블리어다. C언어는 운영체제와도 기계와도 직접 소통할 수 있는 유일한 언어이다. 리누스 토발즈는 C언어는 가장 하드웨어와 가까운 언어라 말했다.

 

문제는 보통 사람이 C언어를 배우는 것은 쉽지가 않다. 기계에 친화적인데 인간계에 살아가는 사람들에게 별로 친숙하지 않은 환경이다. 공과대학을 다니더라도 쉽지 않은일이고 소위 비전공 중에 인문계 학생들에게는 쥐약이 될 것이다. 기계의 언어라서 공감가는게 하나도 없을 것이다. 만일 컴퓨터에 비전공인 학생이 프로그래밍에 두각을 나타낸다면 아마 학과를 잘못 선택한 것일 것이다. 원래 20대에는 아직 모르는 법이다. 20대 초반에 선택한 전공으로 평생 먹고 살거라 생각하면 오산이다. 정답은 없지만 일단 살아본 대다수의 사람들을 참고하는게 좋다.

 

이 책의 무시무시한 제목 '독하게 시작하는 C프로그래밍'은 가볍게 시작할 수 있는 책이 아니다. 저자 최호성님은 90년대 초반 아주 어린 시절부터 C언어를 다루어온 극한의 고인물이다. C로써는 저자가 두번째로 저술한 교재이고 C언어의 정수를 잘 짚고있다. 개인적으로는 한국의 C언어 입문교재 중에서는 가장 상급 수준이 아닐까 싶다. 입문자들은 제목 처럼 독하게 마음먹지 않고 달려들었다가는 낭패를 볼 수 있다.

 

그렇다고 C언어를 포기하느냐? 다행히 무료 온라인 강의를 볼 수 있다. 유튜브 강의가 올라온지는 꽤 되었지만 충분히 도움이 될 것이다. 물론 비주얼 스튜디오가 업그레이드 되면서 몇몇 내용은 인터넷에 검색을 해야할 것이다. 그래도 C언어가 워낙 오래된 언어라서 변하지 않는 부분이 더 많다.

 

 

현재 가장 잘 팔리는 C언어 교재는 윤성우님의 열혈 시리즈이다. 워낙 잘 팔리다 보니 비판도 있던데, 윤성우님의 책을 직접 사서 보진 않았지만 좋은 교재라고 널리 인정을 받고 있다. 동영상 강의도 잘되어 있고 무엇보다 책의 내용이 다른 교재보다 쉽게 설명하는 편이라 좋다고 한다. 최호성님의 책은 그에 비해 타이트 하다고 한다.

 

음... 그런데 이걸 100% 동일 선상에서 비교하는게 무리지 않을까 싶다. 어떤 교재를 보더라도 C언어 책 한권 보고 언어를 마스터하는 것은 불가능하다. 책을 보고 수많은 시간 온라인에서 정보를 검색하고 스스로 코드를 짜보지 않고서는 실력이 늘지 않는다. 그래서 코딩도장에서 말한다 '프로그래밍은 공부가 아닙니다 연습입니다' 고수가 되려면 수련을 통해 내공을 쌓는 방법이 최선이라고 이야기 한다. 물론 수련을 하려면 먼저 프로그래밍을 배워야 한다.

 

내용적으로 보면 세밀한 컴퓨터의 작동원리에 대해서 많은 시간을 들여 설명해 놓은 책이다. 메모리, CPU 는 당연히 C언어 교재의 주가 되서 상세한 설명이 들어있고 후반부의 구조체와 함수의 고급이론까지 설명이 되어있다. C언어는 650페이지라는 지면속에서 다 담기는 불가능한 언어지만 그럼에도 강의와 함께 이 한권을 다 보면 중급까지 바라볼 수 있을 것이다.

 

최호성님 C교재의 특징은 비주얼 스튜디오의 디버거를 기본으로 설명한다는 것이다. 실제 동영상 강의에서도 디버거 사용법, 메모리 추적하는 방법을 매 강의마다 보여주신다. 본인의 생각은 런타임에 자신이 설계한 변수와 함수를 추적할 수 없다면 고급개발자의 길로 갈 수 없다고 한다. 이런 부분은 그냥 프로그램을 실행하고 결과만 알려주는 다른 교재들과는 확실히 차별화된 부분이라고 본다. 아 물론 C입문자가 디버거까지 보면 좀 많이 힘들다. 그리고 또 약간의 문제는 비주얼 스튜디오 2013 기준으로 나온 책이라서 업데이트가 안된 상태다. 현재 2019년 버전으로 실행하면 경고 메시지나 컴파일이 안되는 경우가 있다. 이런 경우 인터넷을 검색하여 설정을 변경하는 방식으로 실습을 해야하는 경우가 있다.

 

C언어에는 자유도가 많지만 지금은 비주얼 스튜디오에서는 보안 문제상 상당 부분 사용자의 접근을 제한한 영역이 있다. 예를 들어  파일 객체(구조체)인 stdin 라던지 주로 과거에 버퍼 오버플로우 공격에 취약한 함수들이 사용이 안된다. 그밖에 C언어 템플릿이 C++로 통합되다 보니까 혼동스러운 부분이 있다. 웬만하면 C++ 의 하위 호환성에 C언어가 들어있어서 실행이 가능한데 항상 그렇지 않다. 특히 이 책은 좀 하드웨어 적으로 들어가려고 하다보니 걸리는 것들이 있다.

 

이런게 잘못하면 불편성으로 다가올 수 있겠지만 하나씩 과거와 현재의 상황을 비교하며 찾아가는 재미도 있다. (이런걸 변태라고 하나?) 그 과정에서 실력을 더 키울 수 있을 것이다. 그리고 강의가 제공되기 때문에 아주 곤란한 일은 없을 것이다. 저자의 카페에서 도움을 얻을 수 있을 것이다.

 

 

널널한 Windows 개발자 되기 : 네이버 카페

'널널한 개발자'가 운영하는 윈도우 기반 프로그래밍 커뮤니티 입니다.

cafe.naver.com

 

이 책은 초보자가 절대로 가볍게 시작할 수 있는 책이 아니다. 또 비주얼 스튜디오를 사용한다는 것을 전제로 한 내용이라서 리눅스나 맥OS를 사용하는 사람들은 제대로된 실습이 어려울 수도 있다. 비주얼 스튜디오의 디버거는 매우 좋지만 다른 IDE에서 그런 디버거를 제공하지 않아서 듣고만 넘어가야 한다. 책의 내용을 100프로 활용하려면 비주얼 스튜디오로 직접 실행했을 때 의미가 있다.

 

많은 사람들이 대부분 입문자에게 윤성우님의 책을 추천한다. 가장 많이 팔리는 C언어 책이기도 하고.

 

하지만 저자의 독특한 철학과 깊이에 공감하고, C언어를 디버거 수준에서 세밀한 조작에 대한 설명이 필요한 사람들 - 주로 시스템 프로그래밍과 연결된 분들 일수 - 에게는 추천할 수 있는 책이다. 개인적으로 매우 한국적인 프로그래밍 교재라서 좋다.

 

C언어를 배우는 길은 험난한 길이다. 원래 컴퓨터공학에서 다년간 종합적 교육을 받아야 진정한 깊이를 경험할 수 있는 언어이다. C언어의 창시자인 데니스 리치만 해도 물리학,수학, 컴퓨터 공학 학위를 받은 사람이다. 대학에서는 IT수학, 운영체제, 컴퓨터구조, 알고리즘 자료구조, 디지털 회로 등을 같이 가르친다. 그게 다 이어져서 있는게 C언어다. 그것도 본고장인 미국에서 배우는게 제일 좋다. 안되면 UDEMY 클래스나 유튜브 영어 코딩 사이트에서 들어야 한다. 그럴려면 영어도 잘해야 한다. 그래서 제대로 할려면 험난하다.

 

그럼에도 진지하게 C언어를 생각하는 사람에게 추천하는 책이다. 출간된지 좀 되었기에 저자의 철학과 관점이 조금 현재의 IT트렌드와 다를 수 있지만 그런 것은 C언어를 마스터하는데 전혀 문제가 안된다.

 

공유하기

facebook twitter kakaoTalk kakaostory naver band