컴퓨터공학과나 소프트웨어공학과 학부생들은 학과공부를 함에 있어서 프로그래밍 과제물도 많고, 각종 전시회, 공모전, 경시대회, 졸업작품 발표회등 프로그램을 만들어야 할 경우가 상당히 많습니다. 제가 학교를 다니면서 들었던 질문이나 요청중 대부분은 "프로그램 만들려면 뭐부터 공부해야되요?", "이런이런 프로그램 만들고 싶은데 어떻게 시작해야되나요?", "수고비 드릴테니 이런것좀 만들어주세요.", "이런 프로그램 만들려면 C로해야되냐? JAVA로 해야되냐?" 뭐 이런 질문들입니다.
굉장히 초보적인 질문들 같지만 많은 학생들이 GUI까지 완성된 온전한 버전1.0의 프로그램을 만들기 위해 어떻게 해야하는지 모르는게 대부분입니다. 사실 학과 과정중에도 이렇게 종합적으로 다루는 경우가 없습니다. 보통 교수들은 자신이 가르치는 과정에 대해 상당한 자부심이 있어서 다르 교수들과 의견교류를 거의 하지 않습니다. 제가 다니던 학교만 해도, 알고리즘 수업은 C로 하고, DB는 오라클을 배웠고, 비쥬얼프로그래밍은 비쥬얼 베이직을 하고, 네트워크 수업은 이론만 했고, 웹프로그래밍은 HTML 홈페이지 만들기를 했고, 멀티미디어 프로그래밍은 플래시를 했고, 컴퓨터 그래픽은 OpenGL 이론을 했으니... 솔직히 4년제 대학임에도 학원보다 질떨어지는 수업이었습니다.
대학교에서 교수들끼리 커뮤니케이션이 되어서 학과과정 전체를 자바계열로 하던지, 닷넷기반으로 하던지, 임베디드를 하던지 했다면, 학생들이 우왕좌왕 할일도 없었겠지요... 만약 이렇게 교육하는 학교가 있다면 그 학교는 정말 좋은 학교이지만, 제가 있던 학교처럼 기술을 결합하기 힘든 교육을 하는곳이 대부분이라 생각됩니다. 그래서 조금이라도 도움을 드리고자 프로그램의 특성에 맞게 어떤 개발환경을 선택해야 하는지 잠깐 소개해드립니다. 이 방법은 그냥 일반적인 방법이지 꼭 그렇게 해야되는 것은 아닙니다. 제가 윈도우즈 응용프로그램을 주로 공부했으니 윈도우즈 응용프로그램파트만 기술하겠습니다.
주소록, 학생관리, 고객관리같은 데이터베이스 프로그램
많은 프로그래밍 초보학생들이 졸작으로 선택하는 프로그램이 DB 프로그램입니다. 사실 텍스트에디터나, FTP, 압축프로그램등을 작품으로 만드는 학생들은 이미 중급자수준이므로 이런 글이 필요 없을꺼라 생각됩니다.
보통 DB를 관리하는 응용프로그램은 대학교에서는 VB6.0이나 Java를 이용해 만듭니다. 학교에서도 수업을 그것으로 하구요...
하지만 자신의 학교에서 아직도 VB6.0으로 수업을 한다면 머리에 띠를 묶고, 학과장에게 시위를 해야합니다. 오래되도 너무 오래되었으니까요... 보통 DB관리 프로그램은 GUI포멧이 거기서 거기고, 중요한것은 DB설계와 데이터컨트롤이니 개발툴이 생산성이 높은 것을 선택하는게 좋습니다. 최근에 많이 사용하는 방법들로 정리해봤습니다.
닷넷 환경에서 DB프로그램 만들기 (생산성 : 높음)
1. 개발도구 : MS Visual Studio 2008 또는 2010
2. 프로그래밍 언어 : C#
3. GUI : Windows Forms 또는 WPF (비쥬얼이 화려함)
4. DB : 외부에 DB서버를 따로 둔다면 MS SQL 계열을 선택하고, DB를 파일로 두고, 쓰려면 SQL Server Compect 3.5 또는 MS Access를 이용하면 편하다.
5. 도움받을 곳
- MSDN(http://msdn.microsoft.com/ko-kr/) : 마이크로소프트 개발자 네트워크
- HOONS닷넷(http://hoons.kr) : 박경훈씨가 운영하는 닷넷 개발자 커뮤니티
- 데브피아(http://www.devpia.com/) : 대표적인 개발자 포럼
자바계열에서 DB프로그램 만들기 (생산성 : 높음)
1. 개발도구 : 이클립스
2. 프로그래밍 언어 : Java
3. GUI : Swing 또는 SWT (닷넷기반보다는 비쥬얼이 별로임)
4. DB : 외부에 DB서버를 둔다면 오라클이나 MySQL, 로컬DB로 쓰려면 SQLite를 쓰면 좋다. 보통 자바프로젝트라면 DB서버를 따로 두리라 생각된다.
5. 도움받을 곳
- JAVA (http://java.oracle.com) : 공식 홈페이지
- Eclipse(http://eclipse.org) : 이클립스 다운받을 수 있는 곳
- 자북(http://www.jabook.com) : 도서 소설같은시리즈를 쓰는 곳. 초보자들에겐 "소설같은 JAVA"란 책이 도움이 됨.
- 데브피아(http://www.devpia.com/) : 대표적인 개발자 포럼
네이티브 코드로 DB프로그램 만들기 (생산성 : C/C++은 낮고, Delphi는 높음)
1. 개발도구 : MS Visual Studio 20XX 또는 C Builder, Delphi
2. 프로그래밍 언어 : C 또는 C++ 또는 Delphi
3. GUI : C/C++은 MFC 또는 SDK, Delphi(C Builder포함)는 개발툴에 VCL을 이용. 사실 MFC와 SDK는 GUI라기 보다는 프레임워크임.
4. DB : 외부에 DB서버를 둔다면 MS SQL, 로컬DB로 쓰려면 SQLite를 많이 쓰기때문에 좋다. (파일구리도 SQLite를 사용)
5. 도움받을 곳
- MSDN(http://msdn.microsoft.com/ko-kr/) : 마이크로소프트 개발자 네트워크
- WinApi(http://winapi.co.kr) : "윈도우즈 API 정복"의 저자 김상형씨가 운영하는 사이트
- 볼랜드 포럼(http://borlandforum.com) : VCL을 사용하고 싶다면 이 사이트가 도움이 됩니다.
- 델마당(http://www.delmadang.com/) : 델파이 강좌와 커뮤니티
- 데브피아(http://www.devpia.com/) : 대표적인 개발자 포럼
게임 프로그램
사실 게임프로그램은 한가지대안 뿐입니다. 다이렉트X를 사용해야 하고, C++언어를 사용해야 합니다. 만약 중급의 실력이 있다면 언리얼 엔진같은 상용 엔진을 이용하는 방법도 있습니다. 엔진정도 쓸줄 아시는 분이라면 이글이 필요 없으니, DX를 이용하는 정보만 쓰겠습니다.
1. 개발도구 : MS Visual Studio 2005 ~ 2010
2. 프로그래밍 언어 : C++, 고급단계에서는 스크립트언어로 Lua나 Phython을 같이 사용하기도 함.
3. 그래픽 라이브러리 : Direct X SDK (버전은 시중에 나와있는 책이 지원하는 버전이 일반적으로 좋음)
4. 사운드 라이브러리 : FMOD Sound System(http://www.fmod.org/)
5. 도움받을 곳
- CodeSampler(http://codesampler.com) : 게임프로그래밍 예제와 리소스를 얻을 수 있는 곳
- MSDN(http://msdn.microsoft.com/ko-kr/) : 마이크로소프트 개발자 네트워크
- GPG Study(http://www.gpgstudy.com/) : 게임프로그래머들의 커뮤니티
- 데브피아(http://www.devpia.com/) : 대표적인 개발자 포럼
6. 추천도서
- Game Programming Gems 시리즈
- IT EXPERT 3D 게임 프로그래밍 - 김용준. 한빛미디어 => 별명 : 해골책
- DirectX 9를 이용한 3D GAME 프로그래밍 입문 - Luna 저/최현호 역. 정보문화사 => 별명 : 용책
기타 윈도우즈 응용어플리케이션
텍스트 에디터, 워드프로세서, 압축프로그램등 일반적인 응용프로그램은 취업을 염두에 두더라도 네이티브코드 즉, Win32 API와 MFC등을 이용한 C++ 프로그래밍을 사용해야 합니다. 아무리 닷넷기술이 좋아졌고, 생산성이 높아도, 하위호환성을 생각해야하는 응용프로그램은 네이티브 코드가 대세입니다. 그리고 외부 라이브러리도 당연히 가져다 써야 합니다. XML을 다루고 싶다면 XML Parser가 있어야 하고, GUI를 화려하게 쓰려면 Codejock같은 회사에서 제공하는 GUI라이브러리를 써야 합니다. 이부분은 워낙 방대하니 처음 공부하기 좋은 책만 소개해드리겠습니다.
1. 언어 기초공부
- 열혈강의 C, 열혈강의 C++, 열혈강의 C 포인터 - 윤성우. 프리렉
- 혼자연구하는 C/C++ - 김상형. 와우북스
- The C++ Programming Language - 비야네 스트롭스트룹 지음/곽용제 옮김/류광 대표 감수. Addison Wesley
2. 윈도우즈 프로그래밍 기초 공부
- 윈도우즈 API 정복 - 김상형. 한빛미디어
- 찰스페졸드의 Programming Windows - 찰스페졸드 저/김선우 역. 한빛미디어
- 열혈강의 Visual C++ 2008 MFC 윈도우 프로그래밍 - 최호성. 프리렉
3. 윈도우즈 프로그래밍 중급 이상
- 뇌를 자극하는 윈도우즈 시스템 프로그래밍 - 윤성우. 한빛미디어
- 제프리 리처의 Windows via C/C++ - 제프리 리처,크리스토프 나자르 공저/김명신 역. 한빛미디어
- Windows Internals 제5판 - 마크 러시노비치,데이비드 솔로몬,알렉스 이오네스쿠 공저/안철수 연구소 기반기술팀 역. 에이콘출판사
4. 디자인 패턴
- Head First Design Patterns - 에릭 프리먼 등저 / 서환수 역. 한빛미디어
- GoF의 디자인 패턴 개정판 - 에릭 감마,리처드 헬름,랄프 존슨,존 블라시디스 공저. 피어슨에듀케이션코리아(PTG)
- GoF 디자인 패턴! 이렇게 활용한다 - 장세찬 저. 한빛미디어
혹시 자신이 개발해본 프로그램이 있다면 댓글로 프로그램 종류와 개발환경을 써주시면 더욱 도움이 많이 될것 같습니다.
Site
2013.09.10 17:40
졸업작품 및 각종 과제물 프로그램은 어떻게 만들어야 하나? (윈도우즈 응용프로그램)
조회 수 2010 추천 수 0 댓글 0
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
공지 | Tool/etc | Programming 게시판 관련 2 | MoA | 2014.11.01 | 5063 |
168 | Tool/etc | Redmine 설치 | MoA | 2013.07.28 | 884 |
167 | API/MFC | unsigned char <-> 유니코드(unicode) 및, string 변환 매크로 - USES_CONVERSION | MoA | 2013.07.28 | 2236 |
166 | C/C++ | memset vs for 초기화. 속도 차이가 얼마나 날까? 2 | MoA | 2013.07.28 | 1485 |
165 | C/C++ | fopen 함수가 Multi Thread 에서 안전한가? | MoA | 2013.07.28 | 1351 |
164 | API/MFC | __cdecl , __pascal, __stdcall | MoA | 2013.07.28 | 1200 |
163 | Tool/etc | 컨텍스트 스위칭 (Context Switching) | MoA | 2013.07.28 | 1771 |
162 | API/MFC | HWND와 HINSTANCE | MoA | 2013.07.28 | 1189 |
161 | Library | pthread | MoA | 2013.07.28 | 635 |
160 | STL/Boost | 정적 배열과 STL vector 속도 비교 | MoA | 2013.07.28 | 1197 |
159 | Tool/etc | 에디트 플러스, VS 2008 컴파일 환경 설정 | MoA | 2013.07.28 | 717 |
158 | Library | ChartFX 7.0 MFC에서 사용하기 | MoA | 2013.07.28 | 1072 |
157 | Tool/etc | Coding conventions | MoA | 2013.07.28 | 1442 |
156 | Site | GOF 디자인패턴 정리 | MoA | 2013.07.28 | 723 |
155 | Tool/etc | Design Patterns Quick Reference | MoA | 2013.07.28 | 820 |
154 | Tool/etc | 예외 처리 가이드 (Slide) | MoA | 2013.07.28 | 741 |
153 | API/MFC | Legacy MFC 어플리케이션을 MFC feature pack으로 포팅 | MoA | 2013.07.30 | 935 |
152 | JAVA/Android | XML 파싱하기 | MoA | 2013.08.06 | 7318 |
151 | API/MFC | 리스트 컨트롤에 체크박스 추가 | MoA | 2013.08.14 | 2103 |
150 | Tool/etc | 앱 디자인의 발견 - 메모 서비스를 생각하다 | MoA | 2013.08.17 | 804 |
149 | C/C++ | C++11 A cheat sheet | MoA | 2013.08.21 | 833 |