(서평) API로 배우는 윈도우즈 구조와 원리

내가 처음본 API서적은 국내에서 가장 유명(아닐지도 모르지만)한 김상형씨의 API 정복이었다. 물론 나역시도 만족했고, 현재도 WIN32 API 레퍼런스로 사용하고 있다.

API란 Application Programming Interface라는것, 그리고 기본적인 프로그래밍에 필요한 함수 집합이라는것은 알고 있었지만, 다들 배워야 한다기에, 다들 알아야한다기에 접했을뿐 별다른 감흥은 없었고, 더 알고 싶지도 않았다.

컴퓨터 공학을 공부하다보니 운영체제란 과목이 있었지만, 설명이 부족해선지, 아니면 교재가 좋지 않아선지 별 흥미를 느끼지 못했고, 다른 과목보다 관심도가 낮았다.

프로그래밍을 하는데, 왜 운영체제가 필요한지는 의문이었었고, 윈도우 프로그래밍에 필요한 내용을 어느정도 선(멀티 태스크, 멀티 쓰레드, 이벤트 프로그래밍, 핸들, 인스턴스등 기본 개념)까지는 알고 있었기 때문에, 괜찮다고 생각했다.

하지만 그렇지는 않았다.

신기술의 이해를 위한 바탕에는 그 근본 원리를 아는것이 중요했고, 프로그래밍의 근본 원리에는 그 바탕이 되는 운영체제에 대한 이해, 데이터 구조에 대한 이해, 그 언어에 대한 이해등 많은 지식이 필요하고, 그 중 하나인 운영체제에 대한 이해를 놓친 내가 바보같기도 했지만, 후회만 하고 있을수없기에, 운영체제에 관련된 책을 몇권 구입하게 되었다. (이 책도 그중에 하나였다)

여러권 구입한 책들중 (API 정복의 경우는 미리 사둔 책이라 예외다) 가장 설명이 잘 되어있었다.

책의 두께, 많은 페이지수, 긴 설명 이런게 중요한것이 아니다. 운영체제와 그 구동 원리를 이해하는데에 핵심적인 내용은 모두 담고있고, 어떠한 책이든간에 모든 정보를 담을순 없다. (에세이나, 소설, 수필, 참고서등은 당연히 예외다) 다른 참고 자료 혹은 참고 서적을 봐야하는건 어떠한 경우에나 마찬가지이고, 이 책도 마찬가지로 부족한건

다른 책을 참고해야했지만, 윈도우에 대한 개념을 잡아주는데에(사실 윈도우나 유닉스나 리눅스나 그 근본구동원리나 기능은 비슷하기에 하나만 잘해도 나머지는 어느정도선까지 따라오기 마련이다) 큰 역할을 했다.

프로그래밍을 좀 더 잘하기 위해 운영체제에 대해 알고 싶으신분이나, 윈도우의 원리에 대해 궁금하신분은 주저 말고 선택하시길 바란다.

(서평) 소프트웨어 산책 - 역시나 흥미로웠던 그의 산책

이전에 임백준씨의 책들을 감명깊게 읽었던지라 이번책도 큰 기대를 품고 읽게 되었습니다.

그의 철학에 녹아있는 이야기들은, 자신에 철학과 글에 대한 믿음이 절로 이해가 되는 책들이라 매우 와닿았었죠.

이번책의 내용은 소프트웨어 방법론에 대한 이야기였는데, UML, 리팩토링, XP, 디자인 패턴등 다양한 방법론에 대한 이야기를 듣고 관련 서적을 접해보았지만, 딱히 와닿지는 않았던게 사실입니다.

설계가 잘 되어진 프로그램이 더 좋게 나올것이라는 생각은 늘 가지고 있었지만, 과연 UML의 다이어 그램을 통해서 프로그램을 좋게 만들수 있을까? XP는? 리팩토링은?? 늘 의구심이 들었습니다. 예외로, 디자인 패턴은 그 활용 가치에 공감했지만 말이죠.

특히나 리팩토링의 경우는 더더욱이 그런 편이었는데, 임백준씨가 책안에 적어놓은 코드안에 철학은 진정한 객체지향으로 향해 가는 코드를 보였고, 의미없는 클래스와 객체의 남발에 대한 일침을 가했다고 봅니다.

책안에 UML에 대한 이야기는 없었지만, 결과적으로 소프트웨어 방법론에 대한 핵심적인 이야기를 들음으로해서, 그것들이 필요하고, 왜 필요한지에 대한 “동기부여”가 됨으로써 그 가치가 더 높았다고 생각합니다.

자칫하면 한동안 (언젠가는 필요로 했을지 모르지만) 장식품 역할을 할뻔한 소프트웨어 방법론 서적들에 필요성을 높여준 이번 책도 역시 임백준씨라는 생각이 드네요.

프로그래머 K씨의 하루의 경우는 시도는 좋았던것 같았지만, 본책의 페이지를 줄이며 등장할것이 아니고, 기본적인 내용이 일정 페이지수를 만족하며, 부가적인 요소로 삽입되었으면…하는 아쉬움이 있었지만 나쁘지 않았다고 생각합니다.

여전히 방법론에 회의적인 분들을 위해 이 책을 추천하며…

(서평) 누워서 읽는 알고리즘

프로그래밍에 꽃이라 할수 있는 알고리즘.

그러나 그런 알고리즘은 늘 고민과, 고뇌를 동반하고, 풀릴듯 풀리지 않는 문제, 해결은 됐으나 완벽하지 못한 방법들은 늘 나를 괴롭혔고, 알고리즘이란 귀찮고 번거롭지만 해야하는것이라는 인식이 무의식적으로 자리 잡힌것 같았다.

그러나, 이 책은 보고나선 내 생각은 달라졌다. 다른 이론서(혹은 활용서)와는 달리 알고리즘에 대한 생각, 자신이 가지고 있는 프로그래밍및 알고리즘에 대한 생각들을 늘어 놓으면서, 음악에 대한 비유등.. 이 책을 쓴 저자는 프로그래밍을 참으로 즐길줄 아는 사람이고, 자신의 꿈을 사랑하는 사람으로써, 멋지다라는 생각이 들기도했다.

사실 이 책은 매우 많은 내용을 담고 있지는 못하다. 페이지수도 많은 편은 아니다. 하지만 이 책이 담고 있는 깊이는 여느 책 못지 않다고 본다.

이 책은 자칫하면 매너리즘에 빠질수 있는 사람들(특히 프로그래머)에게 매우 좋은 책이다.

처음 그 마음가짐을 잊었던 나에게, 프로그래머로서의 즐거움이나 마음가짐을 갖게 해준 이 책은 나에게 최고의 책이 될것이다.

(서평) 행복한 프로그래밍 - 당신은 프로그래밍으로 인해 행복한가요?

웃기는 이야기일지 모르지만, 사실 나는 게임이 좋아서 프로그래밍을 시작했다.

게임을 만들고 싶은데, 그래픽(간단한 그림도 많이 못그리는 편이다)에는 너무 소질이 없었고, 기획이란 분야는 너무 막막한 상황이었기에, 선택한것이 프로그래밍이었다.

그러나 그 시작과는 달리, 갈수록 프로그래밍의 매력에 빠져들었고, 프로그램을 만든다는 그 자체를 즐기게 되었다.

나에게 주어진 문제를 해결했을때 오는 짜릿함? 내가 만든것이 컴퓨터안의 가상 세계(이 표현은 틀렸을지도 모른다. 왜냐면 컴퓨터안의 세계는 저자의 말대로 bit로 이루어진 현실에 존재하는 세계이기도 하니까)에서 나의 발상을 코드화해서 그것을 구동하였을때의 즐거움? 이런건 무엇과도 바꿀수없는것이었다.

그러나 그 즐거움을 잊을때가 많았다.

어떠한 프로젝트를 위해선 선행작업들이 많고, 관련 분야에 대한 지식이 부족한 경우에는 그와 병행하느라 더 바빠지기 마련이다.

시간이 갈수록 코드를 읽거나 작성하는것은 심리적으로 쫓기는 상황에서 이루어지는 경우가 많았고, 아무리 좋은 설계를 해도 좋은 코드가 나오는 경우는 적었다.

일을 즐기기는 커녕 일에 쫓기는…그런 상황들이 날 힘들게 하고 있었다.

누워서 읽는 알고리즘을 읽을때도 느낀것이지만, 자신에 일에 프라이드를 가지고 있고, 진정 애정을 가진, 그리고 그 기분을 나에게도 가지게 해준 임백준씨에게 경의를 표한다.

(서평) 해킹 파괴의 광학 - 프로그래밍 기본 소양 서적에 가까운 책

사실 이 책은 네트워크 관련 공부에 관심을 가지다가, 해킹 방법에 대해 조금 알아야 겠다는 생각으로 접한 책이었습니다. 

그렇지만 이 책은 그 보다 큰 교훈을 주었습니다.

바로 근본 기술에 대한 이야기인데, 프로그래머들이 자주 겪는 딜레마는 내가 배운 기술이 한순간에 쓸모없어 지는것이 아닐까 내가 신기술에 적응 못하게 되는게 아닐까 하는 부분이 많습니다.

저자는 이 부분에 대해서 근본 기술에 대한 이야기를 함으로써, 그 근본으로 돌아가면 신 기술이 나온다하여도 금방 적응할수 있고, 그 원리를 이해 하는것이 IT에서의 해결책이라고 주장했습니다.

그 주장에 전적으로 동의하며, 그가 가르쳐준 PE포맷, API후킹, 메모리 다루기 등 모두 즐겁게 보았죠.

애초에 이 책을 접한 시기가 학생이었던 때이다보니 더더욱 좋게 와닿았단 책입니다. 리버싱을 살짝 다루긴했지만 조금 라이트하게 다루고 있습니다.

하지만 흥미를 불러 일으킬만큼은 맛볼수 있으니, 이 책에서 다룬 여러 주제들로 인해 관심분야의 폭이 늘어나는 데에 큰 도움이 되었죠.

적은 페이지로 다양한 내용을 다루다보니, 디테일하게 접근하려면 다른 책들을 참고해야했지만 그거야 다른 책들도 마찬가지인경우가 많으니.. 게다가 애초에 포지션 자체가 다른거라고 생각하시면 될거 같습니다.

아주조금 아쉬었던건, CD에 담긴 소스 파일의 내용과, 책에 나와있는 소스 코드의 내용이 다르다는 것입니다. CD에 담긴 파일에 오류가 있기도하고…-_-;;

뭐 직접 고치면서 도움이 되긴했지만요~

리버싱/어셈/프로그래밍 기본 소양이 무엇인지에 대해 가볍게 접하고 싶으신 분들에게 추천합니다.