왜 .NET이 성공할 수밖에 없는가?
뭐... 제목이야 거창하지만. 짧게 의견을 적어보고자 한다.
그 질문에 대한 대답은 "쉽다"일 뿐이다.
뭐 있겠는가? 쉬우니 성공할 수밖에 없다. 이 사례는 쉽게 C++과 자바, C++과 VB에서 찾아 볼 수 있다.
개발자는 어찌되었든 간에... 대부분은 대학교에서 공부했거나 뜻한 바 있어 "학원"에서 배출된 경우가 대부분일 것이다. 사실 "기업" 내부의 필요에 의해서 양성되는 경우도 적잖이 있는 것으로 안다.
현상은 단순하다. 100명이면... 그중에 C++을 배울 수 있는 역량을 가진 사람이 몇 명이나 될 것이라고 생각하는가? 상대적으로 자바는 어떠한가? 매우 쉽다. 그걸로 끝이다. 매우 쉬울 뿐이었다.
기업은 시스템을 구축해야 함에 있어, 어려운 C++을 사용할 수는 없는 노릇이다. 대학에서는 학생들에게 무조건 어려운 언어만을 목표로 삼을 수는 없다. 알고리즘이 중요할 뿐이며, 그에 대한 도구로 훌륭한 자바 언어가 있을 뿐이다. 학원에선... 결국 기업이 요구하는 인력을 배출하는 것이 학원이다. 당연히 자바 인원이 많을 수밖에 없다.
과거, Microsoft는 VC++밖에는 없었다.
VB는 왜 성공하지 못했는가? 라고 질문하실 분이 계실 것 같다. 그렇다... 자바만큼이나 VB도 매우 쉽다. 그럼에도 불구하고 VB는 자바를 누르지 못했다. 그 이유가 무엇인가?
간단하다... VB는 언어가 쉬웠을 뿐이지, 프로그램하기에 쉽지는 않았다. 일례로 암호화를 해야 하는 등의 문제에서는 어쩔 수 없이 VC++의 힘을 빌어야 했다. 하지만 그 모든 것을 자바에서는 SDK로 제공하고 있다. (사실, 자바를 누르진 못했지만 VB의 시장 점유율은 결코 낮은 것이 아니다. 그러한 성과를 거두는 데에 있어 가장 중요한 역할을 한 것은 단지 "쉽다"는 특징 뿐이다.)
명확하다... 자바는 쉬웠고... C/C++에 낙오한 사람들(이 말에 찔리는 사람들도 적지 않을 것이라 본다.)조차도 자바는 쉽게 다가설 수 있었다.
플랫폼 독립적이니... 하는 그런 형식적인 말은 변명에 불과하다. 아는 사람은 다 알지 않는가. 벤더 종속적이라는 말을 빼먹진 말자. 종속의 대상만 다를 뿐이다.
다시 물어보자. 왜 .NET이 성공할 수밖에 없는가?
이해 되는가? 이제 C/C++에 지친 사람들은 선택이 2개로 늘어났다. 예전에는 오직 "자바" 하나뿐이었다. 자바는 .NET이 나오기 전에는, "성장"할 수밖에 없었다.
자바와 .NET 중에 어느 것이 더 쉽냐는 것에 대해서는 우열을 가리기 힘들 정도이다. 이젠... 조직력과 단결력이 그 힘의 균형을 깰 수 있을 것이다. (국가 또는 대기업 차원에서의 제한을 MS에 명시적으로 가하지 않는 한.)
오픈 소스 진영으로 인한 의사 결정의 지지 부진, 그로 인한 각 벤더들의 무분별한 표준 확장이라는 부작용을 낳고 있는 "자바"와... 오직 하나의 목표를 가지고 질주하는 "MS"가 내놓은 ".NET"은... 어느 것이 승자가 될지는 필자로서는 너무나 예측하기 쉬운 문제일 뿐이다.
또한, 웹 서비스의 출현으로, 이기종간의 호출 장벽이 허물어지고 있다는 것은... Microsoft에게 날개를 달아준 효과와 같을 것이다.
No | Writer | Date | Cnt. | Title | File(s) |
69 | 정성태 | 10/27/2006 | 5672 | .NET : 1. Typed DataSet 에서의 ExcludeSchema 사용 | |
68 | 정성태 | 1/27/2007 | 5732 | Vista : 2. Elevate through ShellExecute | |
67 | 정성태 | 10/22/2006 | 5558 | Vista : 1. Programmatically determine if an application requires elevation | |
66 | 정성태 | 9/22/2006 | 4835 | Tip/Trick: UpdateProgress Control and AJAX Activity Image Animations | |
65 | 정성태 | 9/15/2006 | 9913 | Tip/Trick: Enabling Back/Forward-Button Support for ASP.NET AJAX UpdatePanel | |
64 | 정성태 | 2/23/2007 | 4616 | Why are NameValueCollection lookups slower than Hashtable? [Kim Hamilton] | |
63 | 정성태 | 8/30/2006 | 4512 | WinFormResizer for .NET 2.0, v.2.0.0020.3 Released! | |
62 | 정성태 | 8/21/2006 | 4326 | Stylistic differences in using | |
61 | 정성태 | 8/5/2006 | 5153 | Detecting Information Card Support (CardSpace!) in a browser | |
60 | 정성태 | 7/22/2006 | 5300 | JonGallant WebControls v1.0 - ScrollableContainer | |
59 | 정성태 | 3/2/2006 | 6194 | .NET이 왜 성공할 수밖에 없는가? | |
58 | 정성태 | 10/5/2005 | 5385 | 한국 MSDN - 홈지기가 번역한 MSDN Magazine 자료 | |
57 | 정성태 | 5/5/2005 | 4759 | 구구단 프로그램을 제외하고, 벤더종속적이지 않은 프로그래밍 언어가 있나요? | |
53 | 정성태 | 3/4/2005 | 6088 | [마소 연재 기사: 2004-05] 특집 X-Inernet : 닷넷 스마트 클라이언트 [4] | 1 |
52 | 정성태 | 3/4/2005 | 6350 | [마소 연재 기사: 2004-04] 실전!강의실 - IE에서 닷넷 스마트 클라이언트 개발 3 | 1 |
51 | 정성태 | 3/4/2005 | 6729 | [마소 연재 기사: 2004-03] 실전!강의실 - IE에서 닷넷 스마트 클라이언트 개발 2 | 1 |
55 | 정성태 | 3/30/2005 | 6027 | [추가] 기본 보안만으로 구현하는 스마트 클라이언트 이벤트 구현 | |
50 | 정성태 | 3/4/2005 | 9445 | [마소 연재 기사: 2004-02] 실전!강의실 - IE에서 닷넷 스마트 클라이언트 개발 1 [3] | 1 |
49 | 정성태 | 9/7/2006 | 8650 | RSA 공개키/개인키 암호화, DES 암호화, MD5 단방향 해시 암호화 클래스 (C#) 2002.09.25 | 1 |
48 | 정성태 | 7/17/2003 | 6660 | C# 으로 만든 Base64 인코딩/디코딩 클래스 (C#) 2002.09.24 | 1 |
47 | 정성태 | 7/17/2003 | 5427 | C# 으로 만든 DLL 을 Managed C++ 에서 이용하는 예제 (C#, Managed C++) 2002.08.01 | 1 |
46 | 정성태 | 7/17/2003 | 5781 | .NET으로 만든 COM+ 객체를 HTML에서 사용 (C#, COM+) 2002.06.10 | 1 |
45 | 정성태 | 7/17/2003 | 5847 | COM+ 객체 원격 접근예제 (VC 6.0, ATL, COM+) 2002.05.31 | 1 |
44 | 정성태 | 7/17/2003 | 5763 | Win32 API Hook (VC 6.0, ATL) 2002.05.12 | 1 |
54 | 정성태 | 3/21/2005 | 4925 | [추가]: 최근 나온 소개된 관련 기사 | 2 |
43 | 정성태 | 7/17/2003 | 6785 | 탐색기 Namespace Extension 컨테이너 (VC 6.0, ATL) 2002.03.24 | 1 |