메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

EXPERT 맞아?!

han***

|

2002-09-13

IT EXPERT, 유닉스 시스템 프로그래밍

이 책은 다양한 실무 경험을 가진 저자가 풍부한 강의 경험을 바탕으로 풀어낸 효율적인 프로그래밍 비법을 전수한다. 시스템 프로그래밍에 필수적인 셸 프로그래밍, 방대한 오픈 소스에 질린 중급자를 위한 명령어 만들기, 실무자를 대상으로 하는 다양한 실습 과제, 바로 찾아 쓸 수 있는 사전식 시스템 관련 함수와 관련 예제 등을 다루고 있다.

  • 저자 : 정재은
  • 출간 : 2002-07-28
크게 한숨을 내쉬며 책을 덮었다. 처음 책을 받아봤을때 "이 두꺼운 놈을 언제 다 읽고 리뷰를 쓴다?"라고 고민했던 생각이 나서 살짝 웃음이 나왔다. 느낌대로 리뷰를 작성해서는 안될것같다는 생각이 들었다. 리뷰를 작성하기 전에 모 인터넷 서점과 한빛미디어 웹사이트에서 이 책의 독자서평을 모두 읽어보았다. 한결같이 좋은 책이라는 의견들뿐이다. 리뷰를 작성하기가 꺼려진다. 그렇지만 솔직하게 리뷰를 쓰기로 했다. 나의 입장에서… 이 리뷰는 "이런 의견도 있군" 하는 정도로 생각하고 읽어주면 고맙겠다.



책 제목이 참 끌렸다. "IT EXPERT 유닉스 시스템 프로그래밍"... 왠지 멋진 책이 한권 나온것 같다. 유닉스 시스템 프로그래밍을 공부하는 사람들이라면 필수적으로 읽었을 너무나도 유명한 Richard W. Stevens 씨의 Advanced Programming in the UNIX Environment (이하 APUE) 가 생각났다. 이 책의 수준도, 내용도 APUE 의 그것만큼 되어주기를 바라며 첫 페이지를 열었다.



겉표지와 속표지를 넘길때만해도 상당히 기분이 좋았다. 지금까지 기술서적에서 볼수 없었던 (적어도 내가 봤던 책들 중에서는) 파격적이면서도 이쁜 디자인. 학창시절 보던 참고서 스타일이다. ^^ 차례까지 모두 읽고 프로그래밍 언어의 역사라는, 왜 이 책에 들어있는지 알 수 없는 꾀돌이와 선생님의 대화글을 읽게 되었다. 내가 알고 있던 사실과 다른 내용이 눈에 띄었다. 어라~?? "뭐... 내가 잘못 알고있는것일지도..." 그냥 넘어갔다.



1부를 읽어가면서 점점 이 책의 수준을 의심하기 시작했다. 처음에는 "호.. 이런것까지 신경을 써주는구나" 하는 생각이었는데 페이지를 넘길수록 점점 가관이다. 책을 잘못 받았나 하는 의심마저 들었다. 내용이 나쁘다는게 아니다. 왜 "IT EXPERT 유닉스 시스템 프로그래밍" 이라는 거창한 제목을 달고서 내용은 UNIX를 처음 시작하는 사람을 위한 내용으로 채워져있는지 궁금하다.



이만큼 책에 대한 이미지가 나빠지다보니 이제 별게 다 싫어보인다. 간혹 보이는 오타들도 (전체 페이지를 생각해볼때 적은 수 이다.) 거슬리고, 책의 구성에서 봤을때는 괜찮은 아이디어라고 생각했던 "스페셜 가이드"라는 이름의 한빛미디어 책 광고도 짜증이 나기 시작했다. 책 제목만 보고서 APUE 를 떠올렸던 내가 한심스러워지기 시작했다. 특히 "책 광고"는 시그마프레스나 SciTech 미디어의 출판 스타일처럼 Chapter 가 끝날때 [참고문헌]이라는 이름으로 정리를 할 수 도 있었을텐데 같은 책 광고가 너무 자주 나오는것 같은 느낌이 들었다.



더군다나 한빛미디어에서 나온 책 밖에 없지 않은가!



진정으로 독자가 참고하기를 바래서 "스페셜 가이드"라는 생각을 했다면 소개되었어야 할 책들이 분명히 더 있을것이다. 아직까지는(앞으로는 가능해질지도 모르지만) 한빛미디어에서 나온 책들로 이 책의 "스페셜 가이드"를 채우기에는 너무 부족하다고 생각한다.



레퍼런스를 제외하면 전체 분량의 거의 40%를 책 제목과 전혀 어울리지 않는 초급 UNIX 사용자 메뉴얼로 채우고 난 뒤에 드디어 프로그래밍 얘기가 시작된다. 어리석게도 다시 한번 기대를 하면서 2부를 읽기 시작했다.



ls, cat, cp, head, uniq, od, wc, du, df, finger, ps, find, grep
13개의 비교적 구현하기 쉬운 UNIX 커맨드를 직접 구현해보고 있다. 이 13개의 커맨드 중 몇몇은 일반 C 프로그래밍 관련 서적에서도 연습문제로 소개되기도 하는 간단한 수준이다. 게다가 다른 커맨드의 경우에도 완벽한 구현은 아니다. 실제로 사용하는 ls의 코드길이는 3000 라인이 훨씬 넘으며 구현에 사용되는 여러가지 테크닉을 생각해본다면 이 책에서 하고 있는 구현은 컴퓨터관련 학부 2학년생 수준 또는 그 이하 수준의 구현이다.



또한, 책에서 소개되는 소스코드 전체를 CD로 제공함에도 불구하고 전체 코드를 책에 실은 의중을 알 수 없다. 괜히 책 페이지만 늘리고 있다는 느낌이다. 물론 독자의 편의를 위해서 코드 전체를 책에 실었다고 할 수도 있겠다. 2부의 실제 커맨드 구현 부분은 커맨드의 소개 (사용자 수준의 소개)를 하고 실행된 모습을 보여준 뒤 전체 코드를 보이고 중요한 코드 블럭은 나중에 상세히 설명하는 스타일이다.



필자는 개인적으로 Code Crash 라는 이름의 GNU Code Hack 프로젝트에 참여중이다. 현재는 fileutils 를 진행중이고 앞으로 sh-utils, glibc 등을 계속 진행할 예정이다. 이 책처럼 "자세한 주석" 수준의 분석은 물론이고 사용된 알고리즘, 테크닉, 개발철학까지 많은 부분을 Hack 하고 있다. 이 책도 "자세한 주석" 수준이 아닌 관련 알고리즘, 테크닉까지 설명을 해 줬더라면 하는 아쉬움이 남는다.



3부에서는 시스템 정보를 보여주는 프로그램을 작성하면서 요구분석, 설계, 구현, 테스트의 과정을 보여주고 있다. 역시 코드가 너무 많은 부분을 차지하는 점이 아쉽지만 그나마 괜찮은 부분이었다.



하지만 3부를 보고 있자면 Prentice Hall 에서 출판된 Practical UNIX Programming (이하 PUP) 가 생각난다. PUP는 한 챕터에서 큰 개념을 설명하면서 그에 관련된 세부 사항들과 그것의 이해를 돕는 간단명료한 약간의 코드, 한 두 가지의 프로젝트로 책이 구성되어 있다. PUP처럼 각 챕터에서 큰 개념을 설명하고 각각의 챕터마다 이 책의 3부와 같은 프로젝트를 이끌어 가면서 이해를 돕는 형식으로 구성되었다면 훨씬 나은 책이 될 수 있지 않았을까 생각해본다.



4부는 레퍼런스이다. 1부와 더불어 이 책을 구성하고 있는 4개의 Chapter 중 최악의 Chapter이다. 많은 UNIX 시스템 프로그래머들은 함수의 이름이나 함수의 인자리스트의 순서가 잘 기억나지 않을때 man 페이지를 자주 이용한다. 실제 업무를 하다보면 레퍼런스를 찾기 보다 man 페이지를 보는것으로 해결하는 경우가 훨씬 많다.



차라리 이 4부를 O"Reilly 사에서 출판된 POSIX Programmer"s Guide 처럼 타 기종으로의 포팅시에 고려해야 할 사항들을 서술해 놓았다면 가치가 있었을텐데 찾아보기를 제외한 전체 970페이지의 44% 나 차지하는 엄청난 분량을 레퍼런스로 채웠다는게 너무 아쉽다.



특히 이 4부에는 재미있는 내용이 있는데 바로 C Pointer에 대한 친절한 설명이 있다. 이 책의 거의 마지막 부분인데 읽으면서 어이가 없었다. 포인터도 모르면서 유닉스 시스템 프로그래밍을 공부하려는 독자가 얼마나 있을까. 어떻게 보면 1부와 더불어서 독자를 무시하는 내용이라고 생각한다.



쓰다보니 악평이 되었다. 저자에게 악감정이 있는것도 아닌데 너무한게 아닌가 하는생각도 들 정도다. 오랫동안 수많은 프로그래밍 관련 기술서적을 읽다보면, 책 내용을 넘어 저자의 철학까지도 함께 보고 또 배우게 된다. APUE, Unix Network Programming, TCP/IP Illustrate의 저자인 Richard W. Stevens씨의 책들을 읽다보면 절로 감탄사가 나온다 (번역서에서는 절대 느낄 수 없었다;;). 그 사람의 오랫동안 축적된 산지식에 책을 펴기전에 고개가 숙여질 정도이다. 실제로 절친한 선배는 바이블이라는 말도 아까울 명서들을 보기 전에 먼저 저자에게 인사부터 하고 책을 펴라는 말을 했을 정도다.



이 책도 "현장 테크닉"이나 "한마디만 합시다"에 있는 저자의 경험담들을 읽다보면 저자의 내공이 느껴진다. 많은 부분에서 공감이 가며, 간혹 "이건 아닌데.." 하는 생각도 들었지만 후자의 경우는 프로그래머 개개인의 차이이므로 무시해도 된다.



분명 저자의 능력은 책을 쓰기에 충분한데, 왜 내가 쓴 서평은 악평이 되어버렸는지 생각해봤다.



일단은 책 제목이 상당히 거슬렸으며 구성 또한 그렇다. 내용에 일관성이 없다고나 할까. 누구에게 무엇을 전달하고자 하는지 알 수가 없다. 분명한것은 중급에서 고급으로 넘어가려는 유닉스 프로그래머는 말할것도 없고 초급에서 중급으로 넘어가고자 하는 유닉스 프로그래머에게도 배울것이 별로 없는 책이다. 이미 유닉스상에서 간단한 커맨드를 직접 구현해 본 경험이 있는 초급 이상의 유닉스 프로그래머들에게는 권하고 싶지 않다.



다만 이제 "유닉스에서" 프로그래밍을 시작하고자 하는 사람이 있다면 나쁘지 않은 선택이 될 것이다. 하지만 이 책의 제목처럼 EXPERT가 되고 싶다면 더 읽어야 할 책들과 코드들이 많을 것이다.
닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?