
ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãã·ã¹ãã ãšå€éšç°å¢ãšã®éã®äžçš®ã®å¥çŽãšèããããšãã§ããŸãã ã³ã³ãã¥ãŒã¿ããã°ã©ã ã®ãã¬ãŒã ã¯ãŒã¯å
ã§ããã·ã¹ãã ãã¯åé¡ã®æ©èœãŸãã¯ã¢ãžã¥ãŒã«ã§ããããç°å¢ãã¯ãããžã§ã¯ãã®æ®ãã®éšåã§ãã ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã·ã¹ãã ãšç°å¢ã®éã§è»¢éã§ããããŒã¿ãæ£åŒã«èšè¿°ããŸãã ãŸãããå®è£
ãã¯ãã·ã¹ãã ãã€ãã¹ã€ã³ã¿ãŒãã§ã€ã¹ããšããŠèª¬æã§ããŸãã Haskellã®ãããªèšèªã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã¯éåžžã«éå®çã§ãã ãŸããPythonã®ãããªèšèªã§ã¯ã察ç
§çã«éåžžã«äžè¬çã§ãã éžæããã€ã³ã¿ãŒãã§ãŒã¹ã®ã¿ã€ãã¯ãäœæãããæè¡çè² åµã®èŠæš¡ãšããã°ã©ããŒã®çç£æ§ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã ãããèšç®ããæ¹æ³ã以äžã«èª¬æããŸãã ç°ãªãã€ã³ã¿ãŒãã§ã€ã¹ãè©äŸ¡ããã³æ¯èŒããæ¹æ³ãææ¡ãããŸãã ãããã®æ¯èŒã«åºã¥ããŠãèšèªããŒã«ãŸãã¯ãœãããŠã§ã¢ããŒã«ã®äœ¿ç𿹿³ãèªåã§èгå¯ã§ããŸãã
ãœãããŠã§ã¢éçºã§æãéèŠãªæŠå¿µã¯ã
ã€ã³ã¿ãŒãã§ã€ã¹ã®æŠå¿µã§ãã ãã®èšäºã¯Javaã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠã§ã¯ãªãããœãããŠã§ã¢èšèšã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠã§ãã ãããŠãããã»ã©ã§ã¯ãããŸããããç§ãã¡ãåãå·»ãäžçã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠã§ãã ãã¡ãããä»ã®å€ãã®éèŠãªæŠå¿µããœãããŠã§ã¢éçºã§äœ¿çšãããŠããŸããããããã®ã»ãšãã©ã¯äœããã®åœ¢ã§ã€ã³ã¿ãŒãã§ãŒã¹ã®éèŠæ§ã«äŸåããŠãããšæããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹ãšã¯äœã§ããïŒ
ç§ãã¡ã®ã»ãšãã©ã¯ã2ã€ã®ç°¡åãªå
¬åŒã«ç²ŸéããŠããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã·ã¹ãã ãšå€éšç°å¢ã®éã®å¥çŽã§ãã
ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãã·ã¹ãã ãšå€éšç°å¢ãšã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ãã= â©

å
±åœ¹å®çŸ©ã¯ãã·ã¹ãã ãç©çãªããžã§ã¯ãã§ããå Žåã«æé©ã§ãã äž¡æ¹ã®å®çŸ©ã¯éåžžã«æœè±¡çãªã®ã§ã次ã®ããã«å
¥åããŠèŠãŠã¿ãŸãããã

ããã§ã¯ãã·ã¹ãã ã¯ã©ãããããã§ãããç°å¢ã¯æã§ãïŒããŒããŒãã«ç»ãç«ã®è¶³ãåæ§ã§ãïŒã ãããã£ãŠãã€ã³ã¿ãŒãã§ã€ã¹ã¯ãæãšã©ãããããã®éã®çžäºäœçšã®äžéšã§ããå¿
èŠããããŸããããã¯ãäžæ¹ã ãã«èµ·å ãããã®ã§ã¯ãªããäž¡æ¹ã«ã®ã¿èµ·å ãããã®ã§ãã éåžžãæãšããŒããŒããå¥ã
ã«èããããããã®å Žåã®ã€ã³ã¿ãŒãã§ã€ã¹ã®æ£ç¢ºãªå¢çã¯å²åŠçãªè°è«ã®åé¡ã§ãã æãšããŒãæ¥è§Šãããšãã«ãããŒããŒããå
šäœãšããŠæ©èœããããåã
ã®ååãçžäºäœçšããããæ±ºå®ããã®ã¯ããªã次第ã§ãã
ãã®äŸãã€ã³ã¿ãŒãã§ãŒã¹ã®ã³ã³ãã©ã¯ããšããŠã®å®çŸ©ã«ã©ã®ããã«é¢ä¿ãããé©ãã§ãããã ãã®å Žåãåæãšã¯ãããŒã®äœçœ®ãèŠããŠçèã®èšæ¶ãçºéããããšãã«ååãªæéãè²»ããããšããåæãæå³ããŸãã å€ãã®ãã¥ã¢ã³ã¹ãå¥çŽã«é¢é£ããŠããŸãã ããšãã°ãããŒãæŒãããŸãŸã«ããããšã¯ãåçŽãª1åæŒãããšãšã¯ç°ãªãæå³ãæã¡ãŸãã
ããã¯ãã¹ãŠå¥åŠãªå²åŠçæšè«ã§ããããœãããŠã§ã¢ã®äœæãšã©ã®ããã«é¢ä¿ããŠããŸããïŒ ãŸããããããæ³šæãæããªããŠããããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ã¯ããããåŽé¢ããããªããåãå²ãã§ããŸãã ããšãã°ãJavaã§ããã°ã©ã ããå Žåãç®çã«å¿ããŠæç€ºçã«ã€ã³ã¿ãŒãã§ã€ã¹ã«ååãä»ããŸãã ãŸããä»ã®èšèªã§ã¯ãããããååšããŸãã
add_numbers
颿°
add_numbers
äŸãèŠãŠã¿ãŸãããã
unsigned int add_numbers(unsigned int, unsigned int); void other_function(void){ add_numbers(3,4); } unsigned int add_numbers(unsigned int a, unsigned int b){ return a + b; } int main(void){ add_numbers(9,99); return 0; }
ç°å¢ã
add_numbers
ã·ã¹ãã ãããã³ã€ã³ã¿ãŒãã§ã€ã¹ãèšè¿°ããããã«ã
ãºãã³ã®è²ãåºå¥ããåãæ¹æ³ãé©çšããŸãã




ããã§èª¬æãããã·ã¹ãã ãã¯ã
add_numbers
颿°ã§æ§æãããŠ
add_numbers
ãŸãã mainã¡ãœãã
other_function
å¥ã®ã·ã¹ãã ãšèŠãªãããšãã§ãããšèšããªããããªãã¯æ£ããã§ãããã ãã ããç°¡åã«ããããã«ã
add_numbers
颿°
add_numbers
åé¢ãããã·ã¹ãã ã§
add_numbers
ãšèããŠããŸãã ãŸããã€ã³ã¿ãŒãã§ã€ã¹ã®äžéšãšããŠ
add_numbers
ãèæ
®ããããšããå§ãããŸãã
ã芧ã®ãšãããããã«4çªç®ã®æŠå¿µãå®è£
ãã远å ãããŠããŸãã ç¹å®ã®å®è£
ãèæ
®ããã«ã€ã³ã¿ãŒãã§ãŒã¹ã®ãããã¯ãè°è«ããããšã¯ããªãå°é£ã§ãã ãã®çšèªãå®çŸ©ããŸãããïŒ
å®è£
ã¯ãã·ã¹ãã ãé€ããã€ã³ã¿ãŒãã§ãŒã¹ã§ããImplementation = System â Interface
Implementation = System â (System â© Environment)

ç§ã¯ãã®ãããªå®è£
ã®å®çŸ©ã«åºäŒã£ãããšããªãã£ãããšãèªããªããã°ãªããŸããã ããããããã¯ãäžé£ã®ã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ã®é¿ããããªãæ¡åŒµã§ãããããã€ãã®å©ç¹ããããŸãã ããªããè²§ããåŠçã§ã詊éšã®æºåãããŠããå Žåãå
çã¯ãããããã®ãããªå®çŸ©ãèããããšããªãã§ãããã ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®å顿³ãšççŸããå Žåã§ããç§ã¯é©ããªãã§ãããã ãããããã®å Žåã§ãã倿Žããã€ããã¯ãããŸããã ç§ã®å®çŸ©ã«åŸã£ãŠãOOPãã¡ã³ã«ã¡ã¢ãæžãçŽãããŠãã ããã
次ã«ãç©çã·ã¹ãã ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠè©±ããšããéåžžããã®ã·ã¹ãã ã®ãå®è£
ããåäžã®ç©çãªããžã§ã¯ããšããŠæ³åããŸãã çµå±ã®ãšããããã¿ã³ããã£ã¹ãã¬ã€ããŸãã¯ãã®ä»ã®ã³ã³ããŒãã³ããèæ
®ããã«ãå®éã®ãå®è£
ãæ€èšããã®ã¯å¥åŠã§ãã ãããŠãããã¯ã€ã³ã¿ãŒãã§ãŒã¹ãç©ççãªãªããžã§ã¯ãã®ã»ãããšãããããããããåæããšããŠèããããã«ç§ãã¡ãæŒãé²ããŸãã ã€ãŸããäžé£ã®çŽæãä¿èšŒããŸãã¯äœãã®ãããªåœ¢ã§...
ã·ã¹ãã ãšç°å¢ã®éã®åæ ã
å¥çŽãšããŠã®ã€ã³ã¿ãŒãã§ãŒã¹
add_numbers
颿°ã®ã€ã³ã¿ãŒãã§ãŒã¹ã
add_numbers
ã®åœ¢ã§èãããšãä¿èšŒã¯æ¬¡ã®ããã«ãªããŸãã
add_numbers
颿°ãååšããŸããadd_numbers
ã¯2ã€ã®ãã©ã¡ãŒã¿ãŒã®ã¿ããããåãã©ã¡ãŒã¿ãŒã¯ç¬Šå·ãªãint
ã§ããadd_numbers
ã¯ãunsigned int
1ã€ã ãè¿ããŸãã
ãã®é¢æ°ã®ã€ã³ã¿ãŒãã§ãŒã¹ã¯äœãäŒããŸããïŒ
- å®è¡ã®äžæã«ã€ããŠ
add_numbers
; - ã©ã³ã¿ã€ã
add_numbers
挞è¿çãªè€éãã«ã€ããŠã add_numbers
å®è¡ã«å¿
èŠãªç©ºãã¡ã¢ãªã®éã- unsigned
int
ç¹å®ã®å®è£
ã«ã€ããŠã - å¯äœçšïŒã¡ã¢ãªå²ãåœãŠãã°ããŒãã«å€æ°ã®å€æŽïŒã«ã€ããŠã
äžèšã®
add_numbers
ã€ã³ã¿ãŒãã§ã€ã¹ã¯ã
prototype
颿°ãšããŠç¥ãããŠããŸãã KïŒR Cã®ä»¥åã®ããŒãžã§ã³ã§ã¯ããã匱ã圢åŒã®ã€ã³ã¿ãŒãã§ã€ã¹èšè¿°ã䜿çšãããŠããŸããã
unsigned int add_numbers();
ã€ã³ã¿ãŒãã§ã€ã¹ãã³ã³ãã©ã¯ããšããŠå®çŸ©ãããšãããã°ã©ãã³ã°ã«éåžžã«äŸ¿å©ã§ãã çµå±ã®ãšãããã»ãšãã©ã®ããã°ã©ããŒã®ã¿ã¹ã¯ã¯ãå
¬çã®ã»ãããå®çŸ©ããã³ç
§äŒããããšã«ãããŸãã åææ¡ä»¶ãšæçµæ¡ä»¶ã¯ãããã€ãã®ããããã£ãŸãã¯åäœãæäŸããŸãã äž¡åœäºè
ã¯ãäºãã«ããžãã¹é¢ä¿ã確ç«ããåã«ãå¥çŽãäœæããŸãã æçµçµæãéé¡ãæ¯æãæ¡ä»¶ãå®åŒåããŸãã æ©æçµäºãæãæ»ããè²»çšã®æ¡ä»¶ãäºåã«åæãããŠããŸãã å¥çŽã«éåããå Žåãç¶æ³ã¯è£å€æãŸãã¯ä»²è£ã«ãã£ãŠè§£æ±ºãããŸãã ããããå¥çŽã§äœãã瀺ãã®ãå¿ãããšãé©ããçãããããããŸããã
ã³ã³ãã¥ãŒã¿ãŒããã°ã©ã ã§ã¯ããã¹ãŠãåãã§ãã ã¢ãžã¥ãŒã«ãšé¢æ°ã¯ãå¿
èŠãªãã®ãšïŒå Žåã«ãã£ãŠã¯ïŒè¿ããã®ãè¿ããŸãã ãã®å¥çŽã«éåãããšãã³ã³ãã€ã«ãšã©ãŒãã©ã³ã¿ã€ã ãšã©ãŒãã¢ããªã±ãŒã·ã§ã³ãã·ã¹ãã ãã³ãŒãå質管çããŒã«ã®é害ãããã³ç®¡çè
ããã®æ²æåŠåã«ã€ãªãããŸãã ã³ã³ãã©ã¯ããšããŠã®ã€ã³ã¿ãŒãã§ã€ã¹ã®å®çŸ©ã¯æ¯icalçã§ã¯ãªããšããèšããŸãã ããã»ã©è©³çްã§ã¯ãããŸãããã忥å¥çŽãšåãååã䜿çšããŠããŸãã
ç¹èš±ãèäœæš©ãã€ã³ã¿ãŒãã§ãŒã¹
æ³çå©èšã¯ããããŸããã ããããç§ãèšã£ãããšã®ããã€ãã¯ãæ³åŸãšççŸããããšãããããŸãã 以äžã¯ãã¹ãŠãèè
ã®å人çãªæèŠã§ãã
ãã®ãããã€ã³ã¿ãŒãã§ã€ã¹ã
æåéã 2ã€ã®ãšã³ãã£ãã£éã®ã忥å¥çŽããšèŠãªãåŸåããããŸãã ç§ã¯åŒ·èª¿ããŸã-ãããæ¯thisãšã¯èããŸããã ç§ã¯ç¹ã«ãã®è§£éãã³ã³ãã¥ãŒã¿ãŒç§åŠè
ãšèäœæš©æè·è
ã«åããŠããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹ã®ç¹èš±ãååŸããå¿
èŠããããŸããïŒ ã·ã¹ãã ãšç°å¢ã®éã®å¥çŽãšããŠã®å®çŸ©ãèãããšãç¹èš±ã®äœ¿çšã¯ééãã ãšæããŸãã ãããŠãæããã«ãæ¢åã®å€äŸæ³ã¯ç§ã®ç«å Žãæ¯æããŠããŸãã ãããããã€ã³ã¿ãŒãã§ã€ã¹ããšããèšèã¯éåžžã«åºã䜿çšãããŠãããäžã§èª¬æãããããªæå³ã§ã¯ãŸã£ãã䜿çšãããªãããšãå€ãããšã«çæããŠãã ããã
ã€ã³ã¿ãŒãã§ã€ã¹ã¯èäœæš©ã§ä¿è·ãããã¹ãã§ããïŒ ç¹°ãè¿ããŸããããå¥çŽäžã®ãæ§è³ªãèãããšãèäœæš©ã®å¯Ÿè±¡ã¯ã€ã³ã¿ãŒãã§ãŒã¹ã®ããœãŒã¹ã³ãŒããã§ãªããã°ãªããªããšæããŸãã åæã«ãèäœæš©ã¯ãã€ã³ã¿ãŒãã§ãŒã¹ãç¹å¥ãªãã®ã«ããã€ã³ã¿ãŒãã§ãŒã¹ã®åŽé¢ã«ã¯é©çšãã¹ãã§ã¯ãããŸããã ãœãŒã¹ã³ãŒããŸãã¯ææžãã®ç»åãä¿è·ããã®ã«ååã§ãããä¿èšŒãŸãã¯å¶éã¯ãããŸããã ã€ã³ã¿ãŒãã§ãŒã¹ã®ä¿èšŒãŸãã¯å¶éããã®ã³ãŒãã®ã©ã®éšåãšãåãé¢ããªãå Žåããããã®éšåã¯ä¿è·ã®æš©å©ã奪ãããã¹ãã§ãã
äœããèäœæš©ã§ä¿è·ããå¿
èŠããããã©ãããè©äŸ¡ããç°¡åãªãã¹ããææ¡ããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹ã§äœããã®æ¹æ³ã§äœ¿çšãããããµãŒãããŒãã£ã®ã³ã³ããŒãã³ããå«ã屿§ã®ã»ãããä¿è·ããå Žåã¯ããã€ã§ãé©åãªä»£æ¿ãäœæã§ããŸãã 亀æåã¯åãã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ãããã®ãœãããŠã§ã¢ã倿Žããããšãªããèäœæš©ã䟵害ããããšãªãããµãŒãããŒãã£ã®ãœãããŠã§ã¢ã§æ£åžžã«äœ¿çšãããŸãã 眮æãèäœæš©äŸµå®³ã«ã€ãªããå ŽåããŸãã¯ãµãŒãããŒãã£ããã®ãœãããŠã§ã¢ã®å€æŽãæå³ããå ŽåããŸãã¯æ©èœãæãªãå Žåã屿§ã»ããã¯æ»æçããããããåæžããå¿
èŠããããŸãããã®ãã¹ãã®å©ããåããŠãç¹è𱿧ããã§ãã¯ããããšããå§ãããŸãã æ³šïŒãã¹ãã®ç®çã¯ãèäœæš©ãŸãã¯ç¹èš±ä¿è·ã®
äžé©åæ§ã倿ããããšã®ã¿ã§ãã äœ
ãä¿è·
ãã¹ãã
ãæ±ºå®ããå©ãã«ã¯ãªããŸããã ããã«ããã®ãã¹ãã¯åãªãç§ã®æèŠã§ãããèŠç¯çãªè¡çºãæ³åŸã§ã¯ãããŸããã
ãŸããããèšèªã®ã€ã³ã¿ãŒãã§ãŒã¹ã®äžéšãšèŠãªãããåºæºã¯ãå¥ã®èšèªã§ã¯ããã§ã¯ãªãããšã«ã泚æããŠãã ããã ããšãã°ãJavaã§ã¯ã颿°ã宣èšãããé åºã¯ããã°ã©ã ã®å®è¡ã«åœ±é¿ããŸããã ãŸãããã¡ã€ã«å
ã®é¢æ°ã®é åºãéèŠã§ã¯ãªããšèª€ã£ãŠèšã£ãå Žåãããã¯Pythonã®ããã°ã©ã ã«é¢é£ãããšã©ãŒã«ãªããŸãã
def foo(): print("asdf") def foo(abc): print(abc) foo("lol")
ãã®æ³åŸã«é¢ãããã¹ãŠã®è©±ã¯
ãGoogleã«å¯ŸããOracleã®èšŽèšãæãåºãã
ãŸãã ã æäŸãããŠãããªã³ã¯ã§éçºè
ã«ãšã£ãŠè峿·±ã詳现ãèŠã€ããããšãã§ããã®ã§ãåæã§ã¯ãããã«äŸåããŸãã ãã¹ãŠã®åŽé¢ãèãããšããªã©ã¯ã«ãæ¯æããæ±ºå®ã«å察ããçç±ã¯ãªããšæããŸãã æç¶ãã®è©³çްãããã»ã©å€ããªãã®ã§ãç¡æ¡ä»¶ã«æ¯æãããšã¯èšããŸããã
ã€ã³ã¿ãŒãã§ãŒã¹ã®èŠçŽ ãç¹èš±ãèäœæš©ã§ä¿è·ããããã®å
äŸãäœãããã®ã§ã¯ãªãããšå€ãã®äººãå¿é
ããŠãããšæããŸãã ç§ã®ãã¹ãã«åæ Œããªãã£ãå Žåã«ã®ã¿ã å°æ¹è£å€æã¯ããAPIã®æ§é ãäžè²«æ§ãããã³ã¢ãŒããã¯ãã£ã¯èäœæš©ã«ãã£ãŠä¿è·ãããŠããå¯èœæ§ããããŸããã ããã¯åé¡ã§ã¯ãªããšæããŸãããæ§é ãã·ãŒã±ã³ã¹ãããã³ã¢ãŒããã¯ãã£ãã®å®çŸ©èªäœããç§ã®ãã¹ãã«å®å
šã«åæ Œããããã§ãã äžèšã®ãªã³ã¯ã®èšäºããã®æç²ãããã€ã玹ä»ããŸãã
ãå°è£ã¯ããJavaãšããåãããåºåãæžãæ¹æ³ã¯1ã€ãããªãããšçµè«ä»ããŸããã ãã®å Žåãè€è£œåºåã®äœ¿çšã¯èäœæš©ä¿è·ã®å¯Ÿè±¡ã«ã¯ãªããŸããã Googleã¯ã3ã€ã®äŸå€ãé€ããŠãJavaã«ã¢ã¯ã»ã¹ããããã®ç¬èªã®APIãäœæã§ãããšããäºå®ã«ç°è°ãå±ããŸããã ãããŠæåŸã«ããGoogleã¯æåéãåºåãã³ããŒããããšãèªããŸããããè£å€æã¯æ£ãã倿ãäžããæ¬è³ªçã«äžæã®ã€ã³ã¿ãŒãã§ã€ã¹ããããã£ã¯ä¿è·ãã¹ãã§ã¯ãªããšçµè«ä»ãããšæããŸãã ããã«ãGoogleã¯ãéèªçãã³ããŒãèªèããŸããã ãããã³ããŒã¢ã³ãããŒã¹ããæå³ãããã¹ãŠã®ã¹ããŒã¹ãšã³ã¡ã³ãã®ã¹ãã«ãã¹ãå«ãå Žåãç§ã¯ãããæš©å©ã®äŸµå®³ãšèŠãªããŸãã ã€ã³ã¿ãŒãã§ãŒã¹ãä¿è·ã§ããªãå Žåã§ããåã
ã®åµé çãªè¡šçŸã®ä¿è·ã劚ããããšã¯ãããŸããã
ãã®èšŽèšã«ã€ããŠã¯ãªãŒãã³ãããã¯ãŒã¯ã®ãœãŒã¹ããããç¥ããŸããããæããã«ãGoogleã¯ã€ã³ã¿ãŒãã§ã€ã¹ãå«ãJavaãœãŒã¹ã³ãŒããå®å
šã«ã³ããŒããŸããã ããã¯ã2010幎以åã«Sunãšã®ã©ã€ã»ã³ã¹å¥çŽã«é¢ãã亀æžã®äž»é¡ã§ãã£ããããJavaã®äœ¿çšãã©ã€ã»ã³ã¹ããå¿
èŠããããšåœŒãèªèº«ãèããŠããããã§ãã ããããSunãOracleã«è²·åãããåŸããããã®å¥çŽã¯å€±æããŸããã ããã«ãããããããã°ãŒã°ã«ã¯ã³ãŒãã®ãéèªçãã³ããŒã䜿ãç¶ããããããã¯æããã«åœŒå¥³ãè£å€ã§å©çãåŸãªãã£ãã ç§ã¯åœŒãã®åŒè·å£«ãèªåã®ç«å Žã®åŒ±ããç¥ã£ãŠããã®ã§ã¯ãªãããšæãã®ã§ã圌ãã¯ã€ã³ã¿ãŒãã§ãŒã¹ã®èäœæš©ã®äžæ¡æ£ã®æ³çèŠä»¶ã«åºã¥ããé²è¡æŠç¥ãéžãã ã 圌ãã¯ããœãŒã¹ã³ãŒãã®åœ¢ã§ã€ã³ã¿ãŒãã§ãŒã¹ãæç€ºãããããããå²åŠçãªæŠå¿µãšçµã¿åãããããšã§ããã®ã±ãŒã¹ã§åã€ããšãæãã§ããŸããã
ãã¢ãžã¥ãŒã«ããŸãã¯ãæœè±¡åããšã¯äœã§ããïŒ
ç§ã®é ã®äžã®ãã¢ãžã¥ãŒã«ããšããèšèã«ã¯ãæçš¿ã®ã¿ã€ãã«ç»åããããŸãã ãã®å³ã¯ãã¢ãžã¥ãŒã«ã®å¢çã®éèŠæ§ãšç°å¢ãšã®çžäºäœçšã瀺ããŠããŸãã ãã¥ãŒãã€ã³ã¿ãŒãã§ã€ã¹ã¯ãç°å¢ãšãã¥ãŒãã®ã³ã³ãã³ããšã®çžäºäœçšãå³ããå¶éããŸãã ã€ã³ã¿ãŒãã§ãŒã¹ããã€ãã¹ããããšã¯ã§ããªããããã€ã³ã¿ãŒãã§ãŒã¹ã«ãã£ãŠèª²ããããã²ãŒã ã®ã«ãŒã«ããéµå®ããå¿
èŠããããŸãã æåŸã«ããã¥ãŒãå
ã«ã¯äœããããŸããããéèŠã§ã¯ãããŸãããéèŠãªã®ã¯ã³ã³ãã³ãã§ã¯ãªããã€ã³ã¿ãŒãã§ãŒã¹ã§ãã
å¥ã®äŸïŒçްèèã®æ§é ã ããŸããŸãªã³ã³ããŒãã³ãã«ãããå¿
èŠãªå Žåã«ã®ã¿ãå¿
é ç©è³ªã®ã¿ãèãééããŸãã

ãã®èšäºã§ã¯ããã¢ãžã¥ãŒã«ããšãæœè±¡åããšããçšèªãå矩èªãšããŠäœ¿çšããŸãã ãã¡ããã説æèŸæžã¯ç§ãšã¯äžèŽããŸããããŸããç°ãªãããã°ã©ãã³ã°èšèªã§ãã£ãŠãããããã®çšèªã®æå³ã¯ç°ãªããŸãã ãããããã®å Žåããã®èšäºã§çè§£ãããŠããããã«ããããã®ãšã³ãã£ãã£ã®äž¡æ¹ãã·ã¹ãã ãšèŠãªããããšããäºå®ã«ã®ã¿èå³ããããŸãã ã€ãŸããæœè±¡åãšã¢ãžã¥ãŒã«ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãšå®è£
ã§æ§æã§ããŸãã
åäžã®é¢æ°ãCã®ã¢ãžã¥ãŒã«ãPythonã®ãã¢ãžã¥ãŒã«ããJavaã®ã¯ã©ã¹ãŸãã¯ããã±ãŒãžãšèŠãªãããšãã§ããŸãã å€éšã€ã³ã¿ãŒãã§ãŒã¹ãšãé ããããå®è£
ãåããŠããå Žåã®ã¿ã ããã«ããã¹ãã«ã¹ãã¯ãèšèªã®ã«ãŒã«ãããã°ã©ããŒã®æ±ºå®ã®çµæã§ããå ŽåããããŸãã
æŒããããæœè±¡å
ç§ã®ç¥ãéãã
æŒããããæœè±¡åã®ã¢ã€ãã¢ã¯
Joel Spolskyã«ãã£ãŠæå±ãããŸãã ã 圌ã®ãšãã»ã€ã«ã¯ããã€ãã®è¯ãäŸããããŸãããç§ã¯èªåã®äŸãæããããšæããŸãã ããã°ã©ãã³ã°ã§ã¯ããããããã®æŠå¿µã¯éåžžã«äžè¬çã§ããããŒãšå€ã®ãã¢ã§æ§æãããããŒã¿æ§é ã®è¡šçŸã§ãã éèŠãªå¶éïŒã«ãŒãã¯ããã¹ãŠã®ããŒãäžæã§ãªããã°ãªããªãããšãä¿èšŒããŸãã æ¢åã®ããŒã«æ°ããå€ãæžã蟌ãããšãããšããšã©ãŒãçºçãããã以åã®å€ãäžæžããããŸãã äžçªäžã®è¡ã¯ãããŒãè€è£œããªãããšã§ãã ã»ãšãã©ã®å Žåãããã°ã©ãã¯ããããã¹ãŠã®ããŒããœãŒãããå¿
èŠããããŸãã ãŸããã«ãŒãã¯ããŒã®äžŠã¹æ¿ãã®ç¹å®ã®é åºãä¿èšŒã§ããªããããç¹°ãè¿ãåŠçããåŸã¯ã©ã®é åºã«ãªãã®ãçåã«æãããšããããŸããïŒ ããã¯ãã«ãŒãã€ã³ã¿ãŒãã§ã€ã¹ãäžŠã¹æ¿ããä¿èšŒããªããšããäºå®ã®çµæã§ãã ãããŠãããã¯åé¡ã§ã¯ãªããšä¿¡ããããŠããŸãããå®éã«ã¯ãããæŽçãããã§ãã ããã¯ãããšãã°æ¢åã®ããŒã®æ€èšŒã容æã«ããããã«ãããå¹ççãªããŒã¿ç·šæã«å¿
èŠã§ãã
ãœãŒããããããŒã¿ãåæãããšãã©ã³ãã ããŒã¿ãåæããå Žåãšã¯ãŸã£ããç°ãªãçµæãåŸãããŸãã ãªã¹ãã§æå°å€ãèŠã€ããå¿
èŠããããšããŸãããïŒ
min = null; list = map.getMapKeys(); for (item in list){ if ( min == null ){ min = item }else if (item < min){ min = min; } }
ããŒã¿ãæé ã§ãœãŒããããŠããå Žåã
else if
ãã©ã³ãã¯å®è¡ãããŸããã ãªã¹ãå
ã®ã©ã³ãã ãªå Žæãããã§ãã¯ãéå§ããŠããããã°ã©ã ã¯ãã®è¡ã«åºãããããšã¯ãããŸããã ãããŠãããã¯å€§ããªåé¡ã§ãããªããªããã«ãŒãã®å®è£
ã倿ŽãããœãŒããããããŒãè¿ããªããšããã°ãçºçããŠãã©ã³ãã§ã³ãŒãã®å®è¡ãçªç¶éå§ãããããã§ãã ãããŠãã®æãŸã§ã«ãããªãã¯ãã®ã³ãŒããšãã®äžã«é ãããç匟ãå®å
šã«å¿ããã§ãããã
æœè±¡ãªãŒã¯ã®ç¬èªã®å®çŸ©ãæäŸããããšæããŸãã
æœè±¡åãªãŒã¯ã¯ãå®è£
ãã€ã³ã¿ãŒãã§ã€ã¹ã«ãã£ãŠæäŸãããªãã£ãæ¹æ³ã§ç°å¢ã«åœ±é¿ãäžããå¯èœæ§ãããç¶æ³ã§ãããã®å®çŸ©ã«ããã°ã
ã»ãšãã©ãã¹ãŠã®æœè±¡åã¯æŒããããã§ãã å®éãããããã¿ã€ãã®ç°å¢åœ±é¿ã®ã€ã³ã¿ãŒãã§ãŒã¹ã§ã®èšè¿°ã¯ãæãå³å¯ãªæ°åŠçã·ã¹ãã ã§ã®ã¿æå³ããããŸãã ç©çã·ã¹ãã ã«ã€ããŠã¯ã
ã²ãŒãã«ã®äžå®å
šæ§å®çãæãåºããŠãã ããã
ã»ãšãã©ã®æœè±¡åã«ãããæŒãã®èãã¯æ ¹æ ã®ãªããã®ã§ã¯ãããŸããã ãžã§ãšã«ã»ã¹ãã«ã¹ããŒã¯ãŸããåœŒã®æŒãã®ããæœè±¡åã®æ³åã§ãããæç€ºããŠããŸãã
ããã¹ãŠã®éèªæãªæœè±¡åã¯ãããçšåºŠæŒãããããããã¹ãŠã®æœè±¡åã«ã¯ç©Žãããããããã®ã§ãäœã«ã€ããŠè©±ããŸããïŒ åé¡ãçºçããã®ã¯ãç°å¢ã®äžéšããç°å¢äžã®ã·ã¹ãã ã«åœ±é¿ãäžããäºæãã¬æ¹æ³ã®1ã€ã«äŸåãå§ãããšãã ãã§ãã 誰ãããã®ãããªæŒãã«ã€ããŠè©±ããŠããã
ããã¯ãéåžžã®ãã°ã ãã§ãªããã»ãã¥ãªãã£ã®åéã§ããåºç¯å²ã«åã¶çµæããããããŸãã ã»ãã¥ãªãã£ãæãªãå€éšç°å¢ãžã®ãªãŒã¯ãããç©çã·ã¹ãã ã§ã¯ãã
ãµãŒãããŒãã£ã®ãã£ãã«ãä»ããæ»æ ããšããçšèªãé¢é£ä»ããããŠããŸãã ãã¹ãŠã®æœè±¡åã«ã¯æŒãããããšãã声æãšåãããŠããããçµè«ã«ã€ãªãããŸãã
æå·ã·ã¹ãã ã®åç©çå®è£
ã¯ããµãŒãããŒãã£ã®ãã£ãã«ãä»ããæ»æã«å¯ŸããŠè匱ã§ããäžèšã®ãã¹ãŠãèæ
®ãããšããã®ã¢ã€ãã¢ã¯ç©ççã ãã§ãªãããšãã¥ã¬ãŒããããå®è£
ã«ãæ¡åŒµã§ããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹ã®è©äŸ¡ãšæ¯èŒ
äžã§èŠãããã«ãæ»ãå€ã®åã颿°ã«æž¡ãããšãã§ãããã©ã¡ãŒã¿ãŒã®æ°ãªã©ãCã€ã³ã¿ãŒãã§ãŒã¹ã§èšå®ãããŸãã Pythonã¯ã©ãã§ããïŒ ç§ã¯ãèšäºã®æèã«åŸã£ãŠãã€ã³ã¿ãŒãã§ãŒã¹ããšããçšèªã䜿çšããŸããã€ãŸããPythonã®ãã€ã³ã¿ãŒãã§ãŒã¹ãã«é¢ããæ¬ã«æžãããŠãããã®ãããåºãæå³ã§äœ¿çšããŸãã
def add_numbers(a,b): return a + b print(add_numbers(3,1)) print(add_numbers("abc","def"))
ãã®èšèªã§ã¯ã颿°ã€ã³ã¿ãŒãã§ã€ã¹ã¿ã€ãã圢åŒåããå¿
èŠããããŸãã ããã«ãããåŠçããå¿
èŠã®ããæ
å ±ãå°ãªããªãããã颿°ã®å®çŸ©ãšåŒã³åºããç°¡åã«ãªããŸãã äžæ¹ãæéã®çµéãšãšãã«ãšã©ãŒãèŠã€ããããã«ãã§ãã¯ã§ããå¶éã¯å°ãªããªããŸãã
æ
å ±è»¢éæ¹æ³ã®èгç¹ãããã€ã³ã¿ãŒãã§ãŒã¹ã®ããŸããŸãªç¹æ§ãè©äŸ¡ããã³æ¯èŒããããšã«ã€ããŠãäœãèšããªããã°ãªããªãããšããããšæããŸãã ç¹å®ã®ã€ã³ã¿ãŒãã§ã€ã¹ãšããã®èšèªã§å®è£
ã§ãããã¹ãŠã®ã€ã³ã¿ãŒãã§ã€ã¹ã®å
šäœã®äž¡æ¹ãè©äŸ¡ã§ããŸãã
add_numbers
äŸãæãåºããŠãæœè±¡ãªãŒã¯ã䜿çšããŠã€ã³ã¿ãŒãã§ã€ã¹ãééããã³ãã€ãã¹ã§ããæ
å ±éãè©äŸ¡ããŠã¿ãŸãããã
ã€ã³ã¿ãŒãã§ã€ã¹çµç± | ã€ã³ã¿ãŒãã§ãŒã¹ã®ãã€ãã¹ |
æ©èœã®èª¬æ | å¯èœãªç¶æ
ã®æ° | æ©èœã®èª¬æ | å¯èœãªç¶æ
ã®æ° |
ãã©ã¡ãŒã¿ã¿ã€ã1 | 1ïŒç¬Šå·ãªãæŽæ°ïŒ | ã°ããŒãã«å€æ°ç¶æ
| ïŒã°ããŒãã«å€æ°ã®æ°ïŒ*ïŒã°ããŒãã«å€æ°ã®ç¶æ
ã®æ°ïŒ |
ãã©ã¡ãŒã¿ã¿ã€ã2 | 1ïŒç¬Šå·ãªãæŽæ°ïŒ | ãã¡ã€ã«ã·ã¹ãã | ãã¡ã€ã«ã·ã¹ãã ã®ç¶æ
ã®æ° |
æ»ãã¿ã€ã | 1ïŒç¬Šå·ãªãæŽæ°ïŒ | CPUäœ¿çšæé | å¶éãªã |
ãã©ã¡ãŒã¿ãŒ1å€ | 2 ^ïŒç¬Šå·ãªãæŽæ°ã®ãããæ°ïŒ | ããŒãç¶æ
| ããŒãç¶æ
|
ãã©ã¡ãŒã¿2å€ | 2 ^ïŒç¬Šå·ãªãæŽæ°ã®ãããæ°ïŒ | ä»ã®å€ãã®... | ... |
æ»ãå€ | 2 ^ïŒç¬Šå·ãªãæŽæ°ã®ãããæ°ïŒ | |
ãŸããPythonã€ã³ã¿ãŒãã§ãŒã¹ãä»ããŠ
add_numbers
éä¿¡ã§ãããã®ãããã€ããããŸãã
Pythonã€ã³ã¿ãŒãã§ã€ã¹ãä»ããæ
å ±ã®åãæž¡ã | Pythonã€ã³ã¿ãŒãã§ãŒã¹ããã€ãã¹ããŠæ
å ±ãæž¡ã |
æ©èœã®èª¬æ | å¯èœãªç¶æ
ã®æ° | | - |
1 | | | - |
2 | | | |
| | | - |
1 | | | ... |
2 | | ... | (- ) * (- ) |
| | |
, Haskell:
add_numbers :: Int > Int -> Int add_numbers 3 4 = 7 main = print (add_numbers 3 4)
,
add_numbers
:
Haskell | Haskell |
| - | | - |
1 | 1 (Int) | | |
2 | 1 (Int) | / | |
| 1 (Int) | ... | ... |
1 | 1 ( 3) | |
2 | 1 ( 4) |
| 2^30[ 1 ] |
:
:
, :

GUI | GUI |
| - | | - |
1 | - , 1 * - | UI | |
2 | - , 2 * - | | - , 2 |
1 | - , 1 | UI | ... |
2 | - , 2 | |
| |
| - |
, GUI | - , GUI |
cd
:
, . ( ) ( ), , . . , «OK» «Cancel» 1 .
, .
, . :
. :
(leaky interface) â , .
(specific interface) â .â
- , .
«» «» , , , â .

, - , , . : . .
, , . «» , -
. ,
.
:
- , - , .- , (1). , (1), . (N^2). , , , N^2.

, . - , . - , . â , , .
, (N^2), , (N). , : . 20 , , , , . , . , , â .
?
, :
, ,
! . 100 , , GUI. GUI, - , , . ⊠.
, , . , . , . GUI . , . , .
, , GUI â . , . ,
. , , .
, , Haskell Java. , . .
?
« », , . , , , , « ».
« », , : . â , ,
. , MVP . , , .
« », . , . , - ( ).
- , Twitter Ruby on Rails, . Twitter Scala. - , Scala. . Twitter' , . , . , , , . â , . Twitter' , . , , , : « , , ». - , , , . , «» , .
Python?
, , . , «» «» , .
, Python , , . Python .
Python . , .
Java/C++?
, . Java ++ , Python Ruby. , , ( Haskell), Java ++ , . , . , , .
- , : ,
. , ! , , :
- .
- «» Java.
- .
- .
- (.h) C/C++.
- RESTful API.
- URL.
- «» «».
- (DDL).
- ãã®ä»ã
ãããã«
ã芧ã®ããã«ãã€ã³ã¿ãŒãã§ã€ã¹ã®æŠå¿µã¯éåžžã«éèŠã§ãããæ³çä¿è·ãçç£æ§ãããã³ã·ã¹ãã æ§é ã®ä»ã®åŽé¢ãšã®å²åŠçã€ãªããã®æ°ã®åéã§ãããžã§ã¯ãã®éçºã«éåžžã«å€§ããªåœ±é¿ãäžããŸããä»ã®ããã°ã©ããŒã«ã€ã³ã¿ãŒãã§ãŒã¹ã«ã€ããŠã©ãæããå°ããããããçš®é¡ã®ãã®ãèããŠãã ããã