C++ 학습과 MFC 학습의 필요성 그리고 JAVA에 대해서 ...
안녕하세여 ... 요즘에 고민이 생겼습니다 ...
전 먼저 JAVA를 공부하고 JAVA가 C와 C++에서 생겼났다고 하여 C를 공부하였습니다... C를 공부하다
보니 자연히 윈도우 프로그램을 하고 싶어 API를 했습니다...API를 공부하면서 윈도우 프로그램의 원
리와 직접 화면에 나오는 즐거움을 느끼며 공부 했었습니다. JAVA에서는 당연히 윈도우 프로그램을
했었습니다... 그런데 이제 C++를 공부하려고 생각 중인데 ... 과연 C++를 공부 할 필요가 있을까?
하는 생각이 들었습니다... 대표적인 구조적 프로그래밍 언어 C를 알고 완전한 객체지향 언어라고 불
리는 JAVA를 공부 했는데 어중간한 C++를 공부할 필요가 과연 있을까요?? 그리고 저 같은 경우 플랫폼
독립적인 언어가 좋아서 JAVA에 많은 매력을 느끼고 있으며 웹 프로그래밍에도 관심을 갖고 있습니다...
C++을 공부를 한다면 MFC도 공부를 해야 할것 같은데 제가 알기로 요즘 우리나라 프로그래머들은 대부분
JAVA를 한다고 들었고 Microsoft에서도 MFC는 더 이상 지원하지 않고 C#의 닷넷 플랫폼을 이용해 윈도
우 프로그래밍을 한다고 들었거든여 ~~ 공부해봐야 미래가 없는 C++과 MFC를 하느니 차라리 그 시간에
JAVA를 더 공부하는게 좋을까요 ?? 또 윈도우 API는 윈도우 프로그램의 기초 이기때문에 없어지지 않을
까요?? API도 C#의 닷넷 플랫폼을 이용한 윈도우 프로그래밍이 더 활발해 진다면 없어지지 않을까요??
제 이러한 고민을 여러 실무 프로그래머님들 께서는 어떻게 생각 하시는지요??
제 개인적인 생각인데요
게임프로그래밍이나 시스템에 밀접한 프로그래밍이 아니라면 아마 제 생각으로면 대부분의 응용프로그램이
웹으로 넘어갈 것이라고 생각됩니다. 대부분은 SI프로그램이겠지만요.. 그리고 C#은 윈도우 플랫폼에
있어 상당한 매력을 가지고 있다고 생각됩니다. 비록 지금까지는 닷넷이 선택설치사항이었지만 비스타부터
는 아마 기본으로 닷넷이 들어간다고 들었던거 같습니다. 따라서 MFC를 이용한 C++프로그래밍 수요가
앞으로 많이 줄지 않을까 조심스럽게 예상해봅니다. 물론 아닐수도 있구요
시간에 쫒기지
시간에 쫒기지 않으면 C++도 익혀두시길 강력 추천합니다.
C or C++ 을 사용해야 하는 상황이 발생될 수 있습니다. 하지만, C는 객체지향이 아니기 때문에 원하는 접근 또는 구현의 편의성을 위해 C++이 필요한 경우가 발생할 수 있습니다. 익혀 두시길 강력히 추천하고, STL 이나 Template 기반 프로그래밍 기법은 JAVA에서 익힐 수 없으니 역시 C++을 익혀두시길 바랍니다. 마스터해야 한다는게 아닙니다. 다양한 도구를 알아 두시면 도움이 되고, 다른 언어적 기법을 알아두시는게 역시 도움이 됩니다. MFC 도 나름의 쓰임새 용도가 있습니다. 익혀두시길 바랍니다. -.-; Windows API를 MS는 구조적으로 묶어두었는지, C++기법을 어떻게 나름의 모듈화 시켰는지 역시 도움이 됩니다.
근래 웹 개발이 많아 JAVA 관련 개발이 많을 뿐이지, 우리나라 대부분 개발자가 쓰는게 JAVA 라는건 잘못 아시는 겁니다. 제가 다니는 회사 개발자중 자바 개발은 몇% 안됩니다. 오히려 C++ / Delphi 개발을 더 많이 합니다. 개발 성격에 따라 개발언어 사용비율은 다릅니다. 또한 신규개발만이 있는게 아닙니다.
C# 은 JAVA 처럼 가상머신위에서 구동되는 동일한 언어적 특성때문에 배워두면, 자바랑 다른 배울점이 존재하리라 보고,.. 신규 언어니 만큼 사용되는 곳은 아직 미비(?)합니다.
마스터할 필요는 없습니다. 하지만 분명 사용해야할 경우가 생길수 있으면, 다른 특성이 존재하기 때문에 공부해서 배울 부분이 있습니다. 변화도 따라가야하고, 다양성도 받아들이세요. 학습을 게을리 하지마시길 ㅡ.ㅡ;;
저같은 경우엔 VC++의
저같은 경우엔 VC++의 wizard를 쓰지않고 MFC coding을 하게 되면서, 나름대로 상당히 편리한 시스템이라는 느낌이 들었습니다.
wizard가 쏟아내는 쓸데없는 코드대신 자기가 정말 필요한 코드만 타이핑하면 어느 framework 못지않게 상당히 깔끔합니다.
하지만 그때까지 드는 학습 cost대비 어떻냐..라는 점에선 좀 거시기(?) 하네요...
C++를 사용한다고
C++를 사용한다고 해서 꼭 MFC를 사용할 필요는 없습니다. ATL도 있고 다른 라이브러리도 있고 API를 직접 사용할 수도 있으니까요.
큰 흐름은 예상한 것과 같습니다만 언제 그 상황이 오는지는 명확하지가 않습니다.
비스타가 나왔지만 아직도 98, ME를 지원해야 한다라는 상황도 실무에서는 있을 수 있습니다.
(.NET Framework 3.0은 XP 이상에서만 동작하죠)
5년 뒤에 사회에 진출한다면 98, ME 사용은 확실히 사라지고 XP 이상만 사용하고 컴퓨터도 듀얼코어 이상만 지원하면 되는 비교적 행복한 상황이라 '비교적' 느리다는 C#이나 Java를 주로 써도 부담없는 상황이 오겠지만 1, 2년안에 진출한다면 언제 이런환경에서 벗어나나 하는 한탄을 할 수도 있겠죠.
시간이 지나더라도 계산 속도를 극한으로 뽑아내야 하는 분야나 시스템 수준의 프로그래밍을 하는 경우 C++를 써야할 경우도 있을겁니다. C는 수치 계산에서 template를 쓰는 C++를 따라오기가 어렵습니다.
또 C는 코드 크기가 커지면 관리가 어려운 상태가 됩니다.
그러니 C++는 교양으로 배워두고 MFC나 ATL 같은 라이브러리는 확실히 필요한 상황이 오면 그 때 공부하는게 좋습니다.
회사에서 일하다
회사에서 일하다 지쳐 쉬어가다가 :-)
저는 현재 K모 통신사 SI 개발중인데요;
저는 Unix C 쪽을 주로(거의 이거 밖엔 못해요 ㅜㅜ) 하구 있습니다.
현재 저희가 개발중인 시스템을 보자면,
backend 단에 IBM-AIX 에 JAVA 로 게이트웨이 역활을 하는 놈들이 있구요;
WEB 은 Windows 2003 서버로 되어 있고;
O&M 단은 AIX 기반의 C로 되어 있고, O&M서버는 Win2003Server 로 MFC 로 되어 있구요;
각 단에서 로그를 수집하는 Agent 라는 놈이 잇는데 이것들은 Win32API로 된것과 Unix C로 개발되어 있습니다.
메모리디비와 오라클과 MSSQL이 각각 위치에 위치되어 있습니다.
ONM 웹단은 JSP로 되어 있으며, 메인 웹서비스는 ASP로 되어 있지요.
쫌 많죠?
물론 제가 이거 다 하는거 아니란것은 아시겠죠? ^^;
제가 하고자 하는 얘기는 처음엔 전부다 C/C++ ASP 였습니다.
그러다가 어찌어찌 연동되는 시스템들 때문에 요렇게 확 뒤집힌거죠.
그래서 어쩔수 없이 자바책 사다 보는 사람도 생겼지요.
물론 이것 저것 다 잘 하시는 분들도 계시구요.
우리나라는 대부분 SI 인력이 많은걸로 생각되는데요,
주력 언어와 그 이외의 많은 언어들을 접해보는 것도 좋은 생각인것 같습니다.
Win32API 의외로 많이 씁니다.
시스템단에서는 말이죠.
Unix C.. 아직 죽지 않았어요! (망세!! ^^)
MFC를 포함한 다른 GUI위젯들도 종종 사용됩니다.
C++ 이것도 많이 사용되지요 당연히.
결국은 어떤 분야에서 일하느냐에 따라 언어나 설계등이 많이 바뀌는걸 보게 됩니다.
아쉬운 일이지요;; 뭐 근데 나쁘진 않습니다.
일정이 너무 빡빡해서 돌아버리겠지만.. :-(
참, 언어공부도 하시면서 UML 이라 설계, 기획 뭐 이런것도 틈틈히 봐보시면 좋지 않을까요? ^^
---
To solve an interesting problem,
start by finding a problem that is interesting to you.
---
To solve an interesting problem,
start by finding a problem that is interesting to you.
개발환경이 MS
개발환경이 MS WIndows이다 보니 MS관련 내용이 많네요..
C는 언어일 뿐이고, MS Windows C API는 C 언어로 MS에서 만든 API일 뿐입니다.
MFC 또한 MS에서 만든 Windows C API를 감싸서 만든 C++ Class Library일 뿐이구요.
C/C++을 공부하는데.. Windows API, MFC를 공부해야 하는 거냐고 묻는다면..
아니라고 말씀드리겠습니다.
(단지 MFC는 C++ 언어를 사용해서 만든 MS Class Library니까요.)
결론은, C++ 공부는 본인이 끌리면 하는 거구..
개인적으로는 MS에 종속적인 MFC 말고, 표준 C++에 포함된 STL을 익혀두면 플랫폼에 상관없이 두고두고 쓸일이 많을 것 같네요. MFC & ATL은 그쪽 개발이 필요할때 익히면 될 것 같구요.
=================================
나비아빠
=================================
나비아빠
미래를 위해서
관심이 없더라도 최소한의 기초를 알아두시면, 행여나 있을지 모를 본격적으로 공부한 언어를 사용할 기회가 생기면 많은 도움이 됩니다.
그래서 굳이 안땡기시면 기초 정도만 튼실하게 학습하실 것을 권장합니다.
자기가 필요하면
자기가 필요하면 보는거죠..
vc++ mfc 장점이... 그래도 MS 윈도우 프로그램만드는데는 제일확실한 방법이 아닌가합니다.
한번배워두면 10년이 지나도 변함없이 사용할수있는거도...
Unix C는 더하군요..ㅎㅎ 몇십년이 지나도.. 우려먹을수 있고.. 앞으로도 그럴것같고..
Unix 시스템내부에서는 만능이고... 배울것도 별로 없고 ...참~짧게 배워서 길게 우려먹는 언어로군요...
----------------------------------------------------------------------------
C Library Development Project
----------------------------------------------------------------------------
필요하면 배우면 될
필요하면 배우면 될 것 같네요... MFC는..
하지만 C++의 경우는 다릅니다.
C++는 어느 벤더에도 종속되지 않는 OOP 언어입니다.
또한 한사람에 의해서 발전되지도 않고
여러 커뮤니티와 표준위원에 있는 사람들에 의해서 공동으로 발전하고 있습니다.
자바,C#,VB와 다르게 바뀌는 속도가 더딘 것이 사실입니다.
하지만 그만한 가치가 있는 언어이고요... 학술적 뿐만 아니라 상업적으로도...
MS에서도 C++를 가볍게 버릴 수 없는 것이 현실입니다.
.NET에서도 C++/CLI라는 확장까지 지원하고 있으며
MFC도 9.0에서 .NET까지 지원하고 있으니...
좋아하시는 언어로 좋아하는 프로그램을 만들어보세요. :)
여러 언어의 문법을 알고 프로그래밍을 하실 줄 아시는 것도 중요합니다.
시간을 들여 언어를 공부해두는 것은 확실히 좋은 경험이 되지요.
그렇다고 지금 막 생겨나고 있는 '발상'과 '학구열'을 죽여가며,
다른 언어를 배우실 필요는 없다고 생각합니다.
자바도 훌륭한 언어에요. :)
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.
저는 C++ 좋다고 생각합니다.
저는 C++을 공부할 수록 Java 실력이 늘어나더군요.
반대로 Java를 공부할 수록 C++실력도 늘어났습니다.
Java에서 별 생각없이 쓰던것도 C++을 공부하면서 왜 그렇게 쓰는지를 느꼈고 Java를 공부하면서 C++에서 클래스 설계력이 늘어났습니다.
MFC는 제 생각에 미리 공부해둘 필요는 없다고 생각합니다.
MFC에서 사용되는 MFC만의 문법이 너무 맘에 들지 않습니다. 메시지맵 같은거요.
MFC는 프로그래밍 공부가 아닌 그냥 MFC 사용법을 익히는 거라는 생각입니다.
여러 언어를 다뤄보세요 ..
세상은 철저하게 돈으로 움직입니다.
개발자에게 언어는 신앙과도 같다는 말이 있지만,
결국 회사에서 선택한 플랫폼/언어 가 쓰이기 마련입니다.
(저도 C++로 지원했는데 한번도 사용 못해보고-_-;; 현제 C#을 사용중 입니다.)
하지만, 한 언어 깊게 판 사람치고 다른 언어 못하는 사람 못봤습니다.
하나를 정말 깊이 파시고 나머지는 입문서 위주로 가볍게 훑어봐두셔도 나쁘지 않습니다.
개인적으로 공부할때는 C++를 강력 추천 합니다.
C++ 열심히 하셨으면, 그 후에 C#이나 JAVA등은 정말 가볍게 익히실 수 있습니다.
언어는 거들뿐..
우리나라 '프로그래머'들은 자바뿐 아니라 C, C++을 다 익혔습니다.
그때그때 개발환경과 목적에 맞게 언어를 '선택'할 뿐이지요.
자바몇줄 끄적였다고, 객체지향을 다 익혔나요.
자바로 베이직처럼 코딩하는 분들 주위에 많습니다.
또한, 객체지향언어가 만능도구도 아니구요.
C로도 클래스 설계 충분히 가능합니다.
'프로그래머'라면, 언어차별없이 개발할수 있어야겠죠.
개인적인 생각으론
개인적인 생각으론 C++에 별로 미래가 없는 것 같습니다만,
다니는 업체에서 (혹은 다닐 업체에서) 요구한다면
공부하는 것이 좋겠지요. ;;
이런 사항에 대해 언급할 만큼의 레벨은 아니지만 한마디 하자면
언어를 많이 배워놓으셨네요. 많이 배워놓으면 좋이시겠죠. 전 php, C++, C, java 조금 배워봤습니다. 그런데 전 객체지향 C++부터 시작해서인지는 모르겠는데, 객체를 하드 문뜩 문뜩 드는 생각으로는 이 언어 참 장점이 많다는 것입니다. 자바 같은 경우에는 물론 객체지향언어이지만 메모리를 직접 제어하는 권한을 개발자에게 주지 않는 것으로 압니다. 주어진 것을 써야하죠. 반면에 C++은 개발자가 메모리 관리할 수 있는 권한을 빼앗지 않습니다. 이 점에서는 자바보다 C++이 보다 자유롭죠. 자유가 주어진 만큼 관리하려면 더 세심한 주의가 필요하고 객체 만들때 굉장히 좀시해야 합니다. 잘못하면 메모리 누수 등의 사고가 발생할 수 있으니까요? 그리고 객체지향이라는 것은 개발자들의 불필요한 작업을 줄여주죠. 많은 코드를 반복적으로 언급할 필요가 없고 동일한 성격을 같은 함수들을 한 데 묶어서 개념화했다는 점에서 메서드를 암기하기에도 좋습니다. 한 번 만들어놓은 좋은 클래스는 공유해서 같이 쓸 수 있으며 그 클래스를 사용하는 사용자는 세부적인 사용법은 몰라도 주어진 메뉴얼만 좋으면 손쉽세 사용할 수 있다는 장점이 있습니다. 단점은 많이 언급하셨으니 언급 안해도 될 것 같고요.