Poul-Henning Kampã«ããQueueé»åãžã£ãŒãã«ã®æè¿ã®æçš¿ã®ç¿»èš³ã«æ³šç®ããŠãã ãããNULå®å
šãªããã¹ãæååã䜿çšããããšãéžæããå ŽåãKenãDennisãããã³Brianã¯ééã£ãŠããŸãããïŒ
ITã¯ãçŸä»£ã®è¥¿æŽçµæžãåºæ¿ããå®è¡ããŸãã ãããã£ãŠãITãšã©ãŒã«é¢é£ããè«å€§ãªéé¡ã«ã€ããŠã®èŠåºããããç®ã«ããŸãã ITãŸãã¯CI [ã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹]ã§æãé«äŸ¡ãªãœãªã¥ãŒã·ã§ã³ã¯äœã§ããïŒ
æè¿ãååãªå°éå®¶ããPlayStation Networkã«é¢é£ããåé¡ããSonyã«ééçãªåœ±é¿ãäžããããšã«ã€ããŠèšåããŸãããããã®ãããªã€ãã³ãã¯ãã®æèã§ã¯éèŠã§ã¯ãããŸããã åŠæ ¡ã«ãããšããã®ãã¹èšé²ã®æ€æ»å®ãšè©±ãããæ©äŒããããŸããã圌ã¯ãäœããå¶ç¶ã«å®éã®èšé²ã«ãªãã ãã§ã¯ãªãã人éã®æå³ããå§ãŸãå æé¢ä¿ãããã¯ãã ãšèª¬æããŸããïŒããšãã°ã26人ã®é«æ ¡çãVolkswagen Beetleã鳿¥œã®å
çã§ããã¢ãéããŸããã
ãœããŒã¯ïŒããããïŒã»ãã¥ãªãã£ã«ã»ãšãã©æ³šæãæããªãå Žåã«ã©ã®ãããªæ··ä¹±ãèµ·ããããèããããªãã®ã§ããã®ãããªè²¯èã®äŸã¯ä»ã«ã¯åœãŠã¯ãŸããŸããã å¥ã®åè£è
ã¯ãGary Kildallã§ã¯ãªããIBMãBill GatesãããŒãœãã«ã³ã³ãã¥ãŒã¿ãŒã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããã€ããŒãšããŠéžæããããšã§ãã ãã®æ±ºå®ã«ããæå®³ã¯äŸç¶ãšããŠççãªã¹ããŒãã§èç©ããŠããŸããStuxnet[çŽã ããã ãããã¯ãŒã¯ã¯ãŒã ]ãšOOXML ISOæšæºåããã»ã¹ã®ããã¿ã¯ã被害ãã©ãã»ã©åºç¯å²ã«åºãããã瀺ããŠããŸãã ããããããã¯ITãŸãã¯IPã«é¢é£ããæ±ºå®ã§ã¯ãããŸããã§ããã çŸåšç¥ãããŠããããã«ãããã¯ãKildalãIBMã®éé瀺èŠä»¶ãåãå
¥ããããšãæåŠããããšã«åºã¥ãããžãã¹äžã®æ±ºå®ã§ããã
ããé©åãªäŸã¯ãMS-DOSçšã®ç¬èªã®ãã£ã¬ã¯ããª/ãã¡ã€ã«ååºåãæåãçºæããããšã決å®ããããšã§ããUnixã§äœ¿çšãããã¹ã©ãã·ã¥ïŒ/ïŒãŸãã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§DECã䜿çšãããããã§ã¯ãªããããã¯ã¹ã©ãã·ã¥ïŒ\ïŒãéžæãããŸããã å®éã®è¢«å®³ã¯æ¯èŒçäžçšåºŠã§ããããã®è§£æ±ºçãè¯ãäŸãšããŠã¯åœãŠã¯ãŸããŸãããå®éã®è§£æ±ºçã§ã¯ãªãã£ããããçã®åªå
äºé
ã§ããã IBMã¯Unixãç¡èŠããŠã³ãã³ããã©ã°ã«ã¹ã©ãã·ã¥ã䜿çšããããšãéžæããããªãªãã¯ãã¡ã€ã«åãšæ¡åŒµåã®åºåãæåãšããŠäœ¿çšããããããDECã®äŸã«åŸãããšã¯ã§ããŸããã§ããã
å®å®æ¢æ»ã®æŽå²ã¯ãä¿é²ãããé«äŸ¡ãªé倱ã®å
šã»ãããæäŸããŸãããè峿·±ãããšã«ãç§ã¯åäžã®é©åãªåè£ãèŠã€ããããšãã§ããŸããã§ããã Fortranæ§æãšã©ãŒãšã·ã£ãã«ããªããã³ã³ãã¥ãŒã¿ãŒã®åæãšã©ãŒã¯ãæå³ããªãããé©åã§ã¯ãããŸããã ãããžã§ã¯ãã®äžéšãåžåœåäœã§ç¶æããä»ã®éšåãã¡ãŒãã«åäœã§ç¶æããããšã¯ãã©ã³ãã ãªç®¡çè¡çºãã§ãããSCãŸãã¯ITã«ã¯é©çšãããŸããã
ç§ãèŠã€ããããšãã§ããæè¯ã®äŸã¯ãC / Unix / Posixã§NULå®å
šãªããã¹ãæååã䜿çšããããšã§ãã éåžžã«ç°¡åãªéžæããããŸãããCã¯ãæååãã¢ãã¬ã¹+é·ãã®ã¿ãã«ãšããŠããŸãã¯åã«ã¢ãã¬ã¹ãšäœããã®æåïŒNULïŒã§æååã®çµããã瀺ããã®ãšããŠè¡šçŸããå¿
èŠããããŸããïŒ ãã€ãããã¯ãªããªãªãã±ã³ã»ãã³ããœã³ãããã¹ã»ãªãããŒããã©ã€ã¢ã³ã»ã«ãŒãã¬ã³ã70幎代ååã«è¡ã£ãã®ã¯ãã®æ±ºå®ã§ããã圌ãã¯ã©ããªæ¹æ³ãèªç±ã«éžæã§ããŸããã æ±ºå®ã®åäžã®èšé²ãèŠã€ããããšãã§ããŸããã§ããããããã¯åŒ±ãåè£ãšããŠèªèããŠããŸãããã®æ±ºå®ãæèçã§ãã£ããšãã蚌æ ã¯ãããŸããã
ããã«ãããããããç ç©¶ãã倿ã§ããéããåœæã®ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã§ã¯ã¢ãã¬ã¹+é·ãã®åœ¢åŒã奜ãŸããŸããããã¢ãã¬ã¹+ããžãã¯ããŒã«ãŒã¯äž»ã«ã¢ã»ã³ãã©ãŒã§æžãããããã°ã©ã ã§äœ¿çšãããŠããŸããã Cèšèªã¯ãããããŒã¿ãã«ã§é«ã¬ãã«ã®èšèªãšããŠã¢ã»ã³ãã©ãŒããçºå±ãããããã±ã³ãããã¹ããã©ã€ã¢ã³ãããã«ã€ããŠèãããããªãã£ããšä¿¡ããã®ã¯å°é£ã§ãã
ã¢ãã¬ã¹+é·ã圢åŒã䜿çšãããšãã¢ãã¬ã¹+ããžãã¯ããŒã¯ã³ãšæ¯èŒããŠ1ãªãŒããŒããããã€ãã®ã³ã¹ããããããPDPã³ã³ãã¥ãŒã¿ãŒã®ã¡ã€ã³ã¡ã¢ãªãå¶éãããŠããŸããã èšãæããã°ããã®äŸã¯ãç§ãã¡ãæ¯æ¥è¡ãå€ãã®åæ§ã®æ±ºå®ã®ããã«ãITãŸãã¯IPã«é¢é£ããçæ³çã§å
žåçãã€åççãªæ±ºå®ã«ãªãå¯èœæ§ããããŸãã ããããéå
žåçãªçµæžççµæãããããã®ã¯ãã®æ±ºå®ã§ãã
ããŒããŠã§ã¢éçºã³ã¹ã
åœåãUnixã¯ããŒããŠã§ã¢ãšäžé£ã®ã³ãã³ãã®éçºã«ã»ãšãã©åœ±é¿ãäžããŸããã§ããã ããã ããã»ããµ]ã Z-80ãDEC VAXãªã©ãæååãæäœããããã®åœä»€ãæäŸããããã»ããµã¯ãã¯ããã«äžè¬çãªã¢ãã¬ã¹+ãªãã»ããã¢ãã«ã䜿çšããŠãããè¡ããŸããã UnixãšCããµããŒãããããšãNULå®å
šæååãæé©åã®ç®æšã«ãªããŸããã CPUéçºè
ã¯ãããããæäœããããã®æç€ºã远å ãå§ããŸããã äŸãšããŠã¯ã1992幎ã«IBMã«ãã£ãŠES / 9000 520ã«åºã¥ãããã»ããµãŒã«è¿œå ãããè«çæååã¢ã·ã¹ãåœä»€ããããŸãã
CPUã«åœä»€ã远å ããããšã¯å®äŸ¡ã§ã¯ãªããå
·äœçã§å®éåå¯èœãªééççç±ãããå Žåã«ã®ã¿çºçããŸãã
ããã©ãŒãã³ã¹ã³ã¹ã
IBMã¯ã顧客ããã®ãããªæååãåŠçããããã«é«äŸ¡ãªCPUãµã€ã¯ã«ãè²»ããããããNULå®å
šæååãæäœããããã®æç€ºã远å ããŸããã ãã ããããã¯ãã¢ãã¬ã¹+é·ãã®åœ¢åŒã䜿çšããå Žåã«å¿
èŠãªCPUãµã€ã¯ã«ãå°ãªããªããšããæå³ã§ã¯ãããŸããã
ä»®æ³ã¡ã¢ãªã·ã¹ãã ã«ã€ããŠèããå Žåã質åã¯çç¥ãããŸãã æ¢ç¥ã®é·ãã®ãã€ãæååã®ç§»åãæé©åãããšããœãŒã¹ã©ã€ã³ãŸãã¯å®å
ã©ã€ã³ã®äžéšã§ã¯ãªãã¡ã¢ãªé åã«åœ±é¿ãäžããããšãªããã¡ã¢ãªãã¹ãšãã£ãã·ã¥ã©ã€ã³ã®å
šå¹
ãæŽ»çšã§ããŸãã
1ã€ã®äŸã¯ãFreeBSDã®libcã©ã€ãã©ãªã§ããbcopyïŒ3ïŒ/ memcpyïŒ3ïŒå®è£
ã¯ãå¯èœãªéãå€ãã®æ
å ±ãã笊å·ãªãæŽæ°ãã®ãã©ã°ã¡ã³ãã«ç§»åããŸããéåžžã¯32ãŸãã¯64ãããã§ã次ã«ãã€ãã³ããŒã䜿çšããŠãåŸç¶ãã€ããã¯ãªã¢ãããŸããã³ã¡ã³ãã«èšèŒãããŠããŸãã
NULã§çµäºããæååã䜿çšããå Žåã1ãã€ããè¶
ããéšåã§äœæ¥ããããšãããšãNULæåã®åŸã®æåã«ã¢ã¯ã»ã¹ããå¯èœæ§ããããŸãã NULæåãä»®æ³ã¡ã¢ãªããŒãžã®æåŸã®ãã€ãã§ãããæ¬¡ã®ããŒãžãå®çŸ©ãããŠããªãå Žåããpage not foundã[ãpage not presentã]ãšã©ãŒã§ããã»ã¹ãã¯ã©ãã·ã¥ããå¯èœæ§ããããŸãã
ãã¡ãããæé©åãããã³ãŒããå®è¡ããåã«ãæœåšçãªèœãšã穎ãç¹å®ããã³ãŒããäœæã§ããŸãããããã«ããããã¹ãŠã®è¡ç§»åæäœã«æ¯èŒçé«ãåºå®ã³ã¹ãã远å ãããŸãã
æååã®é·ããäºåã«ããã£ãŠããå Žåããã¹ãŠãç°ãªããŸãã
ã³ã³ãã€ã©éçºã³ã¹ã
å€ãã®å Žåãã³ã³ãã€ã©ã¯æååã«ã€ããŠ1ã€ã®ããšãç¥ã£ãŠããŸã-ç¹ã«æååãäžå®ã®å Žåããã®é·ãã ããã«ãããããã°ã©ããŒããœãŒã¹ã³ãŒãã§strcpyïŒ3ïŒã䜿çšããå Žåã§ããã³ã³ãã€ã©ã¯ããé«éãªmemcpyïŒ3ïŒãåŒã³åºãããšãã§ããŸãã
ã³ãŒããããã«è©³ãã調ã¹ããšãã³ã³ãã€ã©ãŒã¯ããé«åºŠãªæé©åãå®è¡ã§ããŸããäžéšã¯éåžžã«çç·ŽããŠããŸãããããã¯èª°ããã³ã³ãã€ã©ãŒã§ãããå®è£
ããå Žåã®ã¿ã§ãã æé©åã³ã³ãã€ã©ã®éçºã¯æ±ºããŠç°¡åã§ãå®äŸ¡ã§ããããŸããã§ããããã¢ããã«ããªããã£ãã€ã¶ã倧éã«ããLLVMïŒäœã¬ãã«ä»®æ³ãã·ã³ïŒã䜿çšããŠãããå€ããããšãæåŸ
ããŠããããšã¯æããã§ãã
ã³ã³ãã€ã©ã«ãã£ãŠå®è¡ãããè©³çŽ°ãªæé©åã®è£åŽã¯ããœãŒã¹ã³ãŒãã®å
šäœçãªã¬ãã¥ãŒãè¡ãã倧éã«äžŠã¹æ¿ããæé©åã§ãã ãœãŒã¹ã³ãŒããå¿
èŠãªãã®ãæ£ç¢ºã«èšè¿°ããŠããããšãããã°ã©ããæ³šææ·±ãç£èŠããå¿
èŠããããŸãã Convex C3800ã·ãªãŒãºã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã³ã³ãã€ã©ãŒã§äœæ¥ããããã°ã©ããŒã¯ããã³ã³ãã€ã©ãŒãããªãã®å
劻ã§ãããã®ããã«ããã°ã©ã ããå¿
èŠãããããšèª¬æããŸããã
å®å
šè²»
ã³ã³ãã€ã©ã«æµæããªãå Žåã§ãããœãŒã¹ã³ãŒãã¯æ»æã«èããããããã«äœæããå¿
èŠãããããã®ç¹ã§NULã宿ããè¡ã«ã¯æ²èгçãªé¢ä¿æžé¡ããããŸãã ã»ãã¥ãªãã£ã®èгç¹ããèŠããšãå®å
šãªçœå®³ã¯ïŒ3ïŒã§ãããããã¯ããããã¡ãååã«å€§ãããªããšèããŠãããããšã§ããããã®åé¡ã¯ãæ¯èŒçå¶åŸ¡å¯èœãã§ãã
ãã ããå¶åŸ¡ãååŸãããšããããšã¯ãgetsïŒ3ïŒãã©ããã§åŒã³åºãããå Žåã«ã³ã³ãã€ã©ãããã«æå¥ãèšãããšãæå³ããŸãã 15å¹Žã®æ³šç®ã«ããããããããªãŒããŒãããŒãšã¢ã³ããŒã©ã³ãã³ã°ã®æååãããã¡ã¯æ»æè
ã«ãšã£ãŠå¥œãŸããæ»æãã¯ãã«ã§ãããããŸãã«ãé »ç¹ã«å©çããããããŸãã
ãããã®ãªã¹ã¯ã¯ãã¹ãŠã®ã¬ãã«ã§åæžãããŠããŸãã CPUã®ã¡ã¢ãªç®¡çããŒããŠã§ã¢ã«ãå®è¡ãçŠæ¢ããé·ãæ¬ èœãããã远å ãããŸããã ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšã³ã³ãã€ã©ã¯ãå€ãã®å Žåããã©ãŒãã³ã¹ã®ããã«ãã¢ãã¬ã¹ç©ºéã®ã©ã³ãã åã远å ããŸããã éçããã³åçãªããã°ã©ã åæã¯ãé°æ¹¿ãªèšºæãééããŸãã¯å·§åŠãªããã°ã©ãã³ã°ã§ãããã©ããã調ã¹ãããã«æ°ãåããªãã»ã©ã®æéãè²»ãããŸããã
ããã«ããããããããœããŒã®åé¡ããããã¡ãªãŒããŒãããŒãŸãã¯è¡æ«ã®èª€ã£ãè§£éã§å§ãŸã£ãããšã倿ãããšããŠãã誰ãé©ããªãã£ãã§ãããã
ã¹ã©ãã·ã¥ãããæèŠã®é²æ¢
ç§ãã¡ã¯ééãããåŠã³ããã®èšäºã®ãé»è²ãã®èŠåºããæãä»ããŸããã ã±ã³ãããã¹ãããã³ãã©ã€ã¢ã³ã¯ã30幎åã«è¡ãããéžæã®çµæããã¹ãŠäºèŠã§ããªãã£ããããäœãä¿èšŒããŸããã§ããã ç§ã®ç¥ãéãããã®åŸ®åŠãªè§£æ±ºçãæªãèãã§ããããšãçè§£ããã®ã«15幎ããããŸããã ããããç§ã®æ±ºå®ã¯ã©ããé·ãç¶ããŸããã§ããã
èšãæããã°ãã±ã³ãããã¹ããã©ã€ã¢ã³ã¯ãã¹ãŠãæ£ãããã£ãã
ããããããã¯åé¡ã解決ããŸãã
å€ãã®äººã
ã«ãšã£ãŠãCã¯æ»ã«ã$ {lang}ã®çµ¶ãéãªãå€åããçæçãªäŸ¡å€ã®ããã«ã$ {lang}ã¯æªæ¥ã®èšèªã§ãã å®éã«ã¯ãä»ã®ãã¹ãŠã®èšèªã¯ãPosix APIããã³NULå®å
šãªCã®æååã®äžã«çŽæ¥ãŸãã¯éæ¥çã«é
眮ãããŸãã
JavaãPythonãRubyããŸãã¯Haskellããã°ã©ã ããã¡ã€ã«ãéããšãã©ã³ã¿ã€ã ã¯ãã¡ã€ã«åãNULçµäºæååãšããŠæž¡ããéããŸãïŒ3ïŒã ãŸãã¯ãqueue.acm.orgãIPã¢ãã¬ã¹ã«å€æãããšãã«ããã¹ãåãNULã§çµäºããæååãšããŠgetaddrinfoïŒ3ïŒã«æž¡ããŸãã ãããç¶ããéããPDP / 11ã§ããã°ã©ã ãå®è¡ããå Žåã®ãã¹ãŠã®å©ç¹ãšãä»ã®ããã°ã©ã ã§å®è¡ããå Žåã®ãã¹ãŠã®æ¬ ç¹ãä¿æããŸãã
ããã§ã¯ãæ³åäžã®æµãšæŠãããã®APIã®ææ¡ãæžããŠãæ©èœãæäœããšã©ãŒåŠçæŠç¥ãèšå®ããæ¹æ³ãæäŸã§ããŸãããçŽ æŽãããå€ã®å®å
šãªç¡é§ã«ãªããšç¢ºä¿¡ããŠããŸãã PDP / 11ãšæžãããããã°ã©ã ã®æéæ°ãšã®åŸæ¹äºææ§ã¯ãå°æ¥ããå€ãã®ããã°ã©ã ãããå¹ççãã€å®å
šã«æžãå¯èœæ§ãããã¯ããã«éèŠã§ãããããçµéšã¯ãã®ãããªææ¡ãã©ãã«ãè¡ããªãããšã瀺ããŠããŸãã
ãããã£ãŠãã±ã³ãããã¹ãããã³ãã©ã€ã¢ã³ã®æ±ºå®ã®ã³ã¹ãã¯ãäœäžçŽã«ãããã£ãŠå€ä»£ããŒããã»ãšãã©åãå°œãããŠãããããèç©ãç¶ããŸãã
åç
§è³æ
1.ã³ã³ãã¥ãŒã¿ãŒããžãã¹ã¬ãã¥ãŒã 1992.ããããšã³ãES / 9000sã®ããŒãã£ã·ã§ãã³ã°ãšEsconã®æ©èœåŒ·åã
http://www.cbronline.com/news/ibm_announcements_712. ViewVCã 2007. /head/lib/libc/string/bcopy.cã®å
容ã
http://svnweb.freebsd.org/base/head/lib/libc/string/bcopy.c?view=markup3.ãŠã£ãããã£ã¢ã 2011.æåœããŒãã®ã¹ã±ããã
http://en.wikipedia.org/wiki/Lifeboat_sketch