ä½è¤å çãErlangãScalaãJavaãªã©ã®ä¸¦è¡å¦çãæ¬ãï¼
ããæ°æ¥ã®ä½è¤å çã®ã¨ã³ããªãç±ãï¼ãErlangãScalaãGoãJavaãªã©ã®ç¾ä»£ã®è¨èªï¼Erlangã¯å¤ããï¼ã«ããã並è¡å¦çã®æ±ãæ¹ã«ã¤ãã¦ãããããã®æ´å²çèæ¯ãæ義ãå¾æä¸å¾æãªã©ãããããããç´¹ä»ããã¦ã¾ãã80年代ãã並è¡å¦çããªãã¸ã§ã¯ãæåãç 究ããã¦ããä½è¤å çãªãã§ã¯ã®è¦ç¹ã§ãããã¡ãã£ã¨é·ããªãã¾ããç¹ã«ç§ãèå³æ·±ãã£ãé¨åãå¼ç¨ãã¾ãï¼å¼·èª¿ã¯ç§ï¼ï¼
æè¿ãèå³æ·±ãã®ã¯ãªãã¸ã§ã¯ãæåè¨èªã®ScalaãErlangã話é¡ãéãã¦ãããã¨ã§ãããããã©ã¡ããActor Modelããã¼ã¹ã«ãã¦ããããã§ããããªãã¸ã§ã¯ãæåè¨èªã®æ´å²ã§ããã¨ãActor Modelãªã©ã®ä¸¦è¡å¦çç¨ãªãã¸ã§ã¯ãæåè¨èªã®ç 究ãçãã«ãªã£ãã®ã¯1985å¹´ããã®6,7å¹´ãããã ã¨æãã¾ã(Actor Modelèªèº«ã¯ãã£ã¨å¤ãã§ãã)ãããã¦1990å¹´å¾ãããããè°è«ããã¦ãã話é¡ã®ã²ã¨ã¤ã¯ãåãªãã¸ã§ã¯ãã¯é«ã ã®ã²ã¨ã¤ã®å®è¡ã¹ã¬ããã¨ããã·ã³ã°ã«ã¹ã¬ããå®è¡ã¢ãã«ã¨ãä¸ã¤ã®ãªãã¸ã§ã¯ãã§ãè¤æ°åæå¦çã許ããã«ãã¹ã¬ããå®è¡ã¢ãã«ã®ã©ã¡ãããããã¨ãããã®ã ãã¦ã·ã³ã°ã«ã¹ã¬ããå®è¡ã¢ãã«ã¨ãã«ãã¹ã¬ããå®è¡ã¢ãã«ã¯ä½ãéããã¨ããã¨ãåè ã¯åãªãã¸ã§ã¯ãã¯è½åçã«å¦çãã¦ããããã¤ã¾ãåãªãã¸ã§ã¯ãã«é«ã ä¸ã¤ã®ã¹ã¬ãããå²ãå½ã¦ããããªãã¸ã§ã¯ãå é¨çã«ã¯é次ããã°ã©ã ã§ãããããªãã¸ã§ã¯ãå é¨ã§æä»å®è¡ãåæãããªãã¦ãããã®ã§ããªãã¸ã§ã¯ãã®ããã°ã©ãã³ã°ã¯æ¥½ã«ãªãã¾ããä¸æ¹ããã«ãã¹ã¬ããå®è¡ã¢ãã«ã§ã¯åãªãã¸ã§ã¯ãã¯è½åçã«å¦çããã¾ãããåãªãã¸ã§ã¯ãã«ãè¤æ°ã®ã¹ã¬ãããå²ãå½ã¦ããã¾ãããã®ããå¦çå¹çã¯ãããã¾ããããªãã¸ã§ã¯ãå é¨ã§æä»å®è¡ãåæããå¿ è¦ãåºã¦ãã¾ããã©ã¡ããã¡ãªããã¨ãã¡ãªãããããã®ã§ãããã·ã³ã°ã«ã¹ã¬ããå®è¡ã¢ãã«ã®ä»£è¡¨æ ¼ã¨ããã®ãåè¿°ã®Actor Modelã§ããã
ã¾ããæ§æçãªè¨è¿°ã§ãããéæ示çã«ä¸¦è¡å¦çãè¨è¿°ããæ¹æ³ãããã¤ãå°å ¥ããã¾ãããä¾ãã°Adaãªã©ã¯CSPçãªã¬ã¼ãä»ãã³ãã³ãã¨ããæ¦å¿µãå°å ¥ãã¦ãã¹ã¬ããå®è¡å¯è½ãªé¢æ°ããµãã«ã¼ãã³ã«å®è¡ã«å¿ è¦ãªåææ¡ä»¶ãå®ç¾©ãã¦ããã¦ããã®åææ¡ä»¶ãæç«ããã¨å®è¡ãããã¨ããæ¹æ³ãã¨ãã¾ãããä¾ãã°éä¿¡ãã¼ã¿ãå±ãã¨ãæå®ã®ãµãã«ã¼ãã³ãå¼ã³åºããã¦å®è¡ããããæ¹ããã®æ¹æ³ã§ã¯ã¹ã¬ããèµ·åãã®ãã®ã¯ã·ã¹ãã å´ã«ä»»ãããã¨ã«ãªãã¾ãããéä¿¡ãå¶å¾¡ã®ããã°ã©ã ã®å ´åã¯ã¤ãã³ãé§åã«ãªããã¨ãå¤ãã®ã§ããããã®æ¹æ³ã¯ã¤ãã³ãé§åçãªå¦çã§ã¯ä¾¿å©ãªã®ã§ä»ã®ä¸¦è¡å¦çè¨è¿°è¨èªã§ãå°å ¥ããã¾ãããæè¿ã§ããã¨Goãããã«è¿ãããªããã£ããå°å ¥ãã¦ãã¾ãã ã¡ãã£ã¨è©±é¡ããå¤ãã¾ããã1990å¹´åå¾ã«çãã«ç 究ããã並åLispãå«ã並åé¢æ°åããã°ã©ãã³ã°è¨èªã§ã¯ãé¢æ°åä½ã«ã¹ã¬ãããå²ãå½ã¦ã¾ãããããã¯é¢æ°ã®å®è¡ã«ã¯å¯ä½ç¨ããããªããã¨ãå©ç¨ããããã§ãããé¢æ°èªä½ã¯ã©ãå¼ã³åºããããããããªãã®ã§ã並å度ãä¸ãããããã¨ããåé¡ãæ±ãã¦ãã¾ããããã«ãã³ã¢æ代ã¯é¢æ°åè¨èªã®æ代ã¨ããã£ãããæ¹ã¯å¤ãã®ã§ããã並å度ãä¸ããã°ããã¨ãããã®ã§ããªããå®éãã¹ã¬ããæ°ãå¤ããªãã¨ã³ã³ããã¹ãã¹ã¤ããã®ã³ã¹ãã大ãããªãã¾ããããã¨æ´å²çã«è¨ãã°ããã°ã©ãã¼ã並è¡å®è¡ãå¶å¾¡ã§ããªãè¨èªã¯ãã³ããã¼ã¯ã§ã¯ããã¦ãå®ã·ã¹ãã ã§ã¯åããªãã®ã§ããããã ããæè¿è©±é¡ã«ãªã£ã¦ããé¢æ°åè¨èªã«ãã並åå¦çãåãåé¡ãæ±ãããã¨ã«ãªãã§ãããã
ãããã1995å¹´é ã«ç»å ´ããJavaã¯ã¹ã¬ãããã®ãã®ããªãã¸ã§ã¯ãã¨ãã¦æ±ããã¤ã¾ãã¹ã¬ããå®è¡ããªãã¸ã§ã¯ãã¨ãã¦å°å ¥ãã¦ããã®ãªãã¸ã§ã¯ãã«å¦çã渡ãã¨ä¸¦è¡å¦çãããã¨ããæ¹æ³ãå°å ¥ãã¦ããããã®Javaã®æ®åã¨ã¨ãã«ä¸¦è¡å¦çã®è¨è¿°æ¹æ³ã®è°è«ã¯ä¸ç«ã«ãªã£ã¦ãã¾ãã¾ãããæ¨æ¥ã®è©±é¡ã«ãããScalaãErlangã¯çµå±ãæè¨ã®éãæ»ãã¨ããããJavaç»å ´ä»¥åã«ãã©ã£ãæããªã®ã§ãããã è±ç·ãã¾ãããJavaã®ä¸¦è¡è¨è¿°ã¯ä¸éå端ã§ããããã¹ã¬ãããã®ãã®ããªãã¸ã§ã¯ãã¨ããã®ã§ãJavaè¨èªèªä½ã«ã¯ä¸¦è¡è¨è¿°ã¨ç¬ç«ããããã¨ã«æåããã®ã«(ããã¾ã§ã¯ããã£ã)ãåæå¶å¾¡(synchronized)ãè¨èªå´ã«å°å ¥ãã¦ãã¾ã£ãã®ã§ã並è¡å®è¡ã¯ãªãã¸ã§ã¯ãã¨ãã¦å®ç¾©ãã¦ãä¸æ¹ã§ä¸¦è¡å®è¡ã®åæå¶å¾¡ã¯è¨èªã¨ãã¦å®ç¾©ããã¨ãããã¨ã«ãªã£ã¦ãã¾ããã¤ã³ã¿ã¼ãã§ã¼ã¹ã«é¡ä¼¼ããæ¹æ³ã§ãã¯ã©ã¹å®ç¾©ãã®ãã®ã¨ã¯å¥ã«åæå¶å¾¡ã宣è¨ã§ããããã«ãã¦ããã¹ãã ã£ãããããã¾ãããã¨ããã®ã¯ã¯ã©ã¹å®ç¾©ã§ã¯ããã¾ã§ãæ©è½è¦ä»¶ãæ¸ãã¹ãã§ãããåæãªã©ã®éæ©è½è¦ä»¶ã¯ã¯ã©ã¹å®ç¾©ã«åãè¾¼ã¾ãªãæ¹ãããã®ã§ã
ãã¨Elrangã¯äº¤ææ©ç¨è¨èªã¨ãã¦è¨è¨ããããã¨ããããå®è¡åä½ã®ç²åº¦ã®éãã¯æ°ãã¤ããæ¹ããããããã交ææ©ã®å®è¡ã¢ãã«(ãããªãã®ããã£ãã¨ã¯ãããªãã)ã¯å®è¡åä½ãå°ãããã¤ã¾ãã¹ã¬ããç²åº¦ãå°ããã®ã§ãé常ã§ã¯ã¹ã¬ããã«å²ãå½ã¦ãªãã£ããããªå°ããå¦çãã¹ã¬ããã«å²ãå½ã¦ãæ¹ãå®è£ ããããããã¹ã«ã¼ãããããããã®ã§ãããããããµã¼ãç°å¢ã§åãããå ´åã«å®ç¨ã«ãªããã¯å¥åé¡ãããããå 交ææ©æè¡è ã®æ¹ã Erlangã¯ãã¾ã使ãããªããããããã¾ãããã ãã ãErlangã¨ããæå³ã§ã¯ãªãã§ãããä¸è¬è«ã¨ãã¦äº¤ææ©ç¨ã®è¨èªã¯å¼±ãã¨ãããããã¾ãã交ææ©ã®ä¸çã¨ããã®ã¯ã¨ã©ã¼ãã³ããªã³ã°ãå«ãã¦ãã¼ãã¦ã§ã¢çã«å¤ãã®ãã¨ã解決ãããä¸çãTCP/IPã®ããã«ãªãã§ãã½ããã¦ã§ã¢çã«è§£æ±ºããªãã¨ä¸çã«ã¯åããªãã®ã§ããErlang好ãã®äººã«åè«ããããããªã®ã§ãã¡ãã£ã¨è£è¶³ãã¦ããã¾ããããã¾ã®Erlangã¯äº¤ææ©ã ãã§ã¯ãªãã®ã§ãããããçãããè¨èªã§ãã以ä¸ã¯è¨è¿°å¯¾è±¡ãErlangåããä¸åãããè¦æãç¼åã«å¿ è¦ã ã¨æãã¾ãã