지관수 / no6421@ift.ml.org
|
리눅스에 대한 관심이 높아지면서 리눅스 프로그래밍에 대한 관심 또한 매우 높아졌다. 당연한 얘기지만 리눅스를 사용하면서 C 프로그래밍과 무관하게 살 수 있는 확률은 매우 희박하다. 물론 강력한 모듈 기능을 가지고 있는 레드햇 5.0을 사용할 경우 커널 컴파일을 해 줄 필요가 매우 줄었다. 그래서인지 처음 설치한 그 모습 그대로 사용하는 사용자가 꽤 된다. 하지만 이렇게 사용하는 사용자들의 대부분은, 어디까지나, 이 물건이 어디에 쓰이는 물건인지 확인하기 위한 용도일 테고, 이 물건(?)을 가지고 뭔가 해보려는 리눅서는 지금도 숱하게 컴파일들과 씨름하고 있을 것이다. 리눅스에서의 컴파일은 매우 기본적인 일이다. 시스템 설정을 변경하기 위하여 또는 새로운 버전의 응용 프로그램을 테스트하기 위하여, make 와 gcc 명령을 달고 산다. 이걸 가지고 리눅스 프로그래밍이라고 말하긴 어렵지만, 그래도 엄연한 프로그래밍의 한 과정이며, 단 한번의 컴파일이라도 해 보았다면, 리눅스 프로그래밍 세계에 발을 들여 놓은 것이나 다름 없다. 이런 사람들에게 추천할 만한 책이 있다. "초보자용 리눅스 프로그래밍"이란 제목의 책이 바로 그것이다. 이 책의 저자 Neil Matthew 와 Richard Stones는 유닉스 프로그래밍 전문가들로 유닉스 환경에서의 C 프로그래밍에 대하여 누구보다 많은 경험을 가지고 있다. 또한 이 책의 역자인 한동훈님과 이만용님은 국내 최고의 리눅스 전문가들로 읽기 쉽게 번역되었다. 이 책이 어떤 사람들에게 필요한지 이 책은 다음과 같이 정의하고 있다.
이 책은 누구에게 필요한가 여러분은 이미 리눅스를 설치했거나 다른 유닉스를 접할 기회가 있었다고 본다. 현재 리눅스 시스템을 조금은 사용할 줄 알고 C 언어에 대한 기본 지식을 갖고 있으며, 유닉스용 프로그램을 작성하고 싶은 분을 위한 책이다. 이 책은 대부분의 리눅스 관련 서적들이 이야기를 마친 곳부터 시작하고 있다. 실제 유닉스 프로그래밍을 할 수 있게 해주는 많은 도구들을 어떻게 사용하는지 보여줄 것이다. 이 책 제목에 초보자용이란 단어가 붙어 있다고 해서, 생 초보자들도 이 책만 보고 열심히 공부하면 리눅스 프로그래밍을 배울 수 있는 것은 아니라는 것을 말해두고 싶다. 까놓고 얘기해서 유닉스도 좀 할 줄 알아야 하고 C 프로그래밍도 좀 할 줄 아는 사람이 리눅스 프로그래밍을 처음 시작할 때, 도움받을 수 있는 그런 책이다. 이런 이유에서 초보자용이라는 타이틀이 조금 무색하긴 하지만 리눅스 프로그램을 개발하려는 초보 리눅서 개발자들에겐 매우 유용한 책이 아닐수 없다. 책에 수록된 내용과 예제를 보면 저자들이 얼마나 유닉스 프로그래밍을 오랫동안 해왔고, 유닉스 시스템에 대한 풍부한 지식과 많은 테스트를 경험해 왔는지 쉽게 알 수 있다. 본 책은 리눅스 환경에서 프로그래밍을 할 때 기본적으로 알아야 할 제반 사항들에서부터 각 종 프로그래밍을 위한 기초 지식들을 친절하고 자세히 그리고 풍부한 예제들로 설명하였다. 유닉스 시스템 사용의 기초가 되는 쉘 스크립트 작성에서부터 리눅스 시스템의 파일 구조와 파일을 입출력 리눅스 시스템의 환경 정보(환경 변수, 시간과 날짜, 호스트 정보) 얻기 등 리눅스 프로그래밍에 앞서 알아야 할 기초적인 부분들을 설명하고 있다. 기초적인 부분인 만큼 숙지해야할 매우 중요한 부분이다. 간단한 파일 입출력 프로그램으로 워밍업할 수 있다. 워밍업을 마쳤으면 이제부터는 리눅스 실제적인 프로그래밍에 들어간다. 터미널을 다루고 Curses 라이브러리를 이용한 사용자 기반의 텍스트 인터페이스 구성에 대하여 배우게 된다. DBM 라이브러리를 이용한 데이터 관리까지 배우면 어떤 프로그램이든 만들 준비는 어느 정도 되었다고 볼 수 있다. 아마 이 책을 읽게 될 당신은 점차 무언가를 만들어 나가고 배우고 있다는 느낌을 얻을 수 있을 것이다. 여기서는 CD 데이터베이스 프로그램을 함께 만들며 배우고 있는 과정들을 하나하나 접목하는데, 상당히 설득력 있는 예제로 판명된다. 실제 응용에는 별로 유용하지는 않지만... 이 후에는 보다 전문적인 프로그래밍 얘기들을 만나게 된다. 리눅스의 개발 도구들과 디버깅 툴의 사용과 테크닉을 배우는데, GDB는 리눅스에서 매우 널리 사용되는 디버거이다. 유닉스 환경에서 프로그램을 짜는데 알아야 할 중요한 한가지는 바로 프로세서이다. 프로세서와 시그널 그리고 파이프에 대하여 여러분은 이 책을 통해 명쾌한 해답을 얻을 수 있을 것이다. 리눅서들이 또한 큰 관심을 같는 프로그래밍 분야는 소켓 프로그래밍과 X 프로그래밍인 것으로 알고 있다. 하지만 아쉽게도 본인은 이 부분에 대하여 무지하기 때문에 무어라 설명하기가 어렵다. 이 밖에도 인터넷 CGI 프로그래밍과 부록으로 각 시스템별 포팅 문제에 대하여 다루고 있다. 인터넷 CGI 프로그래밍 설명은 비교적 원론에 충실하였음을 확인할 수 있다. 아마도 이 들이 인터넷 CGI 프로그래밍에 깊이 관여하지는 않았던 것 같다. 물론 내가 이들을 감히 단정지어 평가할 수는 없지만 앞의 내용처럼 읽고 배우는 재미를 주지는 못했다. 양념 정도의 내용이랄까... 유닉스 환경에서의 프로그래밍에 대하여 아주 잘 알지 못하던 나에게 이 책은 커다란 도움을 주었다. 실제로 여기서 배울 수 있는 내용은 리눅스로 한정 짓기보다 유닉스 환경에 고루 적용될 수 있는 내용들이었으며, 리눅스나 유닉스로의 프로그래밍 환경 변화를 꽤하고 있는 사람들에게 꼭 권하고 싶은 책이다. 비교적 뒷 부분의 내용을 제대로 파악하지는 못했지만 앞선 내용만으로도 높은 점수를 주고 싶다. 한가지 아쉬운 점이라면 아무래도 번역서인 까닭에 한글에 대한 내용이 빠져있음 이었다. 이 문제는 모든 번역서들이 가지고 있는 문제로, 국내의 능력있는 프로그래머가 이런 문제를 포함한 괜찮은 리눅스 프로그래밍 책을 만들었으면 하는 욕심이다. 이 책의 번역자들에게 이런 기대를 걸어보는게 큰 무리는 아닐 듯 싶다. |