본문 바로가기

내발자국[동호회]

[잡설] C#에 대한 또 다른 의견과 생각...


아래 규현님의 의견은 몇가지 부분만을 제외하고는 상당히 보편타당한
(그러기에 누구에게나 공감을 얻을 수 있는) 의견입니다.
다만, 또 다른 생각을 가진 이라는 점에서.. 저 그린 비의 잡설 역시
한 번 읽어봐 주시기를 바랍니다.
[자신의 의견과 색깔과 향만 달라도 반론!이라는 표현을 붙이는 흑백논리
에 빠져들고 싶진 않습니다. 다만 '또 하나의 생각'이라 표현해 주세요]

먼저 C#이 기존의 MS 언어들의 단점을 보완하는 솔루션으로 발전가능성.
-> 현재 사람들의 예상과 달리 MS측에서 C#을 구체적인 언어형태로 발전
시킬 수 있다면, 일반적인 자바프로그래머들에게는 또 다른 형태의
자바 솔루션의 구비가 될 수 있습니다. 반대로 복잡하고 비효율적인
MS의 언어형태의 개선도 이루어질 수 있구요. MS쪽 제품이기에 앞뒤도
돌아보지 않고 덥썩 도입하는 사람들도 다수 있고, 반대로 MS제품은
곧 죽어도 사용치 않는 사람들도 다수 있지요. 현재의 비베나 VC++의
문제점은 상당합니다. 직접 프로그래머입장에서의 그러한 비효율성은
MS의 Windows에 친화적인 제품을 위해서는 울며 겨자먹기로 비효율성을
감내하여 내어야하는 (품질지상주의와 반대로....) 문제점을 야기했지요.
일단 자바프로그래머입장에서 볼 때는 또 하나의 친 자바형태의 언어가
생기는 것은 손해볼 것은 없다고 판단됩니다. (자바진영 입장에서는
좋을 것이 없지만, VB2JAVA, Delphi2JAVA와 같은 형태처럼 C#2JAVA는
더 쉽게 나오겠지요) 이는 자바의 흥망성쇠와 자바프로그래머의 흥망성쇠가
또 다른 운명을 띄게 된다는 것을 뜻하기도 합니다. 극단적인 얘기로
자바가 망한다 하더라도 자바프로그래머는 C# 프로그래머로 쉽사리 변모할
수 있다는 점이죠. (개인적으로 자바하던 사람이 C++프로그래머로 변모하긴
너무 힘들다고 생각합니다. 구조적인 차이점이 아닌 효율성의 문제죠...
자바에 익숙해져버린 후엔 C++의 비효율성은 극악으로 다가옵니다...
눈뜨곤.. 바꾸지 못할 것 같을 정도로...)

그럼, C#은 자바의 보완형?
-> 현재 구조적으로는 C#은 자바의 보완형이라고 하지만, 실제 사용상으로는
그렇게 쓰이기 힘들게 되어 있습니다. 자바는 언어가 아닙니다.
많은 프로그래머들이 자바를 '언어'라고 오해하는 경우가 왕왕있던데...
규현님의 의견도 '언어'라는 관점에서 접근하는 바를 반대로 뒤집어보면
다른 생각들이 더 펼쳐질 수 있을 겁니다. 자바는 언어이상의 OS이며,
기반입니다. 자바가 언어이상의 파워를 지닐 수 있는 점은 여러가지 나열할
수 있지만, 그 기반은 뭐니뭐니해도 역시 플랫폼 비종속성입니다.

리눅서로서의 저 자신의 입장에서 리눅스를 한 번 씹어볼까요?
리눅스는 그 많은 프로그래머가 붙고, 그 많은 표준을 지켜내고, 그많은
플랫폼으로 이식이 되고 있지만, 면면을 들여다보면 인텔을 위한 또 하나의
OS라 할 수 있습니다. 리눅스에서의 X86의존도는 감히 90%를 넘는다고
단정지을 수 있습니다. 오늘 새벽 SGI 인디고2에 리눅스를 깔기위하여 열심히
검색을 해 보고 정보를 찾아보았건만 MIPS Cpu용 리눅스 바이너리들이 참으로
소수였으며, 디스트리뷰션은 아예 다들 준비 중이라고만 나오더군요.
HardHat 5.x라는 레드햇 5.0대의 형태를 따라간 이상한 배포판만이 존재하였
습니다. 이유는...? 초기 리눅스커널이 X86만을 기반으로 만들어져 있었기에
타 플랫폼으로의 이양이 늦어져버렸기 때문이죠. 아직도 AMD와 덜 친한
리눅스는 인텔 X86외에 사용자들에게는 더더욱 큰 아픔을 주고 있습니다.

하지만, 반대로 자바는 지금 다른 상황입니다. 제가 짚어가면서 찾았던
각 기종별 JVM의 발전수준은 감탄이 나올만큼 빠른 이식들이 되어가고
있습니다. 현재 PC관련 기종만 140여종의 JVM이 존재하며 EM/VESA기종의 경우
JDK v1.1.6 이후 새 JDK가 나오지 않고 있으며(IBM), BE와 AppleMac OS X의
경우 지금 JDK v1.3기준으로 이식되고 있는 것을 제외한 모든 기종에 JAVA 2
가 이식되어 있습니다. 그렇기에 더더욱 리눅스와 자바는 최강의 좌청룡,
우백호가 될 수 있는 것이겠지요. 이는 언어 이상의 OS, 이상의 또 다른
존재로 자바가 존재함을 입증하는 바입니다.

MS가 두려워하는 바는 바로 이 것입니다. 타 OS를 두려워하지만, OS와 상관
없이 업계가 요하는 기술을 적용해 내는 그 이상의 자바... 결국 자바의
존재감에 대한 두려움을 익히 MS는 겪어왔지요.

현재 MS가 밀고 있는 CORBA의 반대기술인 COM은 구체적인 솔루션으로써의
라인업이 구축되어 있지 않으나, CORBA는 J2EE의 도움으로 풀-라인업에
근접한 제품군이 구축되었습니다. 서버에서의 격차는 갈수록 늘어나고,
임베디드에서는 이미 자바군이 형성되어 버렸고...
현재로써 MS가 할 수 있는 자바를 흔들어 놓는 일 밖에 없지요.

그렇다면, 왜 MS는 C#으로 자바를 잡으려 하는가..?
-> MS의 전략은 매번 같습니다. 적어도 과거의 행실을 이어간다고 가정하면요.
파렌하이트 프로젝트로 SGI의 OpenGL기술의 도입 후 협상깨기,
리얼오디오 탑재 후 스트림기술 도입 후 협상깨기,
자바기술 탑재 후 자바기술 변형시키기,
넷스케이프외 인터넷기술 탑재 후 변형시키기,
자체의 솔루션은 절대 공개 안하기...
C# 역시 마찬가지입니다. 그들의 목적은 자바의 기능을 흡수한 또 다른 언어
가 아닌 자바프로그래머, 자바솔루션 회사들의 솔깃함을 요하는 것일 뿐이죠.
MS가 기술이 뛰어난 회사가 아닙니다. 다만 뛰어나게 보이게 하기 위한 방법을
알고 있죠. 바로 자체기술만을 고집하여 타 회사들을 고립시키는 방법을요.

C#은 자바의 또 다른 기회...
-> 그럼에도 불구하고, MS는 자바를 흔들기회를 이미 놓쳐버렸습니다.
3년전 자바를 처음 시작할 때 주변사람들이 하던 얘기들이 기억납니다.
'뛰어난 액티브X의 기술에 자바가 살아날 수 있을 거 같애...?'
지금 그런 얘기한 사람들 다 어디갔는지 궁금하네요...
자바와 리눅스를 반MS로 보는 편견들부터 먼저 우리 모두 걷어나가야할 듯
합니다. 자바, 리눅스, 그리고 여러가지 기술들.. 그리고 그 중 MS기술로
바뀌어야 하겠지. 리눅스와는 달리 자바를 선택한 사람들은 반MS이기에
자바를 선택한 간 큰 사람은 없습니다. 솔루션과 달리 프로그래머에게
선택된 프로그램언어는 밥줄이니까요.. 언어선택에 따라서 프로그래머는
밥값이 달라집니다. 만약 편함을 원한다면 전 VB나 델파이를 선택하겠습니다.
인터넷 기능요? VB로는 너무 어려워요. OCX 사주시면 해드리죠.. 라는 말을
하며 살았겠지요. 다만 현재의 자바프로그래머들은 좀 더 깊고 먼 안목을 지닌
이들이겠지요. 자바의 경량컴포넌트와 다른 윈도우즈의 중량컴포넌트 도입
등의 장점홍보는... 넌센스입니다. 왜 플랫폼 종속성을 배제한 X-Window가
현재까지 추앙받고 있으며, 왜 MAME가 ARM Strong와 WindowsCE까지 지원하는
게임에뮬레이터인지는 자바와 똑같은 답변을 드릴 수 있으니까요...
지금 자바를 공부하고, 칼릭스를 연구하고, 파이썬을 연구하는 이들 역시
그러한 안목있는 이들이라 생각합니다. 오리에게 백조란.. 이상하고 비정상
적인 또 하나의 오리입니다. 자신의 잣대로만 생각하는 틀에 갇혀계시진
마세요.

바라는 것 하나...
-> MS는 좋은 회사입니다. 문제는 최고는 아니란 거죠. 업계표준을 흔들고
경쟁사를 고사시키는 시종 정당하지 못한 방법을 사용하는 지극히 상업적인
회사에 대한 시선이 좀 더 다들 객관적이고 이성적이기를 바랍니다.
뭐든 반MS라 매도할 수 있는 잘못된 시선과 MS라면 고개를 젓는 바, 그리고
MS제품이라면 무조건 환영하는 어리석음을 이제는 버려야하지 않을까요...?
적어도 이 글을 읽는 이들은 프로의 세계에 발을 들인 이들이 아니었습니까?

PS) 예전에 자바기술 개발에 가장 반대하던 분이.. 개발자에서 패키지파는
영업을 하다.. 지금은 소식이 끊어져 버렸습니다. 뭐하고 계실런가요...
개발자에게 비전은 또 하나의 생명줄입니다. 멈춰서버린다면.. 죽음과도
같지요...

긴 잡설 읽어주셔서 감사합니다.

그린 비 ^.⌒★ 한창우(ANDRE518)입니다.