颿°åããã°ã©ãã³ã°ã®ååãšã倿§ãªæ¥çãã°ããŒãã«ãªãœãããŠã§ã¢éçºç°å¢ã«ãããå®è·µçãªå¿çšãæ¢ãã
å®è·µã«ããã颿°åããã°ã©ãã³ã°ã®ååïŒã°ããŒãã«ãªèŠç¹
颿°åããã°ã©ãã³ã°ïŒFPïŒã¯ãããããªãã©ãã€ã ãããœãããŠã§ã¢éçºã«ãããäž»æµã®ã¢ãããŒããžãšç§»è¡ããŸãããäžå€æ§ãçŽç²é¢æ°ã宣èšçãªã¹ã¿ã€ã«ãžã®éç¹ã¯ãç¹ã«ä»æ¥ã®è€éãªäžŠè¡ã»åæ£ã·ã¹ãã ã«ãããŠã説åŸåã®ããå©ç¹ãæäŸããŸããæ¬çš¿ã§ã¯ãFPã®ã³ã¢ååãæ¢ãã倿§ãªã·ããªãªã«ãããå®è·µçãªå¿çšãäŸç€ºããã°ããŒãã«ãªãœãããŠã§ã¢éçºã®æèã«ããããã®é¢é£æ§ã匷調ããŸãã
颿°åããã°ã©ãã³ã°ãšã¯ïŒ
ãã®æ žå¿ã«ãããŠã颿°åããã°ã©ãã³ã°ã¯ãèšç®ãæ°åŠç颿°ã®è©äŸ¡ãšããŠæ±ããç¶æ ã®å€æŽããã¥ãŒã¿ãã«ãªããŒã¿ãé¿ãã宣èšçããã°ã©ãã³ã°ãã©ãã€ã ã§ããããã¯ãããã°ã©ã ã®ç¶æ ã倿Žããäžé£ã®ã¹ããŒãã¡ã³ããäžå¿ã«ããã°ã©ã ãæ§ç¯ãããåœä»€åããã°ã©ãã³ã°ãšã¯å¯Ÿç §çã§ããFPã¯ãèšç®æ¹æ³ã§ã¯ãªããäœãèšç®ããããã«çŠç¹ãåœãŠãŠããŸãã
颿°åããã°ã©ãã³ã°ã®ã³ã¢åå
颿°åããã°ã©ãã³ã°ã®åºç€ãšãªãäž»èŠãªååã¯ä»¥äžã®éãã§ãã
äžå€æ§ (Immutability)
äžå€æ§ãšã¯ãããŒã¿æ§é ãäœæãããåŸããã®ç¶æ ã倿Žã§ããªãããšãæå³ããŸããå ã®ããŒã¿ã倿Žãã代ããã«ãæäœã¯ç®çã®å€æŽãå«ãæ°ããããŒã¿æ§é ãäœæããŸããããã«ããããããã°ã䞊è¡åŠçãããã°ã©ã ã®åäœã®æšè«ãåçã«ç°¡çŽ åãããŸãã
äŸïŒãŠãŒã¶ãŒåã®ãªã¹ããèããŠã¿ãŸããããåœä»€åã¹ã¿ã€ã«ã§ã¯ããªã¹ãã«èŠçŽ ã远å ãããåé€ãããããŠçŽæ¥å€æŽãããããããŸããã颿°åã¹ã¿ã€ã«ã§ã¯ãç®çã®å€æŽãå«ãæ°ãããªã¹ããäœæããå ã®ãªã¹ãã¯ãã®ãŸãŸã«ããŠãããŸãã
å©ç¹ïŒ
- ãããã°ã®ç°¡çŽ åïŒããŒã¿ã¯äœæåŸã«å€æŽãããªãããããšã©ãŒã®åå ãç¹å®ããã®ã容æã«ãªããŸãã
- 䞊è¡åŠçã®æ¹åïŒäžå€ããŒã¿ã¯æ¬è³ªçã«ã¹ã¬ããã»ãŒãã§ããã䞊è¡ããã°ã©ã ã§ããã¯ããã®ä»ã®åæã¡ã«ããºã ã®å¿ èŠæ§ããªããªããŸããããã¯ããµãŒããŒããŠãŒã¶ãŒãå°ççã«åæ£ãããŠããã°ããŒãã«ç°å¢ã§ãã¹ã±ãŒã©ãã«ã§ããã©ãŒãã³ã¹ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ãã
- äºæž¬å¯èœæ§ã®åäžïŒããã°ã©ã ã®å®è¡äžã«ããŒã¿ãäžè²«ããŠç¶æãããããšãç¥ãããšã§ããã®åäœãæšè«ããã®ã容æã«ãªããŸãã
çŽç²é¢æ° (Pure Functions)
çŽç²é¢æ°ã¯ãåãå ¥åã«å¯ŸããŠåžžã«åãåºåãè¿ããå¯äœçšããããŸãããå¯äœçšã«ã¯ãã°ããŒãã«ç¶æ ã®å€æŽãI/OæäœïŒãã¡ã€ã«ããããã¯ãŒã¯ãžã®æžã蟌ã¿ãªã©ïŒãå€éšã·ã¹ãã ãšã®å¯Ÿè©±ãªã©ãå«ãŸããŸãã
äŸïŒæ°å€ã®äºä¹ãèšç®ãã颿°ã¯çŽç²é¢æ°ã§ããããŒã¿ããŒã¹ã¬ã³ãŒããæŽæ°ããããã³ã³ãœãŒã«ã«å°å·ããããã颿°ã¯çŽç²é¢æ°ã§ã¯ãããŸããã
å©ç¹ïŒ
- ãã¹ãå®¹ææ§ïŒçŽç²é¢æ°ã¯ããã®åºåãå ¥åã®ã¿ã«äŸåããããããã¹ããéåžžã«ç°¡åã§ãããã®æ£ç¢ºæ§ãæ€èšŒããããã«åçŽãªåäœãã¹ããäœæã§ããŸãã
- åæå¯èœæ§ïŒçŽç²é¢æ°ã¯ç°¡åã«çµã¿åãããŠãããè€éãªé¢æ°ãäœæã§ããŸãããã®ã¢ãžã¥ãŒã«æ§ã«ãããã³ãŒãã®ä¿å®æ§ãšåå©çšæ§ãåäžããŸãã
- 䞊ååïŒçŽç²é¢æ°ã¯ãããŒã¿ç Žæãç«¶åç¶æ ã®ãªã¹ã¯ãªãã«äžŠåã«å®è¡ã§ããŸããããã¯ãèšç®è² è·ã®é«ãã¿ã¹ã¯ã«ç¹ã«éèŠã§ãã
é«é颿° (Higher-Order Functions)
é«é颿°ã¯ãä»ã®é¢æ°ãåŒæ°ãšããŠåã£ããã颿°ãçµæãšããŠè¿ãããã§ããŸããããã«ããã匷åãªæœè±¡åãšã³ãŒãã®åå©çšãå¯èœã«ãªããŸãã
äŸïŒ`map`ã`filter`ã`reduce` 颿°ã¯ãé«é颿°ã®äžè¬çãªäŸã§ãã`map` ã¯ãæå®ããã颿°ããªã¹ãã®åèŠçŽ ã«é©çšãã`filter` ã¯è¿°èªïŒçåœå€ãè¿ã颿°ïŒã«åºã¥ããŠèŠçŽ ãéžæãã`reduce` ã¯ãªã¹ãã®èŠçŽ ãåäžã®å€ã«çµåããŸãã
å©ç¹ïŒ
- æœè±¡åïŒé«é颿°ã䜿çšãããšãäžè¬çãªãã¿ãŒã³ãæœè±¡åããåå©çšå¯èœãªã³ãŒããäœæã§ããŸãã
- ã³ãŒãã®åå©çšïŒé¢æ°ãåŒæ°ãšããŠæž¡ãããšã§ã颿°ãæžãçŽãããšãªãé«é颿°ã®åäœãã«ã¹ã¿ãã€ãºã§ããŸãã
- æè»æ§ïŒé«é颿°ã¯ãè€éãªã¢ã«ãŽãªãºã ã®èšèšãšå®è£ ã«ãããŠé«ãæè»æ§ãæäŸããŸãã
ååž° (Recursion)
ååž°ã¯ã颿°ãèªèº«ã®å®çŸ©å ã§èªèº«ãåŒã³åºãããã°ã©ãã³ã°ãã¯ããã¯ã§ããããã¯ãããå°ãããèªå·±çžäŒŒçãªãµãåé¡ã«åè§£ã§ããåé¡ã解決ããããã®èªç¶ãªæ¹æ³ã§ããäžéšã®èšèªã§ã¯å埩ãœãªã¥ãŒã·ã§ã³ãããããã©ãŒãã³ã¹ãäœãå ŽåããããŸãããã«ãŒãã§äœ¿çšããããã¥ãŒã¿ãã«ãªç¶æ ãåé¿ããããã颿°åããã°ã©ãã³ã°ã®åºç€ãšãªããŸãã
äŸïŒæ°å€ã®éä¹ãèšç®ããããšã¯ãååž°çã«è§£æ±ºã§ããåé¡ã®å€å žçãªäŸã§ããnã®éä¹ã¯ n * factorial(n-1) ãšå®çŸ©ãããããŒã¹ã±ãŒã¹ã¯ factorial(0) = 1 ã§ãã
å©ç¹ïŒ
- ãšã¬ã¬ã³ã¹ïŒååž°çãªãœãªã¥ãŒã·ã§ã³ã¯ãç¹ã«ç¹å®ã®åé¡ã¿ã€ãã«ãããŠãå埩çãªãœãªã¥ãŒã·ã§ã³ããããšã¬ã¬ã³ãã§çè§£ããããããšãå€ãã§ãã
- æ°åŠç察å¿ïŒååž°ã¯ãå€ãã®é¢æ°ãšããŒã¿æ§é ã®æ°åŠçå®çŸ©ãåæ ããŠãããããæ°åŠçæŠå¿µãã³ãŒãã«ç¿»èš³ãããããªããŸãã
åç §ééæ§ (Referential Transparency)
åŒãããã°ã©ã ã®åäœã倿Žããã«ãã®å€ã§çœ®ãæããããšãã§ããå Žåããã®åŒã¯åç §ééæ§ããããšèšããŸããããã¯ãçŽç²é¢æ°ãšäžå€ããŒã¿ã䜿çšããããšã®çŽæ¥çãªçµæã§ãã
äŸïŒ`f(x)` ãçŽç²é¢æ°ã§ããå Žåã`f(x)` ã¯åç §ééæ§ããããŸããããã°ã©ã ã®çµæã«åœ±é¿ãäžããããšãªãã`f(x)` ã®ä»»æã®çºçãåç §ãããå€ã§çœ®ãæããããšãã§ããŸãã
å©ç¹ïŒ
- çäŸ¡æ§æšè«ïŒåç §ééæ§ã«ãããæ°åŠã§è¡ãã®ãšåæ§ã«ãåçŽãªä»£å ¥ã䜿çšããŠããã°ã©ã ã«ã€ããŠæšè«ã§ããŸãã
- æé©åïŒã³ã³ãã€ã©ã¯ãåç §ééæ§ãå©çšããŠãçŽç²é¢æ°åŒã³åºãã®çµæããã£ãã·ã¥ãããããã®ä»ã®å€æãå®è¡ãããããããšã§ãã³ãŒããæé©åã§ããŸãã
å®è·µã«ããã颿°åããã°ã©ãã³ã°ïŒå®äžçã®äŸ
颿°åããã°ã©ãã³ã°ã®ååã¯ãå¹ åºãæ¥çãã¢ããªã±ãŒã·ã§ã³ã«é©çšãããŠããŸãã以äžã«äŸã瀺ããŸãã
éèã¢ããªã³ã°
éèã¢ããªã³ã°ã«ã¯ãé«ã粟床ãšäºæž¬å¯èœæ§ãå¿ èŠã§ãã颿°åããã°ã©ãã³ã°ã®äžå€æ§ããã³çŽç²é¢æ°ãžã®éç¹ã¯ãå ç¢ã§ä¿¡é Œæ§ã®é«ãéèã¢ãã«ã®æ§ç¯ã«é©ããŠããŸããããšãã°ããªã¹ã¯ã¡ããªã¯ã¹ã®èšç®ãåžå Žã·ããªãªã®ã·ãã¥ã¬ãŒã·ã§ã³ã¯ãçŽç²é¢æ°ã䜿çšããŠå®è¡ã§ããçµæãåžžã«äžè²«æ§ãããåçŸå¯èœã§ããããšãä¿èšŒããŸãã
äŸïŒã°ããŒãã«ãªæè³éè¡ã¯ãHaskell ã Scala ã®ãããªé¢æ°åèšèªã䜿çšããŠãªã¹ã¯ç®¡çã·ã¹ãã ãæ§ç¯ããå ŽåããããŸããããŒã¿æ§é ã®äžå€æ§ã¯ãå¶çºçãªå€æŽãé²ããéèããŒã¿ã®æŽåæ§ã確ä¿ããã®ã«åœ¹ç«ã¡ãŸããçŽç²é¢æ°ã¯è€éãªãªã¹ã¯ã¡ããªã¯ã¹ãèšç®ããããã«äœ¿çšã§ããé«é颿°ã¯ããŸããŸãªçš®é¡ã®éèååã«å¯ŸããŠåå©çšå¯èœãªã³ã³ããŒãã³ããäœæããããã«äœ¿çšã§ããŸãã
ããŒã¿åŠçãšåæ
颿°åããã°ã©ãã³ã°ã¯ãããŒã¿åŠçãšåæã«èªç¶ã«é©åããŸãã`map`ã`filter`ã`reduce` æäœã¯ãããŒã¿æäœã®åºæ¬çãªæ§æèŠçŽ ã§ããApache Spark ã®ãããªãã¬ãŒã ã¯ãŒã¯ã¯ã颿°åããã°ã©ãã³ã°ã®ååãæŽ»çšããŠãå€§èŠæš¡ããŒã¿ã»ããã®äžŠååŠçãå¯èœã«ããŸãã
äŸïŒå€åœç± e ã³ããŒã¹äŒæ¥ã¯ãApache SparkïŒé¢æ°åèšèªã§ãã Scala ã§æžãããŠããŸãïŒã䜿çšããŠé¡§å®¢è¡åãåæããã¬ã³ã¡ã³ããŒã·ã§ã³ãããŒãœãã©ã€ãºããå ŽåããããŸãã颿°åããã°ã©ãã³ã°ã®ããŒã¿äžŠåæ©èœã«ãããèšå€§ãªããŒã¿ã»ãããè¿ éãã€å¹ççã«åŠçã§ããŸããäžå€ããŒã¿æ§é ã䜿çšããããšã§ãããŒã¿å€æã忣ããŒãå šäœã§äžè²«æ§ãããä¿¡é Œæ§ã確ä¿ãããŸãã
Web éçº
颿°åããã°ã©ãã³ã°ã¯ãç¹ã« ReactïŒäžå€ç¶æ ãšçŽç²ã³ã³ããŒãã³ãã®éèŠïŒã JavaScriptïŒã©ã ãåŒãé«é颿°ãªã©ã®é¢æ°åããã°ã©ãã³ã°æ©èœã®ãµããŒãïŒã®ãããªèšèªã®å°é ã«ãããWeb éçºã§æ³šç®ãéããŠããŸãããããã®ããŒã«ã«ãããéçºè ã¯ããä¿å®çã§ããã¹ãå¯èœã§ãã¹ã±ãŒã©ãã«ãª Web ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
äŸïŒã°ããŒãã«ã«åæ£ããããœãããŠã§ã¢éçºããŒã ã¯ãReact ãš ReduxïŒäžå€æ§ãæ¡çšããç¶æ 管çã©ã€ãã©ãªïŒã䜿çšããŠè€é㪠Web ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããå ŽåããããŸããçŽç²ã³ã³ããŒãã³ããšäžå€ç¶æ ã䜿çšããããšã§ãã¢ããªã±ãŒã·ã§ã³ãäºæž¬å¯èœã§ãããã°ããããããšãä¿èšŒã§ããŸãã颿°åããã°ã©ãã³ã°ã¯ãè€éãªã€ã³ã¿ã©ã¯ã·ã§ã³ãæã€ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®æ§ç¯ããã»ã¹ãç°¡çŽ åããŸãã
ã²ãŒã éçº
ä»ã®ãã¡ã€ã³ã»ã©äžè¬çã§ã¯ãããŸãããã颿°åããã°ã©ãã³ã°ã¯ãç¹ã«ã²ãŒã ã®ç¶æ 管çãè€éãªããžãã¯ã®åŠçã«ãããŠãã²ãŒã éçºã«ã¡ãªãããããããå¯èœæ§ããããŸããF#ïŒé¢æ°åãšãªããžã§ã¯ãæåã®äž¡æ¹ã®ããã°ã©ãã³ã°ããµããŒãïŒã®ãããªèšèªã¯ãã²ãŒã ãšã³ãžã³ãããŒã«ã®æ§ç¯ã«äœ¿çšã§ããŸãã
äŸïŒã€ã³ãã£ãŒã²ãŒã éçºè ã¯ãF# ã䜿çšããŠãã²ãŒã äžçã®è¡šçŸã«äžå€ããŒã¿æ§é ã䜿çšããã²ãŒã ãšã³ãžã³ãäœæããå ŽåããããŸããããã«ãããã²ãŒã ã®ç¶æ ã®ç®¡çãšã²ãŒã ãªããžã§ã¯ãéã®è€éãªã€ã³ã¿ã©ã¯ã·ã§ã³ã®åŠçãç°¡çŽ åãããŸãã颿°åããã°ã©ãã³ã°ã¯ãæç¶ãçãªã³ã³ãã³ãçæã¢ã«ãŽãªãºã ã®äœæã«ã䜿çšã§ããŸãã
䞊è¡åŠçãšäžŠååŠç
颿°åããã°ã©ãã³ã°ã¯ãäžå€æ§ããã³çŽç²é¢æ°ãžã®éç¹ã«ããã䞊è¡åŠçããã³äžŠååŠçç°å¢ã§åªããŠããŸãããããã®ããããã£ã«ãããåœä»€åããã°ã©ã ã§ãã°ãããã©ãŒãã³ã¹ã®ããã«ããã¯ã®äž»ãªåå ãšãªãããã¯ããã®ä»ã®åæã¡ã«ããºã ã®å¿ èŠããªããªããŸããErlangïŒé«äžŠè¡æ§ããã³èé害æ§ã·ã¹ãã æ§ç¯ã®ããã«èšèšãããèšèªïŒã®ãããªèšèªã¯ã颿°åããã°ã©ãã³ã°ã®ååã«åºã¥ããŠããŸãã
äŸïŒã°ããŒãã«ãªéä¿¡äŒç€Ÿã¯ãErlang ã䜿çšããŠãæ°çŸäžã®åæé話åŠçã·ã¹ãã ãæ§ç¯ããå ŽåããããŸããErlang ã®è»œéããã»ã¹ãšã¡ãã»ãŒãžããã·ã³ã°äžŠè¡åŠçã¢ãã«ã«ãããé«åºŠã«ã¹ã±ãŒã©ãã«ã§å埩åã®ããã·ã¹ãã ãæ§ç¯ã§ããŸãã颿°åããã°ã©ãã³ã°ã®äžå€æ§ããã³çŽç²é¢æ°ã«ãããã·ã¹ãã ãä¿¡é Œæ§ãé«ããä¿å®ããããããšãä¿èšŒãããŸãã
ã°ããŒãã«ã³ã³ããã¹ãã«ããã颿°åããã°ã©ãã³ã°ã®å©ç¹
颿°åããã°ã©ãã³ã°ã®å©ç¹ã¯ãã°ããŒãã«ãªãœãããŠã§ã¢éçºç°å¢ã§å¢å¹ ãããŸãã
- ã³ãŒãå質ã®åäžïŒäžå€æ§ããã³çŽç²é¢æ°ãžã®é¢æ°åããã°ã©ãã³ã°ã®éç¹ã¯ãããäºæž¬å¯èœã§ããã¹ãå¯èœã§ãä¿å®ããããã³ãŒãã«ã€ãªãããŸããããã¯ãã³ãŒããç°ãªãå Žæã®ç°ãªãã¹ãã«ã»ãããæã€éçºè ã«ãã£ãŠé »ç¹ã«äœæããã³ä¿å®ããããå€§èŠæš¡ã§åæ£ãããããŒã ã«ãšã£ãŠç¹ã«éèŠã§ãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®åŒ·åïŒé¢æ°åã³ãŒãã®æçããšäºæž¬å¯èœæ§ã«ãããéçºè ã¯å ±åäœæ¥ããäºãã®ã³ãŒããçè§£ãããããªããŸããããã«ãããã³ãã¥ãã±ãŒã·ã§ã³ãæ¹åããããšã©ãŒã®ãªã¹ã¯ã軜æžãããŸãã
- ãããã°æéã®ççž®ïŒå¯äœçšããã¥ãŒã¿ãã«ãªç¶æ ããªãããã颿°åã³ãŒãã®ãããã°ãã¯ããã«å®¹æã«ãªããŸããããã¯ãè€éãªãããžã§ã¯ãã§ç· ãåããå³ããå Žåã«ãæéãšãéãç¯çŽã§ããŸããå®è¡ãã¹ã颿°ã®å ¥åãšåºåã«ãã£ãŠæç¢ºã«å®çŸ©ãããŠããå Žåããšã©ãŒã®æ ¹æ¬åå ãç¹å®ããããšã¯å€§å¹ ã«å®¹æã«ãªããŸãã
- ã¹ã±ãŒã©ããªãã£ã®åäžïŒäžŠè¡åŠçãšäžŠååŠçã«å¯Ÿãã颿°åããã°ã©ãã³ã°ã®ãµããŒãã«ãããå€§èŠæš¡ãªã¯ãŒã¯ããŒããåŠçã§ããã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã容æã«ãªããŸããããã¯ãã°ããŒãã«åžå Žã§äºæ¥ãå±éããããŸããŸãªã¿ã€ã ãŸãŒã³ã®ãŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸããå¿ èŠãããäŒæ¥ã«ãšã£ãŠäžå¯æ¬ ã§ãã
- èé害æ§ã®åäžïŒäžå€æ§ããã³çŽç²é¢æ°ãžã®é¢æ°åããã°ã©ãã³ã°ã®éç¹ã¯ããšã©ãŒããæ£åžžã«å埩ã§ããèé害æ§ã·ã¹ãã ãæ§ç¯ããããããŸããããã¯ãéèååŒãã©ãããã©ãŒã ã e ã³ããŒã¹ Web ãµã€ããªã©ã24 æé 365 æ¥å©çšå¯èœã§ããå¿ èŠãããã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéèŠã§ãã
颿°åããã°ã©ãã³ã°ãæ¡çšããäžã§ã®èª²é¡
颿°åããã°ã©ãã³ã°ã¯å€ãã®å©ç¹ãæäŸããŸãããæ¡çšã«ã¯ããã€ãã®èª²é¡ã䌎ããŸãã
- åŠç¿æ²ç·ïŒé¢æ°åããã°ã©ãã³ã°ã¯ãåœä»€åããã°ã©ãã³ã°ãšã¯ç°ãªãèãæ¹ãå¿ èŠã§ããåœä»€åã¹ã¿ã€ã«ã§ã³ãŒããæžãããšã«æ £ããŠããéçºè ã¯ã颿°åããã°ã©ãã³ã°ã®æŠå¿µãšãã¯ããã¯ãåŠã¶ã®ã«èŠåŽãããããããŸããã
- ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé ïŒå Žåã«ãã£ãŠã¯ã颿°åããã°ã©ã ã¯ãç¹ã«æ£ããæé©åãããŠããªãå Žåãåœä»€åããã°ã©ã ãããããã©ãŒãã³ã¹ãå£ãããšããããŸãããã ããææ°ã®é¢æ°åèšèªããã³ãã¬ãŒã ã¯ãŒã¯ã¯ã颿°åã³ãŒãã®æé©åã®ããã®ããŒã«ãšãã¯ããã¯ãæäŸããããšããããããŸããé©åãªããŒã¿æ§é ãšã¢ã«ãŽãªãºã ãéžæããããšãéèŠã§ãã
- ãšã³ã·ã¹ãã ã®æç床ïŒé¢æ°åããã°ã©ãã³ã°ã®ãšã³ã·ã¹ãã ã¯æ¥éã«æé·ããŠããŸãããåœä»€åããã°ã©ãã³ã°ã®ãšã³ã·ã¹ãã ã»ã©æçããŠããŸãããããã¯ãç¹å®ã®ã¿ã¹ã¯ã§å©çšã§ããã©ã€ãã©ãªãããŒã«ãå°ãªããªãå¯èœæ§ãããããšãæå³ããŸããäžéšã®å°åã§ã¯ãçµéšè±å¯ãªé¢æ°åããã°ã©ããŒãèŠã€ããããšã課é¡ã«ãªãå¯èœæ§ããããŸãã
- æ¢åã·ã¹ãã ãšã®çµ±åïŒç¹ã«ã·ã¹ãã ã坿¥ã«çµåãããŠããããã¥ãŒã¿ãã«ãªç¶æ ã«å€§ããäŸåããŠããå Žåã颿°åã³ãŒããæ¢åã®åœä»€åã·ã¹ãã ãšçµ±åããããšã¯å°é£ãªå ŽåããããŸãã
課é¡ã®å æ
颿°åããã°ã©ãã³ã°ãæ¡çšããéã®èª²é¡ãå æããããã®æŠç¥ãããã€ã玹ä»ããŸãã
- å°ããå§ããïŒãŸããã³ãŒãããŒã¹ã®å°ããç¬ç«ããéšåã«ã颿°åããã°ã©ãã³ã°ã®æŠå¿µãšãã¯ããã¯ãå°å ¥ããããšããå§ããŸããããã«ãããããŒã ã¯ãããžã§ã¯ãå šäœãäžæããããšãªãã颿°åããã°ã©ãã³ã°ã®çµéšãç©ãããšãã§ããŸãã
- ãã¬ãŒãã³ã°ãæäŸããïŒéçºè ã«ã颿°åããã°ã©ãã³ã°ã®æŠå¿µãšãã¯ããã¯ãåŠã¹ãããã«ãã¬ãŒãã³ã°ã«æè³ããŸããããã«ã¯ããªã³ã©ã€ã³ã³ãŒã¹ãã¯ãŒã¯ã·ã§ãããã¡ã³ã¿ãªã³ã°ãå«ãŸããŸãã
- é©åãªããŒã«ãéžæããïŒãããžã§ã¯ãã«é©ããŠããã匷åãªã©ã€ãã©ãªãšããŒã«ã®ãšã³ã·ã¹ãã ãåãã颿°åèšèªãšãã¬ãŒã ã¯ãŒã¯ãéžæããŸãã
- ã³ãŒãå質ã«çŠç¹ãåœãŠãïŒæåããã³ãŒãå質ãšãã¹ãå®¹ææ§ãéèŠããŸããããã«ãããæ©æã«ãšã©ãŒãæ€åºãã颿°åã³ãŒããä¿¡é Œã§ããããšãä¿èšŒããã®ã«åœ¹ç«ã¡ãŸãã
- ã€ãã¬ãŒã·ã§ã³ãåãå ¥ããïŒå埩çãªéçºã¢ãããŒããæ¡çšããŸããããã«ãããééãããåŠã³ãæéãšãšãã«é¢æ°åã³ãŒããæ¹è¯ããããšãã§ããŸãã
人æ°ã®é¢æ°åããã°ã©ãã³ã°èšèª
以äžã¯ãæã人æ°ã®ãã颿°åããã°ã©ãã³ã°èšèªã®ããã€ãã§ãã
- HaskellïŒåŒ·åãªåã·ã¹ãã ãšé å»¶è©äŸ¡ã§ç¥ãããçŽç²é¢æ°åèšèªãåŠè¡çãé«ä¿¡é Œæ§ã·ã¹ãã ã®æ§ç¯ã«ãã䜿çšãããŸãã
- ScalaïŒé¢æ°åããã°ã©ãã³ã°ãšãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®äž¡æ¹ããµããŒããããã«ããã©ãã€ã èšèªãJava Virtual MachineïŒJVMïŒäžã§ã¹ã±ãŒã©ãã«ã§äžŠè¡æ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äººæ°ããããŸãã
- ErlangïŒé«äžŠè¡æ§ããã³èé害æ§ã·ã¹ãã æ§ç¯ã®ããã«èšèšããã颿°åèšèªãéä¿¡æ¥çã§åºã䜿çšãããŠããŸãã
- F#ïŒ.NET ãã©ãããã©ãŒã ã§åäœãã颿°åèšèªã颿°åãšãªããžã§ã¯ãæåã®äž¡æ¹ã®ããã°ã©ãã³ã°ããµããŒãããããŒã¿éçŽåã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«ãã䜿çšãããŸãã
- JavaScriptïŒçŽç²ã«é¢æ°åã§ã¯ãããŸããããJavaScript ã¯ã©ã ãåŒãé«é颿°ãªã©ã®é¢æ°åããã°ã©ãã³ã°æ©èœããµããŒãããŠããŸããWeb éçºã§åºã䜿çšãããŠããŸãã
- PythonïŒPython ãã©ã ãåŒãmapãfilterãreduce ãªã©ã®é¢æ°åããã°ã©ãã³ã°æ©èœããµããŒãããŠããŸããçŽç²ã«é¢æ°åã§ã¯ãããŸããããä»ã®ãã©ãã€ã ãšäžŠè¡ããŠé¢æ°åã¹ã¿ã€ã«ã§ããã°ã©ãã³ã°ã§ããŸãã
- ClojureïŒJava Virtual MachineïŒJVMïŒã§åäœãã Lisp ã®æ¹èšãäžå€æ§ãšäžŠè¡æ§ãéèŠããWeb ã¢ããªã±ãŒã·ã§ã³ãããŒã¿åŠçã·ã¹ãã ã®æ§ç¯ã«ãã䜿çšãããŸãã
çµè«
颿°åããã°ã©ãã³ã°ã¯ãç¹ã«ä»æ¥ã®è€éãªäžŠè¡ã»åæ£ã·ã¹ãã ã«ãããŠããœãããŠã§ã¢éçºã«å€§ããªå©ç¹ããããããŸããäžå€æ§ãçŽç²é¢æ°ã宣èšçãªã¹ã¿ã€ã«ãžã®éç¹ã¯ãããäºæž¬å¯èœã§ããã¹ãå¯èœã§ãä¿å®å¯èœã§ãã¹ã±ãŒã©ãã«ãªã³ãŒãã«ã€ãªãããŸãã颿°åããã°ã©ãã³ã°ãæ¡çšããããšã«ã¯èª²é¡ããããŸãããé©åãªãã¬ãŒãã³ã°ãããŒã«ãã³ãŒãå質ãžã®çŠç¹ãåœãŠãããšã§å æã§ããŸãã颿°åããã°ã©ãã³ã°ã®ååãåãå ¥ããããšã§ãã°ããŒãã«ãªãœãããŠã§ã¢éçºããŒã ã¯ãæ¥éã«å€åããäžçã®èŠæ±ã«å¿ãããããå ç¢ã§ä¿¡é Œæ§ã®é«ãã¹ã±ãŒã©ãã«ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã
颿°åããã°ã©ãã³ã°ãžã®ç§»è¡ã¯ãç®çå°ã§ã¯ãªãæ ã§ãããŸãã³ã¢ååãçè§£ãã颿°åèšèªã詊ããŠãåŸã ã«ãããžã§ã¯ãã«é¢æ°åãã¯ããã¯ãçµã¿èŸŒãã§ãã ããããã®ã¡ãªããã¯ãåªåã«èŠåãã ãã®äŸ¡å€ãããã§ãããã