한빛미디어에서 나온 유닉스 리눅스 프로그래밍 필수 유틸리티라는 책은 제가 리뷰용으로 받은 아이템 중에서 가장 인상이 깊었고 충격을 받은 물건입니다.

일단 795페이지에 달하는 책의 페이지 수도 방대하지만 지금까지 읽어본 개발서와는 전혀 다른 느낌을 받았기 때문입니다. 임베디드 개발자인 저는 개발에 관련된 책들이나 관련 분야에 대한 해설서, 통계 자료, 소개서, 동향 자료, 브로셔, 사용설명서, 사용자 가이드, 데이터 시트 등의 문서를 많이 봅니다만 그 퀄리티가 천차만별입니다. 다른 건 다 제외 하더라도 개발 관련 책을 보더라도 내용이 붕 떠 있거나, 튜토리얼보다 못한 수준이거나, 뭔가 중요한 내용이 핀트가 틀려 있어서 사람을 혼동하게 하거나, 구성이 엉망이거나, 이건 꼭 알아야 한다고 생각되는 내용인데도 빠져 있는 경우가 많습니다.

예를 들어 작년에 구입했던 리눅스 커널 구조와 원리라는 책을 언급해보기로 하죠. 


위의 링크에서 소개글을 보실 수 있습니다. 하지만 이 책을 펼쳐서 읽어보면 정말 이해가 하나도 안될 정도입니다. 제가 커널을 한번도 들여다 본적이 없긴 하지만 당연히 잘 아는 사람이 재확인 하려고 사기보다는 그 구조와 원리를 알고 이해해서 써먹어보려고 사는게 당연하겠지요. 하지만 그런 입문자가 읽고 이해할 수 있는 배려가 하나도 되어 있지를 않습니다. 당연히 입문자니까 간단한 책을 봐야지 왜 이런 책을 사보냐고 하시면 곤란합니다. 이쪽 개발 일을 하다 보면 사실 물질적으로 형성되어서 손이 잡히는 게 하드웨어고, 코드로 되어 있는 게 소프트웨어 일뿐 쓰다 보면 그 기본적인 인터페이스나 원리는 유사한 경우가 많습니다. 다 개발자가 자기 쓰려고 만들다보니 기본적인 부분은 비슷할 수 밖에 없거든요. 그렇다면 개발에서 쓰이는 예를 들어가면서 설명하고 이게 어떤 식으로 중요하다는 언급을 하게 되면 쉽게 이해를 하게 되어 있습니다만 위에서 언급한 책은 그냥 소스코드를 보는 것보다 조금 나은 수준을 제공해 줍니다.

리뷰하고자 하는 책에 대한 링크를 걸겠습니다.


이 방대한 책을 설명할 엄두도 안나거니와 링크 아래쪽에 보시면 10개에 달하는 리뷰가 각 분야를 개발해본 사람들에 대한 입장에서 기술하고 있습니다. 따라서 저 리뷰를 읽어보시면 좀 더 자세한 느낌을 받으실 수 있을거라고 생각하고 이 리뷰에서는 저의 입장에서 느끼는 점들과 책에서 받은 느낌들을 이야기해보고 싶습니다.



1. 이 책은 개발자가 개발자를 위해서 쓴 배려 깊은 책입니다.

리뷰를 해서 칭찬을 하는게 아니라 이 책 자체가 정말 국내의 입문 개발자들을 위해서 쓴 책이라는걸 읽다보면 느낄 수 있습니다. 책 전반에 걸쳐서 이 툴이 어떤 식으로 쓰이고 툴이 어떤 환경에서 쓰이는지, 그리고 왜 쓰는지 어떻게 써야 하는지를 주로 짚고 있습니다.

VI 에디터라는 툴이 있습니다. 이 툴은 개발자라면, 그리고 코딩을 해야 할 일이 있는 사람이라면 기본적인 기능은 꼭 익혀두기를 권하고 있습니다. 개발자가 언제나 자기 작업 환경에서 코딩을 하면 좋겠지만 일을 언제나 리눅스 환경에서 일을 할 수 있는 것도 아니라서 윈도우에서 왔다 갔다 해야 하기도 하고, 멀리서 원격으로 일을 해야 하기도 하다보니 꼭 필요한 툴입니다. 제대로 못 쓰면 몸이 고생하겠지요. 이런 툴에 대해서 처음 개발하는 사람이 알려면 어떻게 해야 할까요? 대부분은 네이버 블로그나 구글링해서 쓰는 법에 대해서 참조를 하겠지요? 하지만 대부분의 문서들은 영문 설명서를 번역해놓은 수준일 뿐 어떤 경우에 어떻게 쓰라고 손에 잡히듯이 설명을 해주지는 않습니다. 어차피 취미로 하는 블로그 생활이고 수준 높은 개발자가 블로그를 그렇게 운영할리가 없는 이상 다 고만고만한 수준이죠. 그래서 명령어 몇개 찾아보고, 명령어표 인쇄해서 벽에 붙여놓고 봅니다만.. 네.. 저두 종이 몇변이나 잊어먹고 아는건 VI 여는 것. VI에서 편집 시작하는 것. 저장하는 것. 강제 종료밖에 못했습니다. 복사야 찾아보면 어찌 저찌 한다지만 쏙쏙 편리한 기능을 익하는건 참으로 난해한 일이지요. 하지만 이 책은 예를 들어가면서 설명을 잘 하고 있습니다. 그리고 다른 책과 차별되는 점이 예 자체가 실제로 개발에 쓰일만한 일들을 가지고 친절하게 예를 들고 있습니다. 사용자는 조금 인내심을 가지고 따라해보면 되고, 실제로 개발에 가까운 걸 바로 쓸 수 있게 가르쳐 주기 때문에 이걸 내가 왜 하고 있나, 이거 정말 쓸만한건가 하는 의구심을 지울 수 있습니다. 그리고 참 다행인것은 쓸만한걸 일하는 것처럼 연습 하고 있기 때문에 옆 자리 동료가 바라볼때 저 사람이 일은 안하고 책만 들여다보는 그런 게 아니라 뭔가를 하고 있는 것 같군이라고 인식 시켜준다는 점이 큽니다.

2. 구성 자체가 개발에 바로 쓸 수 있는 툴을 순서대로 쓸 수 있도록 가르쳐 주고 있습니다.

개발자가 개발에 필요한 일을 할 때 학교 다닐때나 강좌 배울 때처럼 하나하나 과목별로 찾아가면서 배울 수가 없습니다. 맨날 납땜만 하던 사람이 만져본거라고는 매트랩, pspice, 어셈블리, PIC, 8051용 C 정도나 만져봤으면 다행인데 갑자기 리눅스에서 BSP(Board support package)로 나온 부트로더와 커널, 드라이버, 응용 프로그램을 개발 환경을 옮겨서 코드를 수정하고 잘 돌아갈 수 있도록 컴파일 하고, 퓨징하고, 옵션 수정해가면서 개발하기란 참 어려운 일입니다. 상위와는 또 다른 일이지요. 막상 하라고 해서 페도라 깔고 나면 덩그라니 떠 있는 X 윈도우 환경을 보면 한숨밖에 안나옵니다. 소스 코드 풀어서 안에 봐야 뭔지도 모르겠고, 영문 메뉴얼은 천몇백 페이지인데 이거 뭐 어떻게 하라는지 답도 안나오죠. 하지만 이 책을 보고 한번 따라해보고 이해를 해보면 제조사에서 보내준 가이드대로 하다가 막혀서 안될때는 참으로 답답하고 한숨만 나오고 뭘 어떻게 해야 할지 답이 안섭니다. 하지만 이 책은 에디팅과 컴파일, 링킹. 디버깅에 대한 내용을 확실하게 시스템적 하위 레벨에서 개념을 머리에 심어줍니다. 그리고 여러가지 기술을 가르쳐주지요.

3. 저자가 하위 레벨에 대해서 잘 이해하고 있고 그걸 바탕으로 책을 썼습니다.

저자는 RTOS와 컴파일러, 디비거를 개발한 적이 있고 그 경험을 바탕으로 책을 썼습니다. 굳이 그 사실을 언급하지 않더라도 책을 읽다보면 노련함이 책 전반적으로 배어 나옵니다. 코딩이 되었던 개발이 되었든간에 도구 없이는 개발할 수가 없습니다. 그리고 이 책은 그 도구의 사용법에 대해서 훌륭하게 가르쳐 주고 있습니다. 하위 내용에 대해서 필요가 없는 사람들은 이 책의 내용중에서 일부는 필요가 없을지도 모릅니다. 하지만 사실 저에게 있어서는 그 시스템의 기본 원리를 꿰뚫어 설명해주는 내용이 더 반가웠습니다. 한달동안 틈나는 사이마다 따라해보려고 했지만 개발일이 지금도 발목잡고 있기에 틈틈히 펼쳐서 중간중간 구경하기를 더 많이 하고 진도는 많이 못 나간 상태입니다. 하지만 앞으로 계속 펼쳐보고 싶다는 마음이 절로 드는 책입니다. 이 한권 마스터하면 중급 개발자로서의 확신이 들 것 같달까요?

4. 구성이 잘 되어 있습니다.

편집은 한빛미디어의 실력이겠지만 폰트도 좋고, 종이질도 좋고 줄 간격도 좋습니다. 적재 적소에 그림이 잘 배치되어 있고 이해하기 쉬워요. 안의 편집도 이쁘게 잘 되어 있습니다. 이런 작은 요소들은 종종 무시되는 경우가 많습니다. 최근들어 계속 좋아지고 있습니다만 그래도 이책은 제법 잘 나와 있습니다. 또한 내부에 글의 흐름이 읽기 편하고 기억하기 좋게 되어 있습니다. 많이 가르쳐보신 솜씨가 팍팍 느껴져요.



이 책의 가장 큰 미덕은 술술 읽혀 내려간다는 점에 있다고 생각합니다. 그리고 머릿속에도 잘 들어오고 해본다는 재미도 쏠쏠하다는 점이 크네요. 이것 이상의 개발서의 미덕이 있을까요? ㅎㅎ





'업무 > Linux' 카테고리의 다른 글

vsftpd 설정하기  (0) 2008.08.22
Fedora Core 6에서 고정 IP 잡기  (2) 2008.07.10
Linux 설정 두번째  (0) 2008.07.10
Linux IP 설정 파일들  (0) 2008.07.08
Linux에서 path 잡는다고 삽질했습니다.  (0) 2008.05.19

WRITTEN BY
가별이
내가 천사의 말 한다 해도

,