VC++ 6.0을 쓰지 말아야하는 이유

트랙백: Visual Studio 6.0를 계속 쓸까? 아니면 Visual Studio 2008로 바꿔?

2008년 3월인 지금까지도 여전히 많은 프로젝트들이 10년 전에 출시된 VC++ 6.0으로 개발하고 있다는 사실이 다소 놀랍고 충격적이기까지 하다. 많은 분들이 토를 단다. 그런데 직접 십만 라인의 VC6 프로젝트를 2003년,VS 2003으로 이전한 경험이 있는 나로서는 그저 게을러서, 귀찮아서 라는 변명으로 밖에 들리지 않는다. 정말로 VC++ 6.0을 써야만 하는 절대절명의 이유가 있는지 정말 궁금하다. 왜 VC++ 6.0을 쓰지 말고 최소 VS 2005을 써야하는지 몇 가지만 써보자. (단, 이 이야기는 .NET을 사용하지 않는 Win32 기반의 C/C++ 프로젝트에만 적용된다.)

 

1. 보다 안전한 프로그래밍

2001년 온 세상을 골치아프게 했던 Code Red Worm을 기억할 것이다. 이건 대표적으로 heap buffer overflow의 결과인데, 이건 사소한 프로그래밍 실수 혹은 미비한 체크로 발생한다. 예를 들어, strcpy 같은 함수가 대표적이다. strcpy는 아시다시피 달랑 두 개의 스트링 인자만 받고 길이를 입력 받지 않는다. 그건 두 인자 모두 NULL로 안전하게 끝나는 것을 가정하기 때문이다. 그런데 의도적으로 할당된 버퍼보다 더 많은 문자열을 입력할 경우? 최악의 경우 재앙이 벌어질 수 있다. 실제 대부분의 버퍼 오버플로우는 이렇게 발생한다. VC++ 6.0에서는  strcpy를 써도 아무런 경고 따위 없다. 그러나 VS 2005 이상에서는 이런 함수는 쓰면 위험하다고 경고를 띄운다.

xxx.cpp(66) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

 

2. 유니코드 프로그래밍

아직까지도 유니코드가 아닌 MBCS로 시작하는 (윈도우) 프로그래머가 있으면 이건 기본도 모르는 사람이다. "아직 저희 제품이 윈도우 98을 지원 해야해서..." 라는 변명도 통하지 않는다. 그럴 경우에는 윈도우 95/98을 위한 Unicode Layer를 쓰면 된다. VS 2005에서 프로젝트를 하나 생성하면 디폴트가 유니코드이다. 이제 구닥다리 아스키 MBCS 기반의 프로그램을 짜야할 이유가 전혀 없다. 윈도우 NT 커널은 모두 유니코드로 짜여있어서 유니코드를 바로 쓰는 것이 성능에도 좋다. 예를 들어, CreateWindow라는 함수는 실제로 CreateWindowA라는 아스키 버전과 CreateWindowW라는 유니코드 버전이 있는데, 윈도우 NT 커널에서는 W 버전만 구현이 되어있다. 그리고 A 버전 함수가 불리면 입력 받은 스트링을 모두 유니코드로 바꾸는 과정을 거친 뒤, W를 실행시킨다. 참고로 윈도우 CE는 오직 유니코드만 지원한다. 따라서 아스키, MBCS를 써야할 이유가 이제는 없다. "윈도우 98 사용자들을 그래도..." 닥쳐라. 그냥 무시해라. 내 블로그 통계에 아예 Windows 98은 잡히지도 않는다.

영문 윈도우에서 non-Unicode 세팅을 영어로 했을 때, 여전히 ???와 같은 글씨가 보이는 프로그램들을 보면 한숨만 팍팍 나온다. 유니코드로 전환하는 것이 그렇게 어려운 것도 아니다. 사실, 제대로 공부 좀 했는 윈도우 프로그래머라면 10년 전 부터 이미 TCHAR, _T(x)와 같이 Unicode prepared된 코드를 만들었어야만 했다. 그러나 위에서도 말했듯이 이제는 모두 NT 기반 커널을 사용하기 때문에 TCHAR을 사용할 필요도 없다. 그냥 바로 wchar_t, L"Hello, World!"로 하면 된다.

반드시 알아야할 내용: http://eslife.tistory.com/entry/유니코드로-개발하기

 

3. 보다 뛰어난 인텔리센스

VC++ 2008은 아직도 안 써봐서 잘 모르겠지만, VC++ 2005의 인텔리센스만 해도 상당히 우수한 편이다. 물론 C#에서 지원되는 인텔리센스에 비하면 한참이나 모자라지만 기타 다른 모든 C/C++ 인텔리센스 중에서는 최고의 성능을 자랑한다고 확신한다 (이클립스, 소스인사이트 등등 모두 능가함). VC6 에서는 인텔리센스 기능이 초창기 버전이라 부족한 점이 매우 많았다. 대표적으로 #define으로 정의된 것들은 목록에 뜨지 않는다. 그리고 2003에 비해서도 성능이 많이 개선이 되었다. 여기에 적기에는 너무 장황해질 것 같아 생략하겠지만 2003에서는 처리가 안되어서 아쉬웠던 것이 2005에서 지원이 된 케이스가 있다. (이거 확인하고 바로 VS 2003 언인스톨)

VC++ 6.0 (사실 난 2002년부터 쓰지 않았다)을 쓸 때는 Visual Assist가 필수품이었는데 이제는 이걸 쓸 이유가 없다. Visual Studio가 지원하는 인텔리 센스만 해도 충분하기 때문이다.

 

4. STL의 (거의) 완벽한 지원

STL을 사용한다면 당장에 VC++ 6.0은 언인스톨 해야한다. 역시 eslife님이 아주 잘 정리를 해주셨기에 링크로 대체: http://eslife.tistory.com/entry/Visual-Studio-버전-별-STL-지원. 링크 글에도 나오지만 VS 2005의 STL 디버깅은 환상적이다. 예전에 STL 내용물 보기 위해 계속 노가다 뛰었던 걸 기억하면 눈물 날 정도다 (gdb에서는 dump 함수를 짜서 실행시키면 되긴 하지만 여전히 불편했다).

 

5. 뛰어난 IDE 매크로 사용

VC++ 6.0에서도 매크로가 되긴 된다. 그러나 Visual Studio .NET (7.0 버전)에서 부터 매크로가 매우 강력해졌다. IDE 하나가 DTE라는 객체로 접근이 되고 모든 IDE 객체 및 요소가 접근이 되고 매크로화 할 수 있다. 대표적으로 예를 하나 적어보면 .cpp와 .h를 연결해주는 매크로도 쉽게 만들 수 있다.

 

6. 더 훌륭해진 컴파일러

컴파일러만 놓고봐도 VS 2005 이상을 써야할 이유가 충분하다. MS compiler extension이긴 하지만 편리한 키워드도 추가가 되었으며, profile-guided 최적화도 가능하고, 컴파일러 메세지도 보다 친절해졌으며, OpenMP도 그냥 지원이 된다. C99 기능들은 지원하지는 않지만 훨씬 C++ 표준에 부합된 프론트엔드를 가지고 있다.

 

7. 더 괜찮아진 IDE

IDE만 놓고 보면 VC++ 6.0보다 많이 무겁다. 그러나 메모리 요즘 엄청나게 저렴하고 듀얼 코어 CPU도 저렴하니 그거 달면 가볍다. 회사에서 좋은 컴퓨터 안 사주면 회사 때려치던가 아니면 자기돈 들여서라도 좋은 컴퓨터로 바꿔야 한다. 남들 3분만에 컴파일할 것, 5분 동안 컴파일하면 그건 시간 낭비. 남은 2분 동안 최소 잠자거나 인터넷 서핑해도 남는 장사다. 그러니 최신 Visual Studio가 메모리 많이 먹는다는 것은 그다지 핑게거리가 되지 않는다.

VC++ 6.0의 IDE는 뭐랄까 애증이 교차한다. 희한하게도 이 IDE는 MFC로 만들어져 있어서 많은 호기심을 자아냈다. (단순하게 Spy++로 확인해보면 Afx:... 로 시작하는 Window Class Name이 확인 가능하다) 아마 마이크로소프트 내부에서 만든 프로그램 중 MFC를 쓴 것은 VC6과 Wordpad 정도가 아닐까? 그러나 VC++ 6.0의 IDE는 그다지 우수하지 않다. 일관성이 없다고 할 수 있다. 반면, Visual Studio .NET 부터는 모든 언어들이 공통적인 IDE로 통합이 되어 훨씬 일관성이 있는 UI로 바뀌었다. 물론 "ClassWizard가 사라졌어요!" 라는 비명이 잠시 들리지만 걱정 마시라, 다 있다. (물론 요즘 컴퓨터에서는 매우 가벼워진 VC6 덕택에 이 녀석을 에디터로 쓰시는 분들도 봤다)

VS 2003 시절까지만 해도 디버깅 심볼 서버 쓰기 위해서 삽질 좀 해야했던 것도 VS 2005에서는 그냥 된다. 또, VS 2003 까지만 해도 툴바 설정, 폰트 색깔 설정을 새 컴퓨터로 이동하기 위해 레지스트리도 백업해야하고 파일들도 카피해야했던 것에 비해, 세팅을 이전할 수 있는 기능을 built-in으로 지원한다. Team 버전은 사용하지 않았지만 거기에는 프로파일링, 유닛 테스트 등이 모두 포함되어있다고 한다. 마지막으로 VC6의 16색 썰렁한 아이콘에 비해 2005의 256색 아이콘은 더 이쁘다...

 

8. 멀티 코어의 사용

좀 와전된 내용이 있는 것 같은데, 최신 VC++ 컴파일러가 멀티 코어를 인식해서 뭔가 새로운 수준의 최적화나 컴파일을 하는 것은 아니다. 단순히 컴파일을 할 때, 멀티 코어를 다 활용하여 컴파일 시간을 단축시키는 것에 불과하다. 그래도 어쨌든 요즘 거의 기본인 듀얼 코어 환경에서 보다 빠르게 컴파일을 할 수 있다. VS 2005는 이 기능이 사실 미약해서 단순히 독립적인 두 프로젝트를 동시에 컴파일하는 수준이었는데, VS 2008은 모르겠다. 사실 컴파일은 그 자체가 embarrassingly parallel한 작업이라서 파일 수준으로 동시에 병렬적으로 컴파일을 할 수 있다.

 

9. MFC/ATL의 변화

VC++ 2008에는 제법 많은 MFC의 변화가 있다. 그러나 VS.NET부터도 변화가 적지 않게 있었다고 볼 수 있다. 바로 MFC와 ATL 중 공통적인 클래스들은 이들에 의존적이지 않고 사용할 수 있도록 된 것이다. 대표적으로 CString을 들 수 있다. VC++ 6에서는 CString 하나만 쓰려고 해도 MFC를 들고 다녀야만 했다. 그러나 버전 7, 그러니까 VS.NET 부터 (mfc70*.dll)는 CString, CRect, CPoint와 같은 타입들은 죄다 독립적으로 빠져 일반적인 Win32 프로젝트에도 붙여 쓸 수 있다.

 

또 뭐가 있을까. 정말 VC6을 아직도 쓰는 사람들이 있으면 도시락 싸가면서 말리고 싶다. 그 만큼 얻는 이득이 많다. 딱 하나 불편한 점이 있다면, MFC/ATL dll을 따로 배포해야 한다는 점 정도만 있을 것이다. 글쎄다. 정말 어떤 점이 VC6에서 VS 2005 혹은 VS 2008의 이전을 가로 막는지 궁금하다. VS 2008의 C/C++ 기능은 보다 많이 강화가 되었기 때문에 바꾸어야할 이유는 더 많아졌다.

운영체제야 비스타를 쓰라고 강요할 이유가 없다. 그러나 개발툴은 보다 안전하고 보다 빠르고 보다 효율적인 개발을 할 수 있다는 점에서 새 버전이 나오면 적극적으로 이전할 필요가 있다.

과거 십만 라인 프로젝트들을 바꿀 때, 쉽지는 않았다. 그런데 일주일 정도면 충분히 이전할 수 있었다. 오히려 컴파일러가 더 좋아지고 CString의 특정 함수의 프로토타입이 더 좋게 바뀌어서 잠재된 버그까지 잡을 수 있었다. 반복적인 노가다가 필요했지만 충분히 보상되고도 남는다. 그래서 더더욱 최소 VS 2005의 업그레이드를 추천한다.

by | 2008/03/06 04:52 | 컴퓨터 | 트랙백(6) | 핑백(5) | 덧글(51)
트랙백 주소 : http://minjang.egloos.com/tb/1783328
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from Hoyeol's Blog at 2008/03/06 10:37

제목 : 예 이런겁니다.
VC 6.0을 쓰지 말아야하는 이유젭알 학교에서 실습하는 과목들 VC 6.0 좀 쓰지말자.. win32 API나 MFC같은거 실습과목에서;...more

Tracked from Orchis의 Old-.. at 2008/03/06 15:45

제목 : VC6 에서 VC2005로 이전해야 하는 이유
VC 6.0을 쓰지 말아야하는 이유 이전에 다니던 회사에서 개발하던 프로그램은 VC6 에서 MFC기반으로 개발된 프로젝트였습니다. 코드량도 어마어마했죠(제가 있던 당시 만 7년을 개발 & 유지보수 하던 프로젝트니까요). 그리고 많은 개발자 분들이 그러하시듯 툴에 익숙하다는 것과 기타 여러가지 이유로 VC .NET, 2003을 다 건너뛰고 계속 VC6 으로만 개발을 했었습니다. 하지만, 다음과 같은 요구사항이 들어......more

Tracked from 내 성격 100% 활용.. at 2008/03/15 16:28

제목 : VC2008에서 변경된 기능
object님블로그에서 VC++6을 쓰지 말아야하는 이유 라는 글을 올려주셨는데, VC2008에서도 비슷하게 적용되는 부분이 있고 마침 관련된 세미나도 한번 진행 해서한번 작성해 봤다. 1. 보다 안전한 프로그래밍 SCL, CRL등 라이브러리의 거의 모든 함수와 API에 SAL이 적용이 되었다. 이번에 컴파일 옵션중에 /DYNAMICBASE와 /N...more

Tracked from 어린왕자와 여우 at 2008/03/17 12:11

제목 : VC 6.0을 쓰지 말아야하는 이유?
언제나 그렇지만 이전 컴파일러를 써봐야한다는 생각이 있습니다.현재 좋은 컴파일러만 알고 있다면 이전의 히스토리를 알 수 없기 때문입니다.이 글을 읽고, VS2008을 쓰긴 쓰되, VC6도 버리지 않았음 한단 생각이 듭니다.VC 6.0을 쓰지 말아야하는 이유...more

Tracked from 21세기 탐구생활 at 2008/03/25 11:08

제목 : VC++ 6.0을 쓰지 말아야하는 이유
출처 : http://minjang.egloos.com/1783328 2008년 3월인 지금까지도 여전히 많은 프로젝트들이 10년 전에 출시된 VC++ 6.0으로 개발하고 있다는 사실이 다소 놀랍고 충격적이기까지 하다. 많은 분들이 토를 단다. 그런데 직접 십만 라인의 VC6 프로젝트를 2003년,VS 2003으로 이전한 경험이 있는 나로서는 그저 게을러서, 귀찮아서 라는 변명으로 밖에 들리지 않는다. 정말로 VC++ 6.0을 써야만 하는 절대......more

Tracked from lunar's me2DAY at 2008/04/14 16:39

제목 : DalKy의 생각
이 포스트를 보고 과감히 VC++ 6.0 에서 VC 2008 Express Ed. 로 마이그레이션을 했는데 한결 Windows <-> POSIX 간 포팅작업이 수월해진 것 같다. 굿...more

Linked at stadia님의 글 - [20.. at 2008/03/06 11:10

... 회원가입 stadia's me2day by 백일몽 리듬 담배 돌아보는 공감받은 공감하는 친구들은 ← 2008년 3월 1 2 3 4 5 6 6 Mar 2008 0 metoo 이런 글 보면 멜이 좋아할 것 같은데 안 보이시네 오전 11시 9분 vs2008 댓글 (0) 0 metoo 헉... 이번주 토요일이 kldp 컨퍼런스 날이네. kldp 캠프라고 하시 ... more

Linked at 종로꼬마님의 이글루 : 200.. at 2008/03/06 13:57

... VC++ 6.0을 쓰지 말아야하는 이유</a> <a href="http://minjang.egloos.com/1783328" name="1783328" title="VC++ 6.0을 쓰지 말아야하는 이유"> ... more

Linked at 미친병아리가 삐약삐약 : 20.. at 2008/03/10 01:10

... 다는 팀원의 평가에 좀 더 비중을 두는 것이 좋다고 생각한다.. 미래의 행복한 소프트웨어 개발자가 되려면(2) 생각보다 연재가 빨리 올라오네.. 다음번 내용에 기대.. VC++ 6.0을 쓰지 말아야하는 이유 아직도 열심히(?) VC++ 6을 사용하고 있는 나는 뜨끔하다.. ^^ 그냥 재미로(Just for fun) '진정한 knowhow는 다 보고도 뺏지 못하는 것 ... more

Linked at 묵색 혹성 : 유니코드 문제,.. at 2008/03/11 06:17

... 의 한자가 언제나 1대 1로 매치되는 것은 아니기에 완벽한 해결책이라고 볼 수는 없다. object 님께서 쓰신 「VC++ 6.0을 쓰지 말아야 하는 이유Click」에서도 유니코드 문제가 언급되고 있다. 아직까지도 유니코드가 아닌 MBCS로 시작하는 (윈도우) 프로그래머 ... more

Linked at Information High.. at 2008/06/21 10:28

... 은...)2. VS 2k8에서 개선된 소스코드 관리 지원3. .Net Framework 의 멀티 타겟팅 기능 http://minjang.egloos.com/1783328 1. 보다 안전한 프로그래밍2. 유니코드 프로그래밍3. 보다 뛰어난 인텔리센스4. STL의 (거의) ... more

Commented by 시즈하 at 2008/03/06 05:31
2005 버전의 기능을 전부 다 이용하고 있지는 않지만, 지금에 와서 6.0을 쓰려고 하면 미치겠더군요...-o-;
Commented by object at 2008/03/06 07:15
미치죠... VC6을 새로 쓰라면 포기합니다.

또 있군요. XP, 비스타에 사용되는 최신 컨트롤이나 Theme 지원도 용이 합니다.
Commented by JOHN_DOE at 2008/03/06 07:39
VS6.0 으로 하니까 비스타에서 안돌아가서, 2005로 했더니 98에서 안돌고 wwww 그래서 고생좀 했더라는 경험이...하지만 써야할 이유가 더 많군요. 사실 뭘 써도 호환에서 부조화가 생겨서 선뜻 바꾸지 못하게 하는 마소탓도 살짝 해봅니다 ㅠㅠㅠ 여하간 이건 개념포스팅
Commented by 회색사과 at 2008/03/06 08:15
이제사 프로그래밍 살짝이 맛본 컴공1학년입니다요 ㄷㄷ

2008이 나온 마당에 VS6로 수업하고

실습한번 못해보고 칠판에 수업받고있습죠 ㅋㅋ [흑석동 c뭐 대...]

처음 배울때 대체 왜 새버전두고 비스타서 제대로 돌아가도 않는 6.0갖고 놀아야하는거냐 라고

버럭버럭 했던기억이 있네요 ㄷㄷㄷㄷ
Commented by 승네군 at 2008/03/06 08:52
개인 개발자라면.. 모르겠습니다만...
회사라면.. 라이센스 비용때문에..
'에잇.. 이때까지 잘 해 왔잖아.. 걍 써도..'
뭐.. 이런 마인드 아닐까요?
아.. 전, 이제, 사회에 내 버려진(!!) 초보 백수라서 '제 생각에' 그렇다는것 뿐입니다. ;;
Commented by 백탄왕 at 2008/03/06 09:06
이글을 보니, 왠지 바로 2005로 갈아타야 할것 같은 기분입니다..ㅎㅎ
Commented by object at 2008/03/06 09:17
학생들에게는 비주얼 스튜디오 최신판이 무료로 제공이 됩니다. VC6으로 수업하는 건, C언어를 터보씨로 배우는 꼴에 비유할 수 있겠습니다. 글을 다시 읽어보니 좀 강한 어조로 쓴 듯 한데, 정말 개발자들 반성해야합니다. 새로운 기술을 무조건 받아들이는 것이 좋은 것은 아니지만 이런 저런 이유로 여전히 VC6을 고수하고 있는 개발자들은 반성해야합니다.
Commented by rein at 2008/03/06 09:19
최근에 한 프로젝트(회사는 아니고 동아리 프로젝트)를 2003->2005로 옮기면서 2년 묵은 버그를 하나 잡았죠(...).
2003->2005 넘어가면서 STL 디버깅이 좀 더 강화되었는데, 덕분에 이것저것 잘 체크해줘서 좋습니다 :)
Commented by 타마 at 2008/03/06 09:26
좋은 정보 잘 보고 갑니다.
Commented by 네모도리 at 2008/03/06 09:27
개발자들의 문제라기 보다는 제도 적인 문제가 우선이라고 봅니다.
업그레이드가 힘들거나 손쉽거나가 중요한게 아니라 그런 과정이 회사에서 추구하는 솔루션의 방향에 맞춰서 장기적인 관점에서 진행해 나가야 한다는 것이 중요합니다.
즉 개발자의 문제가 아니라 기획의 문제라고 보는 것이 합당하지 않을까 생각합니다.
Commented by object at 2008/03/06 09:31
흠, 기획의 문제를 보고도 가만히 있는 개발자들도 문제가 아닐까요? 저도 2003년에 회사 들어갔을 때, 여전히 VC6을 쓰는 것을 보고 제가 총대매고 설득하고 설명해서 결국 이전하고 결과도 좋았습니다. .NET 프레임웍이나 기타 걸리는 것이 많으면 모를까 적어도 Win32 기반의 어플리케이션은 VC6을 고수할 이유가 전혀 없다고 생각합니다.
Commented by eslife at 2008/03/06 09:36
컴파일 버전을 바꿀때 특히 6.0 에서 2003 이나 2005로 바꿀때 생각보다 문제가 많았습니다. 저희 같은 경우 20명정도 개발자가 꼬박 한달 넘게 고생했던거 같습니다. 그리고 무지막지한 다운로드도 필수고..
코드가 백만단위는 예전에 넘었고 천만단위에 육박하다보니. 쉽게 결정하기가 어려운 부분도 많더군요..
개발에 대한 비용 문제, 고객 다운로드 문제(고객들은 컴파일러 변경된게 중요한게 아니라, 그래서 모가 좋아졌는데를 더 중요하게 생각하거든요. 윗분들도 그런게 많습니다) 등 실제 프로덕트를 운용하다 보면 문제가 되는 부분도 상당히 많습니다.
다행히 저희 회사는 이러한 변화를 잘 받아 들이는 쪽이라, 늘 새로운 버전이 나오면 착실히 업그레이드 해 오고 있습니다. 조만간 2008 로도 대대적인 이사 준비중이구요.

2005 에서 심볼 서버의 복잡한 설정이 없어진건 저처럼 하루에도 수백개 dump 를 보는 사람에게 참 행복한 일입니다. 말씀하신대로 새 컴파일러를 쓰는 것은 행복한 개발자를 위해 필수사항인거 같습니다.

늘 명쾌한 글 잘 보고 갑니다.

ps. 음 가문의 영광입니다. object 님으로 부터 링크 2개나 받고 ^^;
Commented by object at 2008/03/06 09:47
아, 천만 단위는 정말 많군요. 저는 테스트로 제가 바꾼 것이 한 십만단위였고, 그게 제대로 바뀌고 나서 다른 모든 프로젝트들도 (백만은 충분히 될 듯 하네요) VS 2003으로 바꾸었습니다. 제 생각에 VC6 -> 2003만 고생하면 2005, 2008로의 이전은 거의 공짜가 아닐런지 생각이 되네요.
Commented by 미친과학자 at 2008/03/06 09:53
6.0을 쓰는 선배 회사의 이야기.

나 : 형네 회사는 왜 아직 6.0 써요?
선배 : ...라이센스 구매예산이 없어....

.....하늘도 울고 땅도 울고 빌게이츠도 울고 스티브 발머도 울고....

이런 케이스는 봐줍시다 :)
Commented by 게드 at 2008/03/06 10:00
은행권 업무로.. 6.0부터 .net 05까지 쓰고 있는 실정으로는.. 바꾸고 싶어도, 갑에서 허락을 안해줍니다 -ㅇ-;;
Commented by coffeejava at 2008/03/06 10:01
안타까운 이야기이지만 학과에서 비쥬얼베이직을 수업하는 과목이 있는데 10년 전부터 아직까지 6.0으로 강의를 하고 있죠. 문제는 교수님께서 공부를 안하시는군요...
Commented by 별자리점 at 2008/03/06 10:24
꼭 개발자가 게을러서 못 바꾸는건 아니라고 봅니다.

저같은 경우야 갑/을쪽에서 "니 맘대로 하세요"라고 해서 정말 맘대로 C#으로 개발하고 있지만,

친구의 경우 을쪽에서 "내가 VS6으로 개발하고 있으니 너도 VS6으로 개발해라"라고 하기 때문에 VS6을 세 달간 고생한 경우도 있습니다.

VS2005에서도 C/C++ Unmanaged code를 생성할 수 있는데 왜 VS6을 고집하는지 모르겠습니다.
Commented by adol at 2008/03/06 10:25
안녕하세요.
현재는 2005를 개인적으로도 구매해서 사용하고도 있습니다만, 사실 6.0의 설계가 취향적으로는 더 맞는 쪽입니다. 예전 버전까지는 제대로 된 링커를 지원해왔으면서, 버전업하면서 컴파일러에서 제대로 된 링커를 지원하지 않는다는 것 자체가 납득이 되지 않는다랄까, 그렇네요.(좀 심하게 말하자면 사실상 링커가 없다-라고 봐도 무방하다랄까, 그런...)
독자적인 실행이 되지 않는 exe를 빌드하는 컴파일러는 제대로 된 물건이라고 생각하지 않기 때문에. 가끔씩 이런 반편이 컴파일러를 어쩔수 없이 써야 한다는 게 한심해질 때가 있습니다. 음;

그리고 ANSI C를 무시하는 듯한 MS의 레퍼런스 정책도 마음에 들지 않습니다. strcpy와 같은 함수에 있어서 워닝을 출력하고 MS독자의 함수를 쓰라고 유도하는 이 방식을 순순히 따를 경우, 소스 자체가 윈도우즈 전용으로 변해 버립니다. 이걸 막기 위해서는 #ifdef로 일일이 처리해주는 수밖에 없는데, 사실 이건 불합리한 코드라고 생각하고요. ANSI 표준 제정의 차원에서 strcpy를 재정의하는 방식을 취하는 것이 제대로 된 수순이라고 생각합니다만...
Commented by ㄹㄹㄹ at 2008/03/06 10:35
사실 언급하신 내용 절반 이상은 알고 있는 프로그래머가 많을 겁니다만.. 역시 이래저래 바꾸지를 않죠 ㅎㅎ
예전에 잠시 몸담던 회사에서 VS 6.0을 계속 써야 했던 이유는 로즈 2003에서 sln파일 리버스를 지원 안했기 때문이었습니다. 물론 이것도 sln->dsw로 자동으로 변환하는 도구를 만들던지 했다면 해결이 되었을 거라는 생각을 한다면 프로그래머에게도 책임을 걷어내기 힘든 상황인 건 맞군요.
Commented by 학주니 at 2008/03/06 11:44
일단 소스를 다 바꾸기가 쉽지가 않아서.. -.-;
글고 클레스위저드를 여전히 못찾았어요.. -.-;
Commented by 돌다리 at 2008/03/06 11:59
일단 정품 가격이 ㄷㄷㄷㄷ.

그리고 계속 프로그램을 업글 하면서 프로그래머도 계속 업글 되어야 한다는 ...

물론 이 계통에선 어쩔 수 없는 것이지만

이래서 3D 업종으로 분류되는 것일런지도...

뭐랄까

늦게 자면 늦게 일어나게 되고 피곤하다는 것 알면서도

일직자는 거 가 잘 안되는거랑 비슷하달까요..

그리고 컨버팅하면 다시는 못돌린다는 얘기...

항상 가는곳마다 2005 이상 버전이 깔려있다고 장담을 못하니까요

6.0 으로 짜면 일단 전 툴 호환은 되니까

Commented by object at 2008/03/06 12:41
adol님 무슨 말씀이신지? 독자적인 exe를 만들 수 없다는 것이 무슨 말씀이신지? VS 2005에서 Hello, World를 만들면 그대로 exe하나 나오고 이건 어느 윈도우 환경이라도 다 돌아가는데요? .NET 말씀하시는 건가요? Exe를 만들었다는 자체가 링킹을 거쳤다는 것인데 뭔가 착각하시는 듯 하군요.

그리고 Safe 함수 군들은 이미 표준으로 제안이 진행 중에 있으며 결국 glibc 등에도 반영이 될 것입니다. #ifdef 같은 작업은 tchar.h 처럼 한 번만 노가다 뛰면 해결이 되니 큰 문제가 되지 않죠. 이걸 이유로 safe 함수군을 쓰지 않는 것은 이유가 될 수 없다고 생각합니다. 참고로 strcpy_s에 대한 위키 설명을 보면

strcpy_s
The strcpy_s function, proposed for standardisation in ISO/IEC TR 24731,[3][4] is supported by some C libraries, including the Microsoft C Runtime Library.[5] It differs from strcpy in that it takes an extra parameter describing the size of the destination buffer and returns an error on overflow, thus preventing buffer overflow. However it is also explicitly unsupported by some libraries, including the GLibc library[6].

glibc에 대응되는 함수군이 어떤 것이 있는지 잘 모르겠네요.

학주니님.. 클래스 위자드는.. 흠.. 무척 직관적으로 바뀌었습니다. 클래스의 'Properties' 창을 가보시면 각종 메세지 핸들러 등을 달 수 있습니다. :) 그리고 소스 변경도 거의 find/replace로 쉽게 할 수 있습니다. 에러나는 패턴을 찾아 하나씩 공략하면 어렵지 않게 고칠 수 있습니다. 고쳐야하는 부분이 많다는 소리는 어떻게 보면 그 만큼 제대로 짜여진 코드가 아니라고 봐야하지 않을까요.

...

그리고 갑과 을이라는 문제가 또 있었군요. 그 점은 제가 미처 생각을 잘... 못했군요. 저는 패키지 회사에서 일을 해서 제 맘대로 할 수 있었다는;;
Commented by Lyn at 2008/03/06 13:16
전 MFC는 안쓰고 EVC++ 를 썼었는데... (평소엔 델파이를 씁니다)

EVC++ 쓰자니 툴이 허접해서 사람 미치겠더군요 ㅜㅜ
어시스트 깔아도 별로고

그래서 결국 2008로 바꿔서 프로젝트를 했었는데.... 정말편합니다 ㅡ.ㅡ/
6.0 쓰는사람이 이해가 안됨(EVC++4.0 이 6.0과 같은 IDE라고 하더군요)
Commented by object at 2008/03/06 13:22
네, eVC++ 4.0이 VC6을 살짝 바꾼 거죠. 그것도 VS 2005에서 아주 멋지게 통합이 되어 더 이상 eVC++을 쓸 이유가 사라졌죠.
Commented by Lyn at 2008/03/06 13:37
그런거 같습니다. VC++은 잘 안쓰는데....

VS2003 이후로는 델파이나 볼랜드 C++빌더와 IDE가 많이 유사해져서 잘 쓰고 있네요.
첨엔 멋모르고 eVC++로 하다가 3주일이나 작업하고 바꿨네요 ㅜㅜ 참다참다 못참아서
Commented by JOSH at 2008/03/06 14:51
> Commented by object at 2008/03/06 12:41 #
> adol님 무슨 말씀이신지? 독자적인 exe를 만들 수 없다는 것이 무슨 말씀이신지?

adol 님 말씀은 "독자적인 실행이 되지 않는 exe를 빌드하는 " 이므로 exe를 만들수없다 가 아니라 덩치 큰 외부 라이브러리를 언제나 안고 가야하는 점을 의미하시는 것 같습니다.

그런데 그건 그 MFC라이브러리를 exe에 합쳐버리면 되지 않나요..
그래도 어쨌든 무식한 덩치를 안고 가는건 맞지만...
Commented by Sikuru at 2008/03/06 14:58
그건 어짜피 VS6 서도 MFC 같은 건 어짜피 따로 있지 않던가요 ? ; MFC42.dll -_-;;
그 외에도 VS6 에선 없어도 되고, VS2005 이상에서 필요한 케이스는 없을텐데요...

갑/을-_-의 난감한 관계를 제외하곤 VS6 을 쓰는건 정말 이해가 잘 안되더군요.
하긴... VS6 을 살 수 없어서 VS2003 라이센스-_-를 사서 VS6을 쓴다라는 어처구니 없는 얘기도 본적이... orz
Commented by 박상민 at 2008/03/06 14:59
심볼서버 설정하느라 삽질 많이 했었는데, 정말 좋은 기능 많아졌네요.

저도 예전에 바꿀려고 했었는데 사장님이 아래와 같이 말씀하셨더랬죠.

- 그거 바꾸면 고객사에서 문제온거 제때 대응 못하는거 아냐?
- 그거 바뀌면 다시 배포해야 하는거 아냐?
- 그거 바뀐다고 뭐가 더 좋아지는데...

저는 그냥 굴복해버렸었죠. -_-
지금이면 좀 달랐으려나.
Commented by 오스카 at 2008/03/06 15:09
독자적인 실행이 되지 않는 EXE라... 뭔가 개념을 착각하고 계신 듯.
Commented by spatialguy at 2008/03/06 15:50
gcc!!
Commented by 가이우스 at 2008/03/06 16:07
저는 이뻐서.. 라기 보다는 2003이 왠지 제 컴에서 설치가 안되어서 2005를 설치한 케이스입니다.
2005의 경우 회사 라이센스비 문제가 꽤 큰 것으로 알고 있습니다.
아직 학생이라 잘은 모르지만 VS2005를 왜 안쓰냐고 했더니 라이센스비 이야기를 했던 것으로 기억
Commented by object at 2008/03/06 16:13
gcc!! 잘 하면 올 여름이나 가을에 gcc 개발에 힘을 보탤 수도 :)

회사에서 라이선스 비용도 제가 고려치 못했군요... 어느 정도 회사라면 그 정도는 감당할 수 있지 않을까 했는데 작은 업체에서는 많이 힘들 수도 있겠네요.
Commented by 뽐뿌맨 at 2008/03/06 16:37
와우, 너무라도 많은 분들이 댓글을 올려 주셔서 매일 밖으로 사돌아다녀서 블로깅도 좀 늦고 막 그래요~!! 민짱님께, 훌륭하게 논리정연하게 잘 정리해 주셨네요~!! "헉, 클래스 위저드가 사라졌어요~!"에서 한참을 웃었습니다. 솔직히 고백하자면 사실 저도 몇 시간 헤매이다가 혹시나 싶어서 옆을 보니 속성 창에 있더라구요. ㅠ.ㅠ 닷넷은 항상 프로퍼티(속성)에 정의를 하는데 이게 네이티브라서 딴데 있는 줄 알고..클래스 디자이너에서 막막 찾고 오른쪽 버튼 눌러서 메뉴 없나..두리번 두리번 했었더랬어요. 쿄쿄~~
Commented by 나이스닭 at 2008/03/06 17:40
상당히 공감하는 내용이군요.

고등학교 1학년때 처음 프로그래밍을 배워 현재는 시스템 프로그램 개발자로 일하고 있습니다.
제가 대학 다닐때 한창 비쥬얼스튜디오 2005를 뿌려대던 시기였는데 역시나 비주얼스튜디오6으로 가르키더군요.
제가 일하고 있는 회사도 비쥬얼스튜디오6을 사용중이길래 짬좀 된 후 제가 아주 갈아엎었습니다.

지금은 모든 개발자가 2005를 사용합니다. 머 위에 부장이랑 대판 싸웠지요..
왜 2005를 써야되냐? 시대가 시대인만큼 더욱 편리하고 내부적으로도 많이 바뀐 기능을 통하여 빠르게 생산하는게 효율적이지 않겠냐라고 설득 끝에 바꿨습니다.

물론 비싼 라이센스가 걸리는게 회사측에선 부담이 될테지만 위에 사람들이 빠른 생산성을 앞장세워 수익구조를 바꾼다는 이점을 잘 모르더군요.
VS2005를 사용하게 되면 기존 6과는 비교가 안될정도의 빠른 생산성이 확보됩니다.
많이 편리하지요. 이를 강조해야 합니다. 빠른 생산성을 강조하여 왜 2005를 사용해야하는지~

지금은 다들 아주 만족합니다. 비쥬얼스튜디오6을 왜 사용하는지 이해하지 못하겠더군요.
누군가 한명이 앞장서 바꿔보십시오. 왜 구닥다리 6을 사용하십니까?
2005를 한번 사용해보시면 정말 6은 병진같이 보입니다. --+
Commented by scyrie at 2008/03/06 22:45
저도 예전 다니던 회사에 입사하자마자 강하게 주장했던 일이 VS6.0 프로젝트를 VS2005로 이전하는 것이었습니다만 결국 실패했습니다. 그 이유로는
첫번째, 이미 서비스가 안정적으로 돌아가고 있는 프로젝트의 컴파일러를 변경하는 것에 대한 높으신 분들의 거부감. (문제 생기면 누가 책임질래? 류의...)
두번째, 비싼 라이센스 비용
세번째, 선대 천재 개발자분의 유산인 VS6.0 컴파일러의 비표준성과 버그를 역으로 이용한 코드들
등의 이유가 겹쳐서 결국 포기하게 되었습니다...ㅡㅜ
결국 회사 그만둘때까지 그렇게 염원했던 VS2005로의 컨버전은 못 이뤘다는...ㅡㅜ
Commented by kyuseo at 2008/03/07 00:09
개인적으로 생각하기에는 2003 버전은 프로그램 자체의 버그와 불편함으로 6.0 만도 못하다고 생각합니다.
VS 는 2005 버전에 이르러 좀더 정확하고 버그가 줄어들어 선호하고, 있습니다.,

하지만 C++ 게임, 어플 프로그래머 입장에서는 2008버전은 크게 변화가 없다고 생각합니다.


그래도 아직도 VS 6 을 사용하는 회사가 생각보다 많습니다.
개인 회사의 특성과 소프트웨어 비용, 개개인 툴 적응 시간이 있고, 이미 6.0 으로 개발되고 서비스되는 모든 소프트웨어를 2005 로 변경하기는 매우 위험하고 불안한 작업이라...
신규 프로젝트는 2005 이상이 좋지만 구 프로젝트는 차라리 6.0에서 작업하는것이 안전하겠지요.
Commented by object at 2008/03/07 00:18
"매우 위험하고 불안한 작업이라": 어떤 경우가 그럴까요? 정말로 컴파일러를 업그레이드 하는 것이 위험하고 불안한 작업일까요? 구체적인 예가 있을까요? 저는 이런 막연한 거부감 및 불안감에 반대하는 것입니다. 생각보다 무척 간단할 수도 있습니다.
Commented by 쩌비 at 2008/03/07 09:26
저도 지금 VisualStudio 6.0을 쓰고 있습니다만, 바꿀 계획인데 언제나 될지?
Commented by window31 at 2008/03/07 11:29
-> 그저 게을러서, 귀찮아서 라는 변명으로 밖에 들리지 않는다

저 말씀이 맞는 거 같네요. 저도 손에 익은걸 귀찮아서 바꾸기 싫은 이유밖에 없습니다 ;
아직도 VS 6.0 + assist 1079 쓰는 한심한 1人
Commented by object at 2008/03/08 14:59
한심한 것은 아니죠.. :)
Commented by C/C++ 9Y at 2008/03/14 16:56
다른 건 모르겠는데, IDE는 VC6가 낫다고 봅니다.
VC++ 개발자중에 하나의 프로젝트를 하면서 프로그램 언어 섞어서 쓰는 사람은 거의
없습니다.
C/C++의 특징인 기능의 특화와 집중에 있어서, VS 2002 이후의 IDE는 개악이라고 봅니다.
좀 심하게 말하면 쓰레기 수준입니다.
외골수 성격이 강한 C/C++ 계열에 걸맞게 VC 만을 위한 특화된 환경을 따로 만들어 주는게
낫다고 봅니다.
어쨋든 VS2005 IDE가 좋아지는 덕분에, 프로젝트 파일(.proj)을 에디터로 따로 열어서
수정하는 일이 많아졌군요. ㅡㅡ;
Commented by object at 2008/03/14 19:31
다른 것도 좀 보세요 :) 다른 것도 좀 보면 IDE는 VC 2005가 낫습니다.
Commented by 김찬우 at 2008/03/17 14:44
VS 2005부터는 좀 쓸만하더군요.(비스타 지원 등등의 문제로 처음 사용).

STL쓸때 겁먹었는데(내부 까보기가 힘들어서) 2005에서는 쾌재를 불렀습니다. 너무 사용이 편하고 좋아져서...
하지만 느려터진 IDE 때문에 시간잡아먹을때면은 열받아서 책상을 주먹으로 내리치고 잠시 머리식히고 돌아오기도...(속도 차이가 넘 심해서...) 뭐 이제는 이게 당연한가보구나~ 싶어져서 잘 지냅니다. 가끔은 6.0도 켜놓고 소스 다듬기할때나의 용도로 잘 활용합니다. 빠르고 가벼워서...

이제는 다시 돌아가라면 돌아가기 싫습니다. 6.0 -> 2005로 넘어오면서 STL도 같이 데려왔기때문에...
돌아갈수 없네여. 이제 슬슬 boost도 공부하고나서 데리고 다녀야 하는데 6.0으로는 하기 싫어지네요~

(잘은 모르겠지만) 2005에서 몇년간 또 멈춰있어야 할듯 합니다. 2008이 윈2000에서 설치가 안되니 직접 해당 OS에서 디버깅할일이 생기면 문제가 생길듯 하네요.
Commented by object at 2008/03/17 14:49
듀얼코어 CPU에 (20만원도 안 합니다), 4GB 메모리면 (10만원도 안 합니다) VS 2005 3~4개 띄어놓고 작업해도 끄떡없습니다. 회사에서 그 정도 시스템 안 사주면 당장 그만두던가 직접 사비 털어 시스템 업그레이드 하실 것을 추천해드립니다. 느린 시스템에서 일하는 것 만큼 비효율적인 일은 없거든요. 저는 회사에서 예전에 메모리를 512MB까지만 사줘서 제 돈 털어 1GB 업글하고 작업했습니다. 모니터도 17인치 배불뚝이만 사줘서 제 돈 털어 LCD 놓고 듀얼로 작업했습니다. 느려터졌다는 것에는 10년 전에 만들어진 VC6에 비하면 그렇지만 최신 사양에서는 결코 무겁지도 않고 느리지도 않습니다.
Commented by 김찬우 at 2008/03/17 14:57
하긴...2004년도의 궁합안맞는 조립식입니다... 모니터 남는거 데려와서 듀얼모니터쓰고 듀얼용 그래픽카드는 제손으로 사서 달고...컴퓨터 바꿔준다..준다해놓고 언제 사줄런지... 컴퓨터 성능과 모니터 크기에 대한 생산성향상을 주제로 개발팀 총세미나에서 직접 발표까지 했건만 바꿔주지 않습니다. 개인PC도 절대 쓸수 없게 하고서...ㅎ

p.s 돈좀 생기면 우선 좌우로 흔들거리는 의자부터 듀오백으로 바꿀려구요...^^;
Commented by object at 2008/03/17 15:21
저도 회사에서 돈을 아끼기 위해 개발자들에게 허접 컴퓨터 사주는 건 정말 이해할 수 없는 처사라고 생각합니다. 특히나 어떤 사장은 "느린 컴퓨터에서 개발해야 느린 컴퓨터를 쓰는 사용자들의 고충을 이해할 수 있다"라는 궤변으로 저를 아연실색케 하기도 했죠. 최대한 빠른 컴퓨터, 넓은 모니터, 안락한 의자로 생산성을 높여야합니다. 회사에서 이렇게 해주면 회사에 대한 충성심도 높아지고 결국 플러스인데 당장 돈 들어가는 것만 아까워하죠...

이런 맥락으로 VC6은 당장에 버리고 (정말로 피치못할 사정이 있으면 제발 좀 알려주세요) 최신 개발툴로 업그레이드 해야한다는 것입니다. 바로 생산성, 안락함에 직결이 되잖아요~
Commented by object at 2008/03/17 15:23
아참 저는 의자도 제 돈 주고 못 받침 있는 듀오백으로 바꿨군요;; 처음 갓 입사했을 때는 눈치 보여서 못 했지만 2년 정도 있고 나서는 그냥 바꿨습니다 ㅎㅎ
Commented by 21세기 at 2008/03/25 11:15
블로그 활용이 아직 온전치못해 트랙백걸린게 흉흉하네요;;
양해바랍니다 :)
Commented by 달빛온도 at 2008/04/08 13:13
adol 님의 말씀중에 VS2005로 컴파일된 EXE파일이 독자적으로 실행되지 않는 다는 사실은 맞습니다.
개발자분들 PC에 VS2005가 깔려있어서 못 느끼시겠지만 VS2005에서 컴파일된 윈도우 창 하나만 띄우는 Win32 API 프로젝트의 경우도 일반유저의 PC환경에서 혼자 실행이 되지 않습니다.
VS2005에서 컴파일된 EXE파일을 실행시키기 위해서는
MICROSOFT VISUAL C++ 2005 RUNTIME LIBRARIES(Microsoft Visual C++ 2005 SP1 재배포 가능 패키지 x86)을 깔아야합니다.
Commented by mg2000 at 2008/08/25 15:26
VS2005로 만든 exe가 독자적으로 실행되지 않는게 아니라 2003이전 버전과 달리 링크 파일을 참조하는 방식이 변경된 것입니다. 2005부터는 Side-by-Side Assembly를 사용하기 때문에, 단순히 필요한 DLL을 System32에 복사하는 것 만으로는 실행이 되지 않습니다.
Commented by kuaaan at 2008/09/23 10:43
VS2005 로 업하면 좋긴 하겠지만...
일단 클라이언트 개발자들은 쓰지 못하도록 MS에서 만들어 놨구... (Side-By-Side)
보안상 취약한 함수를 Warning 하는 기능도 맘에 안듭니다. strcpy야 위험한 게 맞지만.. strncpy를 쓰는데도 경고를 띄우는 이유는?? 단지 MS에서 리커멘드하는 strcpy_s를 쓰지 않는다고 해서 귀찮게 구는 건 좀 맘에 안 드는군요...

:         :

:

비공개 덧글

<< 이전 페이지 다음 페이지 >>





by object 여기는 공사중....
최근 등록된 덧글
최근 등록된 트랙백
VisualStudio 2005에서 Gui..
by 셈말짓기
SSD와 WD의 벨로시랩터
by 정보와 휴식...그리고 미래

한RSS 구독자수 website counter

한RSS에 추가

Add to Google

rss

skin by 이글루스