-
-
전문가를 위한 C - 동시성, OOP부터 최신 C, 고급 기능까지! 극한의 C를 마주하려는 여행자를 위한 가이드북
캄란 아미니 지음, 박지윤 옮김 / 한빛미디어 / 2022년 10월
평점 :
처음 책을 고를때 매우 망설였다. 왜냐면... 무려 912페이지나 되는 한손으로 들기에도 버거울?만큼 매우 무거운 책이었기 때문이다. 하지만, C++을 배우고 있으면서 C도 공부해봐야겠다는 생각을 예전부터 가지고 있었기 때문에, 한번에 다 볼 생각은 아니고, 사전 혹은 언제든 꺼내볼 수 있는 전공책처럼 곁에 두고두고 살펴보기 위해 이 책을 선택하였다.
예상?했던 것처럼 쉬워보이는 내용은 아니었다. 목차에서부터 생소한 내용들이 많이 있었고, 앞부분 프로그래밍의 기초적인 부분 외에는 Part3 객체지향 부분이 반가웠던 것 외에는 낯설었다.
저자가 설명하는 예상 독자는 다음과 같다.
- C와 C++ 개발에 관해 최소한의 지식을 가진 독자
- C/C++ 주니어와 중급 엔지니어가 주요 독자
- 책을 읽고 나서 시니어 엔지니어로 거듭날 수 있기를 원하는 사람
- 더 높은 연봉과 훨씬 더 유의미한 직무를 맡을 수 있기를 바라는 사람
- 시니어 엔지니어도 일부 세부 사항이 도움이 될 수도...
하지만 옮긴이는 초보자가 시니어가 될 때까지 옆에 두고 계속 보아도 좋은 책이라고 설명해주셨다,
나는 다른부분들 보다는 요즘 공부하고 있는 객체지향에 대해서 관심이 있어 Part3 부터 조금씩 살펴보았다. 사실 다른 설명들보다도, 객체지향을 우리 인간의 사고와 비교하며 설명해준 부분이 제일 인상깊어 그 부분을 일부 공유하고자 한다.
(pg 253) ~객체지향을 지원하지 않는 언어로 객체지향 프로그램을 작성할 수 있을까요? 정확히 말하자면 C 언어를 사용해서 객체지향 프로그램을 작성할 수 있을까요? ... 네, 가능합니다. ... OOP가 실제로 무엇을 의미하는지 살펴봐야 합니다.
(pg 253) OpenSSL과 OpenCV와 같은 여러 C 라이브러리는 모두 객체지향 방식으로 작성되었습니다. 이것이 C가 객체지향이라는 의미는 아닙니다. 그보다는 이러한 프로젝트가 내부 구조를 구성하는 방식이 객체지향적 사고방식에서 비롯한다는 뜻입니다.
(pg 254) C는 문법상 객체지향을 특징으로 삼을 수도 없고 그래서도 안 됩니다. ... C로 객체지향 프로그램을 작성할 수는 있지만, 복잡성을 해결하려면 추가로 약간의 수고가 듭니다.
(pg 254) ~ OOP는 문제를 생각하고 분석하는 방식에 더 가깝습니다. OOP는 전 우주와 그 안에 있는 대상(object)의 위계질서에 관한 태도입니다. OOP는 기본적으로 우리 주변의 물리적 개체(entity)와 추상적 개체를 이해하는, 오래전부터 전해 내려온 고유한 방법입니다. 이는 자연을 이해하는 매우 기본적인 방식입니다.
(pg254) 우리는 언제나 모든 문제를 객체지향적 관점에서 생각했습니다. OOP는 인간이 항상 채택했던 것과 같은 관점을 적용하는 것에 불과합니다. 다만 이번에는 계산 문제를 해결하기 위해 프로그래밍 언어를 사용할 뿐입니다.
(pg 257) 개념이란 사고(thought) 또는 생각(idea)으로, 마음속에 존재하는 정신적 또는 추상적 이미지입니다. 개념(concept)은 현실 세계의 개체(entity)에 관한 인식으로 형성되거나, 단순하게는 완전히 가상적(imaginary)이며 추상적(abstract)일 수 있습니다. 나무를 보거나 자동차를 생각할 때 이에 해당하는 이미지가 서로 다른 두 가지 개념으로 떠오릅니다.
(pg 258) 무언가를 설명하려는 목적은 관련한 구체적인 개념을 청중에게 전달하는 것입니다. ... 누군가가 마음속 지도를 가졌으며, 그 지도에는 다양한 개념과 그 개념이 서로 연결되는 방식이 나타납니다. 목표는 이 마인드맵을 청중에게 전달하는 것입니다.
(pg 259) 여러분은 문제의 개념 및 개념 사이에서 발견한 관계에 기반한 접근 방식을 사용해서 문제를 해결합니다... 컴퓨터를 이용해서 문제를 해결하려고 할 때 바로 이런 일이 일어납니다. 문제를 객체와 그들 간의 관계로 나눈 뒤, 이 객체를 기반으로 궁극적으로 문제를 해결하는 프로그램을 작성하려고 합니다. 여러분이 작성하는 프로그램은 마음속 개념과 그 관계를 모방합니다(simulate).
(pg 260) 객체지향 프로그램은 객체의 측면에서 개념을 모방합니다. 우리가 마음속으로 문제에 관한 마인드맵을 생성하는 동안, 프로그램은 메모리애 객체 모델을 생성합니다. 다시 말해 인간과 객체지향 프로그램을 비교하면 개념, 마음, 마인드맵과 같은 용어는 객체, 메모리, 객체 모델에 각각 대응합니다.
(pg 260) (컴퓨터를 사용하는 이유를 설명하며...) 마인드맵은 감정에 따라 잊히거나 변경될 수 있습니다. 하지만 컴퓨터는 감정이 없고 객체 모델은 인간의 생각보다 훨씬 튼튼합니다. 이러한 이유로 객체지향 프로그램을 작성해야 합니다. 마음속 개념을 효율적인 프로그램과 소프트웨어로 전달하기 위해서입니다.
객체지향에 대해 우리가 마음속으로 문제를 대하는 방식과 비교하여 설명해준 부분이 지금까지 이 책을 읽은 부분중에서는 가장 백미인 것 같다.(적어도 나에게는...) 아직 읽지 못한부분이 더 많기는 하지만 거의 매일 조금씩 천천히 살펴보면서 배워가고 있다. 저자가 설명한 것처럼... 시니어가 되기 위한 길에 도움을 주는 든든한 구글과 같은 책일 것 같다는 생각에 꾸준히 학습해볼 예정이다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."