회차
[C# 4.0] New Features in C# : 01. C# Programing Trend
[C# 4.0] New Features in C# : 02. C# 4.0 Overview
[C# 4.0] New Features in C# : 03. Dynamically Typed Objects #1 : DLR
[C# 4.0] New Features in C# : 04. Dynamically Typed Objects #2 : Dynamic Lookup
[C# 4.0] New Features in C# : 05. Optional and Named Parameters
[C# 4.0] New Features in C# : 06. Com-specific interop features
[C# 4.0] New Features in C# : 07. Covariance and Contravariance

02| C# 4.0 개요

이번 포스팅은 .NET Framework 4의 " C# 새로운 기능 소개와 출현배경" 에 대해 아티클로 다뤄보도록 하겠습니다.

그동안 2.0 버전에서 머물렀던 CLR(Common Language Runtime)이 .NET Framework 함께 4.0 버전으로 업그레이드가 되었습니다. CLR의 가장 큰 변화로는 DLR(Dynamic Language Runtime)을 통해 언어의 유연성이 느슨하게 되면서 DOM, IronRuby, IronPython 등  동적인 언어를 사용 할수 있도록 설계 되어졌습니다.



지금까지 Visaul C#언어는 정적 언어 였습니다. 정적 언어라고 하면 명확하게 타입 선언과 사용이 매칭이 되어야합니다. 만약 숫자를 사용하고 싶다면 int형 타입으로 선언을 해야하며 그리고 문자열 사용하고 싶다면 string형 타입으로 선언과 타입을 넘겨줘야합니다. 그런데 왜 이제서야 동적 언어를 지원을 하게 되었을까요? C# 디자인팀에서 4.0을 설계 할때 2가지 컨셉중심으로 준비 하였다고 합니다.

[그림1] C# 4.0 컨셉


첫번째 컨셉은 Dynamic Programming 인데요
Dynamic Programming은 4.0에서 등장 했던 것은 아닙니다. invokeMember와 같이 Reflection을 이용하여 동적으로 사용이 가능했습니다. 하지만 메모리 소모량도 크고 불안정하기 까지 하였습니다. 그래서 C# 4.0에서는 DLR(COM Interop 포함)에 대한 높은 호환성과 Iron 시리즈의 스크립팅 언어를 비롯해 늦은 바인딩 언어를 지원하고자 dynamic 키워드를 도입하게 되었고 유연성을 허용 하게 되었습니다.

두번째 컨셉으로는 co-evolution with VB 입니다.

지난 10년간 .NET Framework가 발전을 하면서 VB, C#, C++, IronRuby, IronPython, JScript , J# 등 많은 언어들을 지원하며 Managed 하게 진화해 왔습니다. 그중 마치 형제인듯 공존하며 성장을 해왔던 언어가 있는데요.

바로 VB와 C#언어 입니다. 마침 MS OFFICE 프로그램의 오토메이션 사례등 유사한점을 확인 할 수 있었습니다. 예를들어 어떠한 데이터를 셀에 삽입한다고 가정할 때 C#에서는 Value2라는 속성을 사용하였고 반면 VB에서는 Value라는 속성을 사용하였습니다.  이들의 특징은 동일한 내용의 타입 이였고 동일한 시나리오의 수행이였습니다. 그럼 구현의 퍼포먼스에서는 어땠을까요? VB에서는 사용이 쉬운 반면 C#에서는 전혀 알지도 못한 타입 함께 사용하게 되었습니다. 자연스럽게 코드가 복잡해지고 어려울수 밖에 없었죠. 이러한 기존 VB의 특징을 바탕으로 어떻게 하면 효율적으로 사용할것인지 또한 어떻게 COM객체와 상호연동을 할것인지? 등 함께 성장하자라는 취지로 C# 4.0이 탄생하게 되었습니다.

다음은 두 컨셉의 기반으로 탄생한 C# 4.0의 새롭게 추가된 구성원이 무엇인지 간단히 살펴보도록 하겠습니다.

[그림2] C# 4.0의 새로운 기능들


* C# 4.0의 새로운 기능들

- Dynamically Typed Objects(Dynamic Lookup)
- Optional and Named Parmeters
- Com-specific interop features
- Generic Co-Variance and Contra-Variance

명칭만으로도 궁금증을 돋아 주는데요. 아쉽게도 이번 포스팅에서는 헤드라인 만 살펴봐야할것 같습니다.
다음 포스팅부터 새롭게 추가된 기능에 대해 순차적으로 만나뵐 예정이구요.

궁금하셔도 조금만 기다려주세요 : )
그래도 궁금하시다면 아래 참고 문헌을 참조하시면 됩니다.

여러분 다음 포스팅에 만나요 =ㅁ=//


참고 문헌

1. New Features in C# 4.0 - Mads Torgersen, C# Language PM(April 2010)

    : http://msdn.microsoft.com/en-us/vcsharp/ff628440(en-us).aspx

2. What's New in Visual C# 2010
    : http://msdn.microsoft.com/kr-ko/library/bb383815.aspx

3. PDC2008 : The Future of C# - Anders Hejlsberg
    : http://channel9.msdn.com/pdc2008/TL16/



포스팅을 마치며...

어떤 느낌을 받으셨나요? 아직 무엇인지는 알 수 없지만 의미적으로 많은 지원을 제공하고자 Microsoft에서 야심차게 준비하는 모습을 볼 수 있었습니다. 다음 포스팅 에서는 새로운 기능의 특징들을 순차적으로 살펴 보도록 하겠습니다.
앞으로도 관심 부탁드리며 무더위 준비 잘하시길 바라면서 글 이만 줄이도록 하겠습니다.
감사합니다.

정은성 드림

PS. DLR에 대한 내용은 별도로 포스팅 예정입니다.  조금만 기다려주세요 ^^

Posted by LenAWeb

댓글을 달아 주세요

  1. C#의 Dynamic Lookup에서는 call-site라 불리는 캐슁 공간을 이용해서 각각 바인딩 된 인스턴스를 캐슁합니다. 또한 IDynamicObjectProvider 객체를 통해 Lookup 과정을 거게 되죠. 이러한 메카니즘 덕분에 동적타입일지라도 아주 빠르게 동작할수 있습니다.

    2010.07.08 11:39 [ ADDR : EDIT/ DEL : REPLY ]
  2. 참된 행복은 자기만족에서 오는 것이 아니라,가치있는 목적을 충실하게 추구할 때 오는 것이다.

    2013.04.10 00:47 [ ADDR : EDIT/ DEL : REPLY ]
  3. 그들은 화려한되지 않기 때문에 어떤 사람들은 대단하지 않을 지출하지만, 자신의 마음이 멋진 아이디어를 스쳐하지 않았기 때문에, 또는 얼마나 영리 모르겠어요.

    2013.04.10 18:07 [ ADDR : EDIT/ DEL : REPLY ]
  4. 귀를 기울여봐 가슴이 뛰는 소리가 들리면 네가 사랑하는 그 사람 널 사랑하고 있는거야.

    2013.04.23 17:45 [ ADDR : EDIT/ DEL : REPLY ]
  5. 눈을 감아봐 입가에 미소가 떠오르면 네가 사랑하는 그 사람이 널 사랑하고 있는거야.

    2013.04.28 05:29 [ ADDR : EDIT/ DEL : REPLY ]
  6. 사람들은 죽을걸 알면서도 살잖아 .사랑은 원래 유치한거에요

    2013.07.12 09:28 [ ADDR : EDIT/ DEL : REPLY ]