'DLR' 태그의 글 목록 :: iopeni - Think of C#

'DLR'에 해당되는 글 1건

  1. 2013.11.08 IronJS 소개


IronJS 는 ECMAScript 3.0 규약을 준 수 하고 있는 Microsoft .Net 에서 구동 하는 JavaSctipt 런타임 라이브러리 입니다.


이렇게만 말씀 드리면 ??? 이게 뭐야 하시겠죠?


혹시 Microsoft Dynamic Language Runtime이라는 것을 들어 보셨나요? 


마이크로소프트는 닷넷 환경에서 수많은 언어를 사용할 수 있다고 말합니다. 파이썬, 루비, 포트란등등 말이죠.

사실 이렇게만 보면 이게 무슨 소리인지 감이 오지 않습니다.


우리가 알고 있는 .Net은 


개념적으로 CTS(Common type Specfication) -> CLR(Common Language Runtime) - > Language 인데 말이죠.. 

이렇게 보면 Dynamic Language Runtime 이라는 것은 눈을 씻고 봐도 보이지 않습니다.


예전의 프로그래밍 모델들을 보면 각각의 플랫폼 및 언어 종속적이라. 마이크로소프트 윈도우 플랫폼의 VC++ 로 만든   Component를 Linux 플랫폼의 자바에서 사용하려고 하면 정말이나 힘들었습니다. 


여기서 부터 미쳐 버리죠.. 마샬링이다 뭐다. 정말 복잡 다단한 이야기들이 많이 나옵니다.


그런데 이런 복잡한 이야기들을 근본적으로 이해 하기 쉽게 바라보면 C++이 가지고 있는 lptstr 이라는 롱포인터스트링 타입을 자바는 가지고 있지 않습니다. 이런 문제 인거죠 C++이 가지고 있는 타입을 자바는 가지고 있지 않으므로 C++의 타입과 자바의 타입을 매칭 시켜서 자바가 이게 뭔지 알아야 사용 할 수있다는 것이죠. 


세상은 너무나 빠르게 발전했고 Microsoft는 Dynamic Language Runtime을 발표하면서 dynamic 이라는 마법사 같은 타입을 내 놓았습니다.


var 타입도 사용할 때 신중하게 사용해야 한다고 하는데... 웬 dynamic??? 이라고 말씀하신다면 맞습니다. 사실 다이나믹 타입으로 생성한 변수를 반복 연산을 수행하였을때... var이나 int타입으로 생성한 변수 보다 어마 어마 하게 느립니다. 이건 뭐 절망적으로 느껴집니다. 


그러나 말이죠...이 dynamic 이라는 타입이 마술사 처럼 타입 변경을 해 가면서 어떤 타입인지 매칭 해 준다는 이야기 입니다. 무엇을 기준으로????? CTS를 기준으로 말이죠. 개발자는 거의 신경을 쓰지 않아도 타입맵핑을 해 준다는 뜻입니다. 물론... 사실 프로그래밍을 하며 타입을 모른다는 건 말이 안됩니다.


그래야 타입캐스팅도 하고 자료를 가공하고... 맞습니다. 더불어 dynamic 타입은 런타임에 타입이 결정되기 때문에 그 전에 타입 검사를 아무리 해도 검사 할 수 없습니다.


런타임에 결정되므로 이게 스트링일지 정수형일지 더블형일지 모른다는 것이죠. 모르기 때문에 타입검사도 할 수 없고. 모르기 때문에 타입캐스팅도 할 수 없습니다. 


꼬박 꼬박 런타임에 확인 해야 합니다. 이런 이야기와 함께 중요한 내용이 공변, 반공변 같은 복잡 다단한 이야기가 또 파생되긴 하지만, 사실 알고보면 아무것도 아니지만..... 정말 어렵기도 합니다.


IronJS와 함께 IronPyton, IronRuby등 .Net 에서 구동가능한 라이브러리가 오픈 프로젝트로 진행 되었고 현재 정말 많은 진척 상황을 보이고 있습니다.


IronJS는 여러분이 알고 계시는 자바스크립트 와 완벽한 문법적 호환을 보장 한다고 해도 무방 할 듯 합니다.


제가 글을 쓰면서도 제가 무슨 개소리를 하고 있는지 모르겠습니다. 


한마디로 정의 하죠.... DLR(Dynamic Language Runtime)이라는 녀석은 .Net 어플리케이션이 실행 된 상태에서 사용자가 파이썬, 루비, 자바스크립트, 비쥬얼베이직 스크립트 언어와 같은 다른 언어를 이용해 사용자가 스크립트 프로그래밍을 하여 실행 할 수 있다는 소리 입니다.


제가 이렇게 설명을 했는데도 잘 모르시겠다면.. ^^ 우리의 성경책.... MSDN을 보시면 좀 더 쉽게 설명이 되어 있는거 같습니다.


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


다시 본론으로 돌아와서 IronJS를 조금 더 설명하자면....


라이센스는 

IronJS is released under the Apache License Version 2.0 을 따르고 있습니다.


IronJS 라이브러리를 사용하기 위하여 필요 한 사항은 단지 .Net Framework 3.5, 4.0, Mono 2.10 이면 됩니다.


이 라이브러리를 다운 받을 수 있는 경로는 


git을 사용하는 분들께서는 

  • git clone git://github.com/fholm/IronJS.git IronJS
에서 다운 로드 받으실 수 있습니다.


git을 사용하지 않으신다면 아래 클릭하시면 다운 받으 실 수 있습니다.

https://github.com/fholm/IronJS/archive/master.zip



IRonJS의 공식 블로그는

http://ironjs.wordpress.com/ 입니다.


우리의 어플리케이션에 스크립트 컴파일러를 달아서 무언가 동적으로 알 수 없는 기능을 추가 하여야 할 경우 이만한 솔루션은 없어 보입니다.



Posted by 프로그래머란 카페인을 코드로 변환하는 기계다
,