VC++ 이 그렇게 좋은 환경 이었다면 지금 왜 MS 는 C#을 강력히 드라이브 하고 있는가?
결론부터 이야기 하면 VC++은 MS 의 사기 입니다. (제생각엔) 이제야 VC++ 사용자는 C#으로 옮겨가며 배신감을 느끼지만 그것조차 느끼지 못하고 맹목적으로 C#으로 가는 사람들도 많습니다. 대세라나.. 대세는 원래 없습니다. 많은 사람들이 솔깃해서 많이 걸어가면 그게 대세 입니다. 실제적인 길을 갈때는 남들이 가는 대세는 그리 중요 하지 않습니다. 내가 가는길이 대세일 뿐입니다. 남들이 인정하지 않아도.. 아시는 분들은 다 아시는 얘기 일 겁니다.
여하튼 .NET F/W 은 돌이킬 수 없는 대세 입니다. 각 개발 환경들은 차후에는 .NET을 지원 하던지 아니면 .NET 에 흡수 되던지 둘중 하나의 길을 걸어야 합니다. .NET 은 무엇일까요? 처음에는 하도 뜬구름 잡는 얘기를 많이 해서 좀 오락 가락 하던 시기도 있었지만 이제 나름대로 감 잡았습니다.
.NET 을 한마디로 말하시오. -> 객체지향적 API 라고 할 수 있습니다.
즉, WIn32API 는 C 로 만들어져 있습니다. 윈도의 프로그래밍을 하려면 적어도 이중에 적합한 수십~수백개의 함수를 이해 해야 합니다. 각 함수만 이해해서는 안되고 함수들의 상관관계도 반드시 이해 해야 합니다. Open을 하면 Close를 해야 합니다. 그런데 이것이 전부다 프로그래머의 몫입니다. biz logic 은 1줄이어도 그 상관관계를 맞추는건 1일이 걸리지 1달이 걸릴지 아니면 영원히 풀 수 없을지 아무도 알 수 없습니다.
이상황을 타개 하기 위해 나온 것들이 VB, VC(MFC), Borland C++ Builder, Delphi(VCL) 입니다. 이툴들은 전부 윈도우 API 를 그냥 쓰는 것이 아니고 자신들 만의 객체지향적 클래스를 제공 합니다. 프로그래머는 API 시절보다 한 시름 덜었습니다. 일단은 이 클래스들이 많은것을 알아서 해주니까! 알아서 해 준다는것은 장 단점을 포함 합니다. 알아서 잘해주면 고맙지만 알아서 했는데 맘에 안들면 죽으나 사나 다시 API 를 뒤지는 것 외에는 방법이 없습니다. 각각의 사용자들은 자기 툴을 강력하다고 믿고 쓸 수 밖에 없습니다. 왜냐면 자기 밥그릇이니까!
클래스 춘추 전국 시대가 열렸습니다. 서로 자기것이 좋다.. 하지만 내용은 전부 API 를 Wrapping 한 것입니다.
이사태를 수습하기 위해 .NET 이 등장 했다고 말할 수 있습니다. (자바나 파이썬등 다른 여러 이야기는 논외로 하고)
그들이 수습을 하기위해 나왔던 또하나의 혼란을 일으키기 위해 나왔던 난 인단 수습으로 인정을 해 줍니다.
.NET API는 보시면 알겠지만 API 가 Class 로 배포 됩니다. System.x.y.method 이런식이죠.
중요한건 저 위의 구문이 다른 상용 클래스를 사용 하는게 아니고 그냥 MS 에서 프로그래머에게 거져주는 API 라는 겁니다. 이제는 자기가 필요에 의해서 이놈들을 조합해서 Wrapping 하는 클래스를 제외하고는 프로그래머는 .NET 을 사용하는한 싫든 좋든 동일한 클래스(API)를 사용하게 되었습니다.
여기까지 읽으시면 이제 감 잡으시겠지만 MS 는
1.기존 API 만 계속 발전 시킨다.
2.새로운 .NET API 만 계속 발전 시킨다.
3.둘중 한놈에게 우선권을 주면서 둘다 발전 시킨다.
이 3가지 정책중 1가지를 쓸것입니다. 혹 과격한 사람들은 기존 API 를 아예 없애 버리겠다라고도 말했다고도 합니다. 그럴경우 일어날 사태는 그누구도 책임질 수 없습니다.
즉 기존의 모든 툴은 자신이 충실히 자기자신만의 장점을 계속 살린다면 자기 시장을 확보 하며 살아 남을 수 있다는 얘기도 됩니다. Win32API 가 살아있는한...
하지만 이제 서두에 얘기 했던데로 이제 2가지의 선택을 할 수 있게 된 것입니다. 한놈은 나중에 나와서 새옷을 입고 있고 한놈은 오래전부터 봐와서 익숙한 놈입니다. 둘다 동일합니다. 한놈이 더 힘이 세다거나 그렇지 않다는 것입니다. 동일한 API 이므로 . 하지만 새로 나온 놈은 새옷을 입었다는 점을 잘 이해 해야 합니다. 나름대로 C++ 에 비해서는 안전장치를 많이 갖추고 나왔다는 것 입니다.
그놈이 C# 입니다. 이놈은 .NET API 를 바로 사용할 수 있게 해주며 또 VB,C++Builder,delphi 같이 윈도우 개발시에는 RAD 도 가능 하게 해 줍니다. 그게 장점이란거죠. 어짜피 모든 랭귀지가 그렇든 반복문,조건문,등을 사용해야 하고 C++의 STL 과 같은 놈을 Collection 등으로 더 쓰기 편하게 해놓았고.. 이런점들은 더 좋아졌다고도 얘기 할 수 있습니다. (할 수 있다는 것은 C++ 로 STL 을 잘 쓰는 사람은 더 훌륭한 Collection들을 자기 입맛에 맛게 고쳐 쓸 수 있다는 뜻입니다. 하지만 짧지만 10년이상 프로그램한 입장에서 그런 훌륭한 분들은 인터넷에서나 몇분 만나 뵜을뿐 내 주위에선 본적이 없습니다. 그만큼 어렵다는 이야기 이며 그러한 것들을 생각할 만한 프로젝트 시간이 여유가 없다는 이야기 입니다.)
그리고 윈도우 프로그램 할때 지켜야 하는 룰은 둘다 똑 같습니다. IOCP,CORBA,Remoting 등을 이용하려면 어짜피 예전이나 지금이나 해당주제를 이해해야 하고 각자의 상황에 맞게 응용해야 한다는 것입니다. 아무도 가르쳐 주지 않습니다. 오직 찾는자만 우여곡절 끝에 희망의 끄트머리를 잡고 도전하고 얻는다는 것입니다.
이미지 프로세싱, 로보트 제어등을 하는데 C#으로 하면 못하고 C,C++ 로 하면 잘 할 수 있다. 이것은 거짓말 입니다. 누가 이미지 프로세싱, 로보트 제어라는 분야에 적합한 지식과 윈도우 프로그래밍 지식을 잘 가지고 있느냐가 잘 할 수 있다 없다를 판가름 지울 뿐 언어 자체는 무관 이란 얘깁니다.
여하튼 저는 1.기존 API 보다 .Net API 가 이해하기 쉽고 2.앞으로 MS에서 잘 지원 해줄거라는 막연한 기대(내가 MS 관계자가 아닌 다음에야 어떻게 전폭적인 지원을 한다고확신을 할 수 있으랴...) 라는 판단에서 .NET 으로 전향 했으며
C#을 1년 정도 사용 했습니다. 이제 과장 정도 되어서 직접적인 코딩은 거의 하지 않아서 아직도 문법은 생소하며 반복문 조건문을 쓸 정도 입니다.그전에는 이곳에서 C++ Builder 의 지식을 많이 이해하려고 노력 했으며 아직도 정이 남아 있어서 이곳을 자주 들릅니다.
기존에는 프로그래밍 하기전에 C로 F/W 을 만들고 이 F/W 위에 반복문 조건문을 했습니다. 지금은 C#으로 F/W 을 만들라고 시키고 그 위에 반복문 조건문만 씁니다. C#을 쓰던 안쓰던 엔드 유저 입장에서는 피부로 느끼기 어려운 변화만 있을 뿐 입니다. 하지만 분명한건 C++ 보다는 쉽고 편하다는 점 .. 그리고 반대하시는 분도 있겠지만 나름대로 생산성도 높다는 점을 장점으로 추천 합니다.
너무 MS 를 미워(?) 해서 혹시 .Net 과 C#에대해 무작정 미워하시는 분이 있다면 판단에 많은 도움이 되시길바랍니다.
|