티스토리 툴바


조금 오래되기는 했지만 내가 하고 싶은 일에 관한 내용이 있으리라 기대하고 읽고 있던 책에서 반갑게도 F#을 만났다.
 


이 책은 실버라이트 3을 이용해서 BI 소프트웨어를 개발하는 방법에 대한 이야기를 하고 있다. 특히, 9장에서 "예측 분석", 즉 데이타를 분석해서 앞 일을 예측하는 방법에 대해서 서술하고 있는데, 여기서 F#을 언급하고 있다. (P209)

함수형 언어(F#) 이용하기

경험많은 BI 개발자라면 예측 모델을 만들기 위해 함수형 언어나 통계 언어를 접해본 적이 있을 것이다. 함수형 언어는 수학과 매우 밀접하기 때문에 이런 류의 언어들은 통계나 회귀 연산, 데이타 변형 및 함수 연산에 이상적이다. 따라서, 통계 함수를 추가할 수 있는 BI 패키지를 사용할 수 있다는 것은 복잡한 예측 분석 도구를 만드는데 다른 무엇보다 중요하다.

.NET에 기반한 실버라이트는 C#이나 VB.NET 외의 언어도 사용할 수 있는데, .NET 4.0과 비주얼 스튜디어 2010에 추가된 새로운 함수형 언어인 F#이 그 중의 하나다. F#은 .NET CLR (Common Language Runtime)의 모든 기능을 사용할 수 있기 때문에, 클라이언트에서 복잡한 통계 모델을 만들기 위해 실버라이트에서 사용할 수 있다. 경험많은 개발자면 F#의 기능이 C# 및 LINQ의 새 기능과 겹친다고 할 지 모르겠지만, F#은 실버라이트용 BI 응용프로그램을 만드는데 이상적인 흥미로운 기능을 많이 갖고 있다:

  • C# / VB.NET에 비해서 수학 연산에 있어서 눈에 띄는 성능향상이 있다. F# 코드는 더 빨리 IL (중간언어)로 컴파일되고 어떤 경우에는 실행시 20-30 퍼센트 더 빠르다.
  • 문법이 연산에 쓰기에 간결하다. 예를 들어서 함수를 함수에 전달하는 것이 가능하기 때문에 C#이나 VB.NET에서처럼 delegate 메모리누수같은 문제를 고민할 필요가 없다. C# / VB.NET에서는 객체가 일등 시민인데 비해서 F#에서는 함수가 일등 시민이다.
  • F#은 불변의 구조체(값이 변할 수 없다는 의미)를 기본으로 한다. 읽기 전용의 데이타 연산에 무척 유용한데, 이런 연산은 대부분의 BI 응용프로그램에 포함되어 있다. 값이 변하지 않기때문에 멀티스레드의 동기화를 쉽게 한다.
  • F#은 다차원 데이타를 사용하기에 C# 3.0보다 용이하다. (C# 4.0의 경우는 다르다.) 예를 들어서, 분석 서비스로부터 다차원 데이타 세트를 받았다면 F# 튜플을 써서 각 데이타를 쉽게 그룹핑할 수 있다. 따라서, 차원이나 단위를 엮어서 쓰기가 다른 언어보다 쉽다.

마이크로소프트가 F#을 .NET 4.0의 주 언어로 포함시킨데는 좋은 이유가 있다. F#은 C# 같은 객체지향 언어의 좋은 함수형 대안이다. F#은 금융, 수학, 통계에 뛰어난 응용프로그램을 갖고 있다. 실버라이트 클라이언트에서 이 언어의 능력을 이용할 수 있다면 좋은 자산이 될 것이다.


이 책을 통해서 좋은 UI에 관한 점을 많이 배우고 있는데, 이렇게 F#에 대한 언급을 보니 반갑기만 하다. 이 책의 (Silverlight 4.0을 이용한) 새버전이 나왔단다. 책에서 소개한 예제를 여기에서 직접 볼 수도 있단다.

Posted by PLTeacher

Active Pattern

분류없음 2012/01/07 04:04

10 Programming languages that could shake up IT

InfoWorld에서 새해들어 "주목"해 볼만한 언어 10개를 소개(바로가기)했는데, 그 중에 F#도 포함되었다. 이 명단에는 Dart나 Go처럼 화제를 모았던 언어도 있고, Opa나 Fantom처럼 (내게는) 생소한 언어도 있다. 이 글에서 F#을 선정한 이유는 다음과 같다:

- 함수형 언어 중 절차형 언어와의 결합이 가장 이상적.
- Ocaml에 기반했지만 나름의 새로운 기능 추가 : Units of measure 나 async 등.
- Apache open source license.

과연 F#이 올해는 날개를 달고 휠훨 날게 될런지 두고 봅시다.

본문에 언급은 되지 않았지만, F#이 소개한 새 기능 중의 하나가 "active pattern"인데, 책을 읽다가  언제 active pattern을 쓰면 좋을 지를 잘 정리한 표를 보았다.

 

 사용 목적 유형 설명 
Conversion (패턴변환) Single, complete  값을 새로운 값으로 변환 
Segmentation (패턴분류) Multiple, complete  특정형태의 값을 여러 유형으로 분류 
Characterization (패턴특성표시) Single, partial  특정형태의 값 일부에 패턴 부여 


나중에 하나하나 살펴 보기로.
Posted by PLTeacher

XAML을 보다가 phone app을 만들어 볼까 싶어서 간단한 튜토리얼을 보고 있다.

1. How to: Create Your First Silverlight Application for Windows Phone (링크)


Silverlight for Windows Phone Template을 바탕으로 간단한 웹브라우저를 만드는 예제.

2. How to: Create Your First XNA Framework Application for Windows Phone (링크)


두 사각형이 움직이면서 서로 겹칠때 효과음을 내는 간단한 게임의 예. XNA Game Studio 4.0 (Windows Phone Game 4.0) Template을 바탕으로 했다.

3. How to: Combine Silverlight and the XNA Framework in a Windows Phone Application (링크)


XNA를 통해서 사각형이 움직이는 효과를, Silverlight을 통해서 색깔을 바꾸는 효과를 구현한 간단한 예제.
Posted by PLTeacher