ãã®æ¬ã«ã¯ããã®åã示ãããã« Haskell (æ£ç¢ºã«ã¯ GHC(Glasgow Haskell Compiler))ãæä¾ãã並å(parallel)/並è¡(concurrent)ããã°ã©ãã³ã°æè¡ãã¾ã¨ãããã¦ãããèè ã¯ãGHC ã®ä¸»è¦éçºã¡ã³ãã¼ã§ãã Simon Marlow æ°ã§ããã
å½¼ã¯ãé·å¹´ã並å/並è¡ã®ç 究ã«æºãã£ã¦ããã並åã¬ã¼ãã¸ã³ã¬ã¯ã·ã§ã³ãæ㤠GHC RTS (Runtime System) ãããã¤ãã®ä¸¦å/並è¡ã©ã¤ãã©ãªãå®è£ ãã¦ããããã®ããã並å/並è¡ããã°ã©ãã³ã°ã«ã¯ãé©ãç¨é è©£ãæ·±ããã¾ã説æã¯ç°¡æ½ãã¤æçã§ãããæ¬æ¸ã¯ãçæã«ãã£ã¦æ¸ããã並å/並è¡æ¬ã®åä½ã¨è¨ããã
é¢æ°åè¨èªã«ã¾ã¤ãã並åæ§/並è¡æ§ã«ã¯ãããããã®èª¤è§£ãããã¨æãããã¨ãã°ãæªã ã«ãç´ç²é¢æ°åè¨èªã§ã²ã¼ã ãªããä½ããã®ï¼ãã¨è¨ã£ã¦ãã人ãè¦ããããããã®äººã«ã¨ã£ã¦ãHaskellã«ã¯è»½éã¹ã¬ãããããããã¨ãã°ä¸¦è¡æ§ãæ±ããããwebãµã¼ãã®å®è£ ã«åãã¦ãããã¨èª¬æãã¦ãä¿¡ãã¦ããããªããããããªãã
ã¾ãããé¢æ°åè¨èªã«ã¯å¯ä½ç¨ããªããã並åå¦çã«åãã¦ãããã¨è©±ãåç´ã«ãã¦ãã¾ã£ã¦ãã人ã¯ããã»ããã£ã±ãé¢æ°åè¨èªã¯ä¸¦åå¦çã«åãã¦ãããã¨çµè«ã«é£ã³ã¤ãã¦ãã¾ãããã ã
確ãã«ãé¢æ°åè¨èªã¯ä¸¦å/並è¡ããã°ã©ãã³ã°ã«æå©ãªç¹å¾´ãæã£ã¦ãããããã¹ã¦ã®(å³å¯ãªæå³ã§ã®)é¢æ°åè¨èªã並åæ§/並è¡æ§ãæä¾ãã¦ãã訳ã§ã¯ãªããããããªãããHaskell ã¯ç 究ã¨å®ç¨ã両ç«ãã¦ããå¸æãªè¨èªã§ãããããã¦ã並åããã°ã©ãã³ã°ã¨ä¸¦è¡ããã°ã©ãã³ã°ãåæã«æ¢æ±ãã¦ããå¤é«ã®è¨èªã§ãããã
GHC ããã©ã®ããã«ä¸¦åæ§/並è¡æ§ã«åãçµãã§ãããã端çã«ç¤ºãã¤ã³ã¿ãã¥ã¼è¨äºããCoders at Workãã«è¼ã£ã¦ããã®ã§ããããå¼ç¨ããããã¤ã³ã¿ãã¥ã¼ãåãã¦ããã®ã¯ãããä¸äººã® Simonãããªãã¡GHC ã®éçºãªã¼ãã§ãã Simon Peyton Jones æ°ã§ããã
Peter Seibelï¼ ä¸¦è¡æ§ã«ã¤ãã¦å°ãã話ããã¾ããããã¬ã¤ã»ã¹ãã£ã¼ã«ããããªãã«ãSTMã¯ä¸çãæããï¼ãã¨èãã¦ããã¨é ¼ã¾ããã®ã§ã
Simon Peyton Jonesï¼ ã¾ãããSTMèªä½ã¯ä¸çãæããã®ã§ã¯ããã¾ããã並è¡æ§ãããã¦ä¸¦åããã°ã©ãã³ã°ä¸è¬ã¯ãå¤ãã®å´é¢ããã¤ç£ã§ãããä¸çºã®å¼¾ã§ä»çãããããã®ã ã¨ã¯æãã¾ããã並è¡æ§ã«é¢ãã¦ãç§ã¯å¤è§ä¸»ç¾©è ã§ãã
Simon Peyton Jones æ°ã®å¤è§ä¸»ç¾©ãåãã¦ãGHC ã§ã¯ãã¾ãã¾ãªç¨®é¡ã®å¼¾ãç¨æããã¦ãããæ¬æ¸ã§ã¯ãããããé åºããä¸å¯§ã«è§£èª¬ãã¦è¡ãã
- 第1ç«
- 並åã¨ä¸¦è¡ã®å®ç¾©
第ä¸é¨ã§ã¯ä¸¦åãåãæ±ãã第ä¸é¨ã§å°è±¡æ·±ãã®ã¯ãåé¡ã«é©ãã並ååææ³ãé¸æããéè¦æ§ã¨å°éãªãã¥ã¼ãã³ã°ã®å¿ è¦æ§ã§ããã並ååã®ç®çã¯ãããã¾ã§æ§è½ã®åä¸ã§ãããæ¬æ¸ã§ã¯ãæ§è½ãã§ãªãå ´åã並åãããã¡ã¤ã©ãªã©ã使ã£ã¦ãåé¡ã解決ãã¦ããã
- 第2ç«
- 並ååã«é©ããæ¼ç®ã«å¯¾ããåºç¤çãªä¸¦å
- 第3ç«
- 並ååã®æ¦ç¥
- 第4ç«
- ä¾åé¢ä¿ããããã¼ã¿ã®ä¸¦åå
- 第5ç«
- é åæ¼ç®ã®ä¸¦åå
- 第6ç«
- GPUã使ã£ãé åæ¼ç®ã®ä¸¦åå
第äºé¨ã§ã¯ä¸¦è¡ãåãæ±ããHaskellã§ã¯ã並è¡ããã°ã©ãã³ã°ã«æ¬å½ã«å¿ è¦ãªããªããã£ããæä¾ããã¦ããã並è¡æ§ã«ããã¦ããé¢æ°ããã°ã©ãã³ã°ã®ç²¾ç¥ã«æ²¿ã£ã¦ãå°ããªé¨åãåæãããã¨ã§å¤§ããªé¨åãä½ã£ã¦ãããããã¯ãä»ã®ä¸¦è¡åææ³ã«ã¯è¦ãããªãéæ³ã®ãããªæ¹æ³ã ã
- 第7ç«
- 軽éã¹ã¬ããã¨ããã¯
- 第8ç«
- å ¥åºåã®å¤éå
- 第9ç«
- 軽éã¹ã¬ããã®ãã£ã³ã»ã«ã¨ã¿ã¤ã ã¢ã¦ã
- 第10ç«
- STM(Software Transactional Memory)ã«ãããããããã¯ããã®è§£æ¾
- 第11ç«
- é«ã¬ãã«ãªéåæAPI
- 第12ç«
- ãããã¯ã¼ã¯ãµã¼ãã®å®è£
- 第13ç«
- 軽éã¹ã¬ããã使ã£ã並åæ§
- 第14ç«
- åæ£ããã°ã©ãã³ã°
- 第15ç«
- ãããã°ã¨ãã¥ã¼ãã³ã°
æ¬æ¸ã¯ããã¡ãããã¹ã¦ã® Haskeller ã«ãå§ãã§ãããç§ã¯ä¸¦è¡ããã°ã©ãã³ã°ã®å°é家ã§ããã並åã¯éå¤æ¼¢ã§ãããã第ä¸é¨ã¯ãã£ããã¨èªããHackageDB ããæä¾ãããä¾é¡ã®ã³ã¼ããåãããã¨ã§ã並åã®æ¦è¦ãæ´ããæ°ã«ãªã£ã¦ãããã¾ã第äºé¨ã¯ãå°é家ã®ç§ã«ãå¦ã¶ã¹ããã¨ããããããã£ãã
ç§ãç¹ã«æ°ã«å ¥ã£ãã®ã¯ãSTMã®èª¬æã§ãããä»ã®æ¸ç±ã§ã¯ãSTMãç« ã«éãã¦ãããç¹æ®ãªæè¡ã§ãããã®ãããªå°è±¡ãä¸ãã¦ãã¾ããã¡ã§ãããããããæ¬æ¸ã§ã¯ç¬¬10ç« ã§ STMãå°å ¥ããã¨ããã以éã®ç« ã§ä½¿ãç¶ãã¦è¡ããSTMãç¹æ®ãªæè¡ã§ã¯ãªããåãªãéå ·ã®ä¸ã¤ã§ãããã¨ãéå¼ã«ç¤ºãã¦ãããã
Haskeller ã§ãªãã¨ãã並å/並è¡ããã°ã©ãã³ã°ã«åãçµãããã°ã©ãã¼ã«ã¯å¿ èªã®æ¸ã§ããã¨æãããã¨ããHaskellã§ããã°ã©ãã³ã°ãããæ©ä¼ããªãã¦ããææ°ã®æ½è±¡åº¦ã®é«ã並å/並è¡ããã°ã©ãã³ã°ã®ç¥è¦ã¯ãå½¹ã«ç«ã¤ã ãããä¸æ¦é«ã¿ã«ç«ã¦ã°ããããã§ãä½ãã¨ããã«éãã¦è¡ããã®ã ããã
ç§ã®è¦ªåã¯ããã®æ¬ã2013å¹´ã«åºä¼ã£ãæé«ã®ããã°ã©ãã³ã°æ¬ã ã¨è¨ã£ã¦ãããç§ãå½¼ã®æè¦ã«è³æã§ããã