æ£çŽã«åŠãŒããšããŸããã ç§ã¯ãã¿ãŒã³ãç 究ãããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®ã³ãŒããèªã¿ãé ã®äžã§èª¿åã®ãšããæŠå¿µãæ§ç¯ããããšããŸããããé«å質ã®ãªããžã§ã¯ãæåããã°ã©ã ãäœæããååããŸã ç解ããŠããŸããã§ããã ä»ã®èª°ããããããç解ãããããããŸããããç§ã¯ããã§ã¯ãããŸããã
ãããŠãããã«ç§ã誀解ãããŠããããã€ãã®äºæããããŸãã
OOPãšã¯äœãããããŸãã
çå£ã«ã OOPã®äž»èŠãªã¢ã€ãã¢ãçå®ããã®ã¯é£ãããšæããŸãã é¢æ°åããã°ã©ãã³ã°ã®äž»ãªã¢ã€ãã¢ã®1ã€ã¯ãç¶æ ã®æ¬ åŠã§ãã æ§é -å解ã ã¢ãžã¥ãŒã«åŒ-æ©èœãå®æãããããã¯ã«åé¢ããŸãã ãããã®ãã©ãã€ã ã®ãããã«ãããŠããæ¯é çãªååã¯ã³ãŒãã®95ïŒ ã«ãŸã§åã³ãèšèªã¯ãããã®äœ¿çšãä¿é²ããããã«èšèšãããŠããŸãã OOPã®å Žåããã®ãããªèŠåã¯ããããŸããã
ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã¯4ã€ã®åºæ¬ååã«åºã¥ããŠããããšã¯äžè¬ã«åãå ¥ããããŠããŸãïŒç§ãå°ããé ã¯3ã€ãããããŸããã§ããããããªãŒã倧ãããªããŸããïŒã ãããã®ååïŒ
- æœè±¡å
- ã«ãã»ã«å
- ç¶æ¿
- å€å
ã«ãŒã«ã®ã»ããã®ããã«èŠããŸãããïŒ ããã§ã95ïŒ ã®ã±ãŒã¹ã§åŸããªããã°ãªããªããŸãã«ãã®ã«ãŒã«ã¯ããã«ããã®ã§ããããïŒ ããŒãã詳ããèŠãŠã¿ãŸãããã
æœè±¡å
æœè±¡åã¯åŒ·åãªããã°ã©ãã³ã°ããŒã«ã§ãã ãŸãã«ç§ãã¡ã倧èŠæš¡ãªã·ã¹ãã ãæ§ç¯ãããããã®å¶åŸ¡ãç¶æã§ããããã«ãããã®ã ãã®ãããªæ©åšãè£ åããŠããªããã°ãå°ãªããšãä»æ¥ã®ã¬ãã«ã®ããã°ã©ã ã«è¿ã¥ãããšã¯ãªãã§ãããã ãã ããæœè±¡åã¯OOPãšã©ã®ããã«é¢é£ããŠããŸããïŒ
ãŸããæœè±¡åã¯OOPã ãã®å±æ§ã§ã¯ãªããå®éã«ããã°ã©ãã³ã°ã®å±æ§ã§ã¯ãããŸããã æœè±¡åã®ã¬ãã«ãäœæããããã»ã¹ã¯ã人éã®ç¥èã®ã»ãŒãã¹ãŠã®åéã«åã³ãŸãã ãããã£ãŠãææã®ååæ§é ã®è©³çŽ°ã«å ¥ããã«ãææã«ã€ããŠå€æããããšãã§ããŸãã ãŸãã¯ãäœæå ã®ææã«èšåããã«ãªããžã§ã¯ãã«ã€ããŠè©±ããŸãã ãŸãã¯ããããã®ãšã³ãã£ãã£ã®åã ã®è©³çŽ°ãæãåºããã«ãã³ã³ãã¥ãŒã¿ãŒãé£è¡æ©ã®ã¿ãŒãã³ã人äœãªã©ã®è€éãªã¡ã«ããºã ã«ã€ããŠè©±ããŸãã
第äºã«ãããã°ã©ãã³ã°ã®æœè±¡åã¯ãæŽå²ã®æåã®ããã°ã©ããŒãšèããããŠããAda Lovelaceã®èšé²ããå§ãŸã£ãŠããŸãã ãã以æ¥ã人ã ã¯ããã°ã©ã ã§æœè±¡åã絶ããäœæããŠããŸãããããã®ããã®æãåçŽãªæ段ããæã£ãŠããŸããã ãã®ãããAbelsonãšSassmanã¯ãæªåé«ãæ¬ã§ãæç¶ããšãªã³ã¯ãªã¹ãã®ã¿ã䜿çšããŠãè€çŽ æ°ãå€é åŒããããµããŒãããæ¹çšåŒã解ãã·ã¹ãã ãäœæããæ¹æ³ã説æããŠããŸãã ããã§ã¯ãOOPã«ã¯ã©ã®ãããªæœè±¡åã®è¿œå æ段ããããŸããïŒ ããããªãã ã«ãŒãã³ãžã®ã³ãŒãã®åé¢ïŒ ã©ããªé«çŽèšèªã§ããããè¡ãããšãã§ããŸãã ã«ãŒãã³ã1ã€ã®å Žæã«çµåããŸããïŒ ããã«ã¯ååãªã¢ãžã¥ãŒã«ããããŸãã å ¥åããŸããïŒ åœŒå¥³ã¯OOPã®ãã£ãšåã«ããã æ¹çšåŒã解ãããã®ã·ã¹ãã ã®äŸã¯ãæœè±¡åã¬ãã«ã®æ§ç¯ãèšèªã®æ段ã«ããã»ã©äŸåãããããã°ã©ããŒã®èœåã«äŸåããããšã瀺ããŠããŸãã
ã«ãã»ã«å
ã«ãã»ã«åã®åãæã¯ãå®è£ ãé ããŠããŸãã ã€ã³ã¿ãŒãã§ãŒã¹ã®ã¿ãã¯ã©ã€ã¢ã³ãã³ãŒããèªèããããã ããä¿¡é Œã§ããŸãã ããã«ãããå®è£ ã®å€æŽã決å®ããå¯èœæ§ã®ããéçºè ã®æã解æŸãããŸãã ãããŠããã¯æ¬åœã«ã¯ãŒã«ã§ãã ãããã質åã¯ãOOPããããšã©ãé¢ä¿ããã®ããšããããšã§ãã äžèšã®ãã¹ãŠã®ãã©ãã€ã ã«ã¯ãå®è£ ã®é衚瀺ãå«ãŸããŸãã Cã§ããã°ã©ãã³ã°ãããšãã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãããããŒãã¡ã€ã«ã«å²ãåœãŠãŸããOberonã§ã¯ããã£ãŒã«ããšã¡ãœãããã¢ãžã¥ãŒã«ã«å¯ŸããŠããŒã«ã«ã«ããããšãã§ããŸããæåŸã«ãå€ãã®èšèªã§ã®æœè±¡åã¯ãå®è£ ãã«ãã»ã«åããã«ãŒãã³ã«ãã£ãŠç°¡åã«æ§ç¯ãããŸãã ããã«ããªããžã§ã¯ãæåèšèªèªäœã¯ãç¹å¥ãªã¡ãœããïŒJavaã®ã²ãã¿ãŒãšã»ãã¿ãŒãCïŒã®ããããã£ãªã©ïŒãä»ããŠããŒã¿ãžã®ã¢ã¯ã»ã¹ãæäŸããããšã§ãã«ãã»ã«åã«ãŒã«ã«éåããããšããããããŸã ã ïŒã³ã¡ã³ãã§ã¯ãããã°ã©ãã³ã°èšèªã®äžéšã®ãªããžã§ã¯ãã¯OOPã®èŠ³ç¹ããã¯ãªããžã§ã¯ãã§ã¯ãªãããšãããããŸãããããŒã¿è»¢éãªããžã§ã¯ãã¯ããŒã¿è»¢éãåç¬ã§æ åœãããããOOPã®æ¬æ Œçãªãšã³ãã£ãã£ã§ã¯ãªããããã«ãã»ã«åãä¿åããå¿ èŠã¯ãããŸãããã¢ã¯ã»ã¹æ¹æ³ã¯ãã¢ãŒããã¯ãã£ã®æè»æ§ãç¶æããããã«æé©ã«ä¿æãããŸããããã¯ããã»ã©åçŽã§ã¯ãããŸãããïŒããã«ãPythonãªã©ã®äžéšã®ãªããžã§ã¯ãæåèšèªã¯ãäœãé ãããšãããåçæ§ã®ã¿ã«äŸåããŸãã ãã®ã³ãŒãã䜿çšããŠazrabotchikovã
ç¶æ¿
ç¶æ¿ã¯ãOOPã®ãããã§å®éã«ç»å Žããæ°å°ãªãæ°ãããã®ã®1ã€ã§ãã ãããããªããžã§ã¯ãæåèšèªã¯æ°ããã¢ã€ãã¢ãçã¿åºããŸããã§ãã-ç¶æ¿ã¯ä»ã®ãã©ãã€ã ã§å®è£ ã§ããŸã-ããããOOPã¯æåã«ãã®æŠå¿µãèšèªèªäœã®ã¬ãã«ã«ãããããŸããã ç¶æ¿ã®å©ç¹ãæããã§ããããã¯ã©ã¹ã«ã»ãŒæºè¶³ããããåå«ãäœæããŠãã®æ©èœã®äžéšãåå®çŸ©ã§ããŸãã C ++ãScalaãªã©ã®å€éç¶æ¿ããµããŒãããèšèªïŒåŸè ã§ã¯ãç¹æ§ã«ããïŒã«ã¯ãå¥ã®ãŠãŒã¹ã±ãŒã¹ããããŸããããã¯ã¹ã€ã³ãã³ãŒããã³ããŒããã«æ°ããã¯ã©ã¹ãšæ©èœããããã¯ã¹ãã§ããå°ããªã¯ã©ã¹ã§ãã
ã ãããããã«ãã-PLOãä»ã®ãã©ãã€ã ãšããŠåºå¥ããã®ã¯äœã§ããïŒ ããŒã...ãããããªãããªãç§ãã¡ã¯å®éã®ã³ãŒãã§ãããããŸã䜿çšããªãã®ã§ããïŒ æ¯é çãªãã©ãã€ã ã®èŠåã«åŸãã³ãŒãã®95ïŒ ã«ã€ããŠè©±ããŠããããšãèŠããŠããŸããïŒ åè«ãããªã é¢æ°åããã°ã©ãã³ã°ã§ã¯ãã³ãŒãã®å°ãªããšã95ïŒ ãå¯äœçšã®ãªãäžå€ã®ããŒã¿ãšé¢æ°ã䜿çšããŸãã ã¢ãžã¥ã©ãŒã§ã¯ãã»ãšãã©ãã¹ãŠã®ã³ãŒããè«ççã«ã¢ãžã¥ãŒã«ã«ããã±ãŒãžåãããŸãã ãã€ã¯ã¹ãã©ã®æèšã«åŸã£ãŠãæ§é ããã°ã©ãã³ã°ã®æ¯æè ã¯ãããã°ã©ã ã®ãã¹ãŠã®éšåãå°ããªéšåã«åå²ããããšããŸãã ç¶æ¿ã¯ããŸãé »ç¹ã«äœ¿çšãããŸããã ã³ãŒãã®10ïŒ ããããã50ïŒ ãå Žåã«ãã£ãŠã¯ïŒããšãã°ããã¬ãŒã ã¯ãŒã¯ã¯ã©ã¹ããç¶æ¿ããå ŽåïŒ-70ïŒ ã§ããã以äžã§ã¯ãããŸããã ã»ãšãã©ã®å Žåãããã¯åã«å¿ èŠã§ã¯ãªãããã§ãã
ããã«ãåªããèšèšã«ã¯ç¶æ¿ã¯å±éºã§ãã 圌ãã®æ¬ã®äžã§ã®ã£ã³ã°ãªããã©ãŒïŒPLOã®èª¬æè ã®ããã«æãããïŒã¯ãå¯èœã§ããã°ãããå§ä»»ã«çœ®ãæããããšãæšå¥šããã»ã©å±éºã§ãã ç¶æ¿ã¯ãäžè¬çãªèšèªã§ååšãã圢åŒã§ãããããè匱ãªãã¶ã€ã³ã«ã€ãªãããŸãã ããç¥å ããç¶æ¿ãããšãã¯ã©ã¹ã¯ä»ã®ç¥å ããç¶æ¿ã§ããªããªããŸãã å ç¥ã®å€æŽãå±éºã«ãªããŸãã ãã¡ãããprivate / protected修食åããããŸãããã¯ã©ã¹ãã©ã®ããã«å€åããã¯ã©ã€ã¢ã³ãã³ãŒãããããã©ã®ããã«äœ¿çšã§ããããæšæž¬ããããã®åŒ·åãªç²Ÿç¥èœåãå¿ èŠã§ãã ç¶æ¿ã¯éåžžã«å±éºã§äžäŸ¿ãªã®ã§ã倧ããªãã¬ãŒã ã¯ãŒã¯ïŒJavaã®SpringãEJBãªã©ïŒã¯ããããæåŠããä»ã®éãªããžã§ã¯ãæåããŒã«ïŒã¡ã¿ããã°ã©ãã³ã°ãªã©ïŒã«åãæ¿ããŸãã çµæã¯äºæž¬ã§ããªããããäžéšã®ã©ã€ãã©ãªïŒã°ã¢ããªã©ïŒã¯ã¯ã©ã¹ãžã®ç¶æ¿ãçŠæ¢ãã修食åãèŠå®ããŠãããæ°ããGoèšèªã§ã¯ãç¶æ¿éå±€ãå®å šã«æŸæ£ããããšã決å®ãããŸããã
å€å
å€æ æ§ã¯ããããããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æãåªããç¹ã§ãã ããªã¢ãŒãã£ãºã ã«ãããåºåæã®Personåã®ãªããžã§ã¯ãã¯ãAdam Impolitovich Shandorkinãã®ããã«ãªããPointåã®ãªããžã§ã¯ãã¯ã[84.23 12.61]ãã®ããã«ãªããŸãã ãMat1 * Mat2ããèšè¿°ããéåžžã®æ°ã®ç©ã«äŒŒãè¡åã®ç©ãååŸã§ããããã«ããã®ã¯åœŒã§ãã ããããªããšããããã¯ãŒã¯ããã¡ã€ã«ããŸãã¯ã¡ã¢ãªå ã®è¡ããããŒã¿ãéãããŠãããã©ãããå¿é ããã«ãå ¥åã¹ããªãŒã ããããŒã¿ãèªã¿åãããšã¯ã§ããŸããã ã€ã³ã¿ãŒãã§ã€ã¹ããããšããã¯ã©ãã§ããããªã¢ãŒãã£ãºã ãæ瀺ãããŸãã
ããªã¢ãŒãã£ãºã ã倧奜ãã§ãã ãããã£ãŠãç§ã¯äž»æµèšèªã§ã®åœŒã®åé¡ã«ã€ããŠã話ããŸããã ãŸããã¿ã€ãã®ã¿ã«ãããã£ã¹ãããã³ã°ã¢ãããŒãã®çããããã³ãããã©ã®ããã«è¡ãããšãã§ãããã«ã€ããŠãé»ã£ãŠããŸãã ã»ãšãã©ã®å Žåãæ£åžžã«æ©èœããŸãããããã¯ãã§ã«æªãã¯ãããŸããã åé¡ã¯ç°ãªããŸããå€åã¯ãOOPãä»ã®ãã©ãã€ã ãšåºå¥ããã®ãšåãåçã§ããïŒ ãã®ããã¹ããèªãã§ããã®ã§ãããªããç§ã«å°ããå Žåãããªãã¯ããªããå°ãããšä»®å®ããããšãã§ããŸãïŒãç§ã¯ããŒãšçããŸãã ãããŠãã®çç±ã¯ãã³ãŒãã§ã®äœ¿çšã®å²åãšåãã§ãã ã€ã³ã¿ãŒãã§ã€ã¹ãšããªã¢ãŒãã£ãã¯ã¡ãœããã¯ãããããç¶æ¿ãããäžè¬çã§ãã ããããããããå ããã³ãŒãã®è¡æ°ãéåžžã®æç¶ãåã¹ã¿ã€ã«ã§æžãããè¡æ°ãšæ¯èŒããŠãã ãã-ãããã®è¡ã¯åžžã«ãã£ãšãããŸãã ãã®ããã°ã©ãã³ã°ã¹ã¿ã€ã«ã奚å±ããèšèªãèŠãŠãããããå€æ æ§ãšåŒã¶ããšã¯ã§ããŸããã å€æ æ§ããµããŒãããèšèª-ã¯ããããã§åé¡ãããŸããã ããããå€çžèšèªã§ã¯ãããŸããã
ïŒããããããã¯ç§ã®æèŠã§ããããªãã¯ãã€ã§ãå察ã§ããŸããïŒ
ãããã£ãŠãæœè±¡åãã«ãã»ã«åãç¶æ¿ãããã³ããªã¢ãŒãã£ãºã -ãããã¯ãã¹ãŠOOPã«ãããŸããããããããã®äžå¯æ¬ ãªå±æ§ã§ã¯ãããŸããã ããã§ã¯ãOOPãšã¯äœã§ããïŒ ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æ¬è³ªã¯ãå®éã«ã¯ãªããžã§ã¯ãïŒéåžžã«è«ççã«èãããïŒãšã¯ã©ã¹ã«ãããšèããããŠããŸãã ããã¯ãã³ãŒããšããŒã¿ãçµã¿åããããšããèãæ¹ã§ãããããã°ã©ã å ã®ãªããžã§ã¯ããå®äžçã®æ¬è³ªãåæ ããŠãããšããèãæ¹ã§ããããŸãã ãã®æèŠã«æ»ããŸããããŸãã¯iã«ã€ããŠããã€ãã®ç¹ãæããŸãã
誰ã®OOPãã¯ãŒã«ã§ããïŒ
åã®éšåãããããããã«ãããã°ã©ãã³ã°èšèªã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®å®è£ æ¹æ³ã倧ããç°ãªãå ŽåããããŸãã ãã¹ãŠã®èšèªã§ãã¹ãŠã®OOPå®è£ ã®å šäœãåãäžãããšãã»ãšãã©ã®å Žåããã¹ãŠã«å ±éããåäžã®æ©èœã¯èŠã€ãããŸããã ãã®åç©åãäœããã®åœ¢ã§å¶éããè°è«ãæ確ã«ããããã«ã1ã€ã®ã°ã«ãŒããã€ãŸãçŽç²ã«ãªããžã§ã¯ãæåèšèªãã€ãŸãJavaãšCïŒã®ã¿ã«çŠç¹ãåœãŠãŸãã ãã®å Žåã®ãçŽç²ã«ãªããžã§ã¯ãæåããšããçšèªã¯ãèšèªãä»ã®ãã©ãã€ã ããµããŒãããŠããªãããåãOOPãä»ããŠããããå®è£ ããŠããªãããšãæå³ããŸãã ããšãã°ãPythonãRubyã¯ã¯ãªãŒã³ã§ã¯ãããŸããã åäžã®ã¯ã©ã¹å®£èšãªãã§ãå®å šãªããã°ã©ã ãäœæã§ããŸãã
JavaãšCïŒã§ã®OOPã®æ¬è³ªãããããç解ããããã«ããã®ãã©ãã€ã ãä»ã®èšèªã§ã©ã®ããã«å®è£ ãããŠãããã®äŸãèŠãŠãããŸãããã
Smalltalk æè¿ã®èšèªãšã¯ç°ãªãããã®èšèªã«ã¯åçåä»ãããããOOPãå®è£ ããããã«ã¡ãã»ãŒãžåãæž¡ãã¹ã¿ã€ã«ã䜿çšããŠããŸããã ã¡ãœãããåŒã³åºã代ããã«ããªããžã§ã¯ãã¯äºãã«ã¡ãã»ãŒãžãéä¿¡ããåä¿¡è ãå°çãããã®ãåŠçã§ããªãå Žåã圌ã¯åã«ã¡ãã»ãŒãžãä»ã®èª°ãã«è»¢éããŸããã
Common Lisp åœåãCLã¯åããã©ãã€ã ã«æºæ ããŠããŸããã 次ã«ãéçºè ã¯ããïŒsend obj 'some-messageïŒãã®èšè¿°ãé·ããããšå€æããè¡šèšæ³ãã¡ãœããåŒã³åºã-ãïŒsome-method objïŒãã«å€æããŸããã çŸåšãCommon Lispã«ã¯ãå€éç¶æ¿ããã«ãã¡ãœãããã¡ã¿ã¯ã©ã¹ããµããŒããããªããžã§ã¯ãæåããã°ã©ãã³ã°ïŒCLOSïŒã®ã·ã¹ãã ãéçºãããŠããŸãã ç¹åŸŽçãªæ©èœã¯ãCLã®OOPããªããžã§ã¯ãã§ã¯ãªãäžè¬åãããé¢æ°ãäžå¿ã«å±éããããšã§ãã
ã¯ããŒãžã¥ã¢ã Clojureã«ã¯æ倧2ã€ã®ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã·ã¹ãã ããããŸãã1ã€ã¯Javaããç¶æ¿ããããã1ã€ã¯ãã«ãã¡ãœããã«åºã¥ããŠãããCLOSã«äŒŒãŠããŸãã
R.ãã®çµ±èšããŒã¿åæçšã®èšèªã«ã¯ãS3ãšS4ãšãã2ã€ã®ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã·ã¹ãã ããããŸãã ã©ã¡ããSèšèªããç¶æ¿ãããŸãïŒRãåçšSã®ãªãŒãã³ãœãŒã¹å®è£ ã§ãããããããã¯é©ãããšã§ã¯ãããŸããïŒã S4ã®å€§éšåã¯ãçŸä»£ã®äž»æµèšèªã§ã®OOPå®è£ ã«å¯Ÿå¿ããŠããŸãã S3ã¯ãèšèªèªäœã䜿çšããŠç°¡åã«å®è£ ã§ããããã軜éãªãªãã·ã§ã³ã§ããåä¿¡ãããªããžã§ã¯ãã®ãã¯ã©ã¹ãå±æ§ã«ãã£ãŠãªã¯ãšã¹ãããã£ã¹ããããã1ã€ã®äžè¬çãªé¢æ°ãäœæãããŸãã
Javascript ã€ããªãã®ãŒçã«ã¯SmalltalkãšäŒŒãŠããŸãããç°ãªãæ§æã䜿çšããŸãã ç¶æ¿ãã代ããã«ããããã¿ã€ãã䜿çšããŸããç®çã®ããããã£ãŸãã¯åŒã³åºãããã¡ãœããããªããžã§ã¯ãèªäœã«ãªãå Žåããªã¯ãšã¹ãã¯ãããã¿ã€ããªããžã§ã¯ãïŒãã¹ãŠã®JavaScriptãªããžã§ã¯ãã®ãããã¿ã€ãããããã£ïŒã«æž¡ãããŸãã èå³æ·±ãäºå®ã¯ããããã¿ã€ãã¡ãœããã®1ã€ã眮ãæããããšã§ãã¯ã©ã¹ã®ãã¹ãŠã®ãªããžã§ã¯ãã®åäœãå€æŽã§ããããšã§ãïŒããšãã°ãæååã¯ã©ã¹ã« `.toBASE64`ã¡ãœãããè¿œå ãããªã©ããšãŠãèŠæ ããããŸãïŒã
Python äžè¬çã«ã圌ã¯äž»æµèšèªãšåãæŠå¿µãé å®ããŠããŸãããJavaScriptãSmalltalkã®ããã«ãå±æ§æ€çŽ¢ã®å¥ã®ãªããžã§ã¯ããžã®è»¢éããµããŒãããŠããŸãã
ãã¹ã±ã«ã Haskellã«ã¯ç¶æ ããŸã£ãããªããããéåžžã®æå³ã§ã®ãªããžã§ã¯ãã¯ãããŸããã ããã«ãããããããããã«ã¯ãŸã äžçš®ã®OOPããããŸããããŒã¿åïŒåïŒã¯1ã€ä»¥äžã®åã¯ã©ã¹ã«å±ããããšãã§ããŸãã ããšãã°ãHaskellã®ã»ãšãã©ãã¹ãŠã®åã¯Eqã¯ã©ã¹ïŒ2ã€ã®ãªããžã§ã¯ãã®æ¯èŒãæ åœïŒã§ããããã¹ãŠã®æ°å€ã¯ããã«NumïŒæ°å€ã®æŒç®ïŒãšOrdïŒæŒç®<ã<=ã> =ã>ïŒã«ãããŸãã æçµèšèªã§ã¯ãã¯ã©ã¹ã¯ã¿ã€ãïŒããŒã¿ïŒã«å¯Ÿå¿ããã¿ã€ãã¯ã€ã³ã¿ãŒãã§ãŒã¹ã«å¯Ÿå¿ããŸãã
ã¹ããŒããã«ãŸãã¯ã¹ããŒãã¬ã¹ïŒ
ãããããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®ããäžè¬çãªã·ã¹ãã ã«æ»ããŸãã ç§ãç解ã§ããªãã£ãã®ã¯ããªããžã§ã¯ããšå éšç¶æ ãšã®é¢ä¿ã§ãã OOPãåŠç¿ããåã¯ããã¹ãŠãã·ã³ãã«ã§ééçã§ãããããã€ãã®é¢é£ããŒã¿ãä¿åããæ§é ããããããããåŠçããæé ïŒé¢æ°ïŒããããŸãã æ£æ©ïŒç¬ïŒãåŒãåºãïŒå£åº§ãéé¡ïŒã ãã®åŸããªããžã§ã¯ããæ¥ãŠããããäœããããŸããã§ããïŒããã°ã©ã ãèªãã®ããã£ãšé£ãããªããŸãã-ç§ã®ç¬ã¯æ©ãã[誰ïŒ]ããããŠå£åº§ã¯[ã©ããã]ãéãåŒãåºããŠããŸããïŒã ãã®åŸãããŒã¿ã®é èœã«ã€ããŠç¥ããŸããã ç§ã¯ãŸã ç¬ãæ£æ©ã§ããŸãããã圌女ã®é£ã¹ç©ã®çµæã¯èŠããŸããã§ããã é£ã¹ç©ã¯äœã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸããã§ããïŒããããé£ã¹ç©ã¯é£ã¹ãïŒç¬ïŒãšæžãããšãã§ããŸãããç§ã¯ç¬ãé£ã¹ç©ãé£ã¹ãããšã奜ã¿ãŸããéãåæ§ã§ãïŒã é£ã¹ç©ã¯åãªãããŒã¿ã§ãããç§ïŒããã³ç§ã®ç¬ïŒã¯ãããã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸããã ãã¹ãŠãã·ã³ãã«ã§ãã ãããã90幎代åŸåã®å€ããžãŒã³ãºã®ããã«ããã©ãã€ã ã®æ çµã¿ã«é©åããããšã¯ãã§ã«äžå¯èœã§ããã
ããŠãããŒã¿ã¢ã¯ã»ã¹æ¹æ³ããããŸãã ãã®å°ããªèªå·±æ¬ºintoã«è¡ããç§ãã¡ãæã£ãŠããããŒã¿ãæ¬åœã«é ãããŠãããµããããŸãããã ãããä»ã§ã¯ããªããžã§ã¯ãã¯äž»ã«ããŒã¿ã§ãããããããããããåŠçããã¡ãœããã§ããããšãç¥ã£ãŠããŸãã ããã°ã©ã ã®æžãæ¹ãèšèšæã«äœãç®æããŠåªåããããç解ããŸããã
æãã楜ããåã«ãã€ã³ã¿ãŒãããäžã§ã¹ããŒãã¬ã¹ãšããèšèãç®ã«ããŸããïŒããã¯èŒãã«å²ãŸããæåtãšlã®äžã«ãããŒãããã£ãŠãããšæèšããŸãïŒã æç®ã®ç°¡åãªç 究ã«ããããªããžã§ã¯ãã®äžè²«æ§ã远跡ããå¿ èŠãªããéæãªå¶åŸ¡ãããŒãšåçŽãªãã«ãã¹ã¬ããã®çŽ æŽãããäžçãéãããŸããã ãã¡ãããç§ã¯ããã«ãã®çŽ æŽãããäžçã«è§ŠããããšæããŸããã ãã ããããã¯ã«ãŒã«ãå®å šã«æåŠããããšãæå³ããŸã-ç¬ãèªåã§æ©ãã¹ããããŸãã¯ãã®ããã«ç¹å¥ãªWalkManagerãå¿ èŠãã¯äžæã§ããã ã¢ã«ãŠã³ããå¿ èŠãã©ããããŸãã¯éè¡ããã¹ãŠã®äœæ¥ãåŠçã§ãããã©ãããå¿ èŠãªå Žåã¯ãéçãŸãã¯åçã«ãéãååŽããå¿ èŠããããŸãã ãŠãŒã¹ã±ãŒã¹ã®æ°ã¯ææ°é¢æ°çã«å¢å ããå°æ¥ã®ãã¹ãŠã®ãªãã·ã§ã³ã¯æ·±å»ãªãªãã¡ã¯ã¿ãªã³ã°ã®å¿ èŠæ§ã«ã€ãªããå¯èœæ§ããããŸãã
ãªããžã§ã¯ãããã€ã¹ããŒãã¬ã¹ã«ãããããã€ã¹ããŒããã«ã«ãããããã€ããŒã¿ã³ã³ããã«ãããã¯ããããŸããã ããã¯æãããªå ŽåããããŸãããããããããšã§ãã
å ¥åïŒéçãŸãã¯åçïŒ
CïŒãJavaã®ãããªèšèªã§ç§ã決å®ã§ããªããã1ã€ã®ããšã¯ãéçãŸãã¯åçã«åä»ããããããšã§ãã ããããã»ãšãã©ã®äººã¯ãããªããŠãã³ã»ã³ã¹ã ïŒ ãã¡ããéçã«åä»ããããŸãïŒ ã³ã³ãã€ã«æã«åããã§ãã¯ãããŸãïŒâ ããããæ¬åœã«ç°¡åãªã®ã§ããããïŒ ã¡ãœããã®ãã©ã¡ãŒã¿ãŒã§ã¿ã€ãXãåŠæ¹ããããã°ã©ããŒããã¿ã€ãXã®ãªããžã§ã¯ããåžžã«ããã«è»¢éãããããšã確信ã§ãããšããã®ã¯æ¬åœã§ããïŒ æ¬åœ-ã§ããªãããªããªã ã¿ã€ãX ãŸãã¯ãã®åå«ã®ãã©ã¡ãŒã¿ãŒãã¡ãœããXã«æž¡ãããšãã§ããŸãã ã®ã§ãã ããäœïŒ ã¯ã©ã¹Xã®çžç¶äººã¯Xãšåãã¡ãœãããä¿æããŸããã¡ãœããããšã®ã¡ãœããã§ãããäœæ¥ã®ããžãã¯ã¯å®å šã«ç°ãªãããšãå€æããå ŽåããããŸãã æãäžè¬çãªã±ãŒã¹ã¯ãåã¯ã©ã¹ãX以å€ã®ããŒãºã«æé©åãããŠããããã®æ¹æ³ããã®æé©åã«äŸåããŠããå Žåã§ãïŒãã®ã·ããªãªãçŸå®çã§ãªãå Žåã¯ãéçºããããªãŒãã³ãœãŒã¹ã©ã€ãã©ãªã«ãã©ã°ã€ã³ãæžãããã©ã€ãã©ãªã®ã¢ãŒããã¯ãã£ãšã¢ã«ãŽãªãºã ãåæããããã®æ°é±éããŸãã¯é©åãªã·ã°ããã£ã§ã¡ãœãããã©ã³ãã ã«åŒã³åºãã ãã§ãïŒã ãã®çµæãããã°ã©ã ã¯æ©èœããŸãããé床ã¯1æ¡äœäžããŸãã ã³ã³ãã€ã©ãŒã®èŠ³ç¹ããã¯ããã¹ãŠãæ£ããã®ã§ããã Javaã®åŸç¶ãšåŒã°ããScalaã¯ãããã©ã«ãã§å€ãã®å Žæã§æå®ãããåã®åŒæ°ã®ã¿ãæž¡ãããšãã§ããŸããããã®åäœã¯å€æŽã§ããŸããéèŠã§ãã
ãã1ã€ã®åé¡ã¯nullå€ã§ããããã¯ãJavaã®ã»ãšãã©ãã¹ãŠã®ãªããžã§ã¯ãã®ä»£ããã«ãCïŒã®Nullableãªããžã§ã¯ãã®ä»£ããã«æž¡ãããšãã§ããŸãã nullã¯äžåºŠã«ãã¹ãŠã®ã¿ã€ãã«å±ããåæã«ã©ã®ã¿ã€ãã«ãå±ããŸããã nullã«ã¯ãã£ãŒã«ããŸãã¯ã¡ãœããããªãããããããåŒã³åºããšïŒnullã®ãã§ãã¯ãé€ãïŒãšã©ãŒãçºçããŸãã 誰ããæ £ããŠããããã§ãããæ¯èŒã®ããã«ãHaskellïŒããã³ScalaïŒã¯ãä»ã®èšèªã§nullãè¿ãå¯èœæ§ã®ããé¢æ°ãã©ããããããã«ç¹å¥ãªåïŒHaskellã§ã¯MaybeãScalaã§ã¯OptionïŒã䜿çšããå¿ èŠããããŸãã ãã®çµæã圌ãã¯ãã°ãã°Haskellã«ã€ããŠãããã°ã©ã ãã³ã³ãã€ã«ããã®ã¯é£ããããããã§ãããŸããããªããããããæ£ããåãã ããããšèšãã
äžæ¹ãäž»æµã®èšèªã¯æããã«åçã«åä»ããããŠããªããããã€ã³ã¿ãŒãã§ã€ã¹ã®åçŽããæé ã®æè»æ§ãªã©ã®ç¹æ§ã¯ãããŸããã ãã®çµæãPythonãŸãã¯Lispã®ã¹ã¿ã€ã«ã§ã®èšè¿°ãäžå¯èœã«ãªããŸãã
ãã¹ãŠã®ã«ãŒã«ããŸã ããã£ãŠããå Žåãéãã¯äœã§ããããã®ãããªã¿ã€ãã³ã°ã®ååã¯äœã§ããïŒ éãã¯ãã¢ãŒããã¯ãã£ã®èšèšã«ã¢ãããŒãããæ¹æ³ã§ãã ã·ã¹ãã ã®æ§ç¯æ¹æ³ã«ã€ããŠã¯é·å¹Žã®è°è«ããããŸããå€ãã®ã¿ã€ããšå°æ°ã®æ©èœããŸãã¯å°æ°ã®ã¿ã€ããšå€æ°ã®æ©èœãå®è¡ããŸããïŒ æåã®ã¢ãããŒãã¯Haskellã§ç©æ¥µçã«äœ¿çšããã2çªç®ã®ã¢ãããŒãã¯Lispã§äœ¿çšãããŸãã çŸä»£ã®ãªããžã§ã¯ãæåèšèªã¯ããã®éã«äœãã䜿çšããŸãã ãããæªããšã¯èšããããããŸãã-ãããããã®å©ç¹ãããã§ãããïŒæçµçã«ã¯ãJavaãšCïŒã«ã¯å€èšèªãã©ãããã©ãŒã ãããããšãå¿ããªãã§ãã ããïŒããæ°ãããããžã§ã¯ããå§ãããã³ã«ãã©ããããã¶ã€ã³ãå§ããã¹ãããèããŸããŸãã¯æ©èœä»ãã
ãã®ä»...
ã¿ã¹ã¯ãã¢ãã«åããæ¹æ³ãããããŸããã OOPã䜿çšãããšãããã°ã©ã ã§å®éã®ãªããžã§ã¯ãã衚瀺ã§ãããšèããããŠããŸãã ããããå®éã«ã¯ãç¬ïŒ2æ¬ã®è³ã4æ¬ã®è¶³ãéŠèŒªïŒãšéè¡å£åº§ïŒãããŒãžã£ãŒãåºå¡ãæŒäŒã¿ïŒããããããã°ã©ã ã§ã¯ã¢ã«ãŠã³ããã¡ã¯ããªãŒã®ãŠã©ãŒãã³ã°ãããŒãžã£ãŒã§ã... ãããŠããã€ã³ãã¯ãããã°ã©ã ãå®éã®ãªããžã§ã¯ããåæ ããªãè£å©ã¯ã©ã¹ãæã£ãŠãããšããããšã§ã¯ãããŸããã äºå®ã¯ã å¶åŸ¡ãããŒãå€åããŠãããšããããšã§ãã , (, , ?).
, , , . , , .
, . Python C++, , . Java C# StringUtils. -- ad hoc ( ). . ( ) . 150 , â , , .
. â . - . HTTP URL, HttpConnection, Request⊠, . , . , â . .
, â . , , . , -, - . , .