차세대 MFC: 기대가 크면 실망도 큰 법 (추가)

(주의: 너무 긴 글!)

MFC를 쓴지도 10년 정도가 흘렀다. MFC 자체에 대해 호감을 많이 가지고 있는 것이 아니었다. 특히 Doc/View는 여전히 거추장스러운 구조이고, 예전 쓴 글에서도 말 했지만 MFC는 객체 지향적인 설계에서는 낮은 점수를 받을 수 밖에 없다. 태생적으로 전혀 객체 지향적이지 않은 Win32 API를 가볍게 감싼 형태가 MFC여서 Win32 API의 부족한 객체 지향적 인터페이스를 고스란히 포함하고 있다. 그래서 Windows Forms의 그것과 비교하면 한참이나 불편한 클래스 라이브러리이다. 메세지 처리 부분을 제외하고는 거의 Win32의 모습을 그대로 담고 있다고 볼 수 있다. 물론, 다시 MFC 코드를 제대로 들여다보니 욕만 했던 어린 시절의 내 모습이 부끄러워질 정도로 잘 만들어져있었다.

그러나 10년이 지난 지금도 많은 윈도우 프로그램들은 C#이나 Java가 아닌 Win32 Native 코드로 작성되고 있다. 또한 많은 프로그램이 여전히 MFC로 만들어지고 있다. Visual Studio .NET (7.0)이 등장하면서부터 MFC는 거의 버린 자식 취급을 받았고, 조금씩 업데이트가 되었지만 큰 변화는 없었다.

때마침 ActiveX 사건이 터지면서 ActiveX를 만드는데 자주 쓰였던 MFC도 먼지가 한참이나 쌓인 기술로 취급받게 되었다. ActiveX 만드는 개발자는 모두 자폭해야할 정도로 뭐도 모르는 사람들이 욕을 해데니 MFC를 쓰면 "내가 뒤떨어진 놈인가" 라는 자괴감이 들기 일쑤였다. 그냥 컴퓨터 사용하는 사람들이야 새로운 기술을 당장에 써야 그게 좋은 것으로 생각하지만 실상은 전혀 그러지 않다는 것을 몰라서 나온 망언들이다.

그런데, 내년에 나오는 Visual Studio 2008에는 Visual C++ 및 MFC에 대한 기능이 대폭 강화된다는 이야기를 여러 채널을 통해 들을 수 있었다. (참고 글) 이미 VC++ 개발자들이 한국에 다녀가서 많은 정보들이 나왔다. 일단 가장 눈에 띄는 것이 MFC 새로운 버전에 Office 2007의 리본 인터페이스 혹은 사용자 설정이 가능한 툴바와 같은 고급 인터페이스 요소들이 추가된다는 사실이었다. 정말 놀라운 일이 아닐 수가 없었다!

 

그러나 기대가 크면 실망도 큰 법:

Visual C++ Team Blog를 통해, 그리고 Channel 9 비디오를 통해 새로운 MFC에 대한 모습을 볼 수 있었다. 그러나... 이 새로운 UI 라이브러리가 Office 2007 그리고 Visual Studio의 소스를 리팩토링해서 만든 것이 아니라 BCGSoft에서 이미 판매 중인 BCG Library를 가져다 쓰는 것이었다. ㅠㅠ

image

 

일단, 비판은 뒤에서 하고 관련된 이야기부터 해보자.

윈도우 운영체제 자체의 인터페이스는 맥 같은 것에 비해 부족한 점이 있을 수 있다. 그러나 어플리케이션만 놓고 보면 마이크로소프트에서 나온 제품들의 인터페이스는 상당히 훌륭하다. 과거 Visual Studio 최신 버전이 나오면 사람들이 제일 관심있게 보는 것은 일단 인터페이스가 어떻게 바뀌었나를 보는 것이었다. 오피스 역시 그랬다 (그러다가 오피스 2003 정도에 와서 이 약발이 떨어지자 리본 인터페이스를 만들었다).image

윈도우 기본 밋밋한 툴바 외에 사용자가 마음대로 버튼을 조절할 수 있는 툴바, 창들을 떼었다가 붙일 수 있는 docking container가 대표적이다. CodeGuru, Code Project와 같은 많은 윈도우 프로그래머 인터넷 싸이트에서는 이들 인터페이스 요소들을 모방한 클래스들로 넘쳐났다. 이런 고급 인터페이스 요소들을 모아 판매하는 곳까지 생겨났다. Codejock이 대표적이며 실제로 나도 회사에서 개발할 때 이 라이브러리를 구입해서 사용하였다. 그 만큼 Visual Studio 및 Office에서 보여준 인터페이스들은 훌륭한 것들이 많았다.

 

그런데 MFC가 기본으로 제공해주는 인터페이스는 윈도우 98 혹은 윈도우 2000의 그것과 다름이 없다. 아무리 자기네들 프로그램에 고급 인터페이스 요소들이 넘쳐나도 MFC와는 거리가 먼 녀석들이었다. 아래 그림은 MFC Wizard에서 SDI (Single Document Interface)로 만들었을 때 만들어지는 프로그램의 전형적인 모습이다.

get_image[1] 

툴바의 아이콘은 16색이며(!), 하단의 Status bar (상태줄)은 정말 Win32 API가 제공해주는 기능 그대로만 있다. 보통 최근 프로그램들의 status bar에는 예쁜 아이콘들도 올라가고 progress bar 및 버튼 컨트롤도 올라간다. 물론 MFC로 그렇게 만들 수 있지만 MFC가 기본으로 지원해주는 CStatusBar에는 그런 기능이 없다. (물론 Win32가 제공해주는 Status Bar 관련 API도 그러한 기능이 없다. 그래서 MFC도 없는 것이다.)

 

사실 MFC에 리본 및 customizable 툴바가 포함되리라고는 생각하지 않았다. 왜냐면 그러한 요소들이 MS 제품들의 강점 중 하나인데 그것을 공개하는 것이 쉽지 않으리라 생각했기 때문이다. 그래서 이번 MFC 업데이트가 상당히 기다려졌던 것이다. 일종의 MS 내부 소스를 공개하는 일이기 때문이다. 물론 리본이나 customizable toolbar의 소스가 MFC로 짜여있지는 않을 것이다. 그래도 C/C++로 만들어져있을 것이고 그렇다면 크게 어렵지 않게 MFC에도 적용시킬 수 있으리라 생각했다. (그런데 만약 이들이 다 C#이나 managed 환경에서 만들어졌다면... 좀 어려울 수도 있겠으나) 그러나 무엇보다:

튜닝의 끝은 순정이다!

라는 말이 있듯이 이제 짝퉁 인터페이스 말고 정말 진짜 똑같은 인터페이스를 사용할 수 있겠구나라는 기대감이 부풀어있었다.

그러나... 내가 너무 순진한 것 같았다. 아쉽게도 *진짜* 리본은 사용할 수 없다. 여전히 짝퉁 리본을 사용하는데 다만 마이크로소프트가 그것을 보증하는 것과 공짜로 쓸 수 있다는 점이 차이일 뿐이다. 물론, 이 정도만 하더라도 매우 훌륭한 진척일 수 있다. 무엇보다 MS가 더 이상 native C/C++ 쪽을 홀대하지 않고 열심히 지원해주겠다는 의지의 반영으로 볼 수 있기 떄문이다.

 

그렇다면 내가 왜 이렇게 BCGSoft의 라이브러리가 MFC로 들어오는 것에 실망을 하는지 좀 욕을 해보자.

2002년부터 주로 했던 일이 Visual Studio와 같은 에디터 툴을 만드는 것이어서 고급 툴바 및 docking windows는 필수였다. 그래서 그 때 부터 여러 상용 라이브러리를 써왔다. 대표적으로 이번에 MFC로 통합된 BCGLibrary가 있고 또 하나는 Codejock의 Xtreme Toolkit이 있다. (Prof-UI라는 툴도 있는데 너무 허접해서 생략) 그런데 나는 항상 Codejock의 제품을 써왔다. 왜냐면 이 제품이 BCG보다는 *훨씬* 우수하기 때문이다. Xtreme 툴킷은 실제로 소스를 오랫동안 봐왔고 내부적으로 고쳐서 사용한 적도 있기 때문에 꽤 잘 안다고 할 수 있다.

인터페이스는 정말 미묘해서 1픽셀의 차이 조금의 딜레이도 사용자에게 바로 인지되어 프로그램의 완성도를 떨어뜨린다. 특히 이런 모방한 클래스 라이브러리들은 조그마한 상이함도 바로 *짝퉁*임을 강하게 느끼게 하여 이질감을 자아내게 만든다.

솔직히 BCGLibrary 내부를 많이 보지는 않았다. 그러나 XTreme과 큰 차이가 없으리라 생각한다. 그러나 무엇보다 문제는 BCG 제품은 그렇게 성능이 뛰어나지 못하고 완벽히 모방을 하지도 못하고 있다.

일단 두 회사 홈페이지에 가서 데모 exe들을 받아서 실행시켜보자:

리본은 아직까지 많이 써보지를 않아서 잘 모르겠고, 일단 Visual Studio 인터페이스를 모방한 데모 프로그램들을 각각 진품과 비교해보자.

Diff1

맨 위가 BCG, 그 다음이 Codejock, 마지막으로 진짜 VS 2005가 있다. 일단, 한 눈에 BCG 제품의 메뉴 폰트가 한 픽셀 작음을 알 수 있다. 메뉴 뿐만 아니라 툴바 아이콘도 가로 폭이 1픽셀 작은 것 같고, "Solution Explorer"의 글씨도 작다. 그리고 XP부터 디폴트로 File, Edit와 같은 메뉴 항목에 밑줄이 그여지지 않는다. Alt 키를 눌러야만 밑줄이 보인다. 그러나 BCG는 디폴트로 밑줄을 보여주고 있다! 물론 이걸 수정할 수는 있을 것이다. 그런데 이런 매우 기초적인 폰트 크기부터 틀리다는 것은 다른 곳에도 이런 허점이 많다는 것을 뜻한다.

딱 하나만 더 살펴보자. Property Grid는 매우 유용한 인터페이스 요소로 모두 필수적으로 구현하고 있다.

Diff2

빨간 줄을 친 두 버튼은 정렬 방식을 나타내는데, 하나는 category로 보여주는 것이고 옆에 것은 category 무시하고 ABC 순으로 보여주는 것이다. 만약 위 그림과 같이 File Type을 선택하고 있는 상태에서 정렬 방식을 바꾸더라도 File Type이 그대로 선택되어있어야 하는 것이 상식적이다. 그러나 아쉽게도 BCG의 컨트롤은 그냥 선택된 것이 사라진다. 알고 있다. 이거 솔직히 소스 고치는 것이 어렵지 않다는 것을. 그러나 데모 프로그램 다운 받고 단 3분 동안 들여다 봤는데도 벌써 이상한 점 서너개가 나왔다. 그러니 BCG 제품을 믿지 못하겠고 사용하기가 꺼려지는 것이다.

또 하나 성능에 대해 이야기 해보자. Alt를 누르고 아랫쪽 방향키를 누르면 풀다운 메뉴가 뜨는데, 여기서 오른쪽 혹은 왼쪽 방향키를 계속 눌러보자. 메뉴가 빠르게 움직이게 된다. 이러한 행동을 시켜보면 BCG 제품이 가장 느린 것이 한 눈에 바로 알 수 있다.

차라리 MFC가 XTreme 툴킷을 채용했으면 조금 덜 화가 났을 수도 있다. 그래도 가장 근접하게 구현하였고 코드도 꽤나 깔끔한편이다. 그러나 얘들도 완벽하지 않다. 특히 MFC의 복잡한 command message routing과 맛물려 좀 짜증나는 행동을 보일 때가 있다.

예를 들어, VS 인터페이스에서 Solution Explorer와 같은 docking window가 비활성화 되어있는 가운데에서, 마우스 *우클릭*으로 바로 Solution Explorer의 항목을 선택하는 경우: 이 아이템을 RButton Down에서 선택을 하면서 Solution Explorer 창을 활성화 시키고, RButton up이 될 때, 이 아이템에 해당하는 context menu를 띄어주는 것이 합리적인 행동이다. 그런데, XTreme 툴킷으로 짜보면 이러한 부분이 잘 안된다. 그래서 처리하기 상당히 힘들었다. 꼼수를 부려야만 했다.

어떻게 보면 내가 트집잡는 것이 굉장히 사소하고 진짜 이런 것까지 트집잡으니 넌 미친놈이야~ 라고 욕할 수도 있겠다. 그러나 UI 구현은 정말로 엄밀해야 한다. 대충 짜다보면 그야말로 거지 프로그램 된다. 그래서 정말 한치의 타협도 없이 만들어야하는 것이 UI인데, MFC가 공식적으로 그렇지 못한 라이브러리들을 자기네 영역으로 가지고 왔다는 것이 너무 아쉽다.

비록 MFC가 공식적으로 지원하기 위해 내부적으로 소스 튜닝도 하고 많은 보완이 있으리라 믿는다. 그러나 여전히 2%는 부족할 것이다.

 

아, 쓰고 보니 진짜 무진장 길다. 그냥 아쉬움이 너무 커서 주절거리다 보니 너무 길어졌다는.. 죄송합니다.



* 긴 글에 이은 업데이트 *

왜 MS가 직접 구현하거나 오피스 소스를 가져다 쓰지 않고 다른 곳에서 사왔는지에 대한 설명을 Herb Sutter블로그에서 볼 수 있었다. 두 가지 질문에 대한 답변을 해주고 있다. Herb는 현재 MS 소프트웨어 아키텍트로 일하고 있으니 그의 답변은 꽤 정확하다고 볼 수 있겠다.

1. 다른 회사에서 사온 코드가 문제가 되지 않는가?

- 그렇지 않다. 그전에도 이미 C++ STL 같은 경우 Dinkunware에서 사온 것과 같이 종종 라이센스를 받아 타 회사의 코드를 사용한 적이 있다.


2. 오피스팀에서 사용하는 코드를 쓰지 않는 것이 문제가 되지 않는가? 왜 마이크로소프트는 자신들의 코드를 쓰지 않았는가?

- 오피스팀에서 사용하는 내부 코드가 일반적인 프로그램에 사용하기에 적합한 수준이 아니기 때문이다. (일반화되어있지 않고 오피스에 맞춘 특수한 코드가 많다는 뜻으로 해석할 수 있음).

오피스 팀을 독립적인 윈도우 응용 프로그램을 만드는 회사로 생각하면 된다. 오피스 팀은 그들만의 새롭고 진보된 UI를 윈도우, Visual Studio와 별개로 개발해왔다. 그리고 윈도우와 Visual Studio도 차례로 오피스에서 선 보인 고급 기술들을 따라하여, 윈도우 쉘이나 기타 프로그램에서도 오피스와 비슷한 느낌의 인터페이스를 구현해왔다. 그리고 이런 구현들은 대게:

1) 오피스 팀의 개발보다 늦다. 그들이 보통 앞서고 플랫폼과 기타 툴들은 그것을 뒤 따른다.

2) 그리고 오피스 자체 버전과 다르다. 왜냐면 "오직 내부 사용"으로 만들어진 코드와 별도의 문서와 테스팅 등이 요구되는 "제품화된" 코드들 사이에는 상당히 큰 차이가 있기 때문이다.

에.. 그 뒷 부분은 번역하려고 하니 뉘앙스를 제대로 못 옮기겠음 (원문발췌):

The fact that we have an internal and an external "real" implementation for the same thing doesn't matter. We've always done it that way, and the"real" implementation is equal and fully supported. (I think it's funny that some worry that they're not getting Office's original internal 'real' implementation; the real "real" implementation is the one that's not just for internal use, almost by definition!) Once a UI innovation gets into the Windows UI and/or especially the Visual Studio tool set, it's first-class and here to stay.

이어지는 의역: 같은 기능을 위해 internal (즉, 오피스 팀이 쓰는 것)과 external "real" implementation (다른 윈도우나 VS팀이 만든 것)이 같이 존재하는 것은 큰 문제가 되지 않는다. 왜냐면 지금까지 그래왔기 때문이다. 그리고 external "real" implementation도 동일하고 완전히 지원이 된다. 어떤 이들이 오피스의 진짜 internal 'real' 구현을 사용하지 않는 것에 대해 걱정하는 것은 다소 웃기다고 생각한다 (ㅎㅎ); 진짜 'real' 구현은 그저 내부에서 사용되는 것만을 가리키지 않는다.

그러고보니 예전 면접볼 때 만났던 친구가 오피스팀에서 7~8년 동안 일했다고 했었는데, 내가 그 때 이런 비슷한 질문을 했었다. Customizable toolbar와 같은 것을 너희가 만들었는데, 그런 코드를 다른 팀에도 배포를 하는지라고. 그랬더니 그의 답변은 그런 것은 아니다라고 답변해서 의외네.. 라고 생각했던 기억이 나는구나 -_-;



암튼 결론은 오피스 자체에서 만든 리본 및 기타 UI 소스들은 오직 그들 내부용으로 만든 것이어서 일반적인 프로그램에 붙여 쓰기에는 적합한 수준이 아니라는 것이 핵심.
by object | 2007/11/11 18:07 | 컴퓨터 | 트랙백(3) | 핑백(1) | 덧글(21)
트랙백 주소 : http://minjang.egloos.com/tb/1584385
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from kkamagui의 프로.. at 2007/11/11 21:19

제목 : [잡담] MFC UI의 획기적인 변화와 그 진실....
원문 : http://minjang.egloos.com/1584385MFC의 UI에 획기적인 변화가 온다고 들어서 상당히 기대를 하고 있었는데....그것이 Microsoft에서 제공하는 컨트롤이 아니라 Third Party 라이브러리를 MS에서 보증하고공짜로 준다는 듯한.... ㅜ_ㅜ...뭐야 이게... 낚인 것인가.. ㅜ_ㅜ......more

Tracked from 아폴로-무엇을 쓸가 at 2008/02/29 12:00

제목 : 새로운 개발환경 구축하기
차세대 MFC: 기대가 크면 실망도 큰 법 (추가) Docking Window 가 포함된 UI 를 MFC 로 개발하여야 할 필요가 제기되였다. 두루두루 손쉬운 방법이 없나 찾아보다 VC2008 에서 공짜로 UI 를 지원한다는 말을 보게 되였다. 당장 VS2008 을 구입할수 없는 형편이라서 인터넷 속도도 그리 빠른편은 아니지만 그래도 겨우겨우 90일 평가판을 다운받아 설치하였다. 처음 프로젝트 창조부터가 황당하다. 분명 VC++......more

Tracked from ~★~ 우하하!!~ 프.. at 2008/07/29 10:10

제목 : .NET 용 상용 UI 컴포넌트 도입에 앞서서...
차세대 MFC: 기대가 크면 실망도 큰 법 (추가) 프로그래밍에 있어서 UI 에 대한 부분은 선물의 포장과 같다. 아무리 기능이 뛰어나다고 하더라도 UI가 허접해 보이면 그 프로그램을 보는 사람은 대번에 실망감을 감추지 못하게 된다. 그 프로그램의 진정한 기능을 알기 전까지는... 반대로 기능이 없더라도 UI가 화려하면 기능의 허접함을 알기 전까지는 놀라는 것이 사실... 금번 프로젝트에도 어느 정도 UI가 필요해서 이것 저......more

Linked at 미친병아리가 삐약삐약 : 20.. at 2007/11/19 15:11

... 차세대 MFC: 기대가 크면 실망도 큰 법 Visual C++의 다음 버젼에 포함되는 새 UI 라이브러리에 대한 내용.. MS가 직접 관여하지 않는다는 점에서는 다소 실망.. 관심의 대상은 위저드에서 ... more

Commented by 가이우스 at 2007/11/11 18:25
저도 이번에 이런저런 일로 mfc를 많이 썼는데(학생임을 미리 밝힙니다.)
간단하게 쓸때는 mfc만큼 편한것도 없더군요. 원래는 api로 만들다가
이런저런 이유로 규모가 확 줄어서 간단한 것으로 바뀌는 바람에 그냥 mfc로 해버렸었네요
Commented by object at 2007/11/11 18:31
MFC 좋습니다. 여전히 MFC는 훌륭한 프로그램 방법론 중 하나입니다. 지금도 MFC는 소스도 훤히 머리 속에 그려질 정도로 엄청나게 사용했습니다. 지난 10년 간 큰 변화가 없다가 이번에 큰 변화를 준다고 한 것이 3rd Party 소스를 가져오는 것이어서 적잖게 실망한 것일 뿐이에요. 어쨌든 그래도 나와봐야 알겠죠. MFC에 직접 들어간 BCG 소스는 좀 더 나아졌을 수도 있겠죠. 저의 이런 불만이 성급한 것이기를 기원할 뿐 입니다.
Commented by codewiz at 2007/11/11 21:05
길지만 재밌게 읽었습니다.
그림에서 볼 때에는 메뉴 폰트가 작다는 걸 잘 못느꼈는데 다운 받아 보니 바로 알겠네요. ^^;;
속도는 제 컴퓨터에서는 체감하기가 조금 힘드네요.
글을 읽고나니 생각보다 사소한 부분의 차이가 많다고 느껴지네요.
그런데 MS에서 번들하는 소스에 대해서 수정을 할까요?
Commented by object at 2007/11/11 21:13
언급한 속도 건은 (제 컴퓨터는 Core2Duo 2.8GHz + 4GB니까 충분히 빠릅니다) 메뉴가 빠르게 이동하면서 남는 잔상이 확실히 BCG가 많이 보입니다. Codejock 제품도 원래 오피스/VS보다는 느리지만 그 정도면 충분히 좋습니다.

생각보다 찾아보면 사소한 부분에서 문제가 되는 부분이 꽤 많습니다. 제 생각에는 결국 BCG가 MS로 인수되는 것이 아닌가 싶습니다 -_-;

또 하나 아쉬운 점은 BCG는 잘 모르겠지만 Codejock은 비교적 자주 업데이트가 됩니다. 필연적으로 이런 복잡한 GUI 툴킷에는 버그가 많이 있고 이런 것을 자주 패치에서 올립니다. 문제는 BCG가 MFC에 포함이 되면 업그레이드 혹은 패치 주기가 VS의 SP 주기와 같아지지 않을까라는 불안감입니다.

암튼 직접 써봐야 알겠네요. 써보지도 않고 너무 속단한 글일 수도 있습니다. (답글도 길게 쓰넹 --)
Commented by object at 2007/11/11 21:53
http://blogs.msdn.com/vcblog/archive/2007/11/09/quick-tour-of-new-mfc-functionality.aspx

여기에도 지금 저 같은 불만사항을 말 하는 사람들이 있는데 담당자가 답글을 달았네요. 만약 자기들이 이걸 직접 개발했다면 2년이나 걸렸을 것인데, 어쩔 수 없이 시장과 시간을 고려해서 BCGSoft의 것을 이용했다고 합니다. (그렇다면, 진짜 MSO, VS의 소스코드는 결국 이용할 수 없었다는 이야기가 되는군요) 그리고 몇 번이나 속도나 기능이나 보안이나 튜닝을 했다고하니... 쩝.
Commented by noname at 2007/11/12 06:37
인터페이스에 대한 고집에 가까운 내용에 공감합니다.
눈에 보이지 않는 게 인터페이스 감각이기에 측정하기도 곤란하고 사람마다 제각각 느끼는 바도 다릅니다.
정말 너무나도 사소한 차이가 실제로는 큰 유저 경험의 차이를 만들기도 하죠.

2002년 WebOS가 유행하면서 잠잠하다가 작년인가 다시금 관심이 집중되는 듯 했는데, 전 그런 기술에 대해 회의적으로 보는 부분이 있었습니다. 바로 인터페이스였죠. 제 아무리 컴퓨터 성능이 좋아지고 웹 기술이 발전해도, 결국 데스크탑에서 프로그램을 돌리는 것만큼 부드럽고 비슷하게 만드는 건 어려울 것 같거든요. 앞뒤 안 가리고 ActiveX로 그냥 다 만들어버리면 해결될지도 모르지만 이 경우 웹에서 구현한다는 게 별 의미가 없겠더군요.

데스크탑과 거의 동일한 외면을 만들어도 실제로 동작하는 인터페이스가 조금(그야말로 1mm의 차이)이라도 다르면 실 사용자는 어색함을 느끼게 되니까요. 게다가 이건 말로 설명하기도 참 애매해서 지적하는 사람은 적은데 몸으로는 다들 느끼니까 결국 슬금슬금 멀어져가게 됩니다. 매우 중요하지만 참 어려운 인터페이스 구현을 간접적으로 시사하는 부분이죠.

MS가 시장과 시간을 고려해서 선택했다는 답변은 여태껏 잘 해왔던 사업 방식(?) 같네요.
이미 그럭저럭 쓸만한 외부 자원이 있으면 그걸 끌어다쓰고 호응이 괜찮거나 장래성이 있으면 그걸 내부로 흡수해서 자기네 기술로 만들어버리더군요. 이걸 잘 하는 게 MS의 장점인 것 같기도 하고..

VS.NET은 관심은 많은데 제대로 써보질 못해서 자세한 내용은 모르겠습니다. 확실한 건 툴이 버전 업 될 때마다 저도 외면의 변화에 가장 큰 관심을 두었다는 점이군요. ^^
Commented by object at 2007/11/12 09:20
MS 뿐만 아니라 구글과 같은 회사들도 모두 괜찮은 회사를 인수해서 지금까지 성장해온 것입니다. 굳이 MS만의 사업방식이 아니라 모든 공룡 기업들이 이용하는 방식이죠. NHN의 첫눈 인수도 뭐 그러한 것이구요.

VCBlog에 또 답글이 달렸는데 원래 리본 소스 등이 일반적인 프로그램에서 사용하기에는 적합하지 않았다는 이야기를 하네요.
Commented by likejazz at 2007/11/12 11:14
인터페이스에 대한 2% 부족함으로 사장되는 프로그램들을 많이 봐왔습니다. 내부적으로 아무리 뛰어나도 인터페이스에서 뭔가 부족하다면 결코 높은 점수를 받을 수 없겠죠. object님처럼 인터페이스에서 높은 완성도를 추구하는것은 결코 고집이 아니라고 생각합니다. 가려운 부분을 속시원히 긁어주는 날카로운 비판글이군요!
Commented by 오스카 at 2007/11/12 11:43
오늘 간만에 BCGSoft 사이트에 들어갔더니 이런 소식을 보고 놀라고 있었는데, 민장님이 또 포스팅을 하셨네요. 참, 전 BCGSoft Professional Version의 정식 라이센스를 가지고 있습니다. 알바할 때 구입해서 쓰다가 간간히 데스크탑 어플 알바 들어오면 새로 갱신하고 그러고 있었죠. ^^

솔직히 BCG가 MFC에 포함이라 ... 좀, 아니, 많이 놀랍네요. BCGSoft가 커스터마이징에 있어서는 종종 귀찮은 점이 많았습니다. 버그도 종종 있고 가끔 왜 이렇게 만들었지? 하는 부분도 있어요. 특히 본문에도 언급하신 Property ControlBar 저게 데이터와 뷰 연결하는 쪽이 솔직히 왜 그렇게 했는지 잘 이해가 안되게 만들어 놨더라고요. 문서도 딱히 잘 업데이트 되질 않는데, 이 점은 MSDN에 포함되면 문서화는 좀 더 나아지겠네요. 어쨌든 괜찮은 라이브러리이긴 하지만 개인적으로도 Office 2007의 UI 코드가 MFC에 넘어오길 기대했는데, 아쉽네요.

업데이트에 대해서는 지난 1년간(2006년 10월 3일부터) 기록을 보니까 9.3/9.4/9.5/9.51/9.52/9.53/9.54/9.55 로 업데이트를 했습니다. 나름대로 업데이트를 잘 하긴 합니다만 말씀하신 대로 Visual Studio에 포함되어 버리면 걔들 서비스 팩에서나 업데이트를 할테니 이게 걱정이긴 합니다.

http://www.bcgsoft.com/pressreleases/PR071110.pdf 에 언급하는 내용에 의하면 VS 2008의 MFC로 BCG ControlBar Pro. 기능이 포함된다고 해서 앞으로 개발을 중지하진 않을 것이며, 차후 더 나은 확장 기능을 제공하는 라이브러리로 발전시키겠다고 이야기를 하긴 하는군요. 왠지 .NET 라이브러리를 더 잘 만들어서(WPF 버전까지) MS에 또 팔아먹어야지 하는 생각을 할지도 모르겠네요. ^^
Commented by object at 2007/11/12 12:58
Codejock, BCG 모두 업데이트는 자주 해서 걱정은 없는데 VS에 포함되었을 때 그 업데이트 주기가 일단 염려스럽죠. 아무래도 지금의 BCG보다는 훨씬? 아니 어느 정도 향상은 있겠지만 큰 기대는 안 하기로 했습니다.

진짜 MSO의 소스 코드를 보나 싶었는데 그게 아니어서 너무 아쉽;;
Commented by 수아기 at 2007/11/13 12:53
아직까지 MFC의 M자도 잘 모르는 초보라서 이해하기가 어렵네요.^^
그래도 좋은 글이란 느낌은 팍 와닫는걸요.^^
Commented by 박PD at 2007/11/13 16:40
Visual Studio 와 디버깅 팀도 나눠져 있다고 하더군요.
예전에 MSN 채팅창도 RichEdit 컨트롤을 왜 안 쓰냐 어쩌고 그랬었는데 그런 것도 다 이런 비슷한 이유 때문이겠죠.
그래도 한 편으로는 이렇게 오래되고 큰 프로젝트를 계속 유지해 오고, NativeC++ 에 대한 지원을 다시 시작했다는 점에서 안심하고 있습니다.
Commented by tan at 2007/11/13 23:40
영어공부해라
Commented by 미친병아리 at 2007/11/13 23:57
오피스팀의 소스코드를 공개한다면 정말 좋았을텐데 말입니다..
하지만, 별도 UI 라이브러리를 구입하지 않아도 될지도 모른다는 점에서는 좋겠네요..
Commented by object at 2007/11/14 10:47
VCBlog의 그 글에는 댓글이 70개나 달리면서 시끌벅적합니다. 역시 저와 같은 불만을 제기하네요. 암튼 나와봐야 알겠죠.
Commented by AnonymousY at 2007/11/19 19:20
저도 Codejock 지지자인데...아쉽습니다.
Commented by 어쨌건간에 at 2007/11/19 23:09
이전 회사에서 BCG를 써서 꽤 썼었죠. MFC 자체가 (winform등에 비해) 워낙 짱나는데, BCG까지 까지 붙으니 더 짱나더군요(MFC가 태어난 시점이 워낙 오래되다보니 어쩔 수 없겠지만). native C++을 계속 지원하는 것도 좋지만, MFC를 미는 것이 아니라 ATL, WTL기반이나 새로 framework를 만들어주면 더 좋겠다는 생각이 드네요(.NET 인터페이스로 뺄 수도 있을 것 같기도 한데..)
Commented by object at 2007/11/22 12:16
VCBlog에서 많은 불만 중 하나가 제발 기존의 MFC와 BCG dll을 분리해달라는 것이네요. 저도 여기에 동의하는 바입니다. 그런데 MS에서는 일단 이 둘을 다 합쳐서 배포한다네요. 두 세분이 엄청나게 욕을 해대네요. 저도 어느 정도 동의하는 바이구요 ㅎㅎ 아... MFC... 계륵과 같은 존재.
Commented by 시나브로 at 2007/12/16 03:50
블로거를 타고 들어와 민짱님의 예리한 VS2008 분석에 대해 잘 보았습니다. 저는 OWL 부터 시작해서 지금은 MFC, C#, JavaScript 등 잡다한 언어를 써 왔고 현재도 쓰고 있습니다. 그리고 문제의 회사에 다니고 있는 서진호라고 합니다. :) 사실은 MFC 뿐만 아니라 Visual Studio 6.0 에 대한 컴파일러도 업데이트 되고 smart pointer 라든가, Marshal Type Library 지원, 쿼드코어 지원 등 최신 기술들을 적용했습니다. 이렇게 된 이유는 데스크톱, 웹, 장치 간의 응용 프로그램을 개발하는 데 있어서 .NET 뿐만 아니라 여전히 C/C++(MFC) 언어를 사용할 수 밖에 없습니다. C언어가 없어지지 않는 이유는 하드웨어의 이식성이 높은 것이고, C++언어가 없어지지 않는 것은 복잡하지만 재활용성 때문이라고 생각합니다. 다음달이면 좀더 윤곽이 나타날 것으로 기대합니다. 제 블로그를 통해 소식들을 전달하도록 하겠습니다. :)
Commented by Dummy at 2008/01/07 13:18
어제 VS2008 세미나갔다가 BCG가 포함된다는걸 보고선...이게뭐람..했었습니다. :)

Codejock사용하고 있었는데..그냥 계속 그거 쓰는게 좋겠군요. 그나저나..어제 든생각은..딱히 바꿔야 할 이유는 없지만... 추이를 지켜봤다가 바꿔보는것도 고려해야겠더라구요.
Commented at 2008/03/02 19:00
비공개 덧글입니다.

:         :

:

비공개 덧글

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





by 김민장 2008 이글루스 TOP 100
최근 등록된 덧글
개발자 입장에서의 수많은 ..
by Jiyoon at 02/04
저도 아들 돌잔치때 돌잡이 ..
by 박상욱 at 01/18
미국 대학원 원서 작성중에 p..
by 태클사이야 at 01/13
TO: 박PD 로그인 하지 않아..
by 박응용 at 01/10
http://gigglehd.com/zbx..
by dhunter at 12/28
우와.. 좋네요. 태반이 ..
by 윤광배 at 12/17
항상 좋은 글 잘 보고 있습니..
by y2k at 11/23
글이 좋아서 제 블로그에 담..
by 쏭섭 at 11/23
최근 등록된 트랙백
조엘 스폴스키의 강연 (Sta..
by 인덕원칸타타
[Redis] sds.c를 분..
by 조급하지말고 천천히
메뉴릿
이글루 파인더

website counter

Add to Google

rss

skin by 이글루스