비주얼 C++ 2010 써 보다

* 옛날에 썼던 이 글과 연계되는 내용이다.

비주얼 스튜디오 2010을 드디어 회사에 깔아 봤다. 극심한 뒷-_-북.
인터넷 익스플로러 9만 보고도 “세상에 MS가 이런 UI의 프로그램도 만들다니, 오래 살고 볼 일이다”란 생각을 한 적이 있는데, VS 2010도 과연 그러하다.
개인적으로 시커먼 남색 배색이 별로 마음에 들지는 않다만..;;. 어째 이런 비주얼을 만들 생각을 했을까 싶다.

듣던 대로 IDE의 GUI 껍데기는 밑바닥부터 완전히 바뀌어서 다시 작성되었다.
닷넷 200x 시절은 비록 비주얼은 살짝 다를지언정 그래도 MS 오피스 엔진의 흔적이 남아 있었고 닷넷 초창기 버전인 2002/2003은 아예 오피스 XP의 GUI를 그대로 차용했었는데, 이제 비주얼 스튜디오의 GUI는 오피스와는 전혀 관계 없는 독자적인 엔진 기반이다.
그러고 보니 비주얼 C++ 6은 MFC를 사용하여 오피스와는 관계 없는 독자적인 GUI였는데... ^^;;

윈도우 운영체제의 모든 GUI는 메뉴에서 상하 화살표를 누르고 있으면, 비록 사용 불능(disabled)이라 할지라도 모든 항목이 순서대로 순회된다. 난 이게 MS 사의 전통인가 싶었다. 운영체제의 표준 메뉴부터 시작해 MS 오피스 등 MS에서 만든 역대 제품들을 모두 살펴보기 바란다.
그러나 VS 2010의 메뉴는 불능 항목는 아예 선택되지 않고 skip된다. 이 점에서는 과거 도스용 아래아한글의 동작과 비슷해졌다.

하다못해 이런 사소한 메뉴 GUI의 동작에서부터도 본인은 MS에서 만든 프로그램 같지 않은 이질감이 곧바로 느껴졌다.
덧붙이자면 VS 2010의 메뉴는 언제나 화면이 확 펼쳐지지 Fade나 Slide 같은 애니메이션 효과가 나타나지도 않는 것 같다.

IDE의 로딩 시간과 덩치는 확실하게 크고 아름다워졌다.
단, 인텔리센스는 확실히 예전 버전보다 더 똑똑해진 게 느껴져서 편하다. *.ncb 파일 대신 다른 방식의 인텔리센스 DB를 쓰는데, 역시 프로젝트 하나당 수십 MB씩 용량을 무지막지하게 차지하는 건 변함없다.
닷넷 시절 거의 10년 가까이 사용해 온 Document Explorer 기반 도움말(MSDN) 시스템도 갈아엎었다고 하는데 자세한 내역은 잘 모르겠다. 단, 매크로 IDE는 과거의 비주얼 스튜디오 2008 IDE를 그대로 쓰고 있음.

프로그래머용 에디터에 화면 확대/축소 기능이 생겨서, 단순히 글씨 크기만 바꿀 때는 옵션 대화상자를 꺼낼 필요가 없게 된 건.. 상당히 참신하다. 그래도 조절을 할 수 있으니까 유용하다.
<날개셋> 편집기도 글씨 크기 조절 기능 건의가 지금까지 한두 번 들어온 게 아니니 말이다. =_= (하지만 프로그램의 구조와 개발 방향의 특성상, 실현 가능성은 제로)

뭐, IDE와 GUI 얘기는 여기까지 하고...
비주얼 스튜디오는 2005 이후에 3이 더해진 2008 버전보다도, 2가 더해진 2005나(2003에서 버전업) 2010이(2008에서 버전업) 변화 사항이 많았다.
다만, 2003과 2010은 그 해 4월에 출시되었고 2005는 그 해 말(10~11월), 그리고 2008은 아예 2007년 말에서 2008년 초에 가깝기 때문에 실제 출시 간격은 2년 반에서 큰 차이가 없다고 볼 수도 있겠다.

역사적으로 MS 제품들이 2000년대 중반에 운영체제는 XP와 비스타 사이, 오피스는 2003과 2007 사이, IE는 6과 7 사이에 간격이 굉장히 길었다. 이에 반해 비주얼 스튜디오는 그런 제품들과는 무관하게 버전업이 꾸준히 되어 온 셈이다.

과거 MSVCR71.DLL, MFC71.DLL에 이어, MSVCR100.DLL과 MFC100.DLL도 이젠 그냥 편하게 윈도우 시스템 디렉터리에 들어가 있다. 정말 감개무량하다. VS 2005와 2008이 사용하는 CRT/MFC DLL만(80, 90) 잠깐 winsxs 밑으로 숨었었는데, 그 방식이 배포하기가 너무 불편해서 다시 일반 DLL 로딩 방식으로 되돌아간 것이다.

VC 6의 유물이던 클래스 마법사가 다시 생긴 것도 신선한 충격. 굳이 MFC 기반 프로젝트가 아니어도 유용해 보인다.
하긴, 6 시절까지만 해도 클래스 마법사가 효율적으로 소스를 파싱하라고 메시지 맵에 //AFX_MSG 같은 이상한 주석 부호도 있었는데.. 그게 필요 없어진 게 닷넷부터이다.

VC 2010은 모처럼 C++ 언어 문법도 제법 확장되었으니 이것도 짚고 넘어가지 않을 수 없겠다.

auto와 nullptr은 가뭄에 단비 같은 유용한 키워드이다.
전자는 본인이 예전에도 논평했듯이, 번거로운 타이핑과 typedef를 획기적으로 줄여 준다.
그리고 후자는 숫자로 쓰이는 0과 포인터로 쓰이는 0을 확실하게 구분하여 C++ 함수의 오버로딩 때 모호성을 해소해 준다. explicit과 비슷한 맥락에서 추가되었다고도 볼 수도 있겠다.

다만, 기존 코드와의 명칭 충돌을 최대한 피하기 위해 null이나 NULL, 심지어 nil도 아닌 nullptr로 예약어가 정해졌다는 건 감안할 필요가 있음.
또한, 기왕 auto가 추가됐을 정도면 상위 클래스를 자동으로 가리키는 super 같은 키워드도 C++에 같이 좀 추가하지 하는 아쉬움이 있다. 비주얼 C++은 MS 확장 차원에서 __super가 있긴 한데 말이다.

문득 드는 생각인데, 순수 가상 함수를 선언할 때 쓰이는 0은 숫자에 가까울까, 포인터에 가까울까?
숫자의 성격이 강하다면 0 대신 false를 써도 되겠고, 포인터의 성격이 강하다면 0 대신 nullptr을 쓰면 되겠다. 하긴, true와 false는 진작부터 C++ 예약어로 추가됐는데 말이다. 이제 C++에는 0을 의미하는 키워드가 둘 존재하게 됐다.

뭐, 요약하자면, 덩치가 딥다 커졌는데, 커진 만큼 덩치값 하는 편의 기능도 많고 기능면에서 바뀌고 향상된 것도 많다. 다만, 비주얼은 내 눈에는 여전히 좀 이질적임. ㅋㅋ
간단하게 VC 2010으로 <날개셋> 한글 입력기 프로젝트를 빌드도 해 봤다. 개발용으로는 2010으로 언제쯤 완전히 갈아탈지는 미지수이다.

<날개셋> 한글 입력기는 1.x부터 2.4까지는 VC 6.0을 썼고, 2.5부터 5.3x까지는 6년 동안 VC 2003을 썼다. 그러다가 5.5부터는 지금까지 약 2년간 VC 2008을 쓰는 중. 2005는 64비트 에디션을 빌드할 때만 잠깐 쓰다가 이마저도 2008로 곧 대체됐다. ^^;;

난 개인적으로 비주얼 C++에 대해 실현 가능성이 별로 없는 두 가지 희망 사항이 있다.

첫째, MFC나 플랫폼 SDK 같은 공통 프로그래밍 요소들의 인텔리센스 정보들은, 매번 번거롭게 각 프로젝트별로 중첩해서 들어가는 게 아니라 이미 만들어져 있는 걸 공유할 수 있으면 좋겠다. 이것만 해도 인텔리센스 파일 크기가 엄청나게 줄어들 것이다. -_-;;

그리고 둘째, 운영체제의 legacy known DLL인 msvcrt.dll과 mfc42.dll에다가 바로 링크하는 기능도 좀 있으면 좋겠다. 런타임 dll을 배포하지 않고, static link 하지 않고도 작은 바이너리 배포를 할 수 있게 말이다.

덩치가 커지는 것 자체가 문제가 아니라, '불필요하게' 덩치가 그것도 꽤 부담될 정도로 커지는 게 문제이다. I hate bloatwares. -_-

Posted by 사무엘

2011/08/13 08:11 2011/08/13 08:11
,
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/554

Trackback URL : http://moogi.new21.org/tc/trackback/554

Comments List

  1. 주의사신 2011/08/13 09:15 # M/D Reply Permalink

    전에 한 번 소개드렸던 드림 스파크 덕택에 Visual Studio 2010 RTM 나온 이후로 사흘에서 닷새 정도 후부터 쓰고 있는데요. 좀 무겁다는 것 빼고는 다 만족입니다.

    전에도 몇 번 이야기했지만, Ctrl + ,(쉼표) 누르면 원하는 함수로 바로 날아갈 수 있게 만든 것이 제일 마음에 드네요.

    그리고 다음 Addin 깔아 쓰시기 바랍니다. VS 2010 필수 Addin입니다.

    http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef

  2. 남정현 2011/08/13 15:40 # M/D Reply Permalink

    개별 IDE로서의 Visual Studio의 성능은 제가 봤을땐 그럭저럭인것 같아요. ㅎㅎ 그보다는 Visual Studio 전체 버전이 제공하는 다양한 연계 기능이라던가, 특히 테스트 관련 기능들은 막강한것 같습니다. 그리고 주의사신님께서 말씀해주신것처럼 Visual Studio 2010 Power Tools (http://msdn.microsoft.com/en-us/vstudio/bb980963)에 굉장히 이채로운 것들이 많이 있습니다. 전부 addin type이고 Visual Studio RTM에 없는 부수적인 기능들을 많이 제공합니다. 개중에서 인기가 좋은 것들은 차기 버전에 채택되기도하고 그럴것 같네요. ㅎㅎ

    여담이지만 닷넷 관련 기능을 확장하는것만큼이나 vc++ 쪽도 계속 개선이 이루어질것 같아요. 말씀해주시는 의견들이 제대로 반영되어준다면 vc++ 6.0때만큼이나 좋은 C++ IDE가 다시 나오지 않을까 개인적으로 기대되기도 합니다. :-)

  3. 사무엘 2011/08/13 17:58 # M/D Reply Permalink

    주의사신: 좋은 정보 감사합니다. 무거운 것만 빼면 만족한다는 것, 저 역시 동의해요. 이 기회에 램도 4G 이상으로 달고, 하드 용량과 PC 속도도 좀 올려야겠죠.

    남정현: 오랜만에 뵙네요. 반갑습니다! ^^ VS가 무겁습니다만, 그래도 아예 프런트 엔드가 자바로 짜여졌다거나, 크로스 플랫폼 프레임워크를 쓴 IDE에 비해서는 여전히 가벼운 것 같습니다. 그런 예로 이클립스가 당장 생각나는군요.
    닷넷만큼이나 네이티브 C++을 여전히 육성한다는 MS의 정책은 VS 2008 시절부터 드러나서 2010에서 큰 줄기가 드러난 것 같습니다. 스마트폰용 완전 신규 OS가 아닌 이상, PC용 운영체제에서 네이티브는 입지가 좁아지긴 할지언정, 결코 없어질 수는 없다고 저는 생각합니다.

  4. 소범준 2011/08/13 18:56 # M/D Reply Permalink

    저도 비쥬얼 스튜디오 2010 쓰는데요 ㅎㅎ
    근데 이전 버전이라곤 6.0밖엔 학교에서 써본일 밖엔 없어서
    이전 버전의 추억이라곤 아무 것도 없네요 __;;

    그런데 6.0이 워크 스페이스와 프로젝트를 구성해서 코드를 작성해야만 가동되는 것과는 달리
    최근에 나오는 버전들은 거지반 프로젝트만 구성해 주고 나면 되기 때문에 초간단이네요 ^^;
    (이것도 후에 올바르게 코드를 작성하였다는 전제에서 가능하죠.)

    참고로 저는 인터넷에서 다운로드 받고 그 후에 MS홈피에서 제품 키를 받아서
    정품 인증 후에 정품으로 사용하게 되었습니다.^^

    1. 사무엘 2011/08/13 23:40 # M/D Permalink

      저는 중학교 시절(!)에 4.2부터 VC++의 변천 역사를 지켜본 세대입니다. (덜덜~)

    2. 소범준 2011/08/14 23:53 # M/D Permalink

      사무엘 : 흐메~ 후덜덜...;; 거의 산 역사를 지켜보셨네요?^^;
      가히 할 말이 없군요..^^; 이 쪽 계통으로는 더 배워야 할 듯 하네요...ㅎ;

Leave a comment
« Previous : 1 : ... 1187 : 1188 : 1189 : 1190 : 1191 : 1192 : 1193 : 1194 : 1195 : ... 1672 : Next »

블로그 이미지

철도를 명절 때에나 떠오르는 4대 교통수단 중 하나로만 아는 것은, 예수님을 사대성인· 성인군자 중 하나로만 아는 것과 같다.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2020/09   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

Site Stats

Total hits:
1444618
Today:
451
Yesterday:
534