임프님은 댓글도 길어... ㅎㅎ 하지만 재밌네요.
특별히 반론으로 글을 쓰는 것은 아니지만... 그냥 제 개인적인 생각을 써 봅니다.
저는 요즘 MS를 보고 있노라면 약간 측은한 생각이 드는데요... MS가 뿌린대로 당하고 있다는 느낌입니다.
C#과 .NET에 대해 MS가 그동안 부각시키려 노력하던 것은 JAVA에 대한 기술적인 우위입니다만... 사실 개발자들이 개발 플랫폼이나 개발툴의 기술적인 우위만을 가지고 자신의 개발 환경을 결정해 왔다면 Visual C++는 6.0시절에 개발자들을 C++ Builder에게 다 빼앗기고 말았어야 정상입니다.
.NET은 항상 언어중립성에 대해 강조해 왔지만 그 핵심 언어는 managed C++가 아닌 C#이죠. MS쪽 개발자들이 항상 '진실'처럼 이야기하는... '프로젝트 성격에 맞는 개발툴 선정'은 사실 .NET 이전의 MS 개발툴에서나 '진실'이 될 수 있는 이야기였습니다. MS는 .NET 2.0을 발표하면서 C#의 언어스팩은 C++만큼이나 다양한 기능등을 추가했고 Win32가 완전히 배제된, 즉, .NET만이 존재한다면 더이상 MS가 이야기해온 '프로젝트 성격에 맞는 개발툴 선정'은 무의미한 이야기입니다. 언어를 어떤 것을 선택하건 똑같은 WinForm IDE를 사용하게 되죠. 즉, C# 하나만 가지고 게임, 어플리케이션, SI프로젝트, 수치해석, 웹개발 기타등등... 모든 것을 다 할 수 있게 되는겁니다. 물론 이는 VB도 마찬가지가 되겠지만... 수십년간 해 온 거짓말을 진실로 믿고 있는 사람들에게 그건 거짓말이었다... 라고 말하기도 어렵고, 참 난감해 보입니다. 한마디로 자충수가 돼 버린거죠.
사실 중요한 것은 프레임웍입니다. 흔히들 .NET은 플랫폼이다! 라는... VM이 핵심인 듯한 말로 진실을 가리는데... 생각해 보세요. 어차피 윈도우에서 돌아가는 .NET이 Virtual Machine에서 돌아간다는게 그렇게 중요한가요? 만약, .NET이 Java처럼 VM에서 돌아가지 않고 그냥 Win32기반으로 작성되면서 언어중립성을 확보했다면(마치 VCL처럼), 지금의 .NET과 전혀 다른 모습으로 다가올 것이라고 생각하십니까? 제가 보기엔 윈도우에서 뭔가를 개발하는 개발자에겐 똑같을 것이라고 생각합니다. 그냥 새로운 프레임웍인거죠.
VC++개발자가 BCB로 넘어올 때 문법이 차이가 나서 못 넘어오나요? 똑같은 언어이지만 프레임웍이 전혀 접근 방식부터 다르기 때문에 쉽사리 넘어오지 못하는겁니다. 만약 MS가 MFC를 진작에 포기하고(VCL이 처음 나올 즈음) VCL같은 .NET 비스무리한 구조의 프레임웍을 내 놓았다면 아마 .NET이 발표된지 5년이 된 지금쯤 대부분의 VC++개발자들은 .NET으로 다 넘어갔을지도 모릅니다.
즉, 반대로 얘기하면 C#이건 VB건 같은 프레임웍인 .NET을 쓰는 경우 문법의 차이는 큰 문제가 아닙니다. 파스칼과 C++의 차이보다도 극복하기 쉬울겁니다. 이런 상황이라면 언어 중립성은 사실 의미가 없어집니다. 언어 중립이 아닌 '프레임웍 통일' 이라는 표현이 오히려 올바른 것 같습니다.
이러한 이유 때문에 VB 개발자들이 VB.NET으로 넘어가느니 차라리 MS가 팍팍 밀고 있는 C#으로 넘어가는게 더 낫다고 하는 것이고 기존 MS개발툴을 이용해 온 모든 개발자들은 .NET으로의 이행은 모험에 가깝다는 느낌입니다. 결정적으로 임프님이 지적한대로 .NET으로 넘어가지 않더라도 충분히 먹고 살 수 있으니까요.
.NET 이전에 수많은 개발자들을 기만해온 그 전술은 .NET에서 손바닥 뒤집듯 정 반대의 이야기가 됐습니다. 사실 그동안의 MS의 논리는 자신들의 개발툴의 부족함을 합리화 하기 위한 뻔한 거짓말이었습니다. 이미 같은 시대에 Delphi나 C++ Builder는 전천후 개발툴로 손색이 없었으니까요. 성능이면 성능, 생산성이면 생산성, 어느 하나 뒤지지 않았습니다. 그러나 개발자들은 그렇게 진보적이지 않습니다.
사람들이 MFC와 VCL을 비교하는 것을 봅니다만.. 사실 같은 비교선상에 놓기 조차 어렵죠. 리어카와 자동차를 비교하는 느낌이랄까... 그럼에도 불구하고 VC++개발자들은 MFC도 잘 만들어진 프레임워크다, 윈도우의 구조를 이해하는데 도움이 된다, MFC도 생산성 좋다(?)는 이상한 논리로 계속 그 불편한 MFC를 편리?하게 써 오고 있습니다. 기술로 개발툴을 선택하지 않죠. 특히 MS는 그런 경향을 더욱 부추겨서 자신의 시장을 유지해 왔고 그 시장은 이제 MS스스로도 쉽게 허물 수 없는 공고한 시장이 돼 버렸습니다. 게다가 자신의 시장 뿐만 아니라 JAVA쪽도 너무 오래 방치한 나머지 쉽게 뚫고 들어갈 수 없는 공고한 시장이 돼 버린거죠. 진퇴양란이라고나 할까...
제가 보기에 MS가 .NET를 최단시간에 주류로 안착시킬 수 있는 유일한 방법은... .NET Linux 버전을 공식적으로 제작하고(발표라도 먼저...) VS를 .NET기반으로 새로 제작하여 Linux용 .NET기반에서 돌아가게 만드는 겁니다. 당연히 그럴리 없겠죠. 비스타에서 .NET버전 커널 기반 구현이 물건너 간 상황에서 완전한 주류로 안착되는데는 아무리 짧게 봐도 3~4년은 더 필요하지 않나 싶네요. IT쪽에서는 너무 긴 시간이죠...
|