본문 바로가기
나/감상문

Windows via C++

by ehei 2011. 8. 9.

이 책을 읽는 데 3개월 넘게 걸린 듯 싶다. 꽤 오래 읽어서 집에 가져가기도 했다. 그런데 도무지 읽지를 않았다. 아무래도 집에서는 놀고 싶은 마음만 가득한 모양이다. 결국 회사에서 짬짬이 독파. 윈도우 운영체제 하의 C++ 개발자라면 정말로 유용한 내용이 많이 나온다. 지식의 깊이를 더하고 싶은 사람에게는 가뭄 끝의 단비와 같다. 책을 읽으며 연신 감탄을 내뱉었다. 저자의 풍부한 지식을 샘내하며 말이다. '실용주의 프로그래머'나 '프로그래머의 길, 멘토에게 묻다' 등은 프로그래머로서 가져야할 마음가짐을 알려준 것 같다. 반면에 이 책은 프로그래머의 길을 가기 위한 충실한 길잡이 역할을 해준다.

 

책의 기술 수준이 높고 분량도 만만치 않은 탓에 모든 부분을 이해하고 넘길 수 없던 점은 아쉽다. 그리고 예외에 대한 부분은 '조엘 온 소프트웨어'에서 읽은 구절 덕분에 눈에 잘 들어오지 않았다. 그는 예외는 GOTO와 같다고 했다. 나도 이 점에 동의하기 때문일 것이다. 개인적으로 수행하는 프로젝트가 있다. Ogre 3D라는 오픈소스 렌더러를 사용 중이다. 그런데 이 렌더러의 소스 코드는 정말 방대하다. 문제는 예외다. 예외가 발생하면 증상은 알 수 있어도, 원인을 추적하기가 매우 곤란하다. 그렇다고 크래시가 없는 것도 아니고... 그래서 예외를 던지는 부분에 중단점을 설정해서 원인을 알아야 한다. 잡설이 길었다.

 

내가 요사이 역점을 두려는 부분은 멀티 스레드 프로그래밍이다. 이 책에서 기본과 활용에 대해 많은 것을 얻을 수 있었다. 그러나 예전처럼 동기화 함수를 사용해서 하는 것이 좋은 방법인지는 고민이 된다. 알다시피 OpenMP나 스레딩 빌딩 블록 같은 훌륭한 멀티 스레드 라이브러리들이 존재한다. 그것들은 실무에서도 쓰이고 있다 - 개인적으로 써보고 있다. 본격적인 사용은 아니지만, 비동기 로딩에 쓴다. 훨씬 편리하고 안전하다고 생각된다. 마이크로소프트의 비주얼 스튜디오 2010에서도 이런 라이브러리를 일부 제공하고 있다. 동기화 함수를 쓰는 것은 신경을 곧두서게 만든다. 교착(dead lock)이나 아사(starvation)는 남몰래 다가오기 때문에.

 

시대 만큼이나 기술은 빠르게 변한다. 허나 바탕을 이루는 근간은 쉽게 바뀌지 않는다. 대신 인터페이스나 응용 계층이 사용하기 쉽고, 보기 좋게 변한다. 툴 기반의 제작 도구가 어느 때보다 널리 사용되는 지금에, 이런 딱딱한 책을 읽을 필요가 있을까? 그렇다고 생각한다. 해보면 알겠지만, 툴은 한계가 존재한다. 툴이 제공하는 것 이상을 할 수가 없다. 한계를 벗어나려면, 테두리를 깨뜨려야한다. 소스 코드를 알고 수정할 수 있는 능력은 더욱 더 중요하다고 생각한다. 나의 부인이 기술사 공부를 하기에 이런 점을 더더욱 느낀다. 그녀가 말하길 기술사 시험에 등장하는 수많은 용어들. 그것을 쫓다보면, 엄청난 분량에 압도되어 버린다고 한다. 반면 기초를 충실히 하다보면, 유행처럼 보이는 기술들이 다 등장 이유가 있음을 알게 된다고 한다. 분산-통합-분산-통합.... 쳇바퀴에 따라 등장하는 조류일 뿐인 것이라는 것이다. 이런 훌륭한 책이 번역되어 나온 것에 기뻐하며, 나도 원서를 직접 읽게 되는 날을 꿈꿔본다.




' > 감상문' 카테고리의 다른 글

왜 똑똑한 사람이 어리석은 결정을 내릴까?  (0) 2011.08.21
폴아웃 택틱스  (0) 2011.08.16
지식 프라임  (0) 2011.07.14
피드백 이야기  (0) 2011.06.20
포탈  (0) 2011.05.23