해당 분야를 공부하기 위해선 어떠한 순서로 보는 것이 더 효율적일까? (또는 커리큘럼 작성?) 해당 언어에 대해서는 어느정도 언제쯤 적당한 깊이를 가져야 할까? 'What' 의 영역과 & 'How' 의 영역. Scientist . Engineer . Programmer 의 영역. (꼭 이분법적으로 나누는건 좀 그렇지만. 일종의 간단한 분류체계정도?) === Windows Programming (Windows Platform Programming) === Windows Programming 이라고 한다면 Windows 운영체제에서 Windows 관련 API 를 이용 (혹은 관련 Framework), 프로그래밍을 하는 것을 의미한다. 보통 다루는 영역은 다음과 같다. (이 영역은 꼭 Windows 이기에 생기는 영역들이 아니다. Windows 이기에 생기는 영역들은 Shell Extension 이나 ActiveX, DirectX 정도? 하지만, 가로지르기는 어떻게든지 가능하다) ==== GUI Programming ==== 예전에 Windows Programming 을 배운다고 한다면 기본적으로 GUI Programming 을 의미했다. Windows 가 기본적으로 GUI OS 이기에 기본이 이것이라고 생각하는 것이다. 하지만, GUI 는 어디까지나 'User Interface' 이다. 즉, 이건 Input/Output 에 대한 선택사항이다. 필요할때 공부하자. (하지만, 보통 User-Friendly 한 프로그램들은 대부분 GUI 이다.) Windows 에서 GUI Programming 을 하는 방법은 여러가지이다. 언어별로는 Python 의 Tkinter, wxPython 이 있고, Java 로는 Swing 이 있다. C++ 로는 MFC Framework 를 이용하거나 Windows API, wxWindows 를 이용할 수 있으며, MFC 의 경우 Visual Studio 와 연동이 잘 되어서 프로그래밍 하기 편하다. C++ 의 다른 GUI Programming 을 하기위한 툴로서는 Borland C++ Builder 가 있다. (C++ 중급 이상 프로그래머들에게서 오히려 더 선호되는 툴) 가장 쉽게 GUI Programming 을 배우는방법이라 생각되는건, Python 에서의 Tkinter Programming 또는 Jython Interpreter 에서 Swing Tutorial 을 이용하는것이다. (["Jython"] 페이지의 JythonTutorial 참조) GUI Programming 을 하면서 익힐 수 있는 소중한 개념으로서 Event Driven Programming, Design 으로는 CompositePattern 이 있다. 대부분의 GUI Framework 들은 Event Driven Style 의 프로그래밍 방식이며, 대부분 CompositePattern 을 이용한다. Framework 들의 디자인 개념들이 비슷하므로, 하나의 GUI 관련 Framework 에 익숙해지면 다른 Framework 도 쉽게 익힐 수 있다. * 개인적 충고 : MFC 를 선택했다면, Code Generator 가 만들어주는 코드를 제대로 이해하라.; MFC 책으로는 Jeff Prosise 의 책을 추천. --["1002"] * 내 생각엔 일단.. : 윈도우 컨트롤(VC 등의 리소스 편집기에서 제공 되는 모든 컨트롤들) 을 다루는 법을 완전히 습득 하자. 리스트 컨트롤, 트리 컨트롤, 탭 컨트롤 등의 모든 컨트롤을 자유자재로 원하는 모양(비트맵) 으로 바꿔서 사용할 수 있을때 까지 하자. 완전히 습득하면 어떤 프로그램이든 50% 이상 개발 기간이 단축될 것이다. -- ["김정욱"] Windows GUI Programming 관련 서적으로는 찰스페촐드의 책을 추천한다. 책 내용이나 번역(!)글이 어렵지만 개념설명이 잘 되어 있으며, 실려있는 예제들이 좋다. ==== MFC ==== ==== Windows API ==== ==== Direct X ==== ==== Network Programming ==== ==== Multi Thread Programming ==== === 3D Programming === === Network Programming === 모든 학습과 마찬가지로 피드백 회수, 시간을 높이면 효과적, 효율적인 학습이 된다. 이를 위해 Interactive Shell이 지원되는 인터프리터 언어(e.g. Python)와 패킷 스니퍼(e.g. tcpdump, ethereal, etherpeek, ...), 웹 브라우져, FTP, TELNET 클라이언트 등을 이용할 수 있다. 안내 서적으로는 W. Richard Stevens나 Douglas E. Comer의 책을 많이 본다. 후자 쪽이 조금 더 개념적이고, 더 쉽다. --JuNe ---- See Also HowToStudyXp, HowToReadIt, HowToStudyDataStructureAndAlgorithms, HowToStudyDesignPatterns, HowToStudyRefactoring ---- ["학습방법분류"]