ããã°ã©ãã³ã°èšèªã®ãããã¯ã«ã€ããŠãããŒã«ãã²ã©ãæçºãç¶ããã®ã§ãããã«äžçã§ïŒçŸæç¹ã§ïŒæé«ã®ããã°ã©ãã³ã°èšèªïŒçµ¶å¯Ÿã«æé«ãã€ãŸãçä¿ãªãïŒã«ååãä»ããŸããæ®ãã®ãã¹ãŠã®äººã¯ãã»ãŒ3幎åã®
ãããã°ã©ãã³ã°èšèªã®éžæã«ã€ããŠããšããç§ã®æçš¿ã«ç²ŸéããŠããå¿
èŠããããŸããããã§æžããããã®ã¯ãã¹ãŠé¢é£æ§ããããç¹°ãè¿ããããããŸããã
èªã¿ãŸãããïŒ æ¬¡ã¯
ãäžçã§
æãåªããããã°ã©ãã³ã°èšèªã«ã€ããŠã§ãã ã¯ããã¯ãã3æ¥åã§ããŠãã³ãŒã³ãååšãããšã¯æããŸããã§ãã-çµå±ãåèšèªã¯äœããã®åœ¢ã§åžã蟌ãŸããããããç¬èªã®æ¹æ³ã§åžã蟌ãŸããŸãïŒããããã€ã§ãã©ãã§ãåžããã®ããããŸãããç§ãã¡ã¯ãããã«ã€ããŠèªããŸããïŒ ãšã³ãžãã¢ãšããŠãèšèªã®åé¡ã§ã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãšæåã®ã¡ã¢ãªç®¡çããå§ããŠãããŸããŸãªãã¬ãŒããªããªãã§ã¯äžå¯èœã§ããããšãå®å
šã«ç解ããŸããããRust
ã¯ãã®åé¡ã§ã¹ãã£ãã¯ã«åº§ããã«é
ãé£ã¹ã
ããšããŸãã ç§ãã¡ã¯æ±çšèšèªã«ã€ããŠè©±ããŠããŸããããããã¯ãã¹ãŠäœããã®æ¹æ³ã§èªåèªèº«ãäœçœ®ã¥ããããããè¯ãã¢ã€ãã¢ãååãç®æšã«çŠç¹ãåœãŠããã®ãããªååãšççŸãããã¹ãŠã®ãã®ãå¯èœãªéãæ倧éã«æ®ããŸãããå¹æçã§ã¯ãããŸãã/ãŸãã¯å¿«é©ã§ã¯ãããŸããã äžèšã§èšãã°ãéçŸå®çã§ãã
ãã ããäžäžèŽãçµã¿åãããèšèªã¯ã§ãã
éå»ã«
æžããããã«ãç§ã®äººçã§ããã°ã©ãã³ã°èšèªãéžæããåé¡ã¯ãçŽ7幎åã«Javaããã¯ãã±ãŒãã§ã¯ãªãããšã«æ°ä»ããæ人æã«ã®ã¿çŸããŸããã 次ã«ãçç£æ§ãšãä»åŸ10幎éScalaãã¡ã€ã³ãªãã£ã¹èšèªã«ããçŽ æŽãªæ¬²æ±ãæ±ããŠãOdersky et alãã«ããæªçºè¡šã®æ¬ã®æ©æã¢ã¯ã»ã¹ïŒããã€ãã®ç« ïŒã賌å
¥ããŸããã ã ããç§ã¯ãScalaãé¢æ¥ã«æ¥ãåè£è
ã®å±¥æŽæžãé ã«ç»å Žããäœå¹Žãåã«èªåã§ScalaãçºèŠããŸããã ç¹°ãè¿ãã«ãªããŸãããIDEã10幎以äžæ³šæããŠãã
äŒç€Ÿã«ããã®ã§ããã®äžã«ããããã®èšèªã®çŽå±ãšçç ãèŠãã®ã§ãèè
ã«èšèªã®æŽå²ã玹ä»ããåã«ãã£ããã³ã«å°ãèããããã«é Œã¿ãŸã-ããªãã¯æ¬åœã«èª°ã ãšæããŸãã7幎éèšèªãæ¢ããŠèŠã€ããããšãã§ããŸããããã£ããã³ã®è©±ãç¥ããŸããã
è¿å¹Žãèšèªãéžæããåé¡ãæªåããŠããã ãã§ã
ãXoredã§æ°ããæè¡é©æ°ãéå§ããå¿
èŠããããããããçš®é¡ã®ããžãã¯ãå®è¡ã§ãããæŽç·Žããããæè¡ã®ã¢ã€ãã¢ããããŸãããç§ã¯é·ãéäœãå§ããæºåãã§ããŠããŸããã§ããã 質åã«å¯Ÿããçãã¯ããªãç§ãé©ãããŸããã€ã³ã¿ãã¥ãŒã§åããããªçããåãåã£ãŠããããåäŸã®æ¬ã®ç·ã«ããã«ãã€ãã¹ãæžããŠããããã§ãã çãã¯æ¬åœã«ã°ãããŠåäŸã£ãœãããã«èãããŸãã
ç§ã¯ãã©ã®ããã°ã©ãã³ã°èšèªã«é©ãã¹ãæè¡ã®ã¹ã¿ãã¯ãèŠãã
ããç¥ããŸããã§ãã ã å¯äžã®èšãèš³ïŒç§ã¯æ¬åœã«é·ãéã®ããç®æããŠããŸã-ããã¯åäžã®ãããžã§ã¯ãã§ã¯ãããŸãããããã¯ç§ã®äººçã§æé«ã®å¹Žãæè³ããããã®ã§ãããåââé¡ã®äŸ¡æ Œã¯ç§ã«ãšã£ãŠéåžžã«é«ãã§ãã
ä¹ãç©ãéžã¶éã«é·ããŠé£ããæ
ãããããšã¯ãééããç¯ãã®ã¯å±éºã§ãã ãããŠãããæ°å¹Žãç§ã¯äœããã®çç±ã§æåŠãããããšã®ãªãããã°ã©ãã³ã°èšèªïŒãã©ãããã©ãŒã ïŒãæ¢ããŠããŸããïŒåŸ
ã£ãŠããŸãããïŒïŒã ç§ã®èšç»ã«ããªã壮倧ãªã¿ã¹ã¯ãããããããã®ãããªããã°ã©ãã³ã°èšèªã®ããŸããŸãªæ©èœèŠä»¶ãšéæ©èœèŠä»¶ãææ¡ããŸããã
å¿
èŠæ¡ä»¶
ãã©ãŠã¶ã«é«æ§èœãªã³ãŒããå¿
èŠã§ãããã³ãŒããunikernel / cloud osã«ããã·ã¥ã§ããæ©èœãå¿
èŠã§ãã 倧éã®æ
å ±ãåŠçãã
é«æ§èœãªãµãŒããŒåŽãå¿
èŠã§ãã iOSãšAndroidãå¿
èŠã§ãïŒåœç¶ãé«æ§èœã§ããããŸãïŒã ãããŠç§ã¯ãã
ããã¹ãŠ
hemoãªãã§ããã°ã©ã ãããã§ãã ã³ãŒãçæã§ã¯åäœãããçãã²ãŒãsun.misc.Unsafeãä»ããŠã¡ã¢ãªã§çŽæ¥åäœãããFortranã§æ°åŠè
ã®ãããªå€§ããªé
åãããã°ã©ã ããŸããã
éåžžã«äœã¬ãã«ã®ã³ãŒãïŒãã¢ã¡ã¿ã«ã«è¿ãïŒãäœæãããã€ãã£ãC / C ++ã«å¹æµããããã©ãŒãã³ã¹ãå®çŸããããšèããŠããŸãã å¿
èŠãªãšãã«GCãå¿
èŠã§ãããäžèŠãªãšãã«GCã¯å¿
èŠãããŸããã ãªããžã§ã¯ãæåã¹ã¿ã€ã«ã§ãæ©èœçã«æžãããã§ãã æäœãHOFãããã³ã¯ããŒãžã£ãŒããªãŒããŒã©ã€ããããã ãžã§ããªãã¯ã欲ããã®ã§ãããå°æ¥ã®ã³ã³ã»ãããå®è£
ããããã®ãã³ãã¬ãŒãããã¯ãã欲ãããããããŸããã ã¡ã¢ãªããã³åæå®è¡ã¢ãã«ããå§ããŠãããããã¹ãŠãèšèªã§ã©ã®ããã«å®è£
ãããŠããããç解ãããããã®ããšãæãéãã«ç®¡çã§ããããã«ããããšæã£ãŠããŸãã
ãã¹ãŠãäœã¬ãã«ã«ãããããScalaã«å¹æµãããã¹ãŠã®ãã¯ãŒãé«ã¬ãã«ã«ãããã ç§ã¯èé«ã§çŽ æ©ãç°¡åã«ã³ãŒããæžãããïŒã³ã³ãã€ã©ãŒã«èããŠãããããïŒãã³ã³ãã€ã©ãŒã§ã¯ãªãïŒScalaãC ++ã§ããã°ã©ãã³ã°ãããšãã®ããã«ïŒã ããã°ã©ããŒãšããŠçç£çã«ãªããããšãã°JavaãJavaScriptãããäœåãéãããã°ã©ã ãæžãããã§ãã
ããã¯ããŠã£ãã·ã¥ãªã¹ãã®é ããã®çŽ æ©ããã³ãã§ãïŒæå³çã«æžãçããããšã¯ãããŸããïŒã ããããç§ã¯ãã¹ãŠãäžåºŠã«æ¬²ããã®ã¯æããã§ãããããŠãç§ã¯æåã«ãã¹ãŠãäžåºŠã«èšã£
ãã®ã§ã ã
ãã®ãããªèšèªã¯ãããŸãã-ããŒãããè¡ããŸã ã
ãããã圌ã¯ããã§ãã
ã¯ãã¹ãã©ãããã©ãŒã ã§ãã¢ã¡ã¿ã«ã«è¿ã
JavaScriptã§ã³ã³ãã€ã«ããã¯ãã¹ãã©ãããã©ãŒã ãå¿
èŠã§ãã ãããŠãJavaScriptã§ã®ã³ã³ãã€ã«ã ãã§ãªã
ããã©ãŠã¶ã§ã®é«æ§èœã³ãŒã ã UIãšã¯ã©ã€ã¢ã³ããµãŒããŒã€ã³ã¿ã©ã¯ã·ã§ã³ãããã°ã©ã ããæ©èœãæäŸããèšèªã®ãã¹ãŠã®æ©èœã«å ããŠãã¯ã©ã€ã¢ã³ãã§æ·±å»ãªæ°å€èšç®ãè¡ãå¿
èŠãããã1ç§éã«100äžãŸãã¯2ã€ã®ã¿ãã«ãç²ç ããããšãéåžžã«æãŸããèŠä»¶ã§ãã ã¯ã©ã€ã¢ã³ãã³ãŒãã«æ¬æ ŒçãªP2Pãããã¯ãŒã¯ãªã©ãå«ãŸããŠããå¯èœæ§ããããŸãã èŠããã«ããã©ãŠã¶åŽã®ã³ãŒãã®èŠä»¶ã¯ããµãŒããŒåŽã®ãœãªã¥ãŒã·ã§ã³ã®èŠä»¶ãšåãã§ãã
倧éã®ããŒã¿ã«å¯ŸããŠé«æ§èœãªäœããæžãããšãããã¯JavaãšJavaScriptã§å¯èœã§ãã ãã®ãããªããšã¯ããªãããŒãããŒã¿æ§é ãç©æ¥µçã«äœ¿çšããããšã§è§£æ±ºãããŸããããã«ã¯ãçæããã倧éã®ã³ãŒãïŒããã«èµ·å ããallæ žïŒãŸãã¯ããã°ã©ãã³ã°ã®æ²æšãªå€èŠ³ãå«ãŸããŸã-ããªãã¯æè¡çã«Javaã§ããã°ã©ãã³ã°ããŠããŸãããããã¯ãæ¯ããã®Javaã§ã¯ãããŸããããæ²æšã§ãèšèªãµãã»ããã ãã©ãŠã¶ã®äžçã§ã¯-åä»ãé
åãšasm.jsã䜿çšããåãã¹ããŒãªãŒïŒããããçš®é¡ã®NaCl / PNaClãªã©ãä¿æããŸã-èå³ã¯ãããŸããïŒã
çè«çã«ã¯ãscala-
scalajs ãgo-
gopherjs ãããã³ã»ãšãã©ã®JVMããŒã¹ã®ãã®ïŒ
Fantom ã
Kotlin ã
Ceylon ãç§ã®ãæ°ã«å
¥ãïŒãJavaScriptã§ã³ã³ãã€ã«ãã
ãªãããŒãããšã¬ã¬ã³ãã«äœ¿çšã§ããããšãæ¡ä»¶ã«ãã¿ã¹ã¯ã«å€ãã®ãã®ã䜿çšã§ããŸããã€ãã³ãŒãã«ã³ã³ãã€ã«ããããšãã®ããŒã¿ãããã³ããã«å¿ããŠãJavaScriptã«ã³ã³ãã€ã«ãããå Žåã¯åä»ãé
åã
å®éãç§ã¯ãã®éããã©ããŸããããèšäºã®ãããã¯ã«æ»ããšãããã¯èšèª
ã«å¯Ÿããéã§ãã ç§ã¯èšèªããŸãã¯ãããJVMãã©ãããã©ãŒã ã«å¯ŸããŠããã°ã©ã ããŸãããããã¯è§£æ±ºãããåé¡ãšæ¬è³ªçã«çŽäº€ããŠãããåé¡ã解決ããã«ã¯ãã©ãããã©ãŒã ãæäŸãããã¹ãŠã®ãã®ãå¿
èŠã§ãããå¥ã®æ¹æ³ã§ãããèªåã§è¡ããŸãã ãªãããŒãã¡ã¢ãªç®¡çãå€åã®ç¬èªã®ã·ã¹ãã ãå¿
èŠã§ãããããããã¹ãŠã«å ããŠå¹ççã«åäœããã«ã¯ãã³ãŒãçæïŒã³ã³ãã€ã«æããã³/ãŸãã¯å®è¡æïŒãå¿
èŠã§ãã æçã«èšãã°ãçåãçããŸãããããã®èšèªãšãã©ãããã©ãŒã ïŒJVMããã©ãŠã¶ïŒãå¿
èŠãªã®ã¯ããããã圹ã«ç«ãããå¹²æžããã ããªã®ã«ã©ãããŠã§ããïŒ
JVMãªãããŒãããŒã¿æ§é
ãã¡ãããäžçã«ã¯ããã©ãããã©ãŒã ã«å察ããã䟡å€ã®ãããããžã§ã¯ããæ°å€ããããŸããJavaã®ã³ã³ããã¹ãã«èå³ããã人ã«ã¯ãããŸããŸãªãœãŒã¹ããå§ãããŸããã
Mechanical Sympathyããã°ããå§ããããšãã§ããŸãã äžè¬ã«ããããã®äººã¯JVMã§å€ãã®èå³æ·±ãããšãè¡ã£ãŠãããè¡ã£ãŠããŸãã ããã©ãŒãã³ã¹ã«ã€ããŠã¯ãæåŸã®æçš¿ã§ProtoBufã®å®è¡æ¹æ³ã15ã35å瀺ããŠããŸãããªãããŒãããŒã¿æ§é ã«ã€ããŠã¯ããã®
æçš¿ã§ã¯ãèšèªïŒJavaïŒã䜿çšããå Žåãšæ¯ã¹ãŠçç£æ§ã40ååäžããŠããäŸã瀺ããŠããŸãèšèšã©ããã
ãã®æ©äŒã«ãç§ããšãŠãæ°ã«å
¥ã£ãŠããããŸãç¥ãããŠããªããããžã§ã¯ãïŒå®å
šã«æªç¥ã®ãããžã§ã¯ãã ãšæããŸãïŒã«æ³šæããŠãã ããïŒ
landz ã èè
ã¯ãããã¯ããªãŒ/ã¬ããŒãžããªãŒã®ãªãããŒãã¡ã¢ãªã¢ãã±ãŒã¿ãããã¯ããªãŒã³ã¬ã¯ã·ã§ã³ãéåæåŸ
æ©ããã£ãã«ããªãããŒãã³ã¬ã¯ã·ã§ã³ãªã©ãåããJVMäžã«æ°ãããã©ãããã©ãŒã ãå®éã«æäŸããŠããŸãã éåžžã«ãã£ããã...
objectlayout.orgãªã©ã«èšåã§ããŸãããããã¯éåžžã«äžäŸ¿ã§ããããã©ãããã©ãŒã èšèšã®ãããã§ã¯ãªããéã«è¡ãããŸãã
ãã©ãŠã¶ãŒãasm.jsããã³emscripten
ãã©ãŠã¶ã§ã¯ãemscriptenã¯é©ç°çã§ãã emscriptenãç¥ããªã人ã®ããã«-äŸãã°
Quake3ã§ãã¬ã€ã§ã
ãŸã ã移æ€ãããã²ãŒã ïŒãªã©ïŒã®ãªã¹ãã¯
ãã¡ãã§ãã ç§ã®ç¥ãéããUnityãšãã€ãšã³ãã²ãŒã ãšã³ãžã³ã¯ããã®æ¹æ³ã§ãã©ãŠã¶ãŒã«èªåèªèº«ããã©ãã°ããããšããŠããŸãã éåžžãUnityã¯emscriptenã䜿çšããŠJavaScriptïŒasm.jsïŒã§ã®.NETïŒMonoïŒã©ã³ã¿ã€ã ãå«ããã¹ãŠã®ãã©ãã«ãã³ã³ãã€ã«ããŸããããã¡ããããã¯ããªããèªåã®æã§æžãJavaScriptã®ãããªãã®ã§ã¯ãããŸãã-ãã®ãããªJavaScript-ã¯ã³ã³ãã€ã«ã®çµæã«ãããŸããã JavaScriptã®ããã°ã©ã ïŒèšèšã©ããïŒãasm.jsïŒå€§éã®ããŒã¿åŠçãšå€§éã®ããŒã¿ãæå³ããïŒã«æ¯ã¹ãŠã©ããã«è¿ããªãã®ã§ã¯ãªãããšããæ·±å»ãªç念ããããŸããããã§ããã°ãasm.jsãçæããŸãïŒããã«å¿ããŠãå¥ã®ã¡ã¢ãªã¢ãã«ïŒå¿
èŠã«å¿ããŠã
ããé©åãªèšèªïŒ ïŒäœã¬ãã«ïŒ
èããŠããèªè
ã¯ããã®ãããªäœã¬ãã«ã®ã¿ã¹ã¯ã«å¯Ÿããå¿«é©ãªãœãªã¥ãŒã·ã§ã³ã®ããã«ãå®å
šã«ç°ãªãèšèªãå¿
èŠã§ããïŒãããŠãç§èªèº«ããè¿œå ããŸãïŒããã³ãã©ãããã©ãŒã ïŒã圌ã¯æ£ãããšæããŸãã ç§ãããæããç§ã®èãæžã蟌ãããšããŸãã
-LLJSã®äžçš®ã§ãJavaScriptãšJVMãã€ãã³ãŒãã§ã³ã³ãã€ã«ãããªãããŒãã¡ã¢ãª/åä»ãé
åã§ãã€ãã
ããåãããŸãã ãšããã§ããã®ãããªèšèªãååšããå ŽåïŒãããŠLLJSãå€ãã®äœæ¥ãå¿
èŠãšããå ŽåïŒãã»ãšãã©ã®å Žåãç§ã¯ãããåã£ãŠè³ªåãéããŸãã ãããããã®èšäºã¯ããã§ã¯ãªãã£ãã§ããããããããã
äžçã§æé«ã®ããã°ã©ãã³ã°èšèªãèŠã€ããããšã¯ãªãã£ãã§ãããã
ãã®ã¿ã¹ã¯ã«ããé©ããèšèªã«å ããŠãJVMããŒã¹ãšã¯ç°ãªããå€æž¡ãã§ããgoãžã®é«ãæåŸ
ãããããã®ã¡ã¢ãªã¢ãã«ã¯ããã·ã³ãã«ã§ééçã§ãã ãããããäŒçµ±çãªãJavaScriptïŒgopherjsïŒãžã®ã³ã³ãã€ã«ãéå§ãããšãéšåçã«èå³ã®ããäœã¬ãã«ã®è³ªåã§JVMããããã»ã©é ããããŸãã-ããã©ãŒãã³ã¹ã¯20åããšã«äœäžããŸãïŒèå³ã®ããã«ã圌ãã¢ããã°ãäœããšæ±ºãããªãã£ã¹ã®çŽ æŽãªç·ã®
æ²ãã¿ãèŠãããšãã§ããŸãïŒ React.jsã¯éåžžã«é«éã§ãããªããªããè¡ãããããŠã¯ãŒã«ãªUIãæžãããã§ã...
ç§ã®æããJVMããã§ã«ããŒãžãå§ããŠãããã®ããããŸãããããã¯ææå°æ©ã§ãã ãŸããScalaãšä»ã®å人ã®é«ã¬ãã«ãç解ããå¿
èŠããããŸãããããã¯
次ã®ããŒãã§èª¬æããŸãã