OreScriptæ代ã®å¹éã
å
æ¥ãMozillaã§ECMAScript(JavaScript)ã®ä»æ§ãä½ã£ã¦ããJohn Resigãããæ¥æ¥ãã¾ããã
ãã®éã1æéã»ã©ã®Q&Aã®å¸ä¼ã¨ãã©ã¤ããã³ã°ãã¼ã¯ã§ã®çºè¡¨ãç§ããã¦ãããã ãã¾ããã
ãã®éãåºèª¿è¬æ¼ããã¦ãã ãã£ããetoããï¼http://eto.com/d/PresenForJohnResig.htmlï¼ã®ã³ã¡ã³ãã
ããªãã ã®John Resigã«ããè¬æ¼ã®å¾ã«ä¸ç·ã«é£²ãã ãã§ããã©ï¼ ãã®å¸ã§èãã話ãããããé¢ç½ãã£ããªï¼ ããããé¢ç½ãã£ããã ãã©ï¼ç¹ã«jquery2ãé¢ç½ãã£ãï¼ http://ejohn.org/apps/jquery2/ ãã®URLãªãã§ããã©ï¼ã³ã¼ãã¯ãããªæãï¼ <script src="http://jquery.com/src/latest/"></script> <script src="parse.js"></script> <script type="text/jquery"> pre: css 'background' '#212121' css 'color' '#0F0' css 'padding' '10px' css 'font-size' '14px' body: prepend '<h1>jquery<sup>2</sup></h1>' input:first: click compile input:last: click run </script> ã¤ã¾ãï¼<script type="text/jquery"></script> ã¨ããã¹ã¯ãªããã¿ã°ãåæã«å°å ¥ãï¼ ãã®ä¸ã«æ¸ããæããã¼ã¹ãã¦JavaScriptã«ç¿»è¨³ãã¦å®è¡ããï¼ ããã§ã¯YAMLã£ã½ãææ³ã§ jQueryã«ç¸å½ããã³ã¼ããè¨è¿°ã§ããããã«ãã¦ããï¼ ããã§é¢ç½ãã®ã¯ï¼åæ§ã®ä»çµã¿ã使ãã° ä»»æã®ã¹ã¯ãªããè¨èªãJavaScriptå ã§åæã«ä½ãã¡ããã£ã¦ãã¨ï¼ ãã®çºæ³ã¯æ°ãããï¼
ï¼script type="text/jquery"ï¼ ã¯æ¬å½ã«è¡æã§ããï¼ï¼
ECMAScript4ã«å¯¾ãã¦ããWebã®ä¸çã«ã¯æ°ããè¨èªãå¿ è¦ã§ããï¼ãã¨è¨ã人ããã¾ãããããã§ã¯ãªãã
ãªã¬ãªã¬è¨èªãä½ãã¨ï¼ï¼ï¼ç¬ï¼
ECMAScriptã¯ä½¿ãããã®è¨èªãããªããã§ããããã°ã©ãã³ã°è¨èªãä½ãããã®è¨èªãªãã§ããStandard ML ã¨åãæèã§èªãããã¹ããªãã§ããï¼æ¬å½ãï¼ï¼
ãã¯ããECMAScript 4ãHTML 5 ã¯æ代é ãã§ããï¼
- ããããããã°ã©ãã³ã°è¨èª
- ãããããã¶ã¤ã³è¨èª
ã®æ代ã§ããã
ä¾ãã°ãIECanvas ã¯ï¼canvasï¼ã¿ã°ãIEã®ä¸ã«ä½ãåºãã¦ãã¾ãã
ã¨ããããã§ä½ã£ã¦ã¿ã¾ããã
http://accelart.jp/shibuyajs/logo/logo.html
LOGOãå®è£
ãã¦ã¿ã¾ãããå
容ã¯ã½ã¼ã¹ãè¦ã¦ãã ããã
ã¨ãããããæã£åãæ©ãä½ãããã£ãã®ã§ããã¼ãµã¼ã¯æ¥µéã¾ã§æ±ãã§ããããããªããã
ä»åãLOGOãã¡ã¾ãã§è»¢ãã£ã¦ããæ å ±ãããé©å½ã«ææ³ãä»ç«ã¦ä¸ãã¦ãBNFè¦ãã«ãå®è£ ãã¦ã¿ããã§ãããé¢æ°å¼ã³åºããä¸æè°ã§ãã
JavaScript風ã«æ¸ãã¨ã
function f(result) { g(1, 2); print(result); } function g(a, b) { result = a + b }
ããããé¢æ°ã®ä½¿ãæ¹ãã§ãã¾ããgã®ãªãã§ãfã®ã¹ã³ã¼ãã®resultã使ãã¾ããé¢æ°ãå¼ã³åºãã¦ããå¤æ°ã¯å¼ãç¶ã使ããããã§ãã
é¢æ°å¼ã³åºãããæ«ç«¯ã«æ¥ãã°æ¥ãã»ã©ãå¤æ°ããããã使ããä¸æè°ãªè¨èªã§ããé¢æ°ããã¤ã§ãæãåºããã®ã§ãªãã¡ã¯ã¿ãªã³ã°ãããããã§ãã
ãã®ä»£ãããé¢æ°ã®æ»ãå¤ããªãã¿ããã§ããï¼ç¢ºè¨¼ã¨ããã«å®è£ ãã¦ãã¾ã£ãâ¦ï¼
森ã®ä¸é¨ãæã :ä½åç® + 1 :é·ã * 0.6 å³ã¸ 85
ã³ã¼ããä¸é¨æãåºãããã§ããã:ã§å§ã¾ãã®ãå¤æ°åã§ãã森ã®ä¸é¨ãæãããèªåã§å®ç¾©ããé¢æ°åã§ãããä»ã®è¨èªã®ããã«ã(,,,,) ã§ãã©ã¡ã¼ã¿ãåºåããªãã®ã§ãå¼æ°ããããã並ã¶ä¸ã«ãå¼æ°ã®çµããããã£ã±ããããã¾ããã
åã¯ããé¢æ°ã¯å¼ã³åºãåã«å ã«å®£è¨ããªãã¨ãããªããã¨ããã«ã¼ã«ãä½ããå¼æ°ã®æ°ããããããç¥ã£ã¦ãããã¨ã«ãããå¼æ°ã®çµããã決ãããã§ããããã£ãæ°ã¥ãããã§ãããé¢æ°ã®è¿å¤ããªãã®ã§ããå³ã¸ãã«ããæç¹ã§ãããã§é¢æ°ã®ãã©ã¡ã¼ã¿ãçµãã£ããã¨ããå¦çã«ãã¹ããªãã§ããã
æ¬å½ã«ãä¸æè°ãªè¨èªã§ãããããªã®ã40å¹´åã«ãã£ããã§ãããCè¨èªããå¤ãã§ãã
ãã¤ããã¤ãæããã§ãããå¦çç³»ä½ã£ã¦åãã¦ãè¨èªãç解ã§ãã¾ãããã20å¹´åã«ããã£ãã¨ãã¯ããããªä»æ§ã ã¨ã¯å¤¢ã«ãæãã¾ããã§ããã
ä»åãããããã¦ã³ãã¼ãµã¼(LL)ãä½ãã«å½ãã£ã¦ãææããããããã http://fxp.hp.infoseek.co.jp/arti/parser.html ãåèã«ãã¾ãããã10åã§æ¸ããããæ軽ãã¼ã¶ã¼ã
JavaScriptã®æåã®ä½è ã§ãããBrendan Eichã®æ¸ãããNarcissus (JavaScript on JavaScript)ãããããã¦ã³ãã¼ãµã¼ãªãã§ããããããã½ã¼ã¹ããç¾ãããã¾ãï¼
- prototypeã¨ã³ã³ã¹ãã©ã¯ã¿
- ãªãã¸ã§ã¯ãã®ã¡ã³ãå¤æ°ã«å®£è¨ãªãã«å¤ãã¤ã£ããææ³
ãã®2ã¤ã®ãã©ã³ã¹ãç¾ãããã¾ãã
ä¸ã®ä¸ã®ã»ã¨ãã©ã®äººããæ§é åè¨èªãã¯ã©ã¹åãªãã¸ã§ã¯ãæåã®ãããªããã°ã©ã ãJavaScriptã§æ¸ãã¦ãã¾ããã®ä¸ã®ä¸ãBrendanããããããªãã§ãããããJavaScript使ãããªãã¦ããã®ï¼ç¬ï¼
åãã¦ãã³ã³ãã¤ã©ã³ã³ãã¤ã©ãªãã§ãã³ã³ãã¤ã©ãä½ã£ããã§ãããã³ã³ãã¤ã©ã³ã³ãã¤ã©ã JavaScript ã«ã欲ããã§ãâ¦
ECMA VM
追è¨ï¼ 18:50ã
ECMAScript 4 㯠Mozilla 㨠Microsoft ãã°ãã°ãããã¦ãã¦ãä»æ§ãã¾ã¨ã¾ãã®ãä¸éæã§ãã
ããããOreScript, OreHTML ãä½ããã¨ãåæã«ããã¨ããã©ã¦ã¶ã¯ãããªããã£ãã ãã©é«éã«åä½ããä»®æ³æ©æ¢°ï¼VMï¼ã¨ï¼canvasï¼ã¿ãããªãã¤ã§ãåããããªããã£ãã ãã©é«éã«åä½ããæç»é åãããã°ååã§ã¯ãªãã§ããããï¼
ã¯ã©ã¹åãªãã¸ã§ã¯ãæåã®VM㯠Java ã .NET ã§ä½¿ããã¦ãã¾ãããæè¡ã¨ãã¦ã¯æ¯ãã¦ãã¾ãããé«éã«åä½ãããã¨ãå®è¨¼ããã¦ãã¾ããããã¦ãRhino(JavaScript on Java)ã¯ãJavaScript on C ã¨åãé度ã§åä½ãããã¨ãããããããã«ãéã¯ã©ã¹åãªãã¸ã§ã¯ãæåè¨èªãã¯ã©ã¹åãªãã¸ã§ã¯ãæåVMã®ä¸ã§åãããã¨ã«ã¯ä½ãåé¡ããã¾ããã
<bytecode type="binary/ecmavm" src="perl6.vm" /> <script type="text/perl6"> print "Hello World !" </script>
ããã使ããã°ååã§ãï¼HTMLãªã©ãã¬ã³ããªã³ã°ã¨ã³ã¸ã³ã«é¢ãã¦ããããã
ã¯ã©ã¹åãªãã¸ã§ã¯ãæåã®VMã¯èª°ãä½ã£ã¦ã大差ãªãã§ããJava VM 㨠.NET VM ã¯ã»ã¨ãã©åãããªã®ã§ãä»æ§çå®ã¯ããã«çµãããããããã¨ã¯ãªãã§ãããã
ECMA VM ãä½ã£ã¦ããï¼ï¼
(ECMA-335 ã¨ã¯å¥ã«ãããã¯ããæ¿æ²»çãªçç±ãããªãã§ããâ¦)
ããªãã¢
Java VM 㨠.NET VM ã®éãã§åãå¯ä¸ç¥ã£ã¦ããã®ã¯ã¡ã½ããå¼ã³åºãã®å·®ã ãã§ãã
以ä¸ã®3種é¡ã®ã¡ã½ããã¯ãJava VM 㨠.NET VM 両æ¹ã«ããã¾ãã
- invokevirtual - ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ããå¼ã³åºã
- invokestatic - ã¯ã©ã¹ã¡ã½ããå¼ã³åºã
- invokespecial - private ã super ãªã©ãã©ã®ã¯ã©ã¹ã«ã¡ã½ããã®å®è£ ãåå¨ãããã親ã¯ã©ã¹ããã©ã£ã¦è¡ããªãã¦ãããã«ãããã¡ã½ãã
Java VMã¯ããã«å ãã¦ã
- invokeinterface - ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¡ã½ããå¼ã³åºãï¼æ¬æ¥ã¯ invokevirtual ã®ä¸é¨ï¼
ãããã¾ããJITãã®ãåã®æ代ã¯ãããã使ã£ã¦ãé«éåãããã¦ããã¿ãããã§ãããä»ãä¸è¦ã¿ããã§ããã¨ããããã§ã.NET ã«ã¯ãªãã¯ãã§ãã