유닉스 이책은 유틸리티를 설명하는 가벼운 내용이라고 볼수도 있지만
저자가 컴파일러 개발자이기 때문에 다년간의 다양한 경험을 바탕으로
유틸리티도 훌륭한 예제를 만들어 쉬우면서도 저자의 노하우를 전수 받을수 있다.
더불어 컴파일러의 내부적인 구조와 세부적인 구현원리를 최대한 쉽게 전달하고
있다. 수많은 개발자가 있지만 실력은 천차만별이듯이 많은 책들도 마찬가지인데
이 책은 저자의 깊은 지식과 노고와 수고가 배여 있다.
이 책을 읽게 되어 기쁘다.
정말 좋은 책이다.
윈도우 환경에서 이클립스로 IE에서 돌아가는 웹 프로그램을 개발하면서 화려한 화면과 마우스 클릭만으로도 많은 것이 자동으로 이뤄지는 IDE에 길들여진 나에게 유닉스, 리눅스의 까만 화면은 그야말로 암흑 그자체였다. 학부시절 VI로 C언어를 컴파일하고 소켓통신 프로그램을 만들때 윈도우 보조 프로그램의 메모장을 얼마나 그리워했었는지 모른다.
모르는게 죄다.
진작에 이 책을 만났더라면...
이 책은 vim, make, gcc 에서 부터 svn까지 말 그대로 필수 유틸리티에 대해 자세하게 설명하고 있다. 이 책이 훌륭한 이유는 unix나 linux의 유틸에 대한 소개와 사용법 그리고 명령어들만의 나열이 아닌, 어떻게 구성이 되어있고 어떠한 과정으로 실행이 되는지 까지를 다루고 있기 때문이다. 일례로 이 책의 2장의 2장의 vi에 대한 부분을 보면 되돌리기 명령 u에 대해 설명하는데 실제 레지스터에 어떤 식으로 저장되는지 또한 되돌리기와 이전 작업으로 돌아가기가 어떻게 다른지 등을 알기쉽게 설명하고 있어 단순히 외워야할 명령어가 아닌 한번 더 생각해보고 음미할 수 있는 기회를 준다.
가장 즐거운 마음으로 읽었던 부분은Debugging 부분이었다. 사실 디버깅 또는 테스트 분야는 실제 맨땅에 헤딩하며 실제로 경험해 보지 않으면 디버깅의 중요성이나 어떻게 하면 효과적으로 이러한 기능을 사용할 수 있는지 알기가 어렵다. gdb를 이용해서 이클립스나 다른 IDE 못지 않은 디버깅 기능을 사용할 수 있다는 것을 알수 있었다. 또한 하나의 파일럿 프로젝트에 대해 실제 디버깅을 실행하며 그 과정의 화면을 보여주고 있어 실습을 통해 익힐 수 있어 좋았다.
그리고 항상 왠지 어려울 것만 같은 이름만으로도 살짝 긴장하게 만드는 make에 대한 설명과 gcc 컴파일러에 대한 내용도 아주 유용했다. gcc 구조 및 컴파일이 어떻게 이루어지는지 또한 컴파일을 할 때 최적화 하기위한 방법은 무엇인지도 다루고 있다.
개정판인만큼 더욱 충실한 내용과 책에 오타도 거의 찾을 수 없었고 깔끔한 구성도 이 책의 장점이다.
나와같이 윈도우에만 길들어져 까만화면 울렁증이 있는 개발자에게 이 책은 최고의 사수이자 선생님이자 친구가 되어줄 것이다.
진심으로 강추한다!
UNIX/LINUX 환경에서 개발은 많이 하는편은 아니지만
때때로 간단히 Shell,Perl, Python Programming 할일이 있으면
한동안은 그걸 잡고 일을 하게 된다.
평소에 원도우에서만 개발하며
필요할시에 서버에 SSH 접속후 VI 환경에서 개발을 하는데
항상 느끼는 것이지만 개발시 디버깅환경이 구축이 안되어서
언제나 DEBUG 전역변수를 두고 print 해서 확인하는게 다였는데
평소보다는 불편하긴 하지만 디버깅 환경이 있다는걸 처음으로 알았다.
적지 않은 신세계라고 할까?
개인적으로 MFC, C#로 개발할때 Visual Studio.net IDE 환경에서
디버깅시 여러 편한점(수정후 중단 위치 이동, 디버깅상태에서 소스수정)이나
JAVA, FLEX 개발시에 이클립스(FLEX 필더또한 이클립스 기반)로 사용시
이클립스의 끝 없는 장점들이 많다.
특히나 vim의 플러그인이 존재한다는 사실도 알게되었다.
바로 쓸생각은 없지만 필요시에 다시 한번 책을 뒤척이지 않을까 싶다.
개인적으로 Vim 의 경우 수많은 단축키들을 지금까지
찾아보고 때때로 사용하지만
외우는 것의 한계가 있어
현재 쓰게 되는 것은 조금 불편하더라도 자연스럽게
사용가능한것만 사용하고 가끔은 마우스 신공을 쓰기도 한다.
정말 VI 단축키는 외운다고 되는게 아닌
무의식의 영역에서 사용되어야 할 정도로 쉬우일이 아닌것 같다.
책의 전반에 대해서 보면 의외로 회사 생활하면서 책에서 나온 것을
활용하는 것이 많지만 그렇지 않은 것도 많다.
얼마전 Python으로 만든 S/W를 처음으로 어느곳에 설치하는데
tgz 으로 묶어서 처리했었는데 여러모로
설치 후 PATH 세팅이라던가 환경 세팅으로 인해 불편한 점이 있다.
한서버에만 설치하면 되는 내용이라서 상관이 없지만
수십대의 서버라면 책에 나온것과 같이 패키징화 하는것이
역시 좋은것으로 보인다.
형상 관리는 CVS는 잠시 써봐서 잘 모르겠지만
subversion이 현재 업무에도 사용중이고 크게 문제점은 없는것 같다.
MS의 Source Safe 와는 분명히 체계가 다른면이 있는것 같다.
이 정도에서 이 책의 정의를 내리자면
불편했던 개발(컴파일, 디버깅, 형상관리, 패키징)환경을 바꾸어 줄 책이라는 것이다.
물론 바꿀지 안바꿀지는 선택하기 나름이다.
모든것을 적용하는건 힘들더라도 효율성이 필요한 시점에선
적용을 고려해보는것도 나쁘지 않을것 같고
그런면에서 전체적으로 알게 해줄 흔치않은 코스 요리 같은 책이라고 정의하고 싶다.
1판은 읽어 보신분이라면 아시지만 유닉스 또는 리눅스에서 개발을 시작하는 사람에게 필요한 많은 정보를 가지고 있는 책입니다.
개발툴인 vi, 컴파일러 GCC의 원리, make, svn등 프로젝트 진행에도 꼭 필요한 유틸리티에 관해서 풍부하면서도 쉽게 잘 정리된 책입니다.
1판은 읽은 독자라면 2판 바뀌어 봐야 얼마나 바뀌었겠어 생각하실지도 모르겟지만
1판에서 보다 최신화 된 내용과 1판에서 부족했던 내용을 보충하는 글들도 많이 있습니다.
군더더기 없는 매우 유익한 책이라 생각합니다.