[BOOK] 전문가를 위한 C – 캄란 아미니 지음 / 박지윤 옮김
![[BOOK] Extreme C](https://yujaewook.files.wordpress.com/2023/03/2023-03-09-17.23.18.jpg?w=300&h=300)
부제: “동시성, OOP부터 최신 C, 고급 기능까지! 극한의 C를 마주하려는 여행자를 위한 가이드북”
처음으로 배운 프로그래밍 언어는 GW-BASIC이었습니다. 단순한 문법으로 코딩 교육용 언어로 많이 보급되었던 언어입니다. 성인이 되고 배운 첫 프로그래밍 언어가 C 언어입니다. 어려서 코딩을 배운 경험이 있어서인지 어렵지 않게 배운 것 같은데 포인터는 많은 시간이 걸렸던 기억이 있습니다. 대부분 C 언어를 배울 때 포인터에서 좌절합니다. C 언어로 코딩을 배우다가 포인터에서 포기하고 개발자의 길을 포기한 분들이 종종있습니다. (BASIC으로 시작해서 다행~)
그리고 C 언어는 제가 실무에서 오랜기간 잘 사용한 언어입니다. 하드웨어 제어를 위한 펌웨어 개발, 다양한 운영체제에서 동작하는 멀티플랫폼 소프트웨어 개발, Win32 API를 이용한 첫 윈도우 프로그래밍 등 다양한 프로젝트에서 사용했고, 최근에는 코딩테스트 문제 검토할 때 자주 사용하고 있으며 기초 문법의 유사성을 갖고 있는 JAVA, C++로 확장하며 다양한 프로그래밍 언어 경험의 바탕이 된 언어이기도 합니다. 최근 공부중인 언어인 GO 언어도 C 언어와 유사한 점이 많습니다.
![[BOOK] Extreme C](https://yujaewook.files.wordpress.com/2023/03/2023-03-09-17.23.01.jpg?w=300&h=300)
C 언어를 배울 때 교재로 접했던 책은 300페이지가 조금 안되는 ‘C Programming Language’라는 얇은 책이었는데 이 책은 900페이지가 넘어갑니다. 어떤 내용을 담고 있기에 이렇게 두꺼울까요? 새로운 문법이 많이 추가된 것일까요?
‘전문가를 위한 C’는 C 언어를 중심으로 프로그래밍 언어, 컴퓨터 아키텍처에 대한 지식을 설명하는 내용이 많습니다. 특히, C 언어에 존재하는 개념만을 설명하지 않고, C 언어에 없는 개념들도 설명합니다. 예를 들면 C 언어로 객체지향을 설명하는 부분이 있습니다.
C는 문법상 객체지향을 특징으로 삼을 수도 없고 그래서도 안됩니다.
C 언어로 새로운 C++을 만들려는 것이 아닙니다. 그보다는 C가 어떻게 OOP를 사용할 수 있는 가능성을 가지는지 짐작해보려고 합니다.
객체지향과 거리가 먼 언어인 C 언어로 객체지향의 핵심요소들인 합성(Composition), 집합(Aggregation), 확장(Extension), 상속(Inheritance)을 이해하기 좋게 설명해주는 부분이 특히 인상깊었습니다. 프로그래밍 언어, 컴퓨터 아키텍처에 대한 개념을 간단하게 설명하고, 상세한 내용을 찾아볼 수 있도록 관련 링크를 제공하고 있어 이 책을 시작으로 개발에 대한 지식을 확장해나가는 것도 좋을 것 같습니다. (이 책을 잘 활용하는 방법 중 하나가 아닐가 하네요.)
책의 대상 독자는 C/C++ 주니어와 중급 엔지니어라고 합니다. 어느정도 수준의 지식을 가지고 있어야 이 책을 읽을 수 있을까요? 서문에 책을 읽기 위한 최소한의 요구사항이 정리되어 있습니다.
- 컴퓨터 아키텍처 지식
- 프로그래밍 기초 지식
- 터미널과 셀 명령어 사용법
- 프로그래밍 중급 지식
- 객체지향 프로그래밍 기초 지식
최소한의 요구사항이 저 정도라면 이 책은 쉬운 책은 아닙니다. 깊이있는 지식을 원하는 분들에게 적합한 책입니다. C 언어의 문법을 익혀서 빠르게 개발을 시작하려는 분들에게는 맞지 않을 수도 있습니다. C 언어를 시작으로 개발에 대한 전반적인 지식을 탄탄하게 쌓아가고자하는 분들에게 추천합니다.
“한빛미디어 [나는 리뷰어다] 활동을 위해서 책을 제공받아 작성된 서평입니다.”