출처 : http://blog.tobegin.net/31  / Writer by 정은성

 

 회차
[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


03| Dynamic 유형 객체 #1 : DLR


구독자 여러분 안녕하세요 생각보다 포스팅이 많이 늦어졌죠?
최근에 처리할일이 생각보다 많아서 포스팅을 쓸 여력이 되지 않았습니다.
앞으로 열심히 쓰고자 하니깐 용서해주세요 ~ 흑흑...

오늘은 지난 시간에 이어서 C#의 새로운 기능에 대해 소개를 할텐데요.
그 첫번째 시간으로 동적 타입에 대해 소개를 하고자 합니다.

지난 Microsoft는 MIX07과 PDC2008 등을 통해 .NET에서 새로운 수준의 지원을 발표를 하였습니다.
바로 .NET 프레임워크에서 서로 다른 프로그래밍 언어를 광범위한 지원을 하도록 설계가 되어졌는데요.

그배경에 공용언어 런타임(Common Language Runtime)의 Sandbox 보안 모델이 발전되면서 GC(Garbage Collection), JIT(just-in-time)를 더불어 공유 서비스를 제공하면서 각 다른 언어의 라이브러리를 손쉽게 가져다 쓸수 있었기에 정적인 언어와 동적인 언어를 구별하여 사용할수 있었지 않았나 생각이 듭니다.

* Sandbox(샌드 박스)
보호된 영역내에서 프로그램을 동작시키는 것으로 외부 요인에 의해 악영향이 미치는 것을 방지하는 보안 모델, ' 아이를 모래밭(샌드 박스)의 밖에서 놀지 않는다 ' 라고 하는 말이 어원이라고 알려져 있다. 이모델에서는 외부로부터 받은 프로그램을 보호된 영역, 즉, '상자'안에 가두고 나서 동작시킨다. '상자'는 다른 파일이나 프로세스로부터 격리되어 내부에서 외부를 조작하는 것은 금지 되어 있다.

어느듯 .NET Framework 4 버전의 런칭이 되면서 공용 언어 런타임(Common Language Runtime)이 2.0에서 4.0으로 업그레이드가 되었는데요. 그동안 Silverlight 1.1에서 지원을 했던 DLR(Dynamic Language Runtime)이 다시 주목을 받으면서 C# 4.0은 완전한 프로그래밍으로 초점을 맞추어 나가고 있습니다.

먼저 간단히 DLR(Dynamic Language Runtime)에 대해서 살펴 보아야 할것 같습니다.
Dynamic Language Runtime은 CLR 상단부에 위치하고 있으며 주요 구성은 다음과 같습니다.
[그림 1 : Dynamic Language Runtime Architecture ]

DLR은 3가지 주요 구성요소를 가지고 있는데요. 어떻게 동적 언어를 실행하기 위해 협력을 하는지 설명을 해드리겠습니다. 

- Expression Trees
: 트리를 사용하여 구조적 표현의 의미를 노드로 나타냅니다. 다른 언어의 모델링을 지원하기 위해 확장된 LINQ 표현식 트리를 포함하여 동적인 변수 연산이나 변수, 이름 바인딩과 제어흐름 등이 추가 되어 DLR의 중추 역활을 담당합니다.

  표현 트리식에 대해서 궁금하시면 아래 URL을 참고 해주세요 
  표현 트리식 : 
http://msdn.microsoft.com/ko-kr/library/bb397951.aspx

- Dynamic Dispatch 
: DLR에서는 동적 개체 및 작업을 나타내는 인련의 클래스와 인터페이스를 제공합니다. 언어를 구현하거나 동적 라이브러리를 작성할 때 제공되는 클래스와 인터페이스를 사용할 수 있습니다. 해당하는 클래스와 인터페이스로는 IDynamicMetaObjectProvider, DynamicMetaObject, DynamicObject 및 ExpandoObject가 있습니다.

- Call Site Caching
:  런타임 환경에서 실행되어질 동적 개체 대해서 코드에 대한 정보를 은닉해둠으로써 이후 동일 액션의 호출시 수행속도를 향상하는 역활을 합니다. 예를 들어 a + b와 같은 연산이 있을때 a, b의 특징과 작업 관련된 정보를 캐싱해두었다가. 만약 어떠한 작업을 수행해야할때 이전에 그와 같은 작업을 수행한적이 있다면 DLR에서 캐싱된 내용을 디스패치 하여 속도를 향상시킵니다.

위와 같은 구성원이 서로 협력을 통해  동적 프로그래밍이 각 바인더별로 실행이 가능하도록 지원을 하고 있습니다.
DLR에 대해서는 여기까지 살펴보도록 하고 Dynamic lookup에 대해서 살펴보도록 하겠습니다.
혹 자세한 설명이 필요 하시다면 First Look C# 4.0 whiepaper 를 참고하시거나 별도 포스팅을 기획할 예정입니다

참고 문헌

1. 식 트리(C# 및 Visual Basic)

    : http://msdn.microsoft.com/ko-kr/library/bb397951.aspx

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

3. A Dynamic Language Runtime (DLR) - Jim Hugunin's Thinking Dynamic
    :
http://blogs.msdn.com/b/hugunin/archive/2007/04/30/a-dynamic-language-runtime-dlr.aspx
4. DLR Trees (Part 1) - Jim Hugunin's Thinking Dynamic
    : http://blogs.msdn.com/b/hugunin/archive/2007/05/15/dlr-trees-part-1.aspx



포스팅을 마치며...

갑자기 일이 많아져서 포스팅이 늦어졌는데요. dynamic lookup을 살펴보기전에 DLR 존재의 여부에 대해 전달 할 필요가 있는것같아 간소화하게 작성하게 되었는데 왠지 모를 어색하고 주절주절 한 포스팅 이 되어버렸네요 T.T

다음 회차에서는 dynamic lookup의 특징과 C#의 새로운 프로그래밍 스타일인 duck typing 에 대해 살펴볼 예정입니다.
무더위 준비 잘하시고 좋은 하루 되세요 : )
감사합니다.

정은성 드림

 

출처 : http://blog.tobegin.net/31  / Writer by 정은성

Posted by Sting!

댓글을 달아 주세요


출처 : http://blog.tobegin.net/29  / Writer by 정은성

 

 회차
[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에서 야심차게 준비하는 모습을 볼 수 있었습니다. 다음 포스팅 에서는 새로운 기능의 특징들을 순차적으로 살펴 보도록 하겠습니다.
앞으로도 관심 부탁드리며 무더위 준비 잘하시길 바라면서 글 이만 줄이도록 하겠습니다.
감사합니다.

정은성 드림

 

출처 : http://blog.tobegin.net/29  / Writer by 정은성

Posted by Sting!

댓글을 달아 주세요


출처 : http://blog.tobegin.net/39  / Writer by 정은성

 

 회차
[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


01| C# 프로그래밍 동향

어느듯 .NET Framework 4가 Visual Studio 2010과 함께 런칭한지 3개월이 흘렀습니다.

Visual Studio 2010 과 함께 .NET Framework 4, Silverlight 4, WPF, WCF 등 유관 기술들이 새로운 변화를 하고 있는데요.

그래서 오늘은 Microsoft에서 지향하는 프로그래밍 패러다임에 대해 아티클로 잠시 다루어보기로 하겠습니다.
.NET Framework 디자인팀은 오래전부터  " 미래에는 어떤형태의 프레임워크가 되어야할지? " 고민을 하였다고 합니다.
지속된 디자인팀의 노력으로 .NET Framework 4에서는 완전한 프로그래밍으로 거듭 나고 있습니다.



* 선언적 프로그래밍
 : 명령형 프로그래밍의 반대되는 개념으로 어떤 방법으로 해야 하는지를 나타내기보다 무엇과 같은지를 설명하는 경우를 말합니다. 그내용을 축약한다면 목표를 명시하고 알고리즘은 명시하지 않습니다.
즉, 찾고자하는 필요한 해의 특성을 설명하고 그해를 찾는데 사용하는 실제 알고리즘은 설명을 하지 않습니다.
대표적인 예로는 SQL과 같이 질의문의 선형 언어가 있습니다. 이미 C# 3.0에서 선언형 언어 이론을 기반한 LINQ와 간결하고 확장 가능한 구문 람다 문장과 같은 스타일이 적용 된것을 알수 있습니다.

* 동적 프로그래밍
 : 위키 사전에서는 다음과 같이 정의를 하고 있네요.
"어떤 알고리즘이 부분 문제 반복과 최적 기본 구조라는 특징을 가지고 있을 때, 이 알고리즘의 실행시간을 줄이는 방법이다."
이와 같은 이론을 바탕으로 C# 4.0 에서는 Dynamic 이라는 새 형식이 도입이 되었습니다. dynamic 형식은 정적 형식이지만 이형식의 개체는 정적 형식 검사에서 제외가 됩니다. 또한 dynamic 타입은 컴파일 타임에 모든 작업을 지원하는 것으로 가정되며 COM API, IronPython, IronRuby 와 같은 언어이 프로그램 내의 다른 위치인지 신경 쓰지 않아도 됩니다.
CLR 버전이 4.0으로 업그레이드 되면서 동적 언어 런타임(DLR)을 통해 동적인 언어를 지원 합니다.

* 동시 프로그래밍
: 동시 프로그래밍은 동시에 많은 연산을 하는 방법중 하나입니다. 최근 컴퓨터 이용에서 발열과 전력소모에 대한 관심이 높아지는것과 함께, 멀티 코어 프로세서를 핵심으로 컴퓨터 구조에서 강력한 패러다임으로 주목받고 있습니다.
.NET Framework 4에서는 병렬 컴퓨팅의 패러다임을 손쉽게 가져다 쓸수 있도록 제공을 하고 있으며 .NET 4의 병렬 프로그래밍은 Task Parallel Library(TPL)과 PLINQ (Parallel LINQ)으로 구분 됩니다.

- TPL : 데이터 중심으로 네트워크 통신 및 병렬 연산 등을 통하여 실행 순차적으로 배포 또는 인터리빙이 실행하여 단일 프로세스들을 집합 과정으로 기존의 전통적인 비동기 패턴과 TPL을 통합하는 시나리오를 제공합니다.

- PLINQ : LINQ는 안정적인 방식으로 데이터 소스를 쿼리하기 위한 모델였지만 데이터가 열거 되기전까지 지연이 되어 병렬적으로 실행이 필요 하게 되었습니다. PINQ의 병렬 처리로 레거시 코드를 사용할 때보다 향상된 성능을 제공합니다.

포스팅을 마치며...

이번 포스팅은 Microsoft에서 추구하는 프로그래밍 패러다임에 대해서 잠시 아티클로 만나 보았습니다.
의미적으로 잘못 전달해드리지 않을까 걱정되네요 ^^; 추가 피드백이 있으시면 의견 남겨주시면 감사합니다.

다음 포스팅 부터는 C#의 새로운 기능들에 대해 소개를 해드릴 예정입니다.
무더위 준비 잘하시고 항상 좋은 하루 보내세요
감사합니다.

정은성 드림
 
출처 : http://blog.tobegin.net/39  / Writer by 정은성
Posted by Sting!

댓글을 달아 주세요

  1. LenAWeb 2010.10.12 17:16 신고  댓글주소  수정/삭제  댓글쓰기

    제글 퍼가셨네요 : )어디서 펌하셨는지 궁금하네요 ^^;
    앞으로 종종 뵈여 ^ㅁ^

    • Sting! 2010.10.12 18:36 신고  댓글주소  수정/삭제

      안녕하세요.
      제가 먼저 블로그에 가서 인사드렸어야 하는데
      퍼놓고 딴 짓하다보니 먼저 오시게 만들었네요. ^^;
      글은 데브피아에서 보고 업어왔습니다.
      앞으로도 종종 놀러가겠습니다. ^^

IBM 번역 JQuery 강좌

Jquery 2010. 10. 11. 09:26
아... 슬프다... 한국 IBM DeveloperWorks가 철수하면서 다 날아갔다...

IBM 사이트에서 번역된 JQuery 강좌입니다.
간단하지만 보면 도움이 될거 같습니다.
 
jQuery로 작업하기, Part 1: 브라우저로 데스크톱 응용 옮기기
jQuery로 작업하기, Part 2: 내일 나올 웹 응용을 오늘 구현해보자
jQuery로 작업하기, 3부: jQuery와 Ajax로 RIA 만들기

 
jQuery로 작업하기, Part 1: 매개체로서의 JQuery: 플러그인을 사용하여 jQuery 함수를 작성하고 확장하기 
jQuery로 작업하기, Part 2: 매개체로서의 JQuery: UI 프로젝트 
jQuery로 작업하기, Part 3: 매개체로서의 JQuery: 고유한 플러그인 작성하기 
 
 
Ajax로 사이트 전면 개편, Part 1: Ajax와 jQuery로 기존 사이트 개선하기 
Ajax로 사이트 전면 개편, Part 2: jQuery, Ajax, 툴팁, 라이트박스로 기존 사이트 개선하기 
Ajax로 사이트 전면 개편, Part 3: jQuery, Ajax 탭, 회전식 슬라이드쇼로 기존 사이트 개선하기 
Ajax로 사이트 전면 개편, Part 4: 기존 사이트를 jQuery와 Ajax forms를 사용하여 개선하기 
 
JSONP를 사용한 도메인 간 통신, Part 1: JSONP와 jQuery의 결합으로 강력한 매시업 빠르게 만들기 
JSONP를 사용한 도메인 간 통신, Part 2: JSONP, jQuery 및 Yahoo! Query Language로 매시업 만들기 
 
Scala, Lift 및 jQuery를 사용하여 Comet 애플리케이션 빌드하기
 
매개체로서의 jQuery(1) 
매개체로서의 jQuery(2) 
 
고급 jQuery(1) 
고급 jQuery(2) 
 
jQuery로 Ajax 개발을 단순화 하기 


Posted by Sting!

댓글을 달아 주세요


초보얌님 글 - http://choboyam.tistory.com/1
coder님 글 - http://techbook.tistory.com/3
Posted by Sting!

댓글을 달아 주세요