JavaScriptã«ã€ããŠã®3ã€ã®å€§ããªå
åã«ã¯2çš®é¡ãããŸããä»è ã«äŒããåãšãæ£åœåããããã«èªåã«äŒããåã§ããJavaScriptãã¡ã³ãäœåºŠãèšã£ãŠãã3ã€ã®å€§ããªåããããŸãã
åïŒ1
JavaScriptã¯ãäžçã§æã誀解ãããŠããããã°ã©ãã³ã°èšèªã§ãã
人ã ã¯ãããæ£ãã䜿çšããæ¹æ³ãç¥ããªããããåžžã«ããããçš®é¡ã®ãã©ãã«ã«å·»ã蟌ãŸããŸãã JavaScriptã«ã¯ç解ã§ããªããã®ã¯äœããªãã®ã§ãããã¯åã§ãã
ããã¯ãå°éã®ããã°ã©ãã³ã°æ©èœïŒFPïŒãšããªããžã§ã¯ããããã¿ã€ããšåŒã°ããç©è°ãéžãããªããžã§ã¯ãæåãæ©èœãåãããéåžžã®åœä»€å/æç¶ãåããã°ã©ãã³ã°èšèªã§ãã ãããŠãäœããããªã«ç¹å¥ãªã®ã§ããïŒ
åºæ¬çã«ãJavaScriptã䜿çšããéã«çºçããåé¡ã¯ãã¹ãŠãããã䜿çšãã人ã ã®ããã§ãïŒåœŒãã¯ç¡ç¥ã§ãæ zyã§ãããJavaãŸãã¯Pythonã§ã®ããã°ã©ãã³ã°æ¹æ³ã«æ £ããŠããŸãã é¢æ°åããã°ã©ãã³ã°ïŒ
ããã§ã¯ã CïŒãClojureãDartãElmãErlangãFïŒãJuliaãHaskellãScalaãSchemeãªã©ã®ä»ã®FPèšèªã䜿çšãããšãã«ã人ã ã誀解ããªãã®ã¯ãªãã§ããïŒ é¢æ°åããã°ã©ãã³ã°ã¯ãITæ¥çã§ã¯ããªãããç解ãããŠãããã©ãã€ã ã§ãã ã§ã¯ããã®ç¹ã§JavaScriptãç¹ã«åé¡ãšãªãã®ã¯ãªãã§ããïŒ
ãã¶ãã人ã ã¯ãªããžã§ã¯ãã®ãããã¿ã€ãã«ã€ããŠç¥èããããŸããã ãã®å Žåã¯ã ãJavaScriptã®ãªããžã§ã¯ããããã¿ã€ãã«ãªããã®ãããèªã¿ãã ããã ãã¡ããããããã¿ã€ãã¯ãœãããŠã§ã¢éçºã«ã¯é©ããŠããŸããã ãããã¯ãç¹ã«é«åºŠãªããã°ã©ãã³ã°æœè±¡åã§ã¯ãããŸããã ãããã¿ã€ãã¯ã»ãšãã©åºå¥ãããããã·ã¥ããŒãã«ã§ãããéåžžã«äœãã¬ãã«ã§ããããããå®éã®ãªããžã§ã¯ãæåããã°ã©ãã³ã°ïŒã¯ã©ã¹ããŒã¹ã®OOPïŒã®ããã«ãã£ã³ã°ãããã¯ããšåŒã°ãããã®ã§ãã 人ã ã¯ãªããžã§ã¯ãã®ãããã¿ã€ãã®äœ¿çšæ¹æ³ãç解ããŠããªããããããŸãããããã¬ã³ã¬ã眮ããæ¹æ³ãåŠã¶å¿ èŠãããã®ã¯ãªãã§ããïŒ ããã¯åªåãã䟡å€ã¯ãããŸããã
ã¯ããããããŸããã ãããã¿ã€ãã¯éåžžã«æè»ã§ãã 圌ãã¯ãå€å žçãªAKIãç«ã€ãã¹ãŠã®ãååŒããææããŠããããã§ã¯ãããŸããã ãã®æå³ã§ããããã¯äœ¿çšããã®ã楜ããã§ãã ãã ãã倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã«ã¯ããŸã察å¿ã§ããªãããã人ã ã¯ã¯ã©ã¹ã«æ»ã£ãŠããŸãã ãããã¿ã€ãããã®ãããªäŸ¿å©ãªææ³ã§ããå Žåããããã¿ã€ãã¯ã¯ã©ã¹ããŒã¹ã®èšèªã§ã¢ãã«åã§ãããããã¯ã©ã¹ããããã¿ã€ãããŒã¹ã®èšèªã§ã¢ãã«åã§ããã®ãšåãããã«ãè³ãæã§ãã®é©å¿ãèŠãããŸãã ãããŠãããã¯JavaScriptããã°ã©ããŒãç解ã§ããªããã®ã§ãã
åïŒ2
éåæããã°ã©ãã³ã°ã¯JavaScriptã®éèŠãªåŒ·ã¿ã§ãã ããŠãæåã«JavaScriptã«éåæããã°ã©ãã³ã°ãååšããçç±ãç解ããŸãããã
ã°ã©ãã£ã«ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ïŒGUIïŒãéçºããããã®ã€ãã³ãã«ãŒãã¯ã Windows ã X Window ã OS Xã®Cocoa ããŸãã¯Webãã©ãŠã¶ãŒã®ãããã§ãã de rigueurïŒéåžžã®ãã®ïŒã§ãã ãããã¯ãã¹ãŠããŠãŒã¶ãŒå ¥åã€ãã³ããéåæçã«åŠçããŸãã ããã¯ãéåæããã°ã©ãã³ã°ãC ++ãŸãã¯Objective-Cã®ãã¯ãŒã§ããããšããããšã§ããïŒ PythonãšPerlããã³Tcl ã§ã¯ ãã€ãã³ãã«ãŒãïŒéåæã©ã€ãã©ãªã䜿çšïŒã䜿çšãããŠããŸãã ããããããããã¯ãã¹ãŠéåæããã°ã©ãã³ã°ã®åãæã£ãŠãããšæããŸããïŒ ïŒäººã ãååšããªãåèªã éåææ§ ãã䜿çšãããšããç§ã¯ç¬ããŸã ïŒ éåæã¯ãæéå ã«èª¿æŽãããªããªããžã§ã¯ããŸãã¯ã€ãã³ãã説æãã圢容è©ã§ã ïŒã
JavaScriptã¯ãã€ãã³ãã«ãŒããšéåæåŠçã䜿çšããŠãWebãã©ãŠã¶ãŒã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ããµããŒãããŸãã ããã¯åœŒãçŽ æŽãããèšèªã«ããŸããïŒ
ãããŠä»ããã®èšç®ã¢ãã«ã«ããã Node.jsã¯ãµãŒããŒåŽã§éåžžã«äººæ°ããããéGUIéçºãã€ãŸã é«ãããã©ãŒãã³ã¹ã®äžŠè¡æ§ã®ããã Nodeã¯æããã«å€ãã®ã¢ããªã±ãŒã·ã§ã³ã«åœ¹ç«ã¡ãŸãããåæå®è¡ã®äžçããã£ããã£ããããšã¯ãŸããããŸããã æè¿ã®ã€ãã³ãã¯ã Node.jsã®å¶éã瀺ããŠããŸãã ãããŠãã¯ããããã¯èª°ããJavaScriptã ãã䜿çšããããã«èª¬åŸããå¿ èŠããããŸãã
ã€ãã³ãã®ãµã€ã¯ã«ã¯ã貧ãã人ã ã®äžŠè¡æ§ããšèšãããŠããŸããNodeã®æ¯æè ã¯ã倧äŒæ¥ïŒPayPalãNetflixãWalmartãUberãªã©ïŒã®åãäŸãäœåºŠãèŠããããšæã£ãŠããŸãã åNode.jsã®äŸã§ã¯ãåçã§äœãæ¯èŒã§ããŸããïŒ -äœçŸãã®Javaã®äŸïŒ Java㯠ããšã³ã¿ãŒãã©ã€ãºéçºã«ãããŠäœåºŠãå®èšŒãããŠããŸãã ãããæ¥çæšæºã§ããçç±ã§ãã Node.jsã¯ãŸã 蚌æãããŠããŸããã Node.jsã䜿çšããããšããŠæçµçã«ãããæŸæ£ããäŒæ¥ã®æ°ã¯ãå®éã«ã¯ããããŸããã Node.jsãããžã§ã¯ãã®å®éã®æåçãäœã§ãããã¯ããããŸããã äŒæ¥ã«ãšã£ãŠã Node.jsãéžæããããšã¯äŸç¶ãšããŠãªã¹ã¯ã§ãã
ãã¬ãŒã ã¯ãŒã¯ãšããã±ãŒãžã®ãšã³ã·ã¹ãã ãæé·ãããšãGoã¯å°æ¥Nodeã«åã£ãŠä»£ãããšç¢ºä¿¡ããŠããŸãã ãã®è»è·¡ã¯åŠå®ã§ããŸãããGoãErlang / Elixirãªã©ã®èšèªã¯ãã»ãšãã©ã®åæå®è¡ã·ããªãªã§Nodeãç°¡åã«äžåãããšãã§ããŸãã ã€ãã³ã/éåæã«ãŒãã¢ãã«ã§ãããé·æçã«ã¯æç¶å¯èœã§ã¯ãããŸããã ç®æšãæ倧ã®ããã©ãŒãã³ã¹ã§ããå Žåãå®éã®äžŠåããã°ã©ãã³ã°èšèªã䜿çšããããšã«é¢å¿ãããã¯ãã§ãã JavaScriptã§åŠ¥åããçç±ã
åïŒ3
JavaScriptã¯ãäžçã§æã人æ°ã®ããããã°ã©ãã³ã°èšèªã§ãã
ããã¯æ¬åœã«ããã§ããïŒ ããã©ã«ãã§åºã䜿çšãããŠããèšèªãšãåºã䜿çšãããŠããèšèªã«ã¯å€§ããªéãããããŸãã
ã€ã³ã¿ãŒããã以å€ã®å°åã§ã¯ãéçºè ã¯1ã€ã®èšèªã«äººè³ªã«ãããŠããªãããšã«æ³šæããŠãã ããã ç§ãã¡ã¯èªå·±ã®è²¬ä»»ã«ãããŠãã®äºå®ãç¡èŠããŸãã
JavaScriptã¯Webãã©ãŠã¶ã®å¯äžã®ãã€ãã£ãèšèªã§ãããããããã¯ãã©ãŠã¶ã¢ããªã±ãŒã·ã§ã³ãèšè¿°ããæãçŽæ¥çãªæ¹æ³ã§ãã ããããã»ãšãã©ã®éçºè ã¯ãã®èšèªã軜deããŠããããã圌ããæ¬åœã«ããè¯ãéžæãæã£ãŠããã°ã圌ãã¯ãããäœãã§ãããã ã€ã³ã¿ãŒãããïŒãã©ãŒã©ã ããœãŒã·ã£ã«ãããã¯ãŒã¯ããŠã§ããµã€ããªã©ïŒã§JavaScriptã«é¢ãã人ã ã®æèŠãæ€çŽ¢ããå Žåããããèªåã§ç¢ºèªã§ããŸã ã JavaScriptã«ã€ããŠã®WATããã³WTFã®é·ããªã¹ãã¯æ°å€ããããŸããã PHP以å€ã®èšèªã§ã¯èŠã€ããããšãã§ããŸããã 確ãã«ããã£ãŠããããšã¯ããŠã§ãã¯JavaScriptã§ã¯ãªãéåžžã«äººæ°ããããšããããšã§ã ã
ã»ãšãã©ã®äž»èŠãªèšèªã©ã³ãã³ã°ã€ã³ããã¯ã¹ã¯ã JavaScriptãæãäžè¬çãªããã°ã©ãã³ã°èšèªã§ããããšã瀺ããŠããŸããã 2çªç®ã3çªç®ããŸãã¯4çªç®ã®äœçœ®ã§ãããããŸããã IEEE Spectrum ïŒAmerican JournalïŒã«ãããšãããã¯8äœã PYPLïŒ5 ã TIOBEïŒ7 ã CodeEvalïŒ6ã§ãã Redmonk ïŒåæäŒç€ŸïŒã¯Githubçµ±èšã䜿çšããŸããããã¯ã JavaScriptã§éåžžã«é«ãæ°å€ã瀺ããŠããŸããããã¯ããã¹ãŠã®èšèªã§æžãããWebã¢ããªã±ãŒã·ã§ã³ããã©ãŠã¶ãŒã§åäœããããã«å°ãªããšãJavaScriptãå¿ èŠãšããããã§ãã ãªãã·ã§ã³ã¯ãããŸããã ãã®ããã Redmonk㯠JavaScriptã®ç°åžžã«ã€ããŠå®¢èŠ³çãªè©äŸ¡ãããããšã¯ã§ããŸããã ãã以å€ã®å Žåãæãäžè¬çãªèšèªã¯Javaã§ãã
ããšãã°ãStackOverflowããã®ãŠãŒã¶ãŒããŒãªã³ã°ã«ããéžæã«åæ§ã®ãã€ã¢ã¹ãå«ãŸããŠããŸãã JavaScriptãåç¬ã§äœ¿çšããããåŸãªãå Žåã JavaScriptã¯äººæ°ã®ããèšèªã ãšèšããã®ã§ããããã ïŒå¹žããªããšã«ãç§ãã¡ã¯ç¿»èš³è ãå©çšã§ããŸãïŒã
ä»ã®é åïŒãããã¯ãŒã¯ãµãŒããŒãã²ãŒã ãšã°ã©ãã£ãã¯ã¹ãã¢ãã€ã«ããã¹ã¯ããããªã©ïŒã«ã€ããŠã¯èŠããŠããå¿
èŠããããŸãã ããã°ã©ãã³ã°èšèªã®éžæã«ã¯ããŸããŸãªçš®é¡ããããŸãã Webã¢ããªã±ãŒã·ã§ã³ã¯éåžžã«ãŠããŒã¯ã§ãã ïŒå°ãªããšãWebAssemblyã®ãªãªãŒã¹ãæçµçã«è¡ããããŸã§ãïŒ
æ¬åœ
JavaScriptããœãããŠã§ã¢éçºã«é©ããããã°ã©ãã³ã°èšèªã§ã¯ãããŸãã ã JavaScriptã¯ãWebãã©ãŠã¶ãŒçšã®è»œéã§æ°é®®ãªã¹ã¯ãªããèšèªã«ãªãããã«èšèšãããŸããã ãã®ãããæè»ã§éåžžã«å¯å®¹ã§ãã¿ã€ãã³ã°ã匱ãããã«äœãããŸããã æ£ããæŽæ°åãæ£ããé ååãããããŸããã ããã¯äœèªã§ããïŒïŒ
匱ãã¿ã€ãã³ã°ã¯ããœãããŠã§ã¢ã®éçºã«äœ¿çšãããããã°ã©ãã³ã°èšèªã®ã¢ãã¬ã¹è ±ã§ãã ããã«ãããWebãã©ãŠã¶ãŒçšã®ç°¡åãªã¹ã¯ãªããããã°ããç°¡åã«äœæã§ããŸãããã»ãã¥ãªãã£ãšä¿¡é Œæ§ãå¿ èŠãšãã倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãäœæããå Žåã«ã圹ç«ã¡ãŸãã ããããã»ãšãã©ã®äž»èŠèšèªãé垞匷ãåä»ããããŠããçç±ã§ãïŒéçã«åä»ããããèšèªãšæ··åããªãã§ãã ããïŒã ãããŠããã¯éåžžã«éèŠã§ãïŒ
匱ãé¡ååãšãã®çµæã®arbitraryæçãªåŒ·å¶ã¯ãèšèªåŠã®èŠåŸãå®å šã«æ¬ åŠããŠããããšã瀺ããŠããŸãã ããã¯ã WATãšWTFã®ãªã¹ãã®ã»ãšãã©ã説æããŠããŸãã
JavaScriptã«ãã£ãŠçæãããŸãã ïŒããã«ãèè ã¯JavaScriptã®ããŒã®ãªã¹ããæäŸãããªã³ã©ã€ã³ãªãœãŒã¹ãžã®ãªã³ã¯ãæäŸããŠããŸãïŒã