E D R , A S I H C RSS

컴퓨터공부지도

해당 분야를 공부하기 위해선 어떠한 순서로 보는 것이 더 효율적일까? (또는 커리큘럼 작성?) 해당 언어에 대해서는 어느정도 언제쯤 적당한 깊이를 가져야 할까?

'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


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.0137 sec