翻蚳è
ããã®ç޹ä»
ãã®èšäºã§ã¯Erlangã«ã€ããŠèª¬æããŸãããåãBEAMä»®æ³ãã·ã³äžã§åäœãã颿°åèšèªã§ããElixirã«ã€ããŠãåæ§ã«é©çšã§ããŸãã 2012幎ã«ç»å ŽããçŸåšç©æ¥µçã«éçºäžã§ãã Elixirã¯ãErlangã®å©ç¹ãä¿æããªãããæã䜿ãæ
£ããæ§æã«å ããŠãåºç¯ãªã¡ã¿ããã°ã©ãã³ã°æ©èœãååŸããŸããã
翻蚳è
ã®è©³çް2016幎ã®èšäºã§ãããæå¹æéã®ãªãåºæ¬çãªæŠå¿µã«é¢ãããã®ã§ãã
ç§ïŒç¿»èš³è
ïŒããã®æŠå¿µãšã³ã¡ã³ããžã®åç
§ã¯è§æ¬åŒ§[]
ãããã翻蚳è
ã®ã¡ã¢ãã§ããŒã¯ãããŠããŸãã
翻蚳ã®äžéšããç¹ã«çšèªã«é¢ããŠååã«æ£ãããªãå ŽåããŸãã¯ãã®ä»ã®ãšã©ãŒãçºçããå Žåã¯ãç¥ãããã ãããåãã§ä¿®æ£ããŸãã
ããã¹ãã®æ ¡æ£ãšç·šéã«ãååããã ããJan Gravshinã«æè¬ããŸãã
ããã¯Genetecãäž»å¬ããConnectDev'16ã«ã³ãã¡ã¬ã³ã¹ã§ã®ç§ã®ãã¬ãŒã³ããŒã·ã§ã³ã®ç¡æã®ãã©ã³ã¹ã¯ãªããïŒãŸãã¯é·ãèšãæãïŒïŒã§ãã

ããã®ã»ãšãã©ã®äººã¯Erlangã§ããã°ã©ãã³ã°ããããšããªããšæããŸãã èããããšãããããååãç¥ã£ãŠãããããããŸããã ãããã£ãŠãç§ã®ãã¬ãŒã³ããŒã·ã§ã³ã¯Erlangã®é«ã¬ãã«ã®æŠå¿µã«ã®ã¿åœ±é¿ãããã®èšèªã«åºäŒã£ãããšããªãå Žåã§ããä»äºããµã€ããããžã§ã¯ãã§åœ¹ç«ã€ããã«ãªããŸãã

ã¢ãŒã©ã³ã«èå³ãæã£ãããšããããªãããã¯ã©ãã·ã¥ããããããšããã¢ãããŒã«ã€ããŠèããããšããããŸãã 翻蚳è
]ã 圌ãšã®æåã®åºäŒãã¯ããããäžäœäœãªã®ããšæããŸããã Erlangã¯ãã«ãã¹ã¬ããå®è¡ãšãã©ãŒã«ããã¬ã©ã³ã¹ã«åªããŠããã¯ãã§ããããããã§ã¯ãã¹ãŠãèœãšãããšãææ¡ããŸããç§ãæ¬åœã«æãã·ã¹ãã ã®åäœã®æ£å察ã§ãã ãã®ææ¡ã¯é©ãã¹ãããšã§ãããããã«ãããããããã¢ãŒã©ã³ã®çŠ
ã¯ããã«çŽæ¥é¢ä¿ããŠããŸãã

ããæå³ã§ã¯ãErlangã«ãLet it Crashãã䜿çšããããšã¯ããBlow it upã[ ã Blow it ïŒããšåããããæ¥œããã§ãã -çŽ ç¿»èš³è
]ãã±ããç§åŠçšã ãçç Žãã¯ãã±ããç§åŠã§ããããæåŸã«æãããšã§ããããã£ã¬ã³ãžã£ãŒã®å€§æšäºã¯ãããé®®æã«æãåºãããŸãã äžæ¹ãç¶æ³ãç°ãªãèŠç¹ã§èŠããšããã±ãããšãã®æšé²ã·ã¹ãã å
šäœãççºããå¯èœæ§ã®ããå±éºãªçæãæ±ã£ãŠããŸãïŒãããŠããã¯å±éºãªç¬éã§ãïŒããå®å®ãæŽçããããã«äœ¿çšã§ãããããªå¶åŸ¡ãããæ¹æ³ã§ãã€ããŒããè»éã«ç§»åãŸãã¯éä¿¡ããŸãã
ãããŠãããã§ã®ãã€ã³ãã¯å®éã«å¶åŸ¡ãããŠããŸãã ãã±ãããµã€ãšã³ã¹ããççºãŸãã¯å°ãªããšããã®ãã¯ãŒãé©åã«å¶åŸ¡ããŠãå¿
èŠãªåŠçãè¡ãæ¹æ³ãšããŠæ€èšããããšãã§ããŸãã æ¬¡ã«ãåãè§åºŠããã¯ã©ãã·ã¥ãããŸãïŒãã©ãŒã«ããã¬ã©ã³ã¹ã«é¢ãããã®ã§ãã ãã®ã¢ã€ãã¢ã¯ãåºç¯å²ã«ãããå¶åŸ¡äžèœãªé害ã§ã¯ãªããé害ãäŸå€ãããã³ã¯ã©ãã·ã¥ã䜿çšå¯èœãªããŒã«ã«å€ããããšã§ãã

è¿ã¥ããŠããç§[è¿ã¥ããŠããç§-çŽã ãã©ã³ã¹ã¬ãŒã¿ ]ãšå¶åŸ¡ãããã¢ããŒãªã³ã°ã¯ãç«ã§ç«ãšæŠãå®éã®äŸã§ãã ç§ã®åºèº«å°ã§ãããµã°ãã»ã©ãã¯ã»ãµã³ã»ãžã£ã³ã§ã¯ããã«ãŒããªãŒçã宿çã«ç®¡çãããæ¹æ³ã§çããããæé·ãåºæ¿ããåéããŸãã ããªãé »ç¹ã«ã森æç«çœãé²ãããã«æ£®æã®äžå¥åº·ãªãšãªã¢ãç«äºã§ã¯ãªã¢ãããã®ãèŠãããšãã§ããã®ã§ãããã¯é©åãªç£ç£ãšç®¡çã®äžã§èµ·ãããŸãã äž»ãªç®æšã¯ãèªç¶ã®ç«ãããã«åºããããšããªãããã«ãå¯çç©ãåãé€ãããšã§ãã
ãããã®ç¶æ³ã®ãã¹ãŠã«ãããŠãäœç©ã森æãééããç«ã®ç Žå£åã¯ãäœç©ãçããããæ£®æã®ã¯ããã«å€§ããªå¶åŸ¡ãããªãç Žå£ãé²ãããã«äœ¿çšãããŸãã
ãLet it crashãã®æå³ã¯ãŸãã«ããã ãšæããŸãã 倱æãã¯ã©ãã·ã¥ãäŸå€ãå©çšããŠãããã管çå¯èœãªæ¹æ³ã«ãããšãåé¿ããå¿
èŠãããæãããåºæ¥äºãããã代ããã«å€§èŠæš¡ãªä¿¡é Œæ§ã®é«ãã·ã¹ãã ãçµã¿ç«ãŠãããã®åŒ·åãªæ§ç¯èŠçŽ ã«ãªããŸãã

ãããã£ãŠãåé¡ã¯ãé害ãç Žå£çããã建èšçã§ããããšãä¿èšŒããæ¹æ³ã«ãªããŸãã Erlangã®ãã®ããã®ã¡ã€ã³ãããã¯ããã»ã¹ã§ãã Erlangããã»ã¹ã¯å®å
šã«åé¢ãããŠãããåé¢ã§ããªãã¢ãŒããã¯ãã£ãåããŠããŸãïŒäœãå
±æããŸããïŒã ä»ã®ã¡ã¢ãªã«ã¯ããŒã«ãããã䜿çšããããŒã¿ãæªãããããŠãäœæ¥ã«åœ±é¿ãäžãããããããã»ã¹ã¯ãããŸããã ããã¯ã100ïŒ
ä¿èšŒãããæ»ã«ãããŠããããã»ã¹ãåé¡ãããèªäœã«ä¿æããã·ã¹ãã ã«éåžžã«åŒ·åãªé害åé¢ãæäŸããããšãæå³ãããããåªããŠããŸãã
Erlangã®ããã»ã¹ãéåžžã«è»œéã§ãããããæ°åããã³æ°åã®ããã»ã¹ãåæã«åé¡ãªãåäœããŸãã ã¢ã€ãã¢ã¯ã äœè£ãããéãã§ã¯ãªãã å¿
èŠãªæ°ã®ããã»ã¹ã䜿çšããããšã§ãã ãªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªãããããã€ã§ãæå€§32åã®ãªããžã§ã¯ããåæã«åäœãããããšãã§ãããšæ³åããŠãã ããã ããã°ã©ã ãäœæããã«ã¯ãå¶éãå³ããããŠã°ãããŠãããšããçµè«ã«ããã«å°éããŸãã å€ãã®å°ããªããã»ã¹ãååšãããããæ
éã®ã°ãã€ãã倧ãããªããŸãã ãµãŒãã¹ã«å€±æã®åãæ³šãããäžçã§ã¯ãããã¯è¯ãããšã§ãïŒ
Erlangã®ããã»ã¹ã®ã¡ã«ããºã ã¯å°ãå¥åŠã«èŠãããããããŸããã Cã§ããã°ã©ã ãäœæãããšã1ã€ã®å€§ãmain()
颿°ããããããããã¹ãŠãåŠçããŸãã ããã¯ãããã°ã©ã ãžã®ãšã³ããªãã€ã³ãã§ãã Erlangã«ã¯ãã®ãããªãã®ã¯ãããŸããã ã©ã®ããã»ã¹ãäž»èŠãªãã®ã§ã¯ãããŸããã åããã»ã¹ã¯é¢æ°ãèµ·åãããã®é¢æ°main()
ãã®ç¹å®ã®ããã»ã¹ã®main()
圹å²ãæãããŸãã
ä»ãç§ãã¡ã¯ããããã®çŸ€ããæã£ãŠããŸããã圌ããäœããã®æ¹æ³ã§éä¿¡ã§ããªãå Žåããã€ãã匷åããããã«ããããéãããšã¯éåžžã«é£ããã«éããããŸããã ãããããèžãå Žæ[ ãããããèžã -çŽ ç¿»èš³è
]ãErlangã¯ã¡ãã»ãŒãžã³ã°ãåŠçããŸãã

ã¡ãã»ãŒãžã³ã°ã¯ââãç«¶äºã®æ¿ããç°å¢ã§æãçŽæçãªã³ãã¥ãã±ãŒã·ã§ã³åœ¢åŒã§ãã 圌女ã¯ãç§ãã¡ãæçŽãæžããŠã¯ãŒãªãšã«ãã£ãŠéЬã«ä¹ã£ãŠéã£ãæ¥ããå§ãŸã£ãŠãããã¬ãªã³ã®ã»ããã©[ å
åŠã»ããã© -çŽ ç¿»èš³è
]ã€ã©ã¹ãã«ç€ºãããŠããŸãã åŸè
ã®å Žåãããªãã¯åã«ããããã®äººãå¡ã«éãã圌ãã«ã¡ãã»ãŒãžãäžãã圌ãã¯ç²ãã銬ãããéãæ¹æ³ã§é·è·é¢ã«ããŒã¿ãéä¿¡ããããã«æãæ¯ãã åŸã
ã«ããã®æ¹æ³ã¯é»ä¿¡ã«çœ®ãæãããããããé»è©±ãšã©ãžãªãå€ããŸããããããŠä»ãç§ãã¡ã¯ããããã¹ãŠã®ãã¡ãã·ã§ããã«ãªæè¡ã䜿ã£ãŠãæ¬åœã«é ããæ¬åœã«éãã¡ãã»ãŒãžãéä¿¡ããŸãã
ç¹ã«æã®ãã®ã¡ãã»ãŒãžã³ã°ã®éåžžã«éèŠãªåŽé¢ã¯ããã¹ãŠãéåæã§ãããã¡ãã»ãŒãžãã³ããŒãããããšã§ãã ã¯ãŒãªãšãåž°ã£ãŠããã®ãåŸ
ã£ãŠãã人ã¯äžæ¥äžããŒãã«ç«ã£ãŠããªãã£ããã誰ãïŒç§ã¯çãããïŒã»ããã©ã®è¿ãã«åº§ã£ãŠçããåŸ
ã£ãŠããªãã£ãã ããªãã¯ã¡ãã»ãŒãžãéä¿¡ããŠããªãã®ããžãã¹ã«æ»ããŸããããããŠãæéã®çµéãšãšãã«ã誰ããçããå°çããããšãããªãã«ç¥ãããŸããã
ããã¯è¯ãããšã§ã-å察åŽãåå¿ããªãå Žåãããªãã¯æ»ã¬ãŸã§ããªãã®ããŒãã§ç«ã¡åŸçããããšã¯ãããŸããã éã«ãåä¿¡è
ã¯ãæè¿å°çããã¡ãã»ãŒãžãçªç¶éæ³ã®ããã«æ¶ããã倿Žãããããããšããäºå®ã«çŽé¢ããããšã¯ãããŸããã ã¡ãã»ãŒãžãéä¿¡ãããšãã«ããŒã¿ãã³ããŒããå¿
èŠããããŸãã ãããã®2ã€ã®ååã«ãããéä¿¡äžã®éå®³ãæªãã ç¶æ
ãŸãã¯ä¿®åŸ©äžå¯èœãªç¶æ
ãåŒãèµ·ãããªãããšãä¿èšŒãããŸãã 翻蚳è
]ã Erlangã¯äž¡æ¹ãå®è£
ããŠããŸãã
åããã»ã¹ã«ã¯ããã¹ãŠã®çä¿¡ã¡ãã»ãŒãžçšã®ç¬èªã®ã¡ãŒã«ããã¯ã¹ããããŸãã 誰ã§ãããã»ã¹ã¡ãŒã«ããã¯ã¹ã«æžã蟌ãããšãã§ããŸãããããã¯ã¹ã®ææè
ã®ã¿ãããã調ã¹ãæ©äŒããããŸãã ããã©ã«ãã§ã¯ãã¡ãã»ãŒãžã¯åä¿¡ããé ã«åŠçãããŸããããã¿ãŒã³ãããã³ã°[ ãã¿ãŒã³ãããã³ã° -çŽ ç¿»èš³è
]ã䜿çšãããšãåªå
é äœã倿Žãã1çš®é¡ã®ã¡ãã»ãŒãžã«åžžã«ãŸãã¯äžæçã«éäžã§ããŸãã

çããã®äžã«ã¯ãç§ãèšãããšã«å¥åŠããæãã人ãããŸãã åé¢ãšç¬ç«æ§ãéåžžã«åªããŠãããããã·ã¹ãã ã³ã³ããŒãã³ããæ®ãã®éšåã«åœ±é¿ãäžããããšãªãæ»ã«ãèœäžããããšãèš±ããŠããããšãç¹°ãè¿ããŸãã ããããå€ãã®ããã»ã¹ãŸãã¯ãšãŒãžã§ã³ãéã®éä¿¡ã«ã€ããŠãèšåããŸããã
2ã€ã®ããã»ã¹ã®å¯Ÿè©±ã®éå§æã«æ¯åããããã®éã®æé»çãªäŸåé¢ä¿ã衚瀺ãããŸãã äž¡æ¹ãæ¥ç¶ããã·ã¹ãã ã§æé»çãªç¶æ
ãçºçããŸãã ããã»ã¹Aãããã»ã¹Bã«ã¡ãã»ãŒãžãéä¿¡ããBãå¿çããã«æ»äº¡ããå ŽåãAã¯å¿çãæ°žé ã«åŸ
ã€ãããã°ããããŠããéä¿¡ãæåŠã§ããŸãã 2çªç®ã¯èš±å®¹å¯èœãªæŠç¥ã§ãããéåžžã«ãããŸãã§ããçžæåŽãæ»ãã ããé·æéã«ããã£ãŠããžãŒã§ãããã¯å®å
šã«äžæã§ãããã³ã³ããã¹ãã®ãªãã¡ãã»ãŒãžãã¡ãŒã«ããã¯ã¹ã«å°çããå¯èœæ§ããããŸãã
ãã®èŠè¿ãã«ãErlangã¯ãã®åé¡ã解決ãã2ã€ã®ã¡ã«ããºã ãæäŸããŸãïŒã¢ãã¿ãŒãšãªã³ã¯[ ãªã³ã¯-çŽã 翻蚳è
]ã
ã¢ãã¿ãŒãšã¯ããªãã¶ãŒããŒã«ãªãããšã§ãã ããã»ã¹ãç£èŠããããšã«ããäœããã®çç±ã§ããã»ã¹ã忢ããå Žåãã¡ãã»ãŒãžãåä¿¡ãã¬ã€ã§äœãèµ·ãã£ãããéç¥ããŸãã ããã«å¯Ÿå¿ããèŠã€ãã£ãæ
å ±ã«åºã¥ããŠæ±ºå®ãäžãããšãã§ããŸãã 2çªç®ã®ããã»ã¹ã§ã¯ãããããã¹ãŠè¡ã£ãããšãç¥ãããšã¯ãããŸããã ãããã£ãŠãããªãããªãã¶ãŒããŒã§ããã°ã¢ãã¿ãŒã¯ããªãè¯ãã§ãã 翻蚳è
]ãŸãã¯ããŒãããŒã®ã¹ããŒã¿ã¹ã管çããŸãã
ãªã³ã¯[ ãªã³ã¯-çŽ ãã©ã³ã¹ã¬ãŒã¿ ]-忹忧ã§ããã1ã€ã®äœæã«ãããäž¡æ¹ã®é¢é£ããã»ã¹ã®éåœãçµåãããŸãã ããã»ã¹ã忢ãããšãããã«é¢é£ãããã¹ãŠã®ããã»ã¹ã¯çµäºã³ãã³ããåãåããŸãã 翻蚳è
]ã ãã®ããŒã ã¯ãä»ã®äººã殺ããŸã[ é¢é£-çŽã 翻蚳è
]ããã»ã¹ã
ã¢ãã¿ãŒã䜿çšããŠé害ãè¿
éã«æ€åºã§ãããã€ã³ãã£ã³ã°ãã¢ãŒããã¯ãã£èšèšãšããŠäœ¿çšããŠãé害ãå
šäœã«åºããããã«è€æ°ã®ããã»ã¹ãçµã¿åãããããšãã§ãããããããã¯ãã¹ãŠéåžžã«è峿·±ããã®ã«ãªããŸãã ç¬ç«ãããã«ãã£ã³ã°ãããã¯ãçžäºã«äŸåããããã«ãªããã³ã«ããããããã°ã©ã ã«è¿œå ãå§ããããšãã§ããŸãã ããã¯ãã·ã¹ãã ã誀ã£ãŠäžå®å®ã§éšåçã«å€æŽãããç¶æ
ã«ã¯ã©ãã·ã¥ããã®ãé²ããã䟿å©ã§ãã æ¥ç¶ã¯éçºè
ãä¿èšŒããŸããäœããå£ããå Žåãããã¯å®å
šã«å£ããŠç©ºçœã®ã·ãŒããæ®ããæŒç¿ã«åå ããªãã£ãã³ã³ããŒãã³ãã«ã¯åœ±é¿ããŸããã§ããã
ãã®å³ã§ã¯ãå®å
šããŒãã§çµã°ããç»å±±è
ã®ç»åãéžæããŸããã ç»å±±è
ãäºãã«æ¥ç¶ããŠããå Žåã圌ãã¯æ²æšãªäœçœ®ã«ããããšã«æ°ä»ãã§ãããã 1人ã®ã¯ã©ã€ããŒãã¹ã©ã€ããããã³ã«ãããŒã ã®ä»ã®ã¡ã³ããŒã¯ããã«æ»äº¡ããŸãã ããžãã¹ãè¡ãã«ã¯è¯ãæ¹æ³ã§ã¯ãããŸããã
代ããã«ãErlangã§ã¯ãäžéšã®ããã»ã¹ãç¹å¥ãªãã®ãšããŠæå®ãã trap_exit
ãã©ã¡ãŒã¿ãŒã§ããŒã¯ããããšãtrap_exit
ãŸãã ãã®åŸãéä¿¡ãä»ããŠéä¿¡ãããçµäºã³ãã³ããåä¿¡ããã¡ãã»ãŒãžã«å€æã§ããŸãã ããã«ããã圌ãã¯ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ããå Žåã«ãã£ãŠã¯æ
人ã®ä»äºãå®äºããããã«æ°ããããã»ã¹ãããŠã³ããŒãããããšãã§ããŸãã ç»å±±è
ãšã¯ç°ãªãããã®ã¿ã€ãã®ç¹å¥ãªããã»ã¹ã§ã¯ãããŒãããŒã·ããããã»ã¹ã®äœäžãé²ãããšã¯ã§ããŸããã ããã¯ããŒãããŒèªèº«ã®è²¬ä»»ã§ãããããšãã°try ... catch
æ§é ã䜿çšããŠå®è£
ãããŸãã åºåããã£ããããããã»ã¹ã«ã¯ãå¥ã®ã¡ã¢ãªã§åçããŠä¿åããæ©äŒã¯ãŸã ãããŸããããå
±åæ»ãé¿ããããšãã§ããŸãã
ããã¯ãç£ç£è
ãäœæããéèŠãªæ©äŒã«ãªãã€ã€ãããŸãã ããã«ãããã«å°éããŸãã

ã¹ãŒããŒãã€ã¶ãŒã«ç§»ãåã«ãç§ãã¡èªèº«ã®å©çã®ããã«ããããã䜿çšããã·ã¹ãã ãæ£åžžã«æºåã§ããæ®ãã®ããã€ãã®æåãèŠãŠã¿ãŸãããã ãããã®1ã€ã¯ãããã»ã¹ã¹ã±ãžã¥ãŒã©ã®åäœã«é¢é£ããŠããŸãã ç§ãèšåãããæ¬åœã®ã±ãŒã¹ã¯ãã¢ãã11å·ã®æé¢çéžã§ã[ ã¢ãã11-çŽã 翻蚳è
]ã
ã¢ãã11å·ã¯1969å¹Žã«æã«è¡ã£ãããã·ã§ã³ã§ãã ç»åã§ã¯ãããºã»ã¢ã«ããªã³ãšããŒã«ã»ã¢ãŒã ã¹ããã³ã°ãæä¹ããŠããæé¢ã¢ãžã¥ãŒã«ãèŠããŸããåçã¯ãã³ãã³ãã»ã¢ãžã¥ãŒã«ã«æ®ã£ããã€ã±ã«ã»ã³ãªã³ãºã«ãã£ãŠæ®åœ±ããããšæããŸãã
æé¢çéžã®éäžã§ãã¢ãžã¥ãŒã«ã¯Apollo PGNCSïŒäžæ¬¡ã¬ã€ãã³ã¹ãèªæ³ããã³å¶åŸ¡ã·ã¹ãã ïŒ[ Apollo PGNCS-çŽ ç¿»èš³è
]ã å¶åŸ¡ã·ã¹ãã ã¯ãæ
éã«èšç®ããããµã€ã¯ã«æ°ã§è€æ°ã®ã¿ã¹ã¯ãå®è¡ããŸãã[ CPU-çŽã 翻蚳è
]åã ãŸããNASAã¯ãããã»ããµã容éã®85ïŒ
以äžã§äœ¿çšãã15ïŒ
ãç¡æã§äœ¿çšããå¿
èŠãããããšãçºèŠããŸããã
å®å®é£è¡å£«ã¯ãããã·ã§ã³ãäžæããªããã°ãªããªãå Žåã«åããŠãä¿¡é Œã§ããããã¯ã¢ããèšç»ãæãã§ãããããã³ãã³ãããã³ãµãŒãã¹ã¢ãžã¥ãŒã«ããªã³ã«ããŠäŒè°ã®ã¬ãŒããŒãæ®ããŸããã ããã«ãããCPUã®æ®ãã®é»åãé©åã«ããŒããããŸããã Buzz Aldrinãã³ãã³ããå
¥åãå§ãããšããã«ã茻茳ã«é¢ããã¡ãã»ãŒãžã衚瀺ããå§ããå®éã«ã¯ãå©çšå¯èœãªã³ã³ãã¥ãŒãã£ã³ã°èœåãè¶
ããŸããã ã·ã¹ãã ãããããå€ããŠãããããããããã®ä»äºãããããšãã§ããªãã£ãã§ãããããããŠããã¹ãŠã¯2äººã®æ»ãã å®å®é£è¡å£«ã§çµãã£ãŠããã ããã
ãŸããã¬ãŒããŒã«æ¢ç¥ã®ããŒããŠã§ã¢ã®åé¡ãããããã®åšæ³¢æ°ãå¶åŸ¡ã³ã³ãã¥ãŒã¿ãŒã®åšæ³¢æ°ãšäžèŽããªãã£ãããã«éè² è·ãçºçããŸãããããã«ãããéåžžãããã¯ããã«å€ãã®ãµã€ã¯ã«ã®ãçªçããçºçããŸããã NASAã®äººã
ã¯ãã«ã§ã¯ãªãããã®ãããªéèŠãªããã·ã§ã³ã®ããã«å®ç掻ã§ãã¹ããããŠããªãæ°ãããã¯ãããžãŒã䜿çšãã代ããã«ãå®çžŸã®ããã³ã³ããŒãã³ããåå©çšããŸããã ãããããã£ãšéèŠãªã®ã¯ã圌ããåªå
ã¹ã±ãžã¥ãŒãªã³ã°ãæãã€ããããšã§ãã
ããã¯ããã®ã¬ãŒããŒããŸãã¯ããããå
¥åãããã³ãã³ããããã»ããµãŒã«é床ã®è² è·ãããããšãã¿ã¹ã¯ã殺ãããåªå
床ãé«ããæ¬åœã«å¿
èŠãªéèŠãªãã®ã«CPUãµã€ã¯ã«ãäžããããããšãæå³ããŸãã 1969幎ã§ããã仿¥ã§ã¯ãå調çãªãã£ã¹ãããã®ã¿ãæäŸãããã以äžã®æ©èœãæäŸããªãèšèªããã¬ãŒã ã¯ãŒã¯ãããã«å€ããããŸãã
Erlangã¯éèŠãªã·ã¹ãã ã«äœ¿çšãããã¹ãèšèªã§ã¯ãããŸããããœãããªã¢ã«ã¿ã€ã ã®å¶çŽã®ã¿ãèæ
®ã«å
¥ããŠããŸã-çŽã 翻蚳è
]ãããã³å³å¯ãªãªã¢ã«ã¿ã€ã ã®å¶éã§ã¯ãªãããããã®ãããªã·ããªãªã«äœ¿çšããããšã¯ãå§ãã§ããŸããã ããããErlangã¯äºé²çãªèšç»ãæäŸããŸã[ 圌女ã¯å
å¶çãªã¹ã±ãžã¥ãŒãªã³ã°ã§ãã 翻蚳è
]ããã³ããã»ã¹ã®åªå
é äœä»ãã ã€ãŸããéçºè
ãŸãã¯ã·ã¹ãã èšèšè
ã¯ãããªãŒãºãé²ãããã«ãã³ã³ããŒãã³ãïŒäœ¿çšããã©ã€ãã©ãªãå«ãïŒã«å¿
èŠãªCPUè² è·ã絶察ã«å
šå¡ãæ
éã«èšç®ããããšã«æ³šæããå¿
èŠã¯ãããŸãã ã 圌ãã¯åã«ãã®ãããªåãåŸãããšãã§ããŸããã ãŸããå¿
èŠãªãšãã«ãã€ã§ãéèŠãªã¿ã¹ã¯ãå®è¡ãããå Žåã¯ãæäŸããããšãã§ããŸãã
ããã¯æ·±å»ãªãŸãã¯é »ç¹ãªèŠæ±ã®ããã«ã¯èŠããã人ã
ã¯äŸç¶ãšããŠäžŠåããã»ã¹ã®å調ã¹ã±ãžã¥ãŒãªã³ã°ã®ã¿ã«åºã¥ããŠæ¬åœã«æåãããããžã§ã¯ãããªãªãŒã¹ããŸãããããã¯ç¢ºãã«éåžžã«äŸ¡å€ããããŸããä»ã®äººã®ééãããããããŠããªãèªèº«ã®ééãããããªããå®ãããã§ãã ãŸããèªåè² è·åæ£ããæªã眰ããããŸãã¯ãè¯ãã奚å±ãããããã»ã¹ããŸãã¯ããå€ãã®ã¿ã¹ã¯ãæã€ããã»ã¹ã«é«ãåªå
é äœãå²ãåœãŠããªã©ã®ã¡ã«ããºã ãžã®æãéããŸãã ããããã¹ãŠã«ãããæçµçã«ã·ã¹ãã ã¯è² è·ãäºæããªãã€ãã³ãã«ååé©å¿ã§ããããã«ãªããŸãã

ãŸãšããªåŸ©å
åã確ä¿ããããã®äžéšãšããŠèª¬æãããæåŸã®ã³ã³ããŒãã³ãã¯ããããã¯ãŒã¯ã§æ©èœããããšã§ãã é·æçãªæŽ»åã念é ã«çœ®ããŠéçºãããã·ã¹ãã ã§ã¯ãè€æ°ã®ã³ã³ãã¥ãŒã¿ãŒã§è¿
éã«å®è¡ã§ããããšãäžå¯æ¬ ãªèŠä»¶ã«ãªããŸãã äž»ã«ãŠãŒã¶ãŒã«åœ±é¿ãäžããé害ãè£ãããšãã§ããªããããéè²ã®è»ã§ãã¿ã³ã®ãã¢ã®åŸãã«ããã¯ãããå Žæã«åº§ããããããŸããã
é
ããæ©ããã2å°ã®ã³ã³ãã¥ãŒã¿ãŒãå¿
èŠã«ãªããŸãããã®ãããæ
éäžã«ã·ã¹ãã ã®äžéšãå±éãããå Žåã2å°ç®ãå Žåã«ãã£ãŠã¯3å°ç®ã®é害ã«èããããšãã§ããŸãã
ã€ã©ã¹ãã®é£è¡æ©-F-82ãã€ã³ãã¹ã¿ã³ã°[ F-82ãã€ã³ãã¹ã¿ã³ã° -çŽ ç¿»èš³è
]ãç¬¬äºæ¬¡äžç倧æŠäžã«ãä»ã®ã»ãšãã©ã®æŠéæ©ãåã«ã«ããŒã§ããªãã£ãè·é¢ã§çææ©ãè·è¡ããããã«èšèšãããèªç©ºæ©ã 圌ã¯2ã€ã®ãã£ãã³ãæã£ãŠããããããã€ãããã¯ã·ããã§ããã€ã¹ãå¶åŸ¡ã§ããŸããã é©åãªã¿ã€ãã³ã°ã§ã1人ã®ãã€ããããé£è¡æ©ãæçžŠãã2人ç®ã®ãã€ããããè¿ææ©ã®åœ¹å²ã§ã¬ãŒããŒãå¶åŸ¡ã§ããããã«ã責任ãåå²ããããšãã§ããŸããã çŸä»£ã®èªç©ºæ©ã«ã¯ãŸã åæ§ã®æ©èœããããŸãã 圌ãã«ã¯ç¡æ°ã®éè€ã·ã¹ãã ããããå€ãã®å Žåãä¹åå¡ã¯é£è¡äžã«ç ããŸãããã®ãããå¿
èŠã«å¿ããŠã誰ããããã«èªç©ºæ©ã®å¶åŸ¡ãåŒãç¶ãæºåãã§ããŠããŸãã
ããã°ã©ãã³ã°èšèªãŸãã¯éçºç°å¢ã«é¢ããŠã¯ããããã®ã»ãšãã©ã¯åæ£äœæ¥ã®å¯èœæ§ãªãã«èšèšãããŠããŸããããµãŒããŒã¹ã¿ãã¯ãéçºããå Žåãè€æ°ã®ãµãŒããŒã§äœæ¥ããå¿
èŠãããããšã¯æããã§ãã ããã§ãããã¡ã€ã«ã䜿çšããå Žåã¯ãæšæºã©ã€ãã©ãªã«ãã®ããã®ããŒã«ããããŸãã ã»ãšãã©ã®èšèªãæäŸã§ããæå€§å€ã¯ããœã±ãããµããŒããŸãã¯HTTPã¯ã©ã€ã¢ã³ãã§ãã
Erlangã¯ã忣ã·ã¹ãã ã®çŸå®ã«æ¬æã衚ããŠãææžåãããééçãªäœæã®ããã®å®è£
ãæäŸããŸãã , , - [ pylyglot systems â . ].

" ". - , . "Let it crash" , , .
â .

[ supervision trees â . ] â , . â , â â , . , â "OTP", , "Erlang/OTP" [ OTP â Open Telecom Platform â . ].
â , , , , , "" . , : , , .
, , , , â .

. " , ". , . .
. " " [ one for one â . *]. . , .
â " " [ one for all â . *]. , . , , . , . , . , , . , , !
, , , . , . : , .
, . â " " [ rest for one â . ]. , , . .
[ , â â . ] . 1 , 150 .

, , " , !"
. , , , . "" [ â . ] "" [ â . ], Jim Gray 1985 ( Jim Gray, !)
-, â , , . . , , . , , , , .
â , , , . , , . , , .
, , .

, â .
, . , , .
, â , , . , â ; . , , . , , , .
, , .
. , , [ Property-Based Testing Basics , Property-based testing â . ] ( ), â - , . , , , .

( ). , , .
, . , , , , . - -.
. , , , , , , .
, . Jim Gray, , , 132 , , . 131 132 , , . , , , , ; , , , 100 000 , â 10 , - .
, , .

?
, . . , . , , . , "" Facebook ( ), , , Facebook .
, , , , . , , .
, . : , , , , .
, ( ), , . , .

, , . , , , .
, , .

() . , : . Tally () , Live Reports ( ) .
, . District (; ) , (Storage). (Cache) ( ) (Worker pool).
[ supervision strategies â . ], , , , . , " ", , , . ( ) " ". , (OCR) , , . , , , , .
OCR , C , . , C, , , .
, , , . 10 , , , .
, , . , . â , .
, , , . OCR C , . OCR . . , , ( ). , , â , .
OCR , . , , â . â . , , , , - , .
, . , â - , - ( ) , . , â , . â let it crash!
. , if/else
, switch
', try/catch
. , , , . [ , â . ], .

, , , , . : , .
, , , . (, SMS).
, , , , , .

OTP. OTP- â , . , , . , , , . , , , .
, OTP- . OTP-, . [: OTP-, , ]
:
- , ;
- , , , ;
- , ;
- , , , , ;
- ( , );
- .
. , . , , . , â , , .

, ? , . , Heroku .
. (vegur) , , , . , , .
- , . , : 500 000 1 000 000 ! , . ? , , , 100 000 , ? - 1:17000 1:7000. , , , .
, . , , , . , . , , .

. .
, - : " , . , , , . , , . , ."
. .
, , , 60 . ( United 734), , , , - . , , , , ABS, .
( ), . , . , , .

, . ( , ) Richard Cook. , YouTube, .
- . , , , .. â ( , , ..) , , - , .
, , , . , , - - .
, , , . , . , . - - , , , .

, . , , : , . . , , , .
, , , . .

, , . , , , .
. , , , - , , , , , . , .

, 'let it crash' â , , , , , â , , , . . fail-fast , , " ", .
, . , , . . , , . Let it crash.

: , , , â . , ( , !) .