Paul Prescod
æ¥æ¬èªè¨³ï¼Shiro Kawai (shiro ï¼ acm.org)
ããã¯ã
Paul Prescodï¼On the Relationship Between Python and Lisp ããåèè
ã®è¨±å¯ãå¾ã¦ç¿»è¨³ã»å
¬éãããã®ã§ãã
2002/06/02 翻訳å
Ž
Lispã¯æä»£ã®ã¯ããå ãè¡ã£ã¦ããã Lispã¯æåã®é«ç´è¨èªã ã£ãããããã以éã«ç¾ããè¯ããã®ã¯å ¨ã¦Lispã®åçºæã ã ã¨ä¿¡ããããªã人ã ãããã Javaã¯Lispã ãXMLãLispã (éãã®ã ã)ã ããã¦ä»åº¦ã¯ãPythonã¯Lispã ããã ã
æåãªLispã¨ãã¹ãã¼ãã§ãã Paul Grahamãæç¤ºãã話ã¯ããã ã å½¼ãè°è«ã«é¸ãã 3ã¤ã®è¨èªãJavaãPerlãPythonã®ãã¡ã Pythonã¯Perlãã(ããã¥ã©ã¼ã§ã¯ãªãã«ãã)ã¯ã¼ã«ã ãã Perlã¯Javaãã(ããã¥ã©ã¼ã§ã¯ãªãã«ãã)ã¯ã¼ã«ã ã ãªããªãPythonã3ã¤ã®ãã¡ã§æãLispã«è¿ãããã ã æ®å¿µãªãããPythonã¯ã¾ã æçããã£ã¦ãªãLispã®ãããªãã®ã§ã ãã®ãã¡å®å ¨ãªLispã£ã½ããåããã ããã ã§ããä»CommonLispã使ããã®ã«ãä½ã§PythonãLispã«ãªãã®ãå¾ ã¤ãã ãã
ããªããLispããã°ã©ããªããæããã¤ããã¾ãã¦ãã¾ããããªè©±ã ã ã ããããã¯çå®ã§ã¯ãªãã
Grahamã¯ãPerlã¯Javaããã¯ã¼ã«ã§ãPythonã¯Perlããã¯ã¼ã«ã ã¨è¨ãã ã©ããã®ã°ã«ã¼ãã§ã¯ãå¤åãããªã®ã ãããGrahamã¯SlashdotãPerlã§æ¸ããã¦ããã¨ããã®ã ä¾ã«åºãã¦ããããããããããªãCã§æ¸ããã¦ããAdvogatoã¯ã©ãã ã 3ã¤ã®å ¨ã¦ã®è¨èªã使ã£ã¦æ¸ããã¦ãããæ°ã ã®ã¯ã¼ã«ãªP2Pã½ããã¦ã§ã¢ã¯ã©ããªãã ã Perlã¯Javaããå¤ããä¸åº¦ã¯ãæ¬¡ã«æ¥ã大ããªè¨èªãã ã¨æããã¦ããã¨ãããã¨ã èããã°ãããã°ã©ããJavaããPerlããã¯ã¼ã«ãã¨èãã¦ããã¨ããçµ±è¨çãªè¨¼æ ã è¦ä»ããã®ã¯é常ã«é£ããã ããããã¶ãã Javaã¯ãæ¥çæ¨æºãã¨ãªã£ã¦æ°å¹´çµã¤(ãããã£ã¦ã ã¹ãã¤ã¹ã¬ã¼ã«ãºãã¯ã¼ã«ã§ãªãã®ã¨åãçç±ã§ã¯ã¼ã«ã§ã¯ãªã)ã®ã«å¯¾ãã Perlã¯ã¾ã ä¸ç¨®ã¢ã³ã°ã©ã§(ãããã£ã¦ã¢ã³ãã¨ã³ããã¯ã¼ã«ãªã®ã¨åãã§)ã¯ã¼ã«ã ã ã¨ããããã¨ãªãã ããã Pythonã¯Perlãããã£ã¨ã¢ã³ã°ã©ã (ã ãããã£ã¨ã¯ã¼ã«ã ã£ã¦?) Grahamã示ãã¦ã¿ããã®ã¯ãLispã«è¿ä»ãã°è¿ä»ãç¨è¨èªã¯ã¢ã³ã°ã©ã«ãªãã£ã¦ãã¨ã ã£ãã® ãããããªãããã ãå½¼ã¯Lispã«è¿ãã«é¢ãã¦è°è«ãéã«ãã¦ããããã ã
Grahamã¯å½¼èªèº«ã(å½¼ã®ä¾ã®ä¸ã§)Perlã®ã¯ãã¼ã¸ã£ã®ã»ãã³ãã£ã¯ã¹ã¯ Pythonã®ãããããLispã«å¤ããè² ã£ã¦ããã¨ç¤ºãã¦ããã ãããªããPythonãPerlããLispã«è¿ãã¨ãã証æ ã¯ã©ãã«ãããã ã å®éãPerlã¯Pythonããããã£ã¨æèçã«Lispã®æ©è½ãåç¨ãã¦ããã Perlã®Lispçãªæ©è½ã¯Perlã®ã³ãã¥ããã£ã®ä¸ã§ã¯å¥½ã¾ãã¦ãããã Pythonã³ãã¥ããã£ã§ã¯ãã®ãããªæ©è½ã«ã¤ãã¦ææåã°ãã¦ããã ããã«ã¤ãã¦ã¯ããå¾ã§è¿°ã¹ãã
Pythonã¯Lispã®æ¹åã¸ã¨ã¯æé·ãã¦ããªãã Lispã«ç´æ¥å½±é¿ãåããPythonã®æ©è½ã¯Pythonã®æ´å²ã®é常ã«åæã®æ®µéã§è¿½å ãããã Guidoã¯å½æãè¨èªè¨è¨è ã¨ãã¦å§ããã°ããã§ã ã ãããNOãã¨ããç¿æ £ãã¾ã 身ã«ä»ãã¦ããªãã£ããã ã 人ã ããä»ã®è¨èªãããããªã¯ã¼ã«ãªæ©è½ãæã£ã¦æ¥ãããã¨è¨ã£ããã å½¼ã¯ãã®ããããçµæããã¾ãèããã«åãè¾¼ãã§ããã æåã®æ°å¹´éããããã®æ©è½ã¯éå¸¸ã«æµ®ãã¦ããã ä»ã®Pythonã®æ¹åã«ãããæè¿ã§ã¯ãããã®æ©è½ãããã»ã©æµ®ãã¦ã¯ããªããã åæã«ãPythonã®ä»ã®æ°ããæ©è½ã®ãããã§ã ãããã®æ©è½ã¯ãã¾ãéè¦ã§ã¯ãªãã使ãã¿ã¡ãç¡ããªã£ã¦æ¥ã¦ããã
å®éã以ä¸ã®æ©è½ã®ããã¤ãã¾ãã¯å ¨ã¦ã«ã¤ãã¦ã ããã鿍奍ã«ãããã¨ããææ¡ãåºããã¦ãã(ããã»ã©åªå 度ã¯é«ããªãã)ï¼ "apply" (ããã¯ç¾å¨ã¯ç¬¬ä¸ç´ã®æ§æã¨ãªã£ã)ã"map"ã "filter" (ããã¯ãã¤ããªã¹ãã®å å 表è¨ã§ç½®ãæãããã)ã "reduce" (forã«ã¼ãã§ç½®ãæãããã)ã ãã㦠"lambda" (ååä»ã颿°ã§ç½®ãæãããã)ã ãããã¯ææ¥ããåãé¤ãããã¨ããããã§ã¯ãªãã ãã (æªå£ã¡ã¤ã«ãç§ã«éã£ã¦æ¥ãªãããã«)ã ã ããããããåé¤åè£ã¨ãã¦è°è«ãããã¨ããäºå®ãã¨ãããªãããã PythonãããLisp風ã«ãããã¨ããåãã¯ç¡ãã¨ãããã¨ã示ãã¦ããã ãããããã®éã®æ¹åã«è¡ãã®ã好ã¾ãã¦ããããã ã (å°ãªãã¨ããç§ã®æè¦ã§ã¯ "lambda" ã¨ããååãæã¡è¾¼ãã ã®ã¯æãã¹ãééãã ã£ã)ã
Pythonã¯æé·ãã¦ããããããLispã¸åãã£ã¦ã§ã¯ãªãã Pythonã®äººæ°ãåºã¦æ¥ãã«ãããã£ã¦ã ä»ã®è¨èªã®ç±ççæå¥½å®¶ãPythonã¯ãã®è¨èªã®åå«ã ã¨è¨ãåºãã ãã (ãã¢ã¬ã¯ãµã³ãã¼ã»ã°ã¬ã¢ã ã»ãã«ã¯ã«ãã人ã ã£ããçå群ã¨å¼ã¼ã)ã Pythonã¯å®ã¯å°ããªLispã ãã¨Grahamã¯è¨ããHaskellããã°ã©ãã¯ã ããPythonã¯ãªã¹ãã®å å 表è¨ã¨ããã¤ãã®é å»¶è©ä¾¡ã¡ã«ããºã ãåãã¦ãããã å°ããªHaskellã ã¨è¨ãã ãããé å»¶ã¸ã§ãã¬ã¼ã¿ãåãããã¨ã§ã Pythonã¯ããIconã«è¿ä»ãã¦ããã¨Iconããã°ã©ãã¯è¨ãã ããã Smalltalkããã°ã©ãã¯ãã¡ã¿ã¯ã©ã¹ã¨ã¦ããããã¹ãæ©è½ã ããã¦æ°ããã¡ã½ãã解決é åºã«æ³¨ç®ãããããããªãã è¦åããã°ãããã¦ä¾å¤å¦çæ©æ§ã¯Javaã«æãè¿ããããããªãã 10å¹´å¾ã«ã¯ãPythonã¯(CommonLispãå«ã)ãããã®è¨èªããããå¤ãã®ã¢ã¤ãã£ã¢ã ããã£ã¦ããã ãããããã®ãã¡ã®ããã¤ãã¯ãããã®è¨èªã®åã³åãè¾¼ã¾ãã¦ãããã ãããªããããããPythonããããã®è¨èªã®ç¹å®ã®ä¸ã¤ã¸åãã£ã¦æé·ãã¦æ¬²ããã¨æããªãã é·ããé·ãæéãå¾ ããã°ãªããªãã ããã
Pythonã®æè¿ã®ããã¤ãã®ãã¼ã¸ã§ã³ã«ã¤ãã¦ã¯ã Lispã®å½±é¿ã¯å ¨ã¦ã®è¨èªã®ãã¡ã§æãå°ããã æ°ããæ©è½ã®ãã¡ãLispã®å½±é¿ãããããã¦è¦ããããç§ãæãä»ãå¯ä¸ã®æ©è½ã¯ ãã¹ãããã¹ã³ã¼ãã ãã ãCãC++ãJavaãPerlãRubyã¯çãã¹ãããã¹ã³ã¼ããæã£ã¦ããã ããããLispã®æ©è½ã ãã¨ããã®ã¯ã (Common Lispã§ã¯ãªã)McCarthyã®Lispãæåã®é«ç´è¨èªã§ããã ä»ã®å ¨ã¦ã®è¨èªã¯ããã§éçºããããã®ããåãããåçºæããã¦ãããã§ããã ã¨ããã ãã®ãã¨ã«éããªãã
Grahamã®ãWhat made Lisp differentãã®ãªã¹ããè¦ãã¾ãã å½¼ã¯Pythonãã ããã5ã¤ã®é ç®ãåã£ãã¨æ¸ãã¦ããã Cã¯æåã®3ã¤(æ¡ä»¶å¼ã颿°ãã¤ã³ã¿ãå帰)ã30å¹´åã«åã£ãã æ¬¡ã®2ã¤(åçåãã§ãã¯ã¨ã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³)ã¯å½æã®è¨èªã«ãè¦ããããã æè¿ã«ãªãã¾ã§ã¯CPUã®è² è·ãé«ãããã¨ãã¦ä¸»æµã«ã¯ãªããªãã£ãã æ¬¡ã®3ã¤ã¯Pythonãå®è£ ãã¦ããªããã®ã ãããã«é¢ãã¦è峿·±ãã®ã¯ã ãã®3ã¤ã¯ãã¼ãã¦ã§ã¢ã³ã¹ãç¡ãã§å®è£ ã§ããã¨ãããã¨ã ã è¦ããã«ãããã®æ©è½ã¯ãä¸è¬çãªããã°ã©ãã³ã°è¨èªã®ä¸çã§ã ããã¦ã¨ãããGuidoã«ãã£ã¦ãå®è£ ããªããã¨ã鏿ãããã®ã ã
ããã°ã©ãã¯æ·±ããã¹ãããå¼ã¯å¥½ã¾ãªãã å½¼ãã¯ãå¼ã®å¤ã«ååãæ¯ããããã¨ã奨å±ããè¨èªã好ãã æã¨å¼ã®åºå¥ã¯ããã奨å±ãã(æã«ã¯è¦æ±ãã)ã ã·ã³ãã«åã¯æªãèãã§ã¯ãªãããã¤ã³ã¿ã¼ã³ãããæååãããã°ã»ã¨ãã©å©ç¹ã¯ãªãã Lispã®Så¼è¡¨è¨ã¯ã声é«ã«ãã¯ã£ããã¨ãéå»åä¸ç´ã®éæå¦ããã¦ããã
è¦ããã«Grahamã¯ãæ°ããè¨èªã¯ ãã¤ã¦ä¸»æµã«ãªãã«ã¯è¨ç®è² è·ãé«ãããã¨å¤æããã Lispã®æ©è½ãæé·ã«å¾ãåãè¾¼ãã§ããããã ãã¼ãã¦ã§ã¢ã¨ã³ã³ãã¤ã©æè¡ã追ãä»ããä»ã Lispã主æµã«ãªãããããæ©è½ã¾ã§ããããã®è¨èªãåãè¾¼ãã ããã¨äºæ¸¬ãã¦ããã®ã ã
å½¼ã®ãªã¹ãã®æå¾ã®æ©è½ã«ã¤ãã¦ã¯å¤æãä¿çããã Pythonã¯å½¼ã®ãã3ã¤ã®è©ä¾¡ã¢ã¼ãã®ãã¡ã®2ã¤ãå®è£ ãã¦ããã å®è¡æã®è©ä¾¡ã¨ãå®è¡æã®èªã¿è¾¼ã¿ã ãæ®ãã®1ã¤ã¯ã³ã³ãã¤ã«æã®è©ä¾¡(ãã¯ã)ã ã Pythonã¯ãã¤ã®æ¥ããããããDylanã®ãããåºã«ãã¦ãã¯ããåãè¾¼ããããããªãã Pythonã¯ã¾ã ãLispãã¡ããªã¼ã®è¨èªããå¦ã¶ã¨ããããã (ããã¦åãããSmalltalkãããHaskellãããIconãããEãããOzãããâ¦)ã ç§å¯ã¯ãæåããé¨åã ããåã£ã¦æ®ãã¯ç½®ãã¦ãããã¨ã ã ããªããLispããã°ã©ãã§ãªããã¨ãé¸ãã ã¨ãããã ç§ã®è¨ããããã¨ã¯ããã£ã¦ãããã ããã
Grahamã¯Pythonã«æ¯ã¹ãLispã®ãåããå°ããªã³ã¼ãçãæ¯ã¹ããã¨ã§ç¤ºãã¦ã¿ããã Cã§Fortranãããã°ã©ã ããã®ããã¾ããããªãããã«ã Pythonã§Lispãããã°ã©ã ããã®ããã¾ãããã¯ããªããå½ç¶ã®ãã¨ã ã
ãå¤ãç´¯ç©ãã¦çµæãå¿ è¦ã«å¿ãã¦è¿ãããã®ããä½ããã¨ãã ç¾å®ã®ä¸çã®åé¡ãæç¤ºãããããã«ã Grahamã¯ãã®ããã®ãã¯é¢æ°ã§ãªããã°ãªããªãã¨ãã¦ããã æããã«ããã¯é¢æ°ãæ½è±¡åã®ã¡ã«ããºã ã®ä¸»ä½ã§ããè¨èªã§ä¸çªãã¾ãè¡ãã ããããPythonã§ã¯é¢æ°ã¨ãªãã¸ã§ã¯ããå ±ã«ããªããã£ãã¨ãã¦æã£ã¦ããã Pythonã§ã¯ãã®å ´åã«é©åãªæ½è±¡åã®ã¡ã«ããºã ã¯ãªãã¸ã§ã¯ãã§ããã颿°ã§ã¯ãªãã ãªãã¸ã§ã¯ãã¯ããã¤ãã®çç±ããè¯ã鏿ã§ããã
ä¸ã«è¿°ã¹ããããªä½æ³ã使ããã¨ã¯ãPythonããã°ã©ãããäºãã®ã³ã¼ãã çè§£ããå©ãã«ãªãããå ¥å弿°ãç¡ãã£ã¦? ã ã£ãããã®é¢æ°ã¯ç¶æ ç¡ãã ãªãã ãå¤ãè¿ã颿°? ããã¯å¤åå¯ä½ç¨ç¡ãã ãªãã ã¨ããã§ããã®ãããªçè§£ãããã ãªãã¸ã§ã¯ãã¨é¢æ°ã®ä¸¡æ¹ã第ä¸ç´ã®åã¨ãã¦æã¤ã®ãè¨èªã«ã¨ã£ã¦è¯ãã¨ãããã¨ã 示ãã¦ããã
Grahamãåé¡ããå é¨ã«æ´æ°å¯è½ãªç¶æ ãæã¤é¢æ°ãã¨å®ç¾©ããã¨ããã å½¼ã¯Pythonã®ãªãã¸ã§ã¯ãæåã¢ãã«ããã (ããã¦ç´ç²ãªé¢æ°åããã°ã©ãã³ã°ããã)è¶³ãè¸ã¿åºãã¦ãã¾ã£ãã®ã ã Pythonã¯ç¢ºãã«æ¸ãæãå¯è½ãªç¶æ ãæã¤é¢æ°ãä½ãææ®µãè²ã æã£ã¦ãããã Pythonããã°ã©ãã¯ãããå½ã¦ã«ãã¦åé¡ãèããªãããèããã¹ãã§ã¯ãªãã
ãããã£ã¦ã ãã®ç¹å®ã®å®å¼åã«ããã¦Pythonã®æ§æçãµãã¼ããå¼±ããã¨ã¯é©ãã«å½ãããªãã 以ä¸ããåæ§ã®åé¡ã«ãããæ £ç¨çãªPythonã®æ¸æ³ã§ããã
class Accumulator:
def __init__(self, start):
self.val = start
def incr(self, amount):
self.val += amount
def decr(self, amount):
self.val -= amount
# not strictly necessary but makes some programmers warm and fuzzy
def getValue(self):
return self.val
val = Accumulator(5)
val.incr(10)
val.incr(11)
val.decr(5)
print val.getValue()
CommonLispçã®æ©è½ã«ããã¨éå®ãããªãã°ãçãã¯ã ããã5ã¤ã®æãããã¯è¡ã® ã³ã¼ãã«ãªã (CLã«ããã5ã¤ã®è«ççãªæã¨æ¯è¼ãã¦)ã
æ¨æ¥ãç§ã®å¦»(é§ãåºãã®åçå®¶)ãè¨ã£ãã ãç§ã®ç¥ã£ã¦ãããããã®(大夿°ã®?)ããã®åçå®¶ã¯ãããã³ããã·ã¥ã使ã£ã¦ããããã ç§ã¯ã¤ããå¦ä½ã«é¢ããã¡ãã£ã¨ããäºãã®æ©ä¼ã«ä¹ã£ã¦ãã¾ã£ãã ããããããããã³ããã·ã¥ã¯ãã¤ã ã£ã¦è¸è¡æåã®é£ä¸ã«å¥½ã¾ãã¦æ¥ããã ããããã®ç¶ºéºãªãã¿ã³ãã¤ãã¦ããããããã åãæ¥ã«ããã°ãããã¦ãç§ã¯ããå°ãçé¢ç®ã«ãªã£ã¦å½¼å¥³ã«è¨ã£ãã ããããããã³ããã·ã¥ãåã®åçã«å½¹ç«ã¤ãªããè²·ã£ã¦ããããã ç§ãããã«åãè¾¼ã¾ããUnixã®ãã¬ã¼ã ã¯ã¼ã¯ãè¦ãããããã ãããã³ããã·ã¥ã¯ã®ã¼ã¯ã®éã§ãã¨ã¦ã人æ°ãåºã¦æ¥ã¦ãããã ã 彼女ã¯çãããããããããªããããã³ããã·ã¥ã¯è¸è¡å®¶æ°åãã ãã®ããã®ãã®ã ã£ã¦ è¨ããªãã£ã?ã
æåã®æãå£ã«ããæãç§ã¯1990å¹´ä»£ã®æèãã¿ã¼ã³ã ã£ãã 1990年代ã«ã¯ããªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ã¯ä½¿ãã®ãç°¡åãã 髿©è½ã§æ´ç·´ããã¦ãããã§ã両æ¹ãåããã¨ãããã¨ã¯æãå¾ãªãã£ãã ãããä¸ç´ã®çµãã«ã¯ããã®2åæ³ã¯ã©ãã©ãæå³ããªããªããªã£ã¦ãã£ãã Linuxã¯ã´ãã´ãã®ãã¿ã³ãåããããã«ãªã£ããWindowsã«ã¯PerlãGCCãbashã¨ãã£ã Unixã®ãã¼ã«ãç§»æ¤ããããããã¦ãããã³ããã·ã¥ã®OS Xããã£ã¦æ¥ã¦ã ãã¡ããªã¼ã»ãã³ã¨ã¬ã¼ã¹ã«ã¼ã®ä¸¡æ¹ãåæã«ãã£ã¦ã®ããã¨ãã ãã°ãããä»äºãæãéãããPythonã¯Mac OS Xã®ããã°ã©ãã³ã°è¨èªã ã Pythonã¯é§ãåºãã®ããã°ã©ãã«ãããæ®éã®ãããã°ã©ãã«ãã ããã¦è¨èªã®ã¼ã¯ã«ãåæã«å¥½ã¾ãã使ãããããã«è¨è¨ããã¦ããã
Paul Grahamã¯å½¼ã®ããã¤ãã®è¨äºã®ä¸ã§ããããªãã¨ã¯ä¸å¯è½ã ã¨ç¤ºåãã¦ããã å½¼ã¯èªåè»ã®ã¢ããã¸ã¼ã使ã£ã¦ãå½¼ã®æ°ããè¨èªãArc㯠ãã«ã·ã§ã«ãªãã ã¨èé¢ããªãè¿°ã¹ã¦ãããæåã¯ä½¿ãã®ãé£ããããé·ãç®ã§è¦ãã°ããããã¯ãã«ãã ã¨ã ããã«ç½®ããã¦ããä»®å®ã¯ãæåã«ä½¿ãæãç°¡åã§é·ãç®ã§è¦ã¦ããã¯ãã«ãªããã« è¨èªãè¨è¨ãããªãã¦ä¸å¯è½ã ã¨ãããã¨ã ã çµå±ãä½ããååã«é·ãéæãéããããªãã¨ãããã¯ä¸å¯è½ã ã¨æãããã¡ãªãã ã
ãã¡ããªã¼ã»ãã³ã¨ã¬ã¼ã¹ã«ã¼ãåæã«æºããã®ã¯ç©çæ³åã®ããã§ä¸å¯è½ã ã ã ãã½ããã¦ã§ã¢è¨è¨ã«ããã¦ãä¸å¯è½ã¨ãããã¨ã¯ã»ã¨ãã©ç¡ãã è¨èªã«ãããªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ã«ããã¯ã¼ãããã»ããµã«ããã 3ã¤ã®å ¨ã¦ã®ã¯ã©ã¹ã®ã¦ã¼ã¶ã«åãå ¥ããããããã«è¨è¨ããã«ãªããããã°è¯ãã
ãã®æå¾ã®é ç®ãè¦ã¦ããã»ããæã£ãéãã ãå ¨ã¦ã®äººã«å¯¾ãã¦å ¨ã¦ãæä¾ãããã¨ã¯ ã§ããªããããªãããã£ã¦è¨ãããç¥ããªãããã®éããããããªãã¨ã¯åºæ¥ã¯ããªãã æ°ãããããã³ããã·ã¥ããã¼ãããæã ç§ã¯ã¢ã¤ã³ã³ãã´ãã´ããããã®ã«CPUãæµªè²»ããããã¨ã«ä¸æå¿«ããè¦ããã ããã ã§ãç§ã¨å¦»ã¨ãåãã³ã³ãã¥ã¼ã¿ã使ããã¨ããç¹ãã 両æ¹ã®ããã«è¨è¨ãããã³ã³ãã¥ã¼ã¿ã®æã¤ã¡ãã£ã¨ããã¤ã©ã¤ã©ããç¹ããããã£ã¨ 大äºãªãã ã
åæ§ã«ã大ããã¦è¤éãªè¨èªããPythonã使ãå©ç¹ãèãã¦ã¿ããã
tim Berners-Leeã¯æ¯æ¥æ¯æ¥ãWebã«é¢ãã壮大ãªè¨ç»ãèãã å±éºãªæ¿æ²»çé§ãå¼ããè¡ã£ã¦ããã å½¼ãã¡ãã£ã¨ããã¯ããããªã¨ æã£ãããå½¼ã¯èªåã®é ã®ã1ãã¼ã¸ãã«åã¾ã£ã¦ãå¿ è¦ãªæã«ããã«ã¹ã¯ããã¤ã³ã㦠ã¾ãããã«ã¹ã¯ããã¢ã¦ãã§ãããããªè¨èªã使ããããã ããã Pythonããã®è¨èªã ãããã¦ç§ãPythonã使ããã¨ã§ã ã»ãã³ãã£ãã¯ãªWebããã»ãã·ã³ã°ãè¡ãããæã«å½¼ã®ã³ã¼ããåå©ç¨ãããã¨ãã§ããã (ã¡ããã©ç§ã®æ¸ãã¦ããUnixã³ã¼ãããã¹ãããã®ã«å¦»ã®IMacã使ãããããªãã®ã )ã Paul Grahamã¯ãã大è¡åããã«è¨è¨ãããè¨èªã¯å®ã®ã¨ãã ãéæããåãã«è¨è¨ããã¦ãããã ã¨ãã£ã¦ããã ç§ã®è¦³å¯ã«ããã¨ãã©ããããã®ææä¸ã§æãè³¢ã人ã 㯠ããã°ã©ãã³ã°ã«é¢ãã¦ã¯(ãããã¯ãåçããã°ã©ãã³ã°è¨èªã«é¢ãã¦ã¯) éæãã¨ãããã¨ã«ãªããããã ããç§ã¯å½¼ãã¨åãè¨èªã(ããã¦ã³ã¼ããï¼)å ±æã§ãããã¨ã«åã³ãæããã
ç§ã¯æ®éãæ¥å¸¸ã®å¤ãã®æéãPythonã«è²»ãã ã ã大æµã®ãããã§ãã·ã§ãã«ããã°ã©ãã¯ãPythonããã£ã¨æ¥çãæ¯é ããã¾ã§ã¯ Pythonã«å¤ãã®æéãå²ãããã«ã¯ãããªãã ããã ããã¾ã§ã¯ãå½¼ãã¯Pythonã¨ä»äºã«ä½¿ãè¨èªã¨ã®éãè¡ã£ããæ¥ãããããã¨ã«ãªãã Pythonã¯ããã容æã«åºæ¥ãããã«è¨è¨ããã¦ããã æ¼ã®éãå½¼ãã¯ä¼è¨ã½ãã ãããããã¨æ¸ããå¤ã«ã¯åæ£ãªãã¸ã§ã¯ãæåãã¡ã¤ã«ã·ã¹ãã ãããã¯ãããç´è¦³çã«åä»ãããã颿°åã¯ãPythonãé ã®ä¸ã«ã¹ã¯ããã¤ã³ ããã®ã容æã«ããããã°ããè¨èªããé¢ãã¦ããã°ãæã 誰ãããéæãã«ãªã ã®ã ãããéæãã®ããã«é¸æãããå ¨ã¦ã®æ©è½ã¯å®éãã¤ã¨ã³ãã®éçºè ãã å©ãããã¨ã«ãªãã®ã ã
ç§ã¯èªåã®ã³ã¼ããããã®åéã§ã®ã¨ãã¹ãã¼ãã¨ããããéæããéã¨å ±æãããã¨ã§ å ±é ¬ãå¾ã¦ãããPythonã使ããã¨ã§ãç§ã¯ç§ã®ã³ã¼ããå½¼ããVBãã使ããããã« COMãªãã¸ã§ã¯ãã«å ããããªãã¨ãããªãã¦æ¸ãã ç§ã¯ãéã¨ãã¹ãã¼ãã®ããã ãã«è¨è¨ãããããããã®è¨èªã§ããã°ã©ã ãæ¸ããªãã§ æ¸ãããå½¼ãã¯ã¨ãã¹ãã¼ãã®ããã ãã«æ¸ãããé£ããè¨èªãå¦ã°ãªãã¦ãæ¸ãã ç§éã¯åãè¨èªã§ä¼è©±ã§ããã®ã ã å½¼ãã¯ç§ã®æ¸ããã³ã¼ããèªããã¨ãåºæ¥ãããå¿ è¦ã¨ããã°ã¡ã¤ã³ãã¤ã³ãããã¨ã ã£ã¦ã§ããã
ç´ç²ã«å©ä»çãªè¦³ç¹ãããç§ã¯èªåã®æ¸ããã³ã¼ã(ç¹ã«ãªã¼ãã³ã½ã¼ã¹ã®ã³ã¼ã)ã 髿 ¡çãä»ã® ããã°ã©ãã³ã°åå¿è ã®èª²é¡ã«ãªããã¨ã«åã³ãæããã
è¤éãã®å¤§é¨åã¯åãé¤ããããé ãããããã¦ããããã ãã¼ãã³ã¢ãªã®ã¼ã¯ã§ãããæå°éã§åç´ãªä½ãã使ããã¨ã«ãã種ã®ç¾å¦çãªåã³ã è¦åºãã¦ããã
ããããã¼ã¨ã³ãã®ããã°ã©ãã«åãããããã«é«ã代åãæã£ã¦ããã®ã 㨠ãã¦ããã©ãããããã¯ç§ã®å¿ãå¤ããããã«ã¯è¶³ããªãããã ã ã ãPythonã¯ãLispãå«ãä»ã®è¨èªã«æ·±ãçµé¨ãæã¤äººã ã®éã§ãæããã«äººæ°ãå¾ã¦ããã ä¾ãã°ãEric Raymondã Peter Norvigã Dan Connollyããã㦠Erann Gatã¨ãã£ã人ã ã ã ç§ã¯Schemeã¨Pythonãç¥ã£ã¦ãããCommon Lispã¯ç¥ããªãã Paul Grahamã¯Common Lispã¨Schemeãç¥ã£ã¦ãããPythonã¯ç¥ããªãã æã ãä¿¡é ¼ãããªãä¸ã«æãã人ã ã¯å°ãªãã¨ãä¸ã¤ã®Lisp (é常ã¯CommonLisp) 㨠Pythonãç¥ã£ã¦ãããå½¼ãã¯è¸ã«ä¸ç©ãæ±ãã¦ãããããããªãã ããã¦å½¼ãã¯ãPythonã«ç§»è¡ãããã¨ã§ä½ã大ããªãã®ã失ã£ãã¨ã¯æã£ã¦ããªãããã ã
Pythonã¯ã¾ã æã人æ°ã®ããè¨èªã§ã¯ç¡ããã 宣ä¼ããã主ä½ããªãã大ããªã¹ãã³ãµã¼ä¼ç¤¾ãç¡ãã (Javaã¨JavascriptãNetscapeã«å«ã¾ãã¦ããããã«)ãããå«ã¾ãããã©ã¼ã¢ããª1 ãç¡ãã«ãããããããæ¥éã«äººæ°ãå¾ã¤ã¤ããã å©ç¨è ã®æºè¶³ã«åºã¥ãã¦å¼·ã伸ã³ã¦æ¥ã¦ããããã²ã¨ã¤ã®è¨èªã¯Rubyã ã Perlã¯ãPerl 6ããªãªã¼ã¹ãããæã«ãã®ãªã¹ãã«åã³å ãããããããªãã
å ¨ã¦ã®ã¬ãã«ã«ãããããã°ã©ããããPythonã¯ã¡ããã©è¯ãã¨ããã§å¦¥åãã¦ããã ã¨æãã¦ããããã«æãããããããªãããLispã(åã³)ä¸çãæ¯é ããã®ãå¾ ã¦ãªããã°ã Pythonãããã¯ä»ã®ãããããã¹ã¯ãªããè¨èªãã¨å¼ã°ãããã®ã調ã¹ã¦ã¿ãã¨è¯ãã Pythonã¯ãã¶ããããªãã使ã£ã¦ããéã«ãæé·ãã¦å¤ãã£ã¦è¡ãã§ããããã¨ã¯ æã£ã¦ãããã°ãªããªããã¾ãããã¯ã©ã¡ããã¨ããã¨ææ©çã«æé·ããããã 誰ã (Paul Grahamã§ã) ãããæ£ç¢ºã«ã©ããããµãã«æé·ãã¦è¡ããã¯äºæ¸¬ã§ããªãã ããã
1. Zopeã¯ã¢ããªã±ã¼ã·ã§ã³ã§ãããã©ã¼ã§ãããããããªããã Pythonã®ãã©ã¼ã¢ããªã¨ã¯è¨ããªãã ããã PHPã¦ã¼ã¶ã®å¤§é¨åãApacheã使ãã JavaScript(åã³åæã®Java)ããã°ã©ãã®å¤§é¨åãwebãã©ã¦ã¶ã使ã£ã¦ãã(ãã) ã®ã¨åãããã«ã¯ã Pythonã®å¤§å¤æ°ã®ããã°ã©ããZopeã使ã£ã¦ããã¨ããç¶æ ã«ã¯ãªã£ã¦ããªãã