품목정보
발행일 | 2019년 06월 10일 |
---|---|
쪽수, 무게, 크기 | 664쪽 | 188*257*35mm |
ISBN13 | 9791162241868 |
ISBN10 | 1162241861 |
발행일 | 2019년 06월 10일 |
---|---|
쪽수, 무게, 크기 | 664쪽 | 188*257*35mm |
ISBN13 | 9791162241868 |
ISBN10 | 1162241861 |
Chapter 01 프로그램 만들기 __01-1 프로그램과 C 언어 __01-2 컴파일과 컴파일러 사용법 Chapter 02 상수와 데이터 출력 __02-1 C 프로그램의 구조와 데이터 출력 방법 __02-2 상수와 데이터 표현 방법 Chapter 03 변수와 데이터 입력 __03-1 변수 __03-2 데이터 입력 Chapter 04 연산자 __04-1 산술 연산자, 관계 연산자, 논리 연산자 __04-2 그외 유용한 연산자 Chapter 05 선택문(if, switch - case) __05-1 if문 __05-2 if문 활용과 switch - case문 Chapter 06 반복문 __06-1 while문, for문, do - while문 __06-2 반복문 활용 Chapter 07 함수 __07-1 함수의 작성과 사용 __07-2 여러 가지 함수 유형 Chapter 08 배열 __08-1 배열의 선언과 사용 __08-2 문자를 저장하는 배열 Chapter 09 포인터 __09-1 포인터의 기본 개념 __09-2 포인터 완전 정복을 위한 포인터 이해하기 Chapter 10 배열과 포인터 __10-1 배열과 포인터의 관계 __10-2 배열을 처리하는 함수 Chapter 11 문자 __11-1 아스키 코드 값과 문자 입출력 함수 __11-2 버퍼를 사용하는 입력 함수 Chapter 12 문자열 __12-1 문자열과 포인터 __12-2 문자열 연산 함수 Chapter 13 변수의 영역과 데이터 공 유 __13-1 변수 사용 영역 __13-2 함수의 데이터 공유 방법 Chapter 14 다차원 배열과 포인터 배열 __14-1 다차원 배열 __14-2 포인터 배열 Chapter 15 응용 포인터 __15-1 이중 포인터와 배열 포인터 __15-2 함수 포인터와 void 포인터 Chapter 16 메모리 동적 할당 __16-1 동적 할당함수 __16-2 동적 할당 저장 공간의 활용 Chapter 17 사용자 정의 자료형 __17-1 구조체 __17-2 구조체 활용, 공용체 , 열 거 형 Chapter 18 파일 입출력 __18-1 파일 개방과 입출력 __18-2 다양한 파일 입출력 함수 Chapter 19 전처리와 분할 컴파일 __19-1 전처리 지시자 __19-2 분할 컴파일 부록 __아스키 코드표 __선택 정렬 알고리즘 __여기서 잠깐 모음 |
혼공 시리즈 중의 하나로 C 언어에 대해 기초부터 고급까지 다룬 책이다. 확실히 혼공 시리즈 특성상 초심자도 쉽게 C 언어를 독파할 수 있도록 자세한 설명과 그림을 곁들이면서 C언어의 내용을 녹여내었다. 만약 컴퓨터 언어에 대해 잘 모르는 사람이 해당 책을 본다면 기초 문법부터 차근차근 C 언어를 배울 수 있을 것이다.
하지만 중,고급자에게는 맞지 않는 책이다. 목차를 보면 알 수 있듯이 자료형, 조건문, 반복문 등등과 같이 C 언어를 포함한 모든 언어의 기본적인 부분에 대한 설명에 적지 않은 책의 지면이 할애되고 있다. 때문에 조금이라도 컴퓨터 언어에 대해 조금이라도 아는 사람이 볼 수 있는 부분이 많지는 않다. 만일 책이 C 언어의 주요 특징들에 대해서, 입출력, 네트워크 등등에 적절히 지면을 할애했다면 초심자들에게는 입문서로 중, 고급자들에게는 레퍼런스 용도로 사용되지 않았을까 싶다.
다시 본론으로 돌아와서 책 자체가 초심자를 위해 단계별로 잘 나누져 있고 설명 또한 깔끔하게 이루어져있기 때문에 교과서 느낌이 나기도 한다. 특히나 혼공 노트를 통해 독자들이 좀 더 이해하기 쉽도록 도와주고 있지만 단순 학교 필기 시험을 위한 정리 자료와 같은 느낌이 난다. 개인적으로 컴퓨터 언어가 단순히 암기만으로 사용할 수 있는 것이 아님을 작가 또한 잘 알고 있을텐데 이런 부분이 아쉽다. 간단한 프로젝트 설명과 외부 예시 등등을 포함했었더라면, 책을 너머 혼자 공부 할 수 있는 방향성이 추가되었다면 보다 좋은 책이 되지 않았을까 생각이 든다.
컴퓨터 관련 종사자로서 언어의 입문서가 될 수 있는 책은 종류에 상관없이 많이 비슷한 것같다. 그래도 혼자 공부하는 C 언어는 여타 기본 C 언어 책과는 다르게 챕터 하나하나 이해 할 수 있도록 그림과 함께 설명하고 있다. 그러므로 만약 C 언어의 입문자 혹은 언어를 처음 접하는 사람이라면 해당 책을 찬찬히 훑어보면 좋을 것 같다.
혼자공부하는 C언어 교재를 통해서 6주간 온라인 스터디도 함께 하였습니다.
혼자서 공부했다면 아마 중간에 그만두거나 했을거 같은데,
온라인 스터디 운영자님이 계속적으로 힘을내고 끝까지 스터디를 완주할수 있도록
많은 격려를 해주셔서 끝까지 스터디를 완주할수 있는데 도움이 되었으며,
기존에도 혼자공부하는 파이썬 공부를 해보면서, 혼자 공부하는 C언어등,
교재들이 비전공자들도 충분히 혼자서도 프로그래밍을 공부할수 있도록
내용이 충실하게 잘되어 있어서 독학으로 프로그래밍을 시작해 보는 분들에게
입문서로서 적극 추천하고 싶습니다.
또한 제가 참여한것처럼 페이스북을 통해서 온라인 스터디를 참여 하신다면
중간에 포기하는 일이 없으실 것이고, 출판사에서 혼자공부하는 시리즈 홈페이지도 운영을 하고 있어서 홈페이지를 통해서 저자분의 무료 온라인 강의도 참고할수 있고,
잘 이해 안가는 부분들은 저자분에게 직접 문의를 해서 답변도 받을수 있는 창구도 제공을 해주고 있어서, 책의 제목처럼 혼자서도 충분히 프로그래밍 언어를 학습할수 있는 도서라고 생각이 됩니다.
C 언어 공부를 시작할 때 본 책들이 아직 기억이 납니다.
89년 근처
Schaum’s outline series
황희융 교수의 …
90년대
Turbo C 정복 (명작이긴 합니다. 하지만 이 책을 볼 당시 완독은 못했던 것으로.. )
Peter Norton 이 쓴 책 (제목도 기억이 나지 않습니다만…. )
Hilbert Schildt 의 Advanced C (이건 아직 책장 구석에 있군요..)
….
C 로 만드는 데이터 베이스 … (대략 이런 제목… )
어느 정도 시간이 지나서 다시 한번 참고할 만한 책이 없나 싶어 찾다 구해 본 책들입니다.
임베디드 프로그래밍 C 코드 최적화( 아직도 책꽂이에 있는데. )
임베디드의 peripheral 제어 보다는 최적화에 초점이 맞춰져 있습니다.
열혈강의
이건 좀 보다가 마침 결국 후배에게 뺏긴 후로는 어디에 있는지..
Pointers on C, 케네스 릭 지음/이종웅 옮김
내용은 괜찮은 편인데, 가독성이 떨어집니다.
그 뒤로는 C 언에 대해서는 책을 거의 사지 않았습니다. 프로그래밍에 필요한 기본적인 내용은 대부분 알거나, 최근에는 검색을 통해서도 쉽게 찾아 볼 수 있으니 말입니다. 하지만 뭔가 한 권으로 잘 좀 정리된, 특히나 가독성이 좋은 책이 없나 라는 생각은 한쪽 구석에 있었던 것 같습니다.
임베디드 컨트롤러 개발을 10년 이상 해 오면서 머리에 남아 있는 기본만으로도 AVR과 ARM-Cortex F/W 를 만들었었고, 가끔 막히면 검색을 통해서 문제를 해결해 왔으니 말입니다.
예전에는 Character LCD나, FND .. 그리고 MCU 와 주변의 각종 driver IC 를 제어 하는 데 있어서 복잡한 기법은 별로 필요하지도 않았었고, 8비트 MCU는 메모리 구조와 속도 때문에 오히려 가독성을 중요시 하는 방식으로 코딩을 하는 것이 더 나았습니다. 거기다가 8bit MCU를 위한 개발환경, 특히나 편집기가 그렇게 편하지는 않더군요.
하지만 점차 다양해 지는 사용자와 시대적인 요구사항들, 다양한 주변기기와 복잡해 지는 개발의 난이도와 함께 사용자의 요구가 많아지니 구조체, 구조체 포인터, 함수 포인터, 링크드 리스트까지 필요해 지게 되더군요. 그리고 Cortex-M0/3 의 32비트 메모리 구조와 넉넉한 RAM, 그리고 이클립스 기반의 개발 툴은 고급 기법을 사용하기에 무리가 없을 정도가 되었습니다. 그래서 틈틈히 인터넷에서 찾은 자료를 정리해 가면서 코딩을 해 왔지만, 늘 정리된 자료가 안보이거나 중복된 자료들이 계속 보이는 신기한 현상을 일어나게 됩니다.
한빛 미디어의 리뷰어 이벤트로 받은 이 책은 기초편과 고급편으로 나눠지는데, 저는 9장, 포인터 부터 내용을 살펴봤습니다. C 언어의 포인터는 잘못사용하는 경우 MCU가 다운되는 것은 기본이며, 다운되지 않지만 정말 알 수 없는 현상, 예를 들어 switch 문에서 원하는 case 에 들어가지 않는… 정말로 황당한 경우를 만나기도 합니다. 하지만 포인터는 반드시 제대로 익혀두는 것이 좋습니다. 그래서 인지 이 책에서는 초급편의 마지막을 포인터에 할당하였고, 고급편에서도 다시 다루고 있습니다. 포인터에 대한 소개로는 swap 함수를 예로 들고 있네요.
고급편을 보려고 하니 기초편의 제일 마지막 페이지의 문장이 지금 제가 이 책이 필요한 이유를 잘 설명하고 있습니다.
“ … C 언어에 핵심 내용들이 모두 들어 있습니다. 그래서 기본편만 이해해도 얼마든지 훌륭한 프로그램을 만들 수 있습니다. 심지어 제어문만 가지고도 …… “
맞는 말입니다. 기본만 알아도 요즘 유행하는 아두이노 이용해서 뭔가를 만들기는 쉽고, 실제 개발을 해오면서도 기본으로 다 처리를 했는 것 같습니다. 특히 8bit MCU에서는 C 언어의 함수의 활용보다는 기본 제어문과 비트 연산이나 비트 조작에 더 신경을 썼다고나 할까요?
하지만 계속 이 분야의 일을 하고, 난이도가 올라가기 시작한다면 기본만으로는 힘들거나 소위 말하는 노가다 식의 코딩을 해야만 합니다.
이 책의 고급편을 어떻게 활용할 수 있는지 몇몇 예를 들어 보겠습니다.
10장 배열과 포인터, 14장 다차원 배열과 포인터 배열 부분을 잘 익혀 두면 길이가 가변적인 메뉴 항목들을 표시할 때 메모리 낭비를 막을 수 있습니다.
그래픽 LCD에 사용자 메뉴를 표시하고 각 메뉴를 선택하면 다른 메뉴나 특정한 동작을 하도록 하기 위해서는 메뉴간의 이동과 함께 각 메뉴의 추가/삭제가 편하도록 코딩을 해 하는데, 이 때는 17-2장의 구조체 활용에 나온 링크드 리스트 기법을 적용하면 코딩이 정말 편해집니다.
그리고 임베디드 F/W를 작성하다 보면 처음에는 하나의 파일에 내가 만든 함수를 전부 넣어 두고 사용하는 경우가 많습니다. 하지만 갈수록 코드가 길어지게 되고 나중에 다른 컨트롤러를 개발할 때 사용하기 위해서 특정한 목적의 소스들이나, 특정 IC 들을 위한 함수들을 각각의 파일로 저장해 두고 관리하게 됩니다. 이렇게 되면 컴파일 시간을 줄일 수도 있고, 코드 단위로 복사해서 새로운 프로젝트에 붙여서 사용하는 것이 아니고 파일을 카피해서 프로젝트 폴더에 카피해 넣어 사용할 수 있습니다. 이 때 각 파일 간의 데이터 공유를 위해서는 extern, static 을 최대한 활용해야 하는데, 이 내용을 19-2에서 잘 설명하고 있습니다.
특히나 이 책의 19장에는 embedded C 를 하는 사람, 그 중에서 중급 이상의 실력을 갖추고자 하는 사람이라면 반드시 봐 둬야 할 내용들이 보입니다.
#pragma 와 매크로연산자 #과 ## 등에 대한 설명
#if 와 #endif 를 이용한 조건부 컴파일
분할 컴파일
처음에는 이런 내용들이 왜 필요하나? 라는 생각을 할 수도 있습니다. 하지만 어느 정도 난이도가 있는 프로그램, 복잡한 프로그램, 다양한 경우를 고려해야하는 프로그램을 작성하기 위해서는 이런 내용들이 필요합니다. 아두이노의 라이브러리 소스들을 살펴 보거나 u8g2 같은 라이브러리 소스나 예제를 보면 알 수 있을 겁니다. 미리 살펴보지 않더라도 이런 내용을 다룬 책 한권을 책꽂이 꽂아 두는 것으로도 나중을 대비할 수 있을 겁니다.
이번에는 살펴보지 못한 18장의 파일 입출력은 머지않아 보게 될 것 같습니다. STM32 사용하면서 micro SD 를 저장매체로 해서 파일 관리를 할 일이 곧 생길 것 같네요.
어찌 하다 보니 혼공 시리즈 책을 다 살펴보게 된 것 같습니다. 이 시리즈는 나같이 혼자서 책 보며 공부하는 사람 뿐만 아니라 유튜브와 같은 동영상을 위주로 하는 분들에게도 동영상 보기 전후에 틈틈히 살펴 보기 좋은 책입니다. 특히 이번 혼공C는 20년 이상 사용하고 있는 C이지만 최근 만들고 있는 GLCD 에 메뉴를 넣으면서 조금은 더 효율적으로 코딩을 하고 싶어하던 저에게 많은 도움이 된 것 같습니다.
“기초만 익히면 된다.”, “인터넷에 다 있다”, “유튜브만 있으면 된다” 라는 분들에게까지 이 책을 권하지는 않겠습니다. 하지만 적어도 임베디드 분야에 관심이 있고 이 분야를 목표로 삼고 있다면? “이 책, 아니 혼공C 를 보세요”, "혼공 C 정도는 하나 책꽂이에 꽂아 두세요" 라는 말을 하는 것을 주저하지 않을 것 같습니다.
본 리뷰는 한빛미디어 리뷰어 이벤트를 통해 받은 책을 보고 작성한 것임을 밝혀둡니다.