출처 : 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!
,