도대체 닷넷이란 무엇인가? 작년 이맘 때부터 난리를 치면서 자신의 드러내고 싶어한 그 넘의 닷넷은 도대체 무엇이길래.. 이렇게 많은 개발자들의 머리속을 불안하게 맴돌고 있는 것일까?
새로운 OS 인가? 새로운 환경인가? 아니면... MS의 파워게임인가?
그 정체는 이제 곳 밝혀집니다.!! 채널 고정... 커밍 쑤운.... 크리스마스 특집...채널 고정!!!!
어찌됐던 닷넷이라는 단어가 등장하여 한번 이 자그마한 나라 한국을 뒤집어 놓기 시작한지도 어언 1년이 넘어서고 있습니다. 계산상으로는 2000년 7월즈음하여 그 베일을 스스로 벗었으니까요 ^^. 놀라운 것은 지금까지 등장한 여타 개발 툴이나 OS들과는 달리 모든 MS 관련 개발자들이 베타버전부터 이 닷넷이라는 것에 모든 신경을 곤두 세우고 있다는 것이죠...(시간이 지나면 지금을 생각하며, 미소를 지을런지도...)
물론, 이에는 MS의 대단한 마케팅력과 엄청난 자금력을 투자한 무료 교육이 한 몫을 한 것도 있기는 합니다만, 실제로 그만큼 MS는 낫넷이라는 전략에 자신이 있다는 것이고, 뚜껑을 열어보니(모락모락 김이 나죠?) 닷넷이라는 것은 개발자들을 사로잡을 만한 여러가지 획기적인 전략임에 모두들 공감하고 있는 것 같습니다.
사실, 저도 닷넷이라는 것을 알아가면 알아갈 수록 "대단하긴 하다" 라는 말을 연달아 외치고 있답니다.. 마치 80Kg 의 육중한 몸으로 덩크를 시도하는 척하다 더블 클러치로 말도 안되는 골을 성공시켰을 때의 대단한 느낌보다 1억배는 더 몸이 부르르 떨리는 느낌이라고나 할까요? (참고로 실제 저는 매주 일요일 낮 2시-4시 반포 아파트 단지내의 농구코트에서 농구를 하구 있습니다. 반포 현대아울렛 맞은편이지요. 덩크는 아직도 먼나라 이웃나라 이야기입니다)
그렇담, 여러분은 지금 닷넷이 궁금한 것이~~구~~운~요..
그럼 오늘은 닷넷에 대하여 한번 알아볼~까아아요~~
개념적으로 닷넷이라는 친구의 소개를 잠시 읽어보면, 욘석은 윈도우 서비스와 API에 대한 프로그래밍 인터페이스 기술을 통합하는 대단한 친구라고 하네요. 어쩌면 삼국지의 조조와 비견될 수 있고, 농구계의 마이클 조던과 같은 그러한... 혜성(?)처럼 나타나 모든 것을 통합, 평정하고자 하는 말이지요.
닷넷은 일단 개념적인 전략이라는 것을 알아두십시요. 닷넷이 뭐예요? 라고 묻는 것은 사랑이 뭐예요? 라고 묻는 것처럼 너무나도 포괄적인 질문입니다. 전략이라 함은 역시나 전략입니다. 실제로 이 전략을 표면화 시키는 것은 여러가지 따라오는 기술들이라고 볼 수 있겠죠? 그러한 기술들에는 다음과 같은 것들이 있습니다.
COM+ 컴포넌트 서비스, ASP.NET 웹 개발 프레임워크, XML과 객체지향 설계지원, WSDL, UDDI등 웹 서비스에 대한 지원, 인터넷 기반에 대한 파워풀한 지원등이죠.
개발자의 측면에서 보면, .NET이라는 것을 닷넷 하부구조(.NET Infrastructure)와 같은 의미로 받아 들일 수도 있는데요. 왜냐하면, 바로 이 인프라스트럭쳐가 의미하는 것이 어플리케이션을 보다 견고하고, 확장 가능하고, 분산처리가 가능하게 만들고, 이를 실행하기 위한 환경을 만들어 주기 위해 사용하는 모든 기술들을 의미하는 것이기 때문이죠. 위에서 말한 기술들이 바로 그러한 모든 기술의 일부이고 말입니다.
소프트웨어로 서비스를 제공하자는 닷넷의 전략. 이는 기존의 시장의 판도를 한번 이상은 과격하게 흔들만한 매력적인 내용들을 담고 있습니다. 안정성, 보안, 통합성, 확장성등등과 관련되어 현재까지 나와있던 대부분의 문제점들을 상당히 해갈시켜줄 수 있는 기반이 되어줄 것으로 기대가 되어지고 있죠.
개발자들에게도 엄청나게 편리한 세상이 앞으로 펼쳐진다고도 볼 수 있습니다. 물론, 이 말에 동조하지 못하시는 분들이 있죠. 그 편리한 세상을 만나기 위해서는 지금부터 새롭게 다시 모든 것을 공부해야 할 것처럼 느껴질테니까요. 하지만, 그렇게 생각이 든다면 어쩌면 조금은 우리 나태해진 것은 아닐까요?
사실 프로그래머인 우리들은 언제나 새로운 것을 공부하는 직업임에 틀림이 없습니다. 랭귀지도 년마다 새로운 버전이 나오고, 우리는 그들을 핸들링하는 법을 매년 새롭게 공부합니다. 그렇게 지난 날들이 흘러왔듯이 앞으로도 우리네 프로그래머의 인생은 그렇겠지요. 단지, 이번이 조금은 더 버겁게 느껴질 수 있는 것은 지금까지는 단지 업그레이드 수준으로 공부하면 되었던 것을 이제는 완전히 새걸루 바꾸어치워야 할 것 같기에 걱정이 되는 것이겠죠?
하지만, 고달프기는 해도 재미있지 않나요? 이러한 프로그래밍?? 상당히 매력있는 일 아니겠습니까?
이제 우리앞에는 닷넷의 세계가 원하던 원하지 않던 펼쳐지고 있습니다. 그렇다면, 불만을 가지고 이를 받아들이지 않던가, 웃으면서 받아들이던가 둘중의 하나의 자세가 가장 바람직하다고 보여집니다. 불만을 가지고 이를 받아들인다면 개발자인 우리만 손해입니다. 어차피 해야할 것이라면(혹은 하기로 마음 먹었다면) 웃으면서 긍정적으로 미래를 바라보면서 접근해 나가는 것이 바람직하지 않을까 합니다.
"에이... 좋아 하긴 하겠어.. 어라.. 또 에러야? 뭐 이래? 짜증나..." 라는 자세보다는...
"좋은데.. 한번 해볼까? 어? 에러가 나네. 세상에 완전한 것은 없으니까. 그러나, 이런 것도 되나니 멋진걸.." 이라는 자세가 훨씬 나아보이지 않나요? (참고:태오는 MS 직원아닙니다. 간혹 오해하시는 분들이... -_-;)
그렇다면, 닷넷을 위한 프로그램은 어떻게 하는 것이고, 어떻게 하는 것이 닷넷 프로그래밍인가? 그것은 기존의 것들과 얼마나 다르며, 뭘 어떻게 공부해야 할 것인가? 가 바로 여러분이 이 시점 궁금해질라구 하는 것것이리라 느껴집니다. 이제 곧 그러한 이야기를 나누도록 하겠습니다.
일단, 우리가 닷넷 프로그래밍을 하기 위해선 .NET을 사용할 수 있는 기반(플랫폼)이 구성되어져야 합니다. 이를 위해서 MS는 현재 .NET 프레임워크라는 환경을 제공하고 있지요. 이는 여러분의 기존의 윈도우 위에서 운영될 수 있도록 제공되고 있습니다. 물론, 이 강좌를 쓰는 현재시점에서는 Beta 2 버전이기는 하지만, 어느정도 공부할 수 있는 환경은 충분히 무료로 갖출 수 있는 상태라는 것이지요.
닷넷 프레임워크를 설치한다고 해서, 기존의 여러분의 윈도우를 밀고 다시 설치하거나, 뭔가 특별한 세팅이 필요하거나 하지는 않습니다. .NET 플랫폼은 기존의 OS위에서 제공되는 것이니까요. 제가 추천하는 OS는 물론 아직까지는 Windows 2000 서버군입니다만... 반드시 2000이 아니어도 문제는 없을 것입니다. .NET Framework을 지원하는 플랫폼으로 Windows 95/98/ME/NT가 있으니까요. 하지만, 요즘 분위기 아시죠? 추천은 더 이상 추천이 아니라.. 그게 결국은 제대로 배울 수 있는 최소권장사양인 분위기라는 거... ^^
또한, 처음 .NET을 접하는 사람들이 헛갈리기 쉬운 부분중에 하나가 .NET 이라는 단어와 .NET 프레임워크라는 단어인데요. .NET은 위에서 설명드렸다시피 소프트웨어로 서비스를 제공하려는 MS의 새로운 전략을 의미하는 것이구요.
.NET Framework는 웹 서비스 및 기타 응용 프로그램의 작성, 배포 및 실행을 위한 환경을 의미합니다. 공통 언어 런타임(Common Language Runtime:CLR), Framework 클래스 및 ASP.NET의 세 가지 주요 부분으로 구성되어지는 환경을 의미한다고 알아두시면 되겠습니다.
그러므로, 우리가 닷넷 프로그래밍을 하고 싶다면, 혹은 ASP.NET을 하고 싶다면.. 그렇다면, 그러한 것을 구동시키고 제작할 수 있는 환경인 .NET Framework 를 설치하면 된다는 이야기입니다.
이것은 CD 4 장으로 제공되어지고 있구요. 그 안에는 VS.NET 이라는 상당히 훌룡한 닷넷 프로그래밍용 툴도 들어있습니다. 이러한 CD는 세미나장이나... .NET 관련 서적에는 어김없이 들어있으니 구하기는 어렵지 않을 것입니다. 또한, MS의 닷넷 사이트에서도 무료로 다운로드가 가능하지요.. 용량이 어마어마해서 그렇지... ^^
자.. 어쨋든 상당히 길고 난잡한 이야기의 결과. 우리는.. 닷넷은 MS의 새로운 전략이고, 이 전략에 맞는 멋진 새로운 프로그래밍을 하기 위해서는 닷넷 프레임워크가 필요하다는 것. 그리고 이것은 무료라는 것까지 알아보았습니다.
그럼, 이제 닷넷 프로그래밍을 하면 기존과 달리 어떤 것이 좋아지고, 뭐가 달라진다는 것인지.. 그리고 그렇게 멋진 것을 만들라면 뭘 어떻게 공부하고 만들어야 하는지를 알아볼 차례입니다.
현재 나와있는 많은 .NET 서적들에서는 .NET을 받아들일 경우 예전에 비해 나아지는 점들을 자세히는 설명하고 있지만, 프로그래밍 경력이 그리 오래지 않은 우리들에게는 어려운 이야기들처럼 받아들여지는 것이 대부분일 것입니다. 대부분의 개선사항들은 상당히 대단한 것임에는 틀림이 없지만, 우리는 그러한 것을 모두 경험해 보지 못하였기에(VC++, VB, java등을 섭렵하여 각각의 언어로 중급 프로그래밍이 가능한 사람이 그리 많다고 생각하지는 않고, 그러한 사람이 제 사이트에서 이 강좌를 읽고있을 것이라고는 더더욱 생각하지 않기에 이렇게 글을 쓰고 있는 점 양해바랍니다) 그러한 .NET 에서의 개선사항들이 읽으면서 바로 피부로 와 닿을 것 같지는 않네요. 그렇다고 모르고 넘어가도 된다는 것은 아니랍니다. 분명히 그러한 부분들을 나중에라도 이해하여야 할 것임에는 틀림이 없죠. 하지만, 여기서 다루기에는 넘 무겁잖아요
여기서.. COM 에서는 이러한 장점이 있는 반면에 저러한 단점이 있었는데, .NET은 그러한 컴포넌트의 하부구조를 제공함으로써 요로코롬 끝내주게 바뀌었다. 대단하지 않은가? DCOM의 경우도 그러한 단점이 있는데, 이것이 XML과 SOAP을 통해서 어쩌구... 하면... 여러분은 이 글을 별루 읽고싶어지지 않을 수도 있을 겁니다.
해서, 그러한 딱딱하지만 필요한 부분들에 대한 이야기는 전문서적을 반드시 참고! 하시기 바라구요. 여기서는 모두가 공감할만한 이야기를 하나 함으로써 .NET 프로그래밍이 얼마나 재미있어지고, 즐거움을 우리에게 안겨줄지 정도만 이야기 해보려 합니다.
제가 개인적으로 좋아하는 부분은 바로 "언어 통합성"에 관계된 부분입니다. 무슨 말인고 하니 이제는 언어의 장벽이 무너질 것이라는 이야기입죠. 다시 말해, 그동안 VC++ 프로그래머들에 의해 조금은 무시되어 온 VB 개발자들이나, 프로그래머 취급을 받지 못했던 스크립터들도 이제는 같이 어깨를 나란히 하고.. 자기가 잘 하는 언어만 계속 공부하면 된다는 이야기입니다.
사실, MS의 언어라 하더라도 각각의 언어의 특색이 있어서, VC++의 경우 상당히 막강하지만, 다루기가 넘 어려웠고, VB의 경우 배우기는 쉬운 편이지만 뭔가 모자란 듯한 취급을 받아왔었죠. 가볍고 성능이 뛰어난 어플리케이션을 작성하기 위해서는 개발기간이 넉넉하다면 VC++을 사용하는 편이었고, 조금은 무겁더라도 짧은 개발 기간내에 안정적인 솔루션을 만들기 위해서는 VB는 선택하기도 하였습니다. 빠르고 안정적이며, 클라이언트 중심적인 인터넷 솔루션을 위해서 또한 자바도 충분히 많이들 사용하였구요
나름대로의 언어들이 특색과 장점을 가지고 있었기에... 어떤 프로그램에 어떤 언어를 사용해야만 한다는 규칙같은 것은 존재하지 않았지요.. 그러다보니 VC++ 개발자와 VB 개발자사이에도 안 보이는 갈등이 조금씩 있어왔었던 것이 사실 아닌겨? 글치 않아요?
또한, 간혹은(사실은 의외로 자주) VC++과 VB를 섞어서 사용할 수 밖에 없는 경우도 많았습니다. 그러다보니 두 언어로 만들어진 각각의 컴포넌트들 사이에서 문제점이 도출되는 경우도 상당히 빈번했구요. 게다가 여러분도 가볍게라면 COM 이라는 것을 접해보셨겠지만, COM을 업그레이드할 경우의 버전문제로 인해 DLL 지옥이라는 것도 자주 만나보셨을 겁니다.
자꾸 말이 길어지는데요. 딱!! 말하자면, 더이상 COM과 관련된 DLL 지옥같은 문제랄지, 언어간의 장벽이랄지 이런 것이 모두 사라지게 되었다는 것입니다.
모든 언어는 통합되어지게 되었고, 여러분은 이제 맘에 드는 하나의 언어만을 선택해서 그것만을 열심히 공부하면 되게 되었습니다. VC++을 해야 돼? VB를 해야 돼? 어떤 것을 해야 잘 선택했다는 이야기를 들을까?를 더 이상 고민하지 않아도 된다는 이야기이지요.
새롭게 등장한 C#, VB의 닷넷버전인 VB.NET, 그리고 Managed C++, 그리고 그 외에도 서드파티 업체에서 준비중인 여러 잠수했던 언어들(Pascal, Cobol등등) 중 맘에 드는 것 하나만 제대로 하면 모두 같이 나누어서 사용할 수 있게 되었다는 것입니다.
또한, 이미 만들어져 있는 컴포넌트로부터 상속하여, 확장할 수도 있게 된답니다.
이거 특히 맘에 들죠. 전에 근무하던 사람이 업로드 컴포넌트를 하나 만들고 퇴사를 했는데, 그 컴포넌트에 기능을 조금 더 덧붙여서 근사하게 바꾸고 싶을 경우, 원래의 소스가 없다면 그것은 불가능한 일이었습니다. 혹은 그 컴포넌트가 특정 작업 수행시 에러가 날 경우 원본소스가 없다면 마찬가지로 그 에러의 처리는 어려운 일이었습니다. 한번 나는 에러는 그를 사용하는 이상 계속 날 것이고, 그것을 사용하는 측에서 예외처리를 하기는 어려운 일이었지요. 그 컴포넌트를 상속 받아서 뭔가를 새로이 추가하거나 수정하고자 할 경우 반드시 원본이 필요했으며, 아니면 새로이 작성을 해야했지요. 달랑 DLL만 가지고는 그 컴포넌트를 사용할 수만 있을 뿐, 그를 수정하거나 기능을 추가하거나 할 수가 없었다는 이야기이지요.
하지만, 이제 .NET에 들어서면 그런 것은 문제가 되지 않습니다. 또한, 다른 사람이 C#으로 그 컴포넌트를 작성했던, VB.NET으로 작성했던 그것은 전혀 문제가 되질 않습니다. 모든 것이 하나의 중간언어로 컴파일, 탈바꿈... 바로 그렇게 되었기 때문이지요.이 부분에 대해서는 차후 알아보게 됩니다)
이러한 언어의 통합은 CTS(Common Type System) 이라는 닷넷 프레임워크의 규칙을 통해서 가능하게 됩니다. 즉, 닷넷은 모든 타입들의 명세를 확실하게 정해놓고 있으며, 언어가 무엇이던지 그 타입들을 같이 사용하도록 한다는 이야기입니다. 각각의 언어는 작성하는 문법만의 차이가 존재할 뿐, 내부적으로 같은 형태의 타입들을 사용하게 됩니다. 사용하는 데이터의 타입이 모든 닷넷언어에서 일치한다는 것입죠. 모든 타입의 기본이 되는 것은 System.Object 이라는 사실도 기억해둘만한 이야기입니다. 이러한 부분에 대한 자세한 이야기는 여러분이 닷넷언어를 공부할 경우 자세히 배울 수 있는 것이니 참고하십시요.
사실상 각각의 .NET 언어는 .NET 에서 제공하는 Base Class Library(기반 클래스 라이브러리)의 클래스들을 가져다가 사용하는 것에 불과합니다. 언어자체가 가지고 있는 능력이라는 것은 사실 이러한 클래스들을 만지작거리는 것에 불과하며, 기반 클래스 라이브러리 즉, Base Class Library 가 없다면 아무 것도 할 수 없다는 것입니다.
다시 말해, 닷넷 세계에서의 언어(예를 들면 C#)들은 사실 문법적인 인터페이스에 불과한 것입니다. 각각의 언어들은 변수선언과 자신들만의 문법차이를 제외하고는 모든 코드에서 이 BCL(Base Class Library)을 사용해야만 하기에, 이론적으로는 어떤 언어를 사용해도 사실상 내부적으로는 같은 기능을 발휘한다는 것을 유추해 볼 수 있습니다.
굳이 예를 들자면, 얼마전에 나온 기아의 옵티마와 현대의 뉴 EF 소나타를 예로 들수 있는데요. 이는 겉껍데기만 다를뿐 사실 속은 완전히 동일하기 때문입니다. 제가 들은 말로는 먼저 옵티마를 통해서 성능테스트를 하고, 그것이 좋다고 판단된 다음, 껍데기만 바꾸어서 뉴 EF 소나타가 나왔다고 하더군요. 물론, 믿거나 말거나이기는 합니다만.... 이 예는 지금 닷넷에서의 경우를 이해하는데 도움이 될 것 같습니다.
옵티마의 껍데기는 C#, 뉴 EF 소나타의 껍데기는 VB.NET .. 그리고, 실제 내부엔진이나 골격은 BCL 이라는 이야기가 되겠죠? ^^
해서, 정리하면 우리가 어떤 닷넷 언어를 써도 상관이 없는 것은 어차피 언어의 차이는 문법의 차이일뿐, 내부적으로는 사실 .NET 프레임워크에서 제공하는 기반 클래스들을 가져다가 사용하는 것이기 때문이라는 것입니다.
대부분의 전문서적에서는 이 부분을 눈으로 직접 보여주기 위해서, C#, VB.NET, Managed C++ 로 각각 같은 기능을 하는 DLL(MSIL)을 만든 다음, 이를 ILDASM.exe 라는 툴로 그들의 원시코드를 비교해서 보여주고는 합니다. 분명 작성한 코드는 각각 다르고, 컴파일도 각각 하였지만, 원시코드는 거의 대동소이 하며, 같은 데이터 타입들로 구성되어져 있는 것을 확인시켜주는 것이지요.
이 자리에서 그것을 보여드리기는 여간 어려운 일일 수 있지만 대신 참고서적은 알려드리도록 할께요.
오렐리사에서 나온 '닷넷 프레임워크 에센스' 입니다. 번역서도 이미 나와있어요. 단, 번역이 매끄럽지 못해서 읽으면서 기분이 좀 나쁠 수는 있습니다. 하지만, 역자들도 무척이나 고생을 하는 것 같으니 너그러운 마음으로 읽어보시면 될 것 같아요.
또한, "Inside C# (정보문화사 역/Microsoft)" 입니다. 정말로 훌룡한 책이지요.
또 하나, "C#과 .NET 플랫폼(인포북/Apress)" 입니다. 이 책은 아마존 서평 별 4+1/2를 받은 엄청난 서적이며, 국내에서도 많은 개발자들에게 좋은 서평을 얻고 있습니다. 쫌 두껍습니다..^^
책에 대한 추천은 이만큼 하구요.... 다시 강좌로 돌아가서... 그렇다면, 닷넷이라는 통합환경은 어떤 구조를 하고 있을까?
이를 위해하기 위해서는 .NET 세미나에서 빠지지 않고 거론되는 다음 3가지에 주목할 필요가 있습니다. 그것은 바로 Common Language Runtime(CLR), Common Type System(CTS), Common Language Specification(CLS) 입니다.
이 중에서 가장 무게있게 받아들여지는 것은 역시나 CLR 이고, 여러분은 .NET 책을 볼 경우 큼지막하게 등장하는 녀석이 바로 이것일 것입니다. CLR은 .NET 타입들의 위치를 지정하고, Load 하고, 관리하는 역할을 담당합니다. 자동으로 메모리를 관리해 주고, 언어를 통합할 수 있도록 하는 것 모두가 바로 이 CLR이 맡고 있는 역할이지요.
CTS는 .NET 에서 지원하는 모든 타입을 다루는 녀석으로, 모든 닷넷 언어는 이를 통해 강력하게 데이터의 타입들을 다룰 수 있게 됩니다. 기본적으로 모든 타입의 기본이 되는 타입은 System.Object 인데, 이에 대한 구체적인 이야기들은 여러분이 닷넷 언어를 공부할 경우에 알게 될 것이랍니다. 하고보니 위에서 했던 이야기를 또 했네요.. 죄송 -_-;
CLS는 여러분이나 제 3자가 타입을 작성하고자 할 경우, 그 기준이 되어주는 일종의 명세서라고 보시면 됩니다. 해서 이 명세를 통해서 여러 언어들이 닷넷을 지원하도록 만들수 있는 것이지요. 여러분이 실력만 된다면 이 명세에 맞추어 닷넷 지원 언어를 만들수도 있다는 이야기가 됩니다. 현재 닷넷을 지원하고자 하는 수많은 언어들이 준비중에 있다고 하죠. 파스칼, 코볼, 파이썬등등.. 한번쯤 들어보았음 직한 언어들이 모두 닷넷버전을 제작중에 있다고 하네요.
.NET이 CLR이나 CTS, CLS 의 중요한 삼총사를 가지고 있지만 이 외에도 또한 멋진 것으로 기반 클래스 라이브러리도 제공해 주고 있습니다.(앞에서 흥분하며 이 이야기를 했었죠? ^^) 이것은 개발자인 우리에게 민감한 부분일터인데, 이 Base Class Library는 닷넷 언어에서 사용이 가능한 기반 클래스의 라이브러리를 제공하는 역할을 합니다. 즉, 파일 I/O, 그래픽 출력, 데이터베이스 I/O, 보안, 쓰레드등과 관련된 다양한 기능들을 이미 포함하고 있지요. 이 이야기는 우리가 실제로 어플리케이션을 만들 때 필요하다고 느낄만한 대부분의 기능이 이미 구현되어져 있고, 우리는 그것들을 사용해서 쉽게 프로그래밍이 가능하다는 것을 의미합니다.
ASP에서 버겁게 느껴졌던 파일 업로드 부분이 ASP.NET 에 들어서면 가벼운 몇 줄의 코딩만으로 해결이 되는 것도 그러한 부분중에 하나라고 볼 수 있지요. ASP 에서 파일을 다루기 위해서 스크립트 런타임인 FileSystemObject 를 썼었지만, 닷넷에서는 파일과 관계된 기반 클래스가 또한 제공되기에 좀 더 뛰어난 성능으로 쉽게 파일을 핸들할 수도 있답니다. 데이터베이스도 마찬가지이구요.
이러한 내용을 그림으로 간단히 보면 .NET의 핵심이라 볼 수 있는 CLR과 기반 클래스 라이브러리는 다음처럼 구성되어져 있다는 것이랍니다.

좋다. 이겁니다. 잘은 모르겠지만, 닷넷이란 것과 닷넷 프로그래밍이 여하튼 좋기는 한가보다라는 것, 그리고.. 닷넷을 위한 환경이 어떻다라는 것은 이해가 조금씩 되려하는 것 같습니다.
만일, 조금 더 구체적인 비교와 설명, FAQ 가 필요하신 분이 있다면 MSDN의 다음 자료를 한번 읽어보도록 하세요. 물론, 한글이구요. 도움이 될만한 글일 것임을 확신합니다.
http://www.microsoft.com/korea/msdn/library/techart/faq111700.htm
그렇다면, 이제 필요한 것은 무엇인가? 바로 닷넷 언어에 대한 학습입니다.
저는 역시나 C#을 추천합니다. 물론, 저도 새롭게 공부를 해야합니다만, 의외로 재미있는 편입니다. 예전에 Java를 할 때 Kawa 라는 툴을 가지고 벅벅거리던 기억을 떠올리며 나름대로는 공부하고 있는데, 재미가 솔솔한 편입니다.
사실 C# 에 대해서는 말들이 많은 편이죠. 자바의 모방이라느니.. MS가 자바의 위대함을 인정했다느니.. 하지만, 그것은 그런 편싸움을 좋아하는 사람들이 즐길만한 이야기이고, 싸움을 좋아하지 않는데다가 새로운 언어를 만나서 즐겁게 공부해보려는 마음이 생긴 저에게 있어서는 상당히 매력이 있는 언어로서 받아들여지더군요.
따지고 보면 java 도 C++의 발전형이니, 그러한 논란자체를 즐기기 보다는 뛰어난 것이 인정되는 부분에 맞추어 열심히 공부하면 되지 않을까 합니다. 물론, 자바도 C# 만큼 대단한 언어임에는 틀림이 없으니 자바를 좋아한다면 그것을 공부하면 되겠죠?
우리가 그렇게 핏대를 세운다고 해서, Sun사에서 서버라두 한 대 주는 것도 아닐 것이고, C#편을 들어 춤을 춰 준들 MS가 윈도우즈를 공짜로 줄리도 없지 않겠습니까? 자기가 재미있는 것을 좇아 프로그래머가 된 우리들이라면 재미있으면 그만이 아닌가 싶어요. 물론, 이 부분은 생계도 연관이 되기는 하는 부분이기에 남일처럼 이야기할 부분은 못 되지만... 그래도, 편싸움에 휘말려 공부를 뒷전으로 하는 것은 아무래도 아닌 것 같죠??? 글쵸?? 그렇지 않나요??? 응응??? ^^
이번 강좌는 참으로 사설도 많네요. 하지만, 어쨋든... C#은 공부할만한 가치가 충분합니다. 왜? 이 언어는 VB.NET의 장점과 Java의 장점, 그리고 VC++의 장점을 고루 섞어서 양념한 언어이니까요. 저도 요즘 이 언어를 공부하느라 시간을 보내고 있습니다만... 솔직히 말해서 아직까지는 속 시원하게 이 친구의 깊은 곳까지 보여주고 있는 책은 없네요.
내년 1월에 정보문화사에사 Professional C#의 번역서가 나온다고 하니 그것을 기대해 볼만도 하구요. 국내서라면 뭐... 서평이 좋은 몇몇 책들이 있으니 그들을 보셔도 좋을 것입니다. 또한 무료강좌를 잘 찾아다니며 공부하는 것도 좋은 방법이지요. ^^
다들 아시는 이야기이겠습니다만, 닷넷 언어는 C#만 있는 것이 아니고, 여러가지 다른 것들이 있지만 그들중에 맘에 드는 것 하나만 제대로 하셔도 앞으로는 큰 문제가 없을 것 같습니다.(하지만, 미래는 아무도 모릅니다. 섣불리 장담할 수는 없겠죠??) 물론, 다 할줄 알면 좋겠지만, 제 주위에 계시는 고수분들을 보면, 여러가지를 잘하는 사람보다는 하나를 깊게 하시는 분이 고수에 자리에 오랫동안 군림할 수 있으며, Pay도 높게 받는 편임을 볼 때, 한 우물을 열심히 파는 것도 나쁘지는 않아보이네요 ^^
또한, 닷넷에서는 어떤 닷넷 언어를 쓰던 컴파일을 하면 모두 MSIL 이라는 DLL 혹은 EXE 파일이 되고.. 이는 중간언어로서 작성언어(.NET용)와 상관없이 모두 같은 속살이 만들어지게 된답니다. 해서 누누히 언급했듯이 여러분이 어떤 언어를 공부하던지는 그다지 큰 문제가 아니라는 것이지요. 그래도 저는 그 중에서 C#을 추천합니다.
사실, 이는 개인적인 취향이기도 하지만, 다음 링크의 ".NET에 대한 대화"라는 MSDN의 글을 읽어보면, 분명 C#을 공부하던 VB.NET을 하던 그 어떤 닷넷언어를 하던 중요한 것은 개인의 기존경험이라고 이야기하고는 있지만, 뉘앙스(?)는 C#쪽을 조금은 밀어주는 느낌이 들지 않나요? 그래서... 추천하는 것이기도 합니다.
http://www.microsoft.com/korea/msdn/library/techart/dotNETconvers.htm#csharp
사실상 제 사이트에서는 C#에 대한 강좌를 기대하기 어려울 것 같습니다. 그리고, 그 강좌는 준비하지도 않을 예정에 있어요. 왜냐하면 저보다 경력도 뛰어나시고, 프로그래밍 능력도 뛰어나신 고수 최현진님께서 이미 C# 강좌를 진행중에 있으니까요. 때오 패밀리 사이트의 하나로 묶일
http://www.chrischoi.pe.kr 에서 여러분은 C#을 공부하실 수 있습니다. 단, 내용이 초급자에게 어울릴 것 같지는 않고, 약간의 프로그래밍을 해보신 분들을 대상으로 하는 것 같기에.. 프로그래밍이 아예 처음이라면 무엇보다 먼저 C#관련 초보자용 책을 사서 공부하시고 강좌를 보심이 좋을 것 같아요.
언제나 그렇듯이 욕심이 앞서면 일을 제대로 할 수 없고, 조급하면 일을 망치기 쉽상이니까요.. 프로그래밍을 재미있게 공부할라면 욕심과 조급함을 줄이고 자신에게 맞는 레벨부터 차근히 공부해 나가시는 것이 최고입니다. 잠깐 하고 말 것이 아니라면 무엇보다 중요한 것은 바로 기초이니까요.
제 사이트에서는 이제 다음 강좌부터는 C#에 대한 약간의 지식이 있다는 가정하에 ASP.NET 프로그래밍에 본격적으로 뛰어들까 합니다. 기본적인 예제부터.. ADO.NET을 다루는 예제까지.. 그리고, 할수만 있다면 퍼포먼스 향상에 대해서는 같이 논의해보려 합니다. 일방적인 설명이 아닌 같이 토론하는 강좌.. 말이죠.
그럼 어디 이제 한번 시작해볼까요?