. 준비할 것들

다음은 이 책을 읽고 실습하는데 필요한 것들이다. 다음 장으로 넘어가기 전에 사소하지만 약간의 준비를 하도록 하자.

 

컴퓨터

실습을 하려면 당연히 컴퓨터가 있어야 하는데 특별히 빠른 컴퓨터는 필요없고 적당히 쓸만할 정도면 된다. 오히려 컴퓨터가 너무 고성능이면 최적화 부분을 공부할 때 효과를 실감하기 어려워 방해가 될 수도 있다. 컴파일러가 무난히 실행될 정도의 사양이면 충분하다. 이 책의 예제는 윈도우즈 2000 환경에서 제작되었으며 윈도우즈 98, XP에서도 테스트되었다. 운영체제 버전은 별 상관이 없으나 가급적이면 2000 이상을 설치하여 안정적인 환경에서 실습해보도록 하자.

컴파일러

컴파일러는 비주얼 C++ 6.0 또는 비주얼 C++ .Net(7.0) 두 버전 중 하나를 준비하면 된다. 이 책의 예제들은 최신의 .Net(7.0) 컴파일러로 작성되었으며 6.0에서도 컴파일이 가능하다. 두 버전 중 현재 시스템에 설치되어 있는 버전을 사용하되 가급적이면 6.0을 사용하는 것이 더 좋다. 컴파일러를 새로 설치해야 한다면 6.0을 설치하기 바란다. 7.0은 편리한 사용자 인터페이스를 제공하는 반면 지나치게 느리고 설치하기도 까다로우며 또한 아직까지 버그가 많아 오히려 실습하는데 좋지 않다. 반면 6.0은 발표된 지 좀 오래 되었지만 서비스 팩 5까지 같이 설치하면 굉장히 안정적이고 빠르다. 어차피 API 코딩은 컴파일러 이상의 기능을 요구하지 않으므로 버전이 좀 낮다해서 불편할 것은 전혀 없다.

최신 플랫폼 SDK는 특별히 설치하지 않아도 상관없다. 물론 미리 설치해두었다면 그대로 두어도 된다. 꼭 필요한 경우가 몇 군데 있기는 하지만 예제에서 직접 필요한 매크로를 정의해서 사용하기 때문에 없어도 컴파일하는 데는 전혀 지장이 없도록 해두었다. 컴파일러만 제대로 설치되어 있다면 이 책의 예제를 직접 만들어 볼 수 있다.

실습폴더

예제 프로젝트를 직접 만들어 보려면 실습을 위한 폴더들을 미리 만들어 두도록 하자. 이 책은 C:\ApiPractice라는 이름으로 실습폴더를 만들어 두고, 그 아래에 Ime, ApiEdit, Control, Dangeun 등의 서브폴더를 실습용으로 사용하고 있다.

폴더의 이름이나 위치는 중요한 것이 아니므로 편한 위치에 원하는 이름으로 아무렇게나 만들어도 좋다. C 드라이브의 용량이 부족하면 D 드라이브에 작성할 수도 있고 이미 실습용으로 사용하고 있는 폴더가 있다면 따로 폴더를 만들지 않아도 상관없다.

C/C++

C 언어는 반드시 마스터하고 있어야 한다. 이 예제는 특히 포인터와 배열을 많이 사용하므로 포인터에 대한 이해는 완벽한 수준이어야 한다. 이 책은 프로그래밍 문법을 다루는 것이 아니라 실전을 위주로 하기 때문에 문법적인 이해가 부족한 상태에서는 읽기 어렵다. C 언어를 처음 공부하고 있다면, C 언어를 먼저 공부한 후에 이 책을 보는 것이 좋을 것 같다. 다른 과목은 몰라도 C 문법과 실전 프로그래밍을 같이 공부한다는 것은 너무 어려운 일이고 방법상으로도 좋지 않다.

C++은 당장 필요하지는 않지만 중반 이후부터 본격적으로 사용되므로 일단 클래스나 상속 같은 기본 이론은 알고 있어야 한다. 가상함수나 연산자 오버로딩, 다중상속 같은 고급 문법은 아주 가끔 사용되므로 예제와 함께 공부하는 것도 가능하기는 하다. 하지만 C++도 기초 문법에 해당하므로 가급적이면 먼저 준비가 되어 있는 것이 좋을 것 같다.

API

이 책의 예제는 순수한 API로만 작성되었으므로 가장 기초적인 윈도우, 화면출력, 리소스, 메시지 핸들링 정도는 할 수 있어야 한다. 운영체제가 어떻게 돌아가는지를 알아야 응용 프로그램을 작성할 수 있다. 그러나 DLL, 멀티 스레드, 보안 따위의 고급 토픽은 많이 사용되지 않으므로 당장 몰라도 지장없다. 모르는 함수가 있으면 도움말을 찾아볼 수 있는 정도의 수준이면 충분하다. API는 이 책을 읽으면서 같이 병행하는 것이 좋고 이 책의 목적과도 부합된다.

MFC

이 프로젝트는 MFC를 직접적으로 사용하지 않으므로 일단은 전혀 몰라도 된다. 그러나 몇 가지 기법을 MFC에서 가져와 사용하는 것이 있으므로 알고 있다면 도움이 많이 될 것이다. 또한 API MFC에서의 구현 방법이 어떻게 다른지 스스로 비교해 볼 수 있으므로 양쪽의 장단점을 파악할 수 있는 좋은 계기가 될 것이다. 특히 중반부에서 컨트롤이 객체화될 때 MFC 방식을 알고 있다면 이해하기 한결 쉬워지며, 또한 이 예제를 통해서 MFC가 왜 편리한 라이브러리인지도 알게 될 것이다.

알고리즘

특별한 고급 알고리즘을 사용하지 않으므로 따로 공부해 본 적이 없더라도 책을 읽는 데는 무리가 없다. 물론 많이 알고 있다면 더할 나위 없이 좋다. 어차피 개발자에게 알고리즘은 평생 공부하고 연구해야 할 과목이다.

이 외에 텍스트 편집기를 많이 사용해 본 경험이 있다면 좋다. 텍스트를 편집하기 위해 어떤 기능들이 필요하고 어떤 문제점들이 있는지를 미리 알고 있다면 문제를 해결하는 방법을 찾는데도 많은 도움이 될 것이다.