[도서내용] 마이크로소프트 윈도우를 제대로 익히려면 가장 기본이 되는 하부구조부터 착실히 이해하는 것이 중요하다. 기본적인 내용을 이해하고 나면 운영체제를 구성하는 다른 특성들을 점진적으로 익혀나가는 것이 어렵지 않다. 그래서 이 책은 윈도우의 가장 기본이 되는 하부구조와 윈도우용 소프트웨어를 설계하고 구현할 때 반드시 알아야 하는 핵심 개념들에 중점을 두고 있다. 이 책은 독자에게 다양한 윈도우의 기능을 알려주고, C/C++ 언어를 통해 그러한 기능을 어떻게 사용할 수 있는지를 설명한다.
이 책의 특징과 장점 -. Windows XP, Windows Vista, Windows Server 2008에 대한 내용을 반영한 8년만의 개정판 -. 기반기술과 응용기술에 대한 균형감 있는 접근 -. 64비트 윈도우용 애플리케이션 개발을 위한 고려사항, 32비트/64비트 윈도우에서 동일하게 사용할 수 있는 단일 소스 코드 작성 지침과 노하우 -. 운영체제의 핵심 기능이라 할 수 있는 프로세스, 스레드, 동기화 오브젝트, 메모리 관리 등에 대한 업그레이드된 내용 -. 동작 원리를 상세히 기술한 DLL의 동작 방식, 인젝션, 구조적 예외 처리의 동작 방식, 예외 처리 방법 -. 다른 책에서는 찾아보기 힘든 보안 문자열 함수, 완전히 다시 작성된 스레드 풀 관련 함수, 윈도우 비스타에서 새롭게 등장한 오류 보고와 애플리케이션 복구 등의 최신 기술 수록
어떤 독자를 위한 책인가? -. C/C++로 윈도우 애플리케이션을 개발하는 프로그래머 -. 윈도우의 하부구조에 대한 이해를 갖추고자 하는 프로그래머
[도서특징]
윈도우 프로그래머를 위한 최고의 책, 윈도우 시스템의 근원을 파헤친다.
Visual C++로 복잡한 애플리케이션을 개발하는 프로그래머라면 이 책의 조언이 매우 큰 도움이 될 것이다. 제프리 리처는 Windows XP, Windows Vista, Windows Server 2008에 대한 내용을 반영하여 8년만에 이 책을 개정하였다. 이 책에 포함된 깊이 있고 폭넓은 지침, 향상된 기법, 개선된 코드 예제는 당신을 윈도우 애플리케이션 개발 전문가로 이끌어줄 것이다.
[주요내용] -. 32비트와 64비트 윈도우에서 동작하는 애플리케이션의 구조와 구현 -. 프로세스와 잡의 생성과 사용 -. 스레드의 생성, 관리, 동기화, 파괴 -. I/O 컴플리션 포트를 이용한 동기, 비동기 I/O의 수행 -. 가상 메모리, 메모리 맵 파일, 힙을 아우르는 다양한 메모리 관리 -. 스레드 스택의 물리적 저장소 확보 기법 -. 지연 로딩을 위한 DLL 생성, API 후킹, 프로세스 인젝션 -. 구조화된 예외 처리의 사용, 윈도우 에러 복구, 애플리케이션 재구동
“이 책은 창의력을 길러줄 수 있는 책도 아니고, 장인정신을 길러줄 수 있는 책은 더더욱 아니다. 이 책은 윈도우를 기반으로 프로그램을 개발하는 개발자들에게 소위 기본이 무엇인지를 가르쳐 주는 책이다. 유행하는 기술은 생명주기가 짧다. 작년에 나온 신기술이 지금은 더 이상 신기술이 아니다. 그래서 많은 개발자들은 끊임없이 공부해야 한다고 역설한다. 일면 맞는 말이다. 하지만 그 대상이 유행에 민감한 기술들을 신기루마냥 쫓아서 익히는 것이라면 방향을 잘못 설정한 것이다. 기반기술과 응용기술에 대한 균형감 있는 접근이 필요하다는 것이다. 이 책이 5번째 개정판이 나오는 동안 꾸준히 사랑받아온 이유는 바로 이러한 균형감에서 오는 것이 아닐까 생각한다. 태고적 윈도우로부터 전해 내려오는 변하지 않는 윈도우의 모습과 새로운 운영체제에 새롭게 추가된 기능들을 조화롭게 풀어내기 때문이다. 이 책의 이전 판인『Programming Application for Microsoft Windows』가 출간된 지 8년이 지났다. 그동안 윈도우 운영체제도 많이 발전하였으며, 새로운 기술도 많이 포함되었다. 이제 8년 전에 공부했던 내용을 업그레이드할 시점이 되었다.”
[추천평] 『제프리 리처의 Windows via C/C++』는 C/C++ 언어를 이용하여 마이크로소프트 윈도우용 애플리케이션을 개발하고자 하는 사람들에게는 바이블과도 같은 책이다. 새로운 언어와 새로운 기술을 빠르게 습득하고 활용하여 현장의 문제를 정확하고 신속하게 해결하는 것에 못지않게 기초와 기본 기술을 충실히 습득하는 것은 개발자로서 그 분야의 진정한 전문가로 거듭나기 위해 필수 불가결한 요소다. 특히 마이크로소프트의 윈도우 운영체제를 개발 플랫폼으로 삼고 있는 개발자라면 윈도우의 기본적인 특성과 운용 원리, 더불어 운영체제를 지배하고 있는 기본 철학을 이해하고 있어야 차별화된 개발을 할 수 있다. 윈도우는 C/C++ 언어에서 사용할 수 있는 형태로 API를 제공하고 있는데, 이는 윈도우의 상당 부분이 C/C++로 작성되었기 때문이기도 하다. C/C++를 이용하게 되면 윈도우가 제공하는 기능을 거의 무제한적으로 사용할 수 있으며, 더불어 윈도우의 내부 구조를 더 잘 이해할 수 있다. 따라서 C/C++를 이용하여 윈도우의 내부 구조를 조명하고 동작 원리를 이해하는 것은 가장 직접적이면서도 효과적인 학습 방법이라 할 수 있겠다. 이 책은 그런 의미에서 개발자들에게 필독을 권하고 싶은 책 중에 하나다. 단순한 활용 방법에만 치우치거나 혹은 너무 현실과 동떨어진 이론만을 나열한 책이 아니라, 서로 상충되는 두 가지 주제에 대해 균형을 유지하고 있는 것이 이 책의 최고의 장점이다. 또한 이 책의 이전 판이 1999년도에 출간되었고 윈도우 2000까지의 내용 위주였다면, 이번 5판에서는 윈도우 XP/2003/Vista/2008까지의 최신 내용을 포함하여 개정되었다. 특히 소프트웨어의 안정성을 향상시키려 포함한 보안 문자열 함수, 완전히 다시 작성된 스레드 풀 관련 함수, 윈도우 비스타에서 새롭게 등장한 오류 보고와 애플리케이션 복구 관련 부분은 다른 책에서는 찾아보기 힘든 내용이다. 또한 운영체제의 핵심 기능이라 할 수 있는 프로세스, 스레드, 동기화 오브젝트, 메모리 관리 부분에서도 그 내용이 상당히 많이 개선, 확충되었으며, DLL의 동작 방식과 인젝션에 대해서도 기본에 충실한 동작 원리를 상세히 기술하고 있다. 특히 윈도우 운영체제의 최대 강점이라고 볼 수 있는 구조적 예외 처리의 동작 방식과 예외 처리 방법 및 디버깅과 관련된 부분은 이 책의 또 다른 백미라 하겠다. 이러한 책을 오랜 기간 동안 개발 현장에서 다양한 경험을 취득하고, 마이크로소프트의 기술에 정통한 역자가 한글판으로 소개할 수 있게 된 것은 매우 다행스러운 일이라 생각한다. 원저의 분량이 상당하고 기술적인 난이도가 낮지 않음을 감안할 때 역자의 노고에 다시 한 번 감사의 뜻을 전하는 바이다. - 김명호 박사 / 한국마이크로소프트 최고기술임원(NTONational Technology Officer)
윈도우 플랫폼 위에서 개발하는 개발자라면, 특히 시스템 프로그래밍에 관심이 있는 개발자라면 『Programming Applications for Windows』라는 제목의 책을 한 번쯤 들어보았을 겁니다. 이 책은『Programming Applications for Windows』의 최신 개정판으로, 윈도우 2000 이후 계속 발전해온 기술들에 대해 깊고 상세한 설명을 담고 있습니다. 필독서 중에서도 손꼽히는 이 책을 깊은 내공을 가진 분의 번역을 통해 접할 수 있다는 건 매우 유쾌한 일이 아닐 수 없습니다. 딱딱한 MSDN 문서만으로는 부족함을 느끼는 분, 이미 알고 있는 윈도우 플랫폼에 대한 경험적인 지식을 명확하게 정리할 필요를 느끼는 분, 윈도우 플랫폼을 처음 접하는 분 등 윈도우 플랫폼을 깊이 이해하고자 하는 분들에게 꼭 필요한 책이라고 생각합니다.
- 정재필 / Software Architect, nPluto Corporation
운영체제나 Win32 API를 알지 못하더라도 소프트웨어를 만드는 데는 지장이 없습니다. 하지만 보다 성능 좋은 소프트웨어를 만들거나 상용제품을 만들어야 하는 경우에는 운영체제와 Win32 API를 잘 알고 있어야 합니다. 실제로 CString에 Append를 5,000번 정도 수행하는 코드와 미리 버퍼를 할당해 놓고 copy를 수행하는 코드 중 어느 것이 더 성능이 좋을까요? 산술계산 함수를 구현하면서 CPU가 하나라고 가정할 때 다수의 스레드를 사용하는 것이 성능 향상에 도움을 줄 수 있을까요? 이러한 질문에 대해 이 책을 통해 힙 메모리의 내부와 스레드 스케줄을 알게 된 개발자라면 답을 찾을 수 있을 것입니다. 많은 개발자들이 이 책을 통해 윈도우 구조를 이해하고 고성능의 소프트웨어를 작성하실 수 있을 것입니다. - 이태화 / Support Engineer, 한국 마이크로소프트
프로그래밍을 처음 접했을 때가 생각이 납니다. 이제는 먼 추억이 되어버린 GW-BASIC을 배우고 있었죠. 그때는 언어에 대한 문법과 사용하는 함수들을 알고 있는 것이 프로그래밍의 전부라고 믿고 있었습니다. 사실 문법과 API는 프로그래밍의 기초일 뿐입니다. 좀 더 나은 프로그램을 위해서는 감추어져 있는 깊숙한 곳에서 무슨 일이 일어나는지를 알아야 합니다. 마이크로소프트 윈도우에서 돌아가는 프로그램을 개발하는 사람이라면 윈도우에서 무슨 일을 하고 있는지 좀 더 자세히 알아야 합니다. 윈도우 밑에 감추어진 블랙박스를 화이트박스로 바꿔주는 데 이 책이 큰 도움이 될 거라 믿습니다. - 유민호 / 스마트카드 개발자, http://paromix.egloos.com
윈도우가 어떻게 돌아가는지를 알고 싶으시다면 이 책을 펼치세요. 윈도우 개발자의 로망을 이룰 수 있을 테니까요. - 강효관
제프리 리처는『Code Complete』를 10년 동안 읽고 있지만, 아직도 그 책에서 배우고 있다고 말했습니다. 나는 이 책 또한 모든 윈도우 개발자가 10년 동안 곁에 두고 살아야만 한다고 생각합니다. 점점 .NET의 시대로 접어 들어가고 있긴 하지만, 그것이 중요한 것은 아닙니다. 제프리 리처가 서문에서 말했다시피 정말 중요한 것은 윈도우 시스템 자체를 이해하는 것입니다. 관리 코드보다는 네이티브 코드가 시스템을 이해하기에 훨씬 더 적합합니다. 게다가 네이티브 애플리케이션들은 앞으로도 오랜 시간 동안 건재할 것입니다. 이 책은 제프리 리처의 네이티브 애플리케이션 개발을 다루는 마지막 에디션입니다. 이것은 이 5판이야말로 모든 윈도우 개발자에게 있어 불후의 명작이 될 것이라는 걸 의미합니다. - 김재호 / (주)이스트소프트 비즈하드 개발팀 |