1 / 12

Javascript as Mini-lang on Perl

Javascript as Mini-lang on Perl. 김현승 @ 펄마니아. JavaScript. ECMA Script Web 이 성행하면서 자리를 확고히 함 AJAX 로 진화하면서 개발패러다임을 변화 익숙한 문법의 약형언어 인력 수급이 매우 쉽다. Perl 개발자의 고민. 유지보수인력 확보 어려움 사용자의 참여를 끌어들일때의 어려움 보안 문제 학습 문제. Perl 과 JavaScript 의 만남. Perl 로 핵심기능을 구현하고 , JavaScript 로 흐름을 제어한다.

brenna
Download Presentation

Javascript as Mini-lang on Perl

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Javascript as Mini-lang on Perl 김현승@펄마니아

  2. JavaScript • ECMA Script • Web 이 성행하면서 자리를 확고히 함 • AJAX 로 진화하면서 개발패러다임을 변화 • 익숙한 문법의 약형언어 • 인력 수급이 매우 쉽다

  3. Perl 개발자의 고민 • 유지보수인력 확보 어려움 • 사용자의 참여를 끌어들일때의 어려움 • 보안 문제 • 학습 문제

  4. Perl과 JavaScript의 만남 • Perl로 핵심기능을 구현하고, • JavaScript로 흐름을 제어한다.

  5. Perl과 JavaScript의 만남 • Perl로 핵심기능을 구현하고, 빨리 만들고, • JavaScript로 흐름을 제어한다. 누구나 사용한다.

  6. Spider Monkey • FireFox에 사용되는 JavaScript Engine • Math, Array 같은 것은 있다. • Document, Event 같은 것은 없다.

  7. 구조 Real World Perl World JavaScript::SpiderMonkey::eval(“JavaScript CODE”) JavaScript World JavaScript CODE sub print() BIND Print() shell MAKE PerlObject “PerlObject” sub get_hello_string() BIND .GetHelloString()

  8. #1. 바인딩할 함수의 정의 #!/usr/bin/perl useJavaScript::SpiderMonkey; # perl로 함수 구현. subhello_perl# hello perl을 리턴하는 함수 { return 'Hello Perl'; } sub_print # 쉘에 글자 출력하는 함수. JS의 유일한 외부통로가 될것임 { print@_; }

  9. #2. JS객체 생성 및 바인딩 my$js= JavaScript::SpiderMonkey->new(); $js->init(); # JavaScript 환경에 PerlObject를 생성한다. my$obj= $js->object_by_path( "PerlObject“ ); # PerlObject에 hello_perl함수를 HelloPerl()로 바인딩한다. $js->function_set( "HelloPerl" , \&hello_perl, $obj); # inline 으로 Print 함수를 선언한다. $js->function_set( "Print" , \&_print );

  10. #3. 자바스크립트 eval # 자바스크립트 작성 $JS = <<END_OF_JS; // here is JavaScript world var hello = PerlObject.HelloPerl(); // perl의 scalar 를 그대로 받는다. hello = hello + " in JavaScript world!!\\n"; // scalar 를 가공하고 Print(hello); // 외부세계로 보낸다. END_OF_JS # 자바스크립트로 제어 시작 $js->eval( $JS );

  11. #4. 실행 [실행결과] $ perl sample.pl Hello Perl in JavaScript world!! $

  12. Mini-Lang 으로써의 가능성 • JavaScript 는 진입장벽이 높지 않다. • JavaScript 는 삼각함수, 정규표현식등을 사용할 수 있는 풍부한 Core를 가지고 있다. • 외부와 단절되어 안전하다. • 그래서 핵심코어와 비지니스로직을 분리하여, 항상 내가 나설 필요가 없다.

More Related