전문가를 위한 C
캄란아미니 (Kamran Amini) 지음
박지윤 옮김
이번에 소개할 책은 "전문가를 위한 C" 라는 책 입니다.
책 제목에서와 같이 C 언어에 대한 기초 책은 아닙니다.
책에서도,
대상 독자를 C/C++ 개발에 관해 최소한의 지식을 가진 독자를 대상으로 하고 있습니다.
C/C++ 주니어와 중급 엔지니어가 주요 독자라고 되어 있지만, C/C++에 대한 기본 문법을 알고 소스를 읽을 수 있다면
이 책을 보는데 크게 무리는 없을 것으로 생각됩니다.
이 책은, 총 7개의 부에 23개의 장으로 구성되어 있습니다.
책은 C 언어에 대한 기초 문법에 대한 내용은 없지만, 1부 에서 C 언어의 필수 요소에 대한 설명 부터 코드에 대한 빌드 및 빌드된 결과물에 대한 설명을 해주고 있습니다.
1부,
1장 에서는 "전처리기, 포인터, 함수, 함수 포인터, 구조체"에 대해서 다루고 있습니다.
이미 개발을 하고 있거나 C 언어 문법에 대해서 자세히 알고 있더라도 정독해보면 "아~, 이런게 있었지", "아~, 이 부분은 조심해야되는데...." 등의 느낌이 들수 있는 익숙함에서 간과히 했던 부분들이 다시금 되세김질 하기에 좋은 내용으로 구성되어 있습니다.
실제, 구현 중에 실수하기 쉬운 부분들일 수도 있는 내용들이라 생각되기에 한번 읽어보면 좋을 내용들입니다.
2장 3장 에서는 컴퓨터 구조나 컴파일러 수업 시간에 들었을 내용입니다.
실제, 코딩하고 개발하는 과정에서 그렇게 생각하지 않고 지나갈만한 부분이긴 하지만 컴파일 환경을 구성하거나 컴파일 오류 또는 디버깅시에 알면 도움이 될 내용들로 구성되어 있습니다.
특히 임베디드 소프트웨어 개발을 한다면 더더욱 알면 도움될 내용이라는 생각이 듭니다.
2부, 메모리 ....
4 ~ 5장으로 2 개의 장을 통해서 메모리 구조에 대해서 설명하고 있습니다.
소프트웨어 개발 중에서 가장 중요한 부분중에 하나라고 생각합니다.
많은 오류가 발생할 수 있는 부분이며, 더버깅 하기 까다로운 부분중에 하나 입니다.
책에 메모리 구조에 대한 학습에 대해 정말 와닿는 표현이 있었습니다.
정말 많이 공감되는 표현 입니다. 메모리 구조를 파악하고 이해하는 부분에서 프로그래밍 및 디버깅 레벨의 단계가 올라가고 예술의 경지에 이르는데 필히 학습해야할 부분이라 생각합니다.
그리고, 소프트웨어를 설계하는 단계에서 기본적인 최적화를 고려하여 설계할 수 있고 그를 기반으로 코딩할 경우에도 실수를 줄이는데 많은 도움이 될 것입니다.
3부는 객체지향에 대해 설명 하고 있습니다.
6 ~ 9장으로 총 4개의 장으로 구성되어 있습니다.
실제, 객체 지향에 대한 개론적인 설명이나 C++ 문법에 대한 설명을 다룬다기 보다, 책에서도 나타내듯이
C 처럼 객체지향적이지 않은 언어로 객체 지향에 대해 설명하고 C 언어를 통한 객체지향 형태로 개발 가능성에 대해 보여주는 색다른 내용들로 구성되어 있습니다.
실제 책에서도 명시하듯이 C 자체가 객체 지향이라는 의미가 아니라, 구조를 구성하는 방식에서 객체 지향적 사고 방식을 보여주고 있습니다.
C 로 개발한 코드를 한단계 업그레이드 하기 위해 꼭 학습하면 좋은 내용들 입니다.
C 언어에서의 캡슐화와 정보 은닉등은 정독하면 많은 도움이 될 것 같습니다.
C 언어에서 상속의 개념을 적용할 수 있는 방법에 대해서도 재미있는 장이었습니다.
4부는 유닉스 및 리눅스 커널 그리고 최신 C 표준에 대해 소개하고 설명하고 있습니다.
10 ~ 12장으로 총 3개이 장으로 구성되어 있습니다.
실제 유닉스 및 리눅스 시스템이나 커널 그리고 드라이브 등에 대해서는 유닉스 시스템 관련 책이나 시스템 프로그래밍 관련책 또는 리눅스 커널 개발 관련 책을 통해서 더 자세히 학습할 수 있습니다.
이 책에서는 10 ~ 11장을 통해서 유닉스 및 리눅스 기반에서 시스템 프로그래밍을 할 경우에 필히 알아야할 내용들에 대해서 설명하고 있습니다.
12장에서는 C언어 표준에 대한 설명과 최신 표준에서의 변화에 대해 간략하게 설명과 예제 코드를 보여주고 있습니다.
4부는 이 책과 함께 실제 시스템 프로그래밍 또는 리눅스 커널 책을 병행해서 보면 좋을 것 같습니다.
5 ~ 6 부는 C 프로그래밍 응용파트 입니다.
13 ~ 20장에서는 동시성, 동기화, 스레드 실행 및 스레드 동기화, 프로세스 실행 및 프로세스 동기화, 네트워크 (IPC, 소켓통신) 에 대해 주로 다루고 있으며,
21장에서는 다른 언어와의 통합에 대해서 다루고 있습니다. "C++, 자바, 파이썬, Go" 각각의 언어와의 통합에 대해서 예제와 함께 설명하고 있습니다.
7부는 테스트와 유지보수에 대해 다루고 있습니다.
22 ~ 23장으로 총 2개의 장으로 구성되어 있습니다.
22장에서는 유닛 테스트 소개 및 방법 그리고 C 프로그램에서 문제 해결을 위해 사용할 수 있는 디버깅 도구 및 기술에 대해서 설명하고 있습니다.
23장에서는 Makefile 같은 빌드 시스템에 대해서 소개하고 있습니다.
Makefile 이외에 닌자, 바젤 빌드 시스템에 대해서도 소개하고 있습니다.
이 책에서는 기본적인 구조 및 소개 수준에서의 구문을 설명하고 있습니다.
그렇게 때문에 작성 방법 및 구문등에 대해 자세한 부분은 각각에 대한 별도 학습 자료 또는 책을 통하여 학습하여야 합니다.
[ 결론 ]
각 파트 및 섹션 마다 이해하기 쉽도록 구성되어 있으며, 각각에 맞게 그리고 적재 적소에 필요한 예제들을 넣어서 실제 실행 해보면서 이해를 돕고 있습니다.
그리고, 실제 소프트웨어 개발 진행 중에 간과히 할 수 있는 부분들에 대해서도 한번 더 생각 해 볼 수 있게 해줍니다.
이 책은 기초 또는 기본 문법 책은 아닙니다.
그리고, C 언어 바이블로서의 의미를 가질 수 있는 책은 아니라 생각 됩니다.
이 책은, C 언어를 이용한 개발의 레벨을 업그레이드 하고 C 언어 고급 엔지니어에 다가갈 수 있는 기반을 마련해 줄 수 있는 책이라 생각 됩니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
https://www.hanbit.co.kr/store/books/look.php?p_code=B6135642963
'리뷰 > IT_책소개' 카테고리의 다른 글
육각형 개발자 : 한빛미디어 (0) | 2023.08.28 |
---|---|
O'REILLY MLOps 실전 가이드 : 한빛미디어 (0) | 2023.07.23 |
O'REILLY 개발자를 넘어 기술 리더로 가는 길 : 한빛미디어 (0) | 2023.06.25 |
O'REILLY 머신러닝 시스템 설계 : 한빛미디어 (0) | 2023.05.29 |
전문가를 위한 C++ : 한빛미디어 (0) | 2023.04.24 |
마이크로서비스 아키텍처 구축 가이드 : 한빛미디어 (0) | 2023.02.26 |
O'REILLY 트랜스포머를 활용한 자연어 처리 : 한빛미디어 (0) | 2022.12.31 |
O'REILLY 온디바이스AI : 한빛미디어 (0) | 2022.11.27 |
O'REILLY 파이썬 기반 금융 인공지능 (Artificial Intelligence in Finance) : 한빛미디어 (0) | 2022.10.28 |
판다스 인 액션 (Pandas in Action) : 한빛미디어 (0) | 2022.10.03 |