â»ãã®èšäºã¯ 2015幎12æ24æ¥ ã« Qiita ã«æçš¿ãããã®ã§ãã
äžéã¯ã¯ãªã¹ãã¹ã¢ãŒãã ãšèšãã®ã«ãèŸæ°èãã¿ã€ãã«ã§ãã¿ãŸããããåæã«æ®ºããªããšãããåã¯äœæ§ã ããªã©ãšãªãã ãæããããã§ãããåªå€±æã§èžããã£ã±ããã ãšãã Objective-C ã¯ãŸã ãŸã 䜿ããèšèªã§ãïŒãã ãšããããããæå·ããããŸãããã䞻匵ãããŸããããããèšèªã ãšæãã奜ãã ãã©ãçµå± Mac OS X ã iOS ã®ã¢ããªã±ãŒã·ã§ã³éçºä»¥å€ã«æŽ»çšïŒããããšãã©ã€ãããã©ïŒã§ããªããŸãŸ Swift ãçºè¡šããããªãŒããšæã£ãŠããŠããªã掻çšãã«ããã£ãã®ããæŽçããŠã¿ãããšèããŸãããã§ãã®ã§ãã Objective-C æ å ã®æŽå²ããèªãããšã¯ãããŸãããäœéšããŠãªãããç¥ããªããã
ãããããããã§ã¯èšèªãšããŠã® Objective-C ãæ±ããŸããã¢ããã«ã®ãã¬ãŒã ã¯ãŒã¯ã iOS ã¢ããªã±ãŒã·ã§ã³ã®éçºããŒã«ã®äžéšãšããŠã®è©±ã§ã¯ãªãã®ã§ããããèªãã§ã iOS ã¢ããªã±ãŒã·ã§ã³éçºã®æå©ãã«ãªããªããšæããŸãã
ãããããŠããŠã®çµç
Objective-C 2.0 以å
Objective-C 2.0 以åã¯ãã¢ããã«ã®ãã¬ãŒã ã¯ãŒã¯ã䜿ã£ãŠããã°ã©ã ãæžãã®ã«å®ãã¹ãäœæ³ïŒã€ãã£ãªã ïŒããããŸãããããã€ãæããŠã¿ãŸãããã
- ãªããžã§ã¯ãã®çæ: alloc -> init ã®é£ç¶ããã¡ãã»ãŒãžãéä¿¡ããã
- ãªããžã§ã¯ãã®åæå: init ã¡ãœãããå®è£ ãããã®äžã§ super ã«å¯Ÿã㊠init ã¡ãã»ãŒãžãéä¿¡ããã
- ã¡ã¢ãªç®¡ç: retain/release ã§ã«ãŠã³ãã墿žãããã
- ãªããžã§ã¯ãã®è§£æŸ: dealloc ã¡ãœãããå®è£ ããã€ã³ã¹ã¿ã³ã¹å€æ°ã« release ã¡ãã»ãŒãžãéä¿¡åŸã super ã« dealloc ã¡ãã»ãŒãžãéä¿¡ããã
- ã€ã³ã¹ã¿ã³ã¹å€æ°ãžã®ã¢ã¯ã»ã¹: getter/setter ãå®è£ ããã
- ã³ã¬ã¯ã·ã§ã³èŠçŽ ã®ã€ãã¬ãŒã·ã§ã³: Enumerator ãªããžã§ã¯ããä»ããŠè¡ãã
ãããã®äœæ³ã¯ãææ³ãèšèªä»æ§ã§ã¯ããããŸãããããã¥ã¡ã³ããèªãå¿ èŠããããŸããã¹ã€ã ãäžæè°ãªããšã§ã¯ãªããã©ããªã©ã€ãã©ãªã«ãé åºç«ãŠãŠè¡ããªããã°ãªããªãåŠçã¯ãããŸãã
ã¢ããã«ã®ãã¬ãŒã ã¯ãŒã¯ãé€ããš Objective-C ã®ä»æ§ã¯æ¥µããŠã·ã³ãã«ã§ãã«ãŒãã¯ã©ã¹ã® Object ãšãã®ä»äžã€ãäºã€ã®ã¯ã©ã¹ãšãã¡ãã»ãŒãžéä¿¡æ©æ§çšåºŠã§ããã¢ããã«ã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ãã®ã«ãŒãã¯ã©ã¹ Object ã¯äœ¿ãããŠãããããªããžã§ã¯ãã®çæãè§£æŸåŠçããããŠåãã¬ãŒã ã¯ãŒã¯ã§å®è£ ãããŠããŸãããããããçŽ ã£æ°ãªã代ç©ã§ããããåãã¬ãŒã ã¯ãŒã¯ã䜿ãããã«ã¯ããŸãäžèšã®äœæ³ãç¥ãããšããå§ãŸããŸãã
ã Objective-C ã¯ã·ã³ãã«ãªèšèªã§ãããšã®èª¬æã¯ééã£ãŠããªããšæããŸãããããã iOS ã¢ããªã±ãŒã·ã§ã³ã®éçºãå³åº§ã«å§ããããã®ããšèšããšã倧æµã®äººã¯é£ããã§ããããïŒã¢ããã«ã®ãã¬ãŒã ã¯ãŒã¯ã§ããïŒ Cocoa ã¯ã NeXTSTEP ããåãç¶ãã æŽç·Žããããã¬ãŒã ã¯ãŒã¯ã ããšãç§°è³ãããåé¢ã§ãå¿ ç¶çã«äžèšã®ãããªäœæ³ãçã¿ãŸããã確ãã«äœæ³ãå®ããšãšãŠã楜ã«éçºãé²ãã®ã§ãããç§ã¯ä»ãšãªã£ãŠã¯ãããã®äœæ³ã¯ãããããŠããŠã ãšæããŸãïŒãããåºãã¡ãããšãã©ã€ãã©ãªã¯ãã¹ãŠãããããŠããŠã«ãªã£ãŠããŸããŸããã©ãïŒããã¬ãŒã ã¯ãŒã¯ã®åºæ¥ãæªããšããæå³ã§ã¯ãããŸãããïŒ
Reconstruction, not evolution
ã¢ããã«ã¯ Mac OS 10.5 ã§ã Objective-C ã 2.0 ãšåŒã¶ããŒãžã§ã³ã¢ãããè¡ããŸããããããŸã§ã¯ Objective-C ã«ããã«ããŒãžã§ã³ãã³ããŒãä»ããŠãªãã£ãã®ã« 2.0 ããŒã ã«ä¹ã£ãç¯æã®ãªãäŒç€Ÿã§ããããã®å€æŽå 容ã¯é²åãšããããããããŸã§ã®ãããããŠããŠã®åã蟌ã¿ã§ããæ°ãã仿§ã¯ GC ãããã§ããããã iOS ã§ã¯äœ¿ããªããšããäžéåç«¯ãªæ©èœã§ãã
Fast Enumeration ã¯é²åã«èŠããªãããªãããã§ããã©ãã€ãã¬ãŒã·ã§ã³ã®ã€ãã£ãªã ã®æé©åã£ãŠé²åã«å«ããŠãããã§ãããããããã«ã NeXT ãã¢ããã«ãã³ã³ãã€ã©ãæ¡ã£ãŠãããã³ããŒã§ãã WebObjects ãšããé«äŸ¡ãªåçšè£œåããããŸããããé«éã«ã³ã¬ã¯ã·ã§ã³èŠçŽ ãåæããå¿ èŠæ§ãçæããæ©äŒããå°å ¥ããæ©äŒããããã§ããã£ãã¯ãã§ããããããã£ã Key-Value Coding ãšãã Foundation ãã¬ãŒã ã¯ãŒã¯ã®æ©æ§ãå©çšãããã€ã³ã¹ã¿ã³ã¹å€æ°ç®¡çã®ããŠããŠã®ä»æ§åïŒÎ±ã§ãããããã®å€æŽã¯ã 2007 幎ã«ãªããŸã§è¡ãããªãã£ãããšãèšããã®ãããããŸããã
ããããã£ãš Fast Enumeration ã®å°å ¥ã§ã Objective-C ã®ã³ãŒãã®èŠãç®ã¯å°ãå€ãããŸãããããããã£ã¯ getter/setter ãžã®ã¡ãã»ãŒãžéä¿¡ããããèšæ³ã§ä»£æ¿ã§ãã Fast Enumeration ã¯ãã€ãã¬ãŒã¿ãŒååŸ -> while ã§åããåŠçãææ³ãšããŠçµã¿èŸŒã¿ãŸãããã©ã¡ããã¢ããã«ã®ãã¬ãŒã ã¯ãŒã¯ã®äœæ³ããçºå±ãã仿§ã§ããã Mac OS X/iOS ã¢ããªã±ãŒã·ã§ã³ã®éçºã«ç¹åãã仿§å€æŽã ãšèšãããšæããŸãïŒãã ãããã®ä»æ§ã¯ã¢ããã«ã®ãã¬ãŒã ã¯ãŒã¯ããç¬ç«ããŠããŸããä»»æã®ã©ã€ãã©ãªã§å©çšå¯èœã§ãïŒããŸãããããããèªç€Ÿè£œå以å€ã® Objective-C ã³ã³ãã€ã©ãã³ããŒãªããŠæ°ã«ãããå¿ èŠããããŸãããïŒãããããªãïŒãã ãããäžçã§äžçª Objective-C ã䜿ã£ãŠããã®ã¯ãã®äŒç€Ÿã§ãã
ãããã®ä»æ§å€æŽã«ãã£ãŠã Smalltalk ã«ç±æ¥ããã¡ãã»ãŒãžéä¿¡ã¡ã¿ãã¡ãŒããã厩ããŸãããããã¯åœç¶ã§ãäžéšã®ã¡ãã»ãŒãžéä¿¡ãç°¡ç¥åããææ³ã«ããã®ã 2.0 ã§ãããããããã厩ããããšããéžè±ããããšããã衚çŸã¯å€éšè ã®åæãªå€±æã§ãã£ãŠãã¢ããã«ã¯ãïŒäžéšã®ä»æ§ã«ãããŠïŒã¡ãã»ãŒãžéä¿¡ã¡ã¿ãã¡ãŒããåãæšãŠããïŒäžèŠã ãšå€æããããå®éã§ãããã ãã ãããšãã£ãŠ Objective-C ã®ç©ºæ°ãããããšå€ãã£ããšããããšããªããããã ããèŠãã°äºçްãªå€æŽã§ãã
Reconstruction, not evolution (again)
"Objective-C without C" ãšèããŠããå幎é ããã ãããšæã£ãã®ã¯ç§ã ãã§ããããããŸã£ãããèªç»èªè³ããããšãã§ããããã«ã¡ã¯ Swift ã§ãã
ç§ã¯ Objective-C ãç¥ã£ãŠãããã¯ããèšèªã ãªããšæã£ããã§ããã©ããã®äžæ¹ã§ã Cocoa ãããã°ã»ãšãã© C ã«æãä»ããã«æžããã ãã Objective-C ã¯æšãŠãŠãMac OS X/iOS å°çšã§ãããããã€ãã£ãã³ã³ãã€ã«ããŠãããŠé«éã«åãã¹ã¯ãªããèšèªãäœã£ãŠãããã°ããã®ã«ããšãã£ãšæã£ãŠããŸããïŒé«éã¯ç¡çã§ã Cocoa ãšèŠªåæ§ã®é«ã "Objective-C without C" ãªã¹ã¯ãªããèšèªãäœãããšããããšã¯ãããŸãïŒãç®èãªããšã«ã Objective-C ã§å®è£ ãããã©ã€ãã©ãªãæŽç·Žãããã°ãããã»ã©ã Objective-C ã§ããå¿ èŠæ§ãèãããããã§ãã
ããŠã Swift ã®ç¹åŸŽãšèšãã°ãããªãšããã§ããããããŸã Objective-C äºæã«ããªãåŒãããããŠããŸã£ãŠããæã¯ãããŸãããããã¯èšå€§ãªè³ç£ã掻çšããªããã°ãªããªãã®ã§ä»æ¹ããªãé¢ãããã®ã§ãããã
- C ã®æé€
- 匷ãéçåä»ããšåæšè«
- C/Objective-C ã®è³ç£ã«ã¢ã¯ã»ã¹ã§ãã
- ã¡ã¢ãªç®¡çã®èªååïŒ GC ã§ã¯ãªãïŒ
- ã¯ããŒãžã£ãŒ
ãã¯ãæã倧ããªç¹åŸŽã¯ "Objective-C without C" ãšã®ç œãæå¥ã®éãã C ãæé€ããããšã§ãããããã§ïŒãŒãã«ã¯ãªããªããã©ïŒ C ãæžããªããŠæžããããã«ãªããŸãããã§ããããããããã«ãã¢ã¯ãã£ããªå§¿å¢ã«èŠããããŠããå®éã¯ããã§ã« C ãæžãå¿ èŠããªããªã£ãŠãããã®ã§ã¯ãªãããšæããŸãã Mac OS X/iOS ã¢ããªã±ãŒã·ã§ã³ã® API 㯠C ã§ãã£ãŠã C ã®ã¹ã¿ã€ã«ãšã¯äŒŒãŠã䌌ã€ããªããããªãªããžã§ã¯ãæåã®ã©ã€ãã©ãªã§ã倧æµã®ã¢ããªã±ãŒã·ã§ã³ã¯ Mac OS X/iOS ãã¬ãŒã ã¯ãŒã¯ã® API ã§å®çµã§ããïŒå€éšã® C ã©ã€ãã©ãªãšé£æºããå¿ èŠããªãïŒãšæããŸãããã¡ããé«ãããã©ãŒãã³ã¹ãèŠæ±ããããã C ã®ã¿ã§å®è£ ãããã©ã€ãã©ãªã䜿ããããåŸãªããªãã° C ã C++ ã§å®è£ ããªããã°ãªããªãåŠçã¯ããã§ããããã©ãã¢ããªã±ãŒã·ã§ã³éçºã«é¢ããããŒã ã¡ã³ããŒå šå¡ã Mac OS X/iOS ãã¬ãŒã ã¯ãŒã¯ãäžå䜿ããªã C ã®ã¹ãã·ã£ãªã¹ãã§ããå¿ èŠã¯ãªãã§ãããã C ã䜿ãçç±ãã Objective-C ããéãããªãå°æŽã C ã«ä»£ãã£ãŠ Objective-C ããéããã€ãã£ãã³ãŒããåãèšèªãããã°ãã話ã§ãããã ããããã Swift ã ãããšèšãããã°ãã®éããªãã§ãããã§ããããªã®ä»æŽæ°ãä»ãããšã§ããªãã ãïŒãšæããŸãããã¡ãããã¢ããã«ã«ããã解決ããã ãã®æè¡åããªãã£ããšèšãã®ã§ããã°ç¡çãªçžè«ã§ãã
ããäžã€ã®å€§ããªç¹åŸŽã¯ã匷ãéçåä»ããšåæšè«ã§ãïŒåæšè«ããã£ãŠãããªãé¢åããã§ããã©ïŒããããããšã¯ããŒãžã£ãŒã§ãããã¯ããŒãžã£ãŒã«ã€ããŠã¯åŸè¿°ããŸãã
Objective-C ã®éçåä»ãã¯ããŸã匷ããããŸãããã©ããªãªããžã§ã¯ãã§ããä»»æã®ãªããžã§ã¯ãåã瀺ã id åãžã®ãã£ã¹ããå¯èœã§ã宣èšãããåã¯ããããç®å®ã«ãããªããŸãããç·ç§°åããªãã®ã§ãã³ã¬ã¯ã·ã§ã³ã®èŠçŽ ã®åãããããŸããã nil ã«å¯ŸããŠã¡ãã»ãŒãžãéã£ãŠããšã©ãŒã«ãªããããã®åŠçãç¡èŠãããŸãïŒã³ã³ãã€ã©ãªãã·ã§ã³ã§ãšã©ãŒã«ã§ããããšã¯ã§ããŸãïŒããŸã nil ã«é¢ããŠã¯ããããå©çšããŠã³ãŒãéãççž®ããã¹ã¿ã€ã«ãäž»æµã§ããã®ã§ããã¡ã ã£ããšèšãåããªãé¢ããããŸãããããŸãããä»ã®èšèªã§ nil ãã§ãã¯ã«æ £ãã人ã«ããã°äœèšãªä»æ§ã§ãããããã®å£°ã«å¿ããã®ãã Swift ã§ã¯ nil ã®å¯èœæ§ã®ããåããªãã·ã§ãã«åãšããŠã nil ã®å¯èœæ§ã®ãªãåãšåºå¥ããŸãïŒãã ããªãã·ã§ãã«åã®å€ã« "nil" ãšããååã䜿ã£ãããšãšããªãã·ã§ãã«åã«é¢ããæŒç®åã®å€ãã¯ããå¥¥ãæ·±ãçå矀ããçºçãããåå ã«èŠããªãããªãã§ããäºãé¢åã«ããã ãã ãšæããŸãïŒã
äžã€ãã©ãã§ãããçåããããŸãã "Objective-C without C" ãªãã°ãã·ã³ãã«ã« Objective-C ã®å»¶é·ç·äžã«ããèšèªã«ããŠãããã£ãã®ã§ã¯ãªãããšæããŸããéçºã³ã¹ããåŠç¿ã³ã¹ããäžããããŸããããã®åœ¢ã«ãªã£ãã®ã¯ãä»åŸã®éçºãèŠæ®ããŠãšã颿°åèšèªããåæšè«ä»ãã®åŒ·ãåä»ãããã®æµè¡ã«ä¹ã£ãŠãªã©ããã€ãçç±ãããã§ããããã©ãã¶ã£ã¡ããäžéããªããžã§ã¯ãæåèšèªã«é£œãããããªããããªãããªãšæããªãããªãã§ãã
ãªã Objective 㪠C ã ã£ãã®ã
Evolution, not revolution
Objective-C ã®ç»å Žã¯ 1983 幎ã Stepstone 瀟ãèšç«ãã Brad J. Cox ãš Tom Love ãéçºããŸãããå瀟㯠Objective-C ã®ã³ã³ãã€ã©ãšã©ã€ãã©ãªã販売ãã 1995 幎㫠Objective-C ã«é¢ãããã¹ãŠã®æš©å©ã NeXT ã«å£²åŽããŸãïŒå£²åŽåŸã NeXT ããã©ã€ã»ã³ã¹ãåŸãŠãèªç€Ÿè£œåã®è²©å£²ã¯ç¶ããŠããããã§ãïŒã
åœæã¯ãœãããŠã§ã¢å±æ©ã ãšãäœãšãã§ãªããžã§ã¯ãæåããã°ã©ãã³ã°ãç»å Žãã Cox ã¯ããã«æ³šç®ããŸããã Cox ã¯ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã "revolution" ãšèšã£ãŠããŸããããã Cox 㯠"revolution" ã®æ¹æ³ã§ãœãããŠã§ã¢éçºäžã®åé¡ã解決ããããããæ¢åã®èšèªã«ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æãå ããããã€ããªãããªãæ¹æ³ã«æ³šç®ããŸãããããªãæ¢åã®èšèªã®åãç¶æãã€ã€ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã掻çšã§ãããšèããŸãã Cox ã¯ããã "evolution, not revolution" ãšèšã衚ããŠããŸãã
Cox æ¬ã§ã¯ã次ã®ãªããžã§ã¯ãæåããã°ã©ãã³ã°èšèªãæ¯èŒããŠããŸãã Smalltalk-80, Ada, C++ ã§ãã C++ ã«é¢ããŠã¯ã C++ ã C ã®èšèªä»æ§ãæ¡åŒµããŠããã®ã«å¯Ÿãã Objective-C 㯠C ãå®å šã«æ®ãã€ã€ãé å»¶æçžãè¡ããªããžã§ã¯ãæåããã°ã©ãã³ã°ãå¯èœã«ããŠããããšå·éã«æ¯èŒããŠããŸãã Cox ã¯ãã€ããªãããªèšèªãèããŠããã®ã§ãèšèªä»æ§ã®æ¡åŒµã¯æ¹åæ§ãç°ãªããŸããã
è³é«ã® Smalltalk
Smalltalk-80, Ada, C++. ãããã®èšèªã®äžã§ã Cox ã¯ç¹ã« Smalltalk-80 ã«æ³šç®ããŸãã Smalltalk ã¯å人ã®åµé æ§ãçºæ®ãããããã°ã©ãã«ãšã£ãŠæé«ã®ããŒã«ã§ããããœãããŠã§ã¢åé¡ã«å¯Ÿããæé«ã®è§£æ±ºçã ãšèããããã§ããã§ãã Smalltalk ã®éžæã«ã¯åé¡ããããšèããŸããã Objecive-C ã®éçºæã Smalltalk ã¯ç ç©¶çšã«ãã䜿ãããŠãªãã£ãïŒããã§ïŒåçšã® Smalltalk-80 ã®çºå£²å¹Žã¯ Objective-C ãšåãïŒã Smalltalk-80 ã®ç°å¢ã Smalltalk ã®äžçã§éããŠããããšãåé¡ã ãšèããŸããã
Smalltalk ã䜿ããšããã°ããã§ã«ä»ã®èšèªã§æ§ç¯ãããŠããã·ã¹ãã ãšã©ã飿ºããã®ãïŒ Cox ã®é¢å¿ã¯ãçµç¹çãªã³ã³ãã¥ãŒãã£ã³ã°ãšå人çã®ã³ã³ãã¥ãŒãã£ã³ã°ããããã°ã©ãã®è² æ ãæå°ã«ããããªããžã§ã€ãªãããšã«ãããæçµçã« Smalltalk ã®é å»¶æçžãš C ã®æ©ææçžã®ãã€ããªãããéžæããŸãã C ãéžãã çç±ã¯ã C ãªãäœã¬ãã«ãªåŠçãã«ããŒã§ããããšãšã C ãæ®åãå§ããŠãããããšã®ããšã§ãã
ããã㊠Cox ã㯠C ã«ã¯ã©ã¹æ©æ§ãšã¡ãã»ãŒãžéä¿¡æ©æ§ã远å ãã Objective-C ãéçºãã Stepstone 瀟ãèšç«ããŠã³ã³ãã€ã©ïŒãšããã C èšèªãžã®ãã©ã³ã¹ã¬ãŒã¿ãŒïŒãšã©ã€ãã©ãªã®è²©å£²ãå§ããŸããã©ã€ãã©ãªã¯ Smalltalk ã®ã¯ã©ã¹ã©ã€ãã©ãªãåèã«ãããŠããããŸãã Smalltalk ã®ã·ã¹ãã ãã©ãŠã¶ãç䌌ã Objective-C ãã©ãŠã¶ãåŸã éçºããããã§ãã
å°å ¥ãããªãã£ãããããã¯ã
Smalltalk ã«ã¯ãé å»¶æçžãæ¯ããèŠçŽ ã®äžã€ã§ãããããããã¯ãããããŸãããããã¯ã¯ Swift ãªã©ã§ã¯ããŒãžã£ãŒãšåŒã°ããŠãããªããžã§ã¯ãã§ãïŒå³å¯ã«èšããš Smalltalk-80 ã®ãããã¯ã¯ã¯ããŒãžã£ãŒã§ã¯ãªããã§ããã話ãé¢åã«ãªãã®ã§è¿ããã®ã ãšæã£ãŠãã ããïŒã Cox ã¯ãããã¯ã®åŒ·åããèªãã€ã€ãæ¡çšããŸããã§ããã Cox ã¯ã C ã®ããã«ããŒããŠã§ã¢ã¹ã¿ãã¯ãåæãšããèšèªã§ã¯å®è£ ãé£ãããšå€æããããã§ããããããããã¡ãã»ãŒãžéä¿¡åŒã®ææ³ã« Smalltalk ã®ãããã¯ãšåã倧æ¬åŒ§ [] ã䜿ã£ã¡ãã£ãããã§ããªãã£ãã®ããŠãžâãã¿ãããªææ³äžã®çç±ã§ã¯ãããŸããããã ããå¶éã€ããªãå®è£ ã§ããªãããªããšèšã£ãŠãããéçºäžã®èª²é¡ã«æãããã®ã®ãçµå±ã¯å®è£ ãããŸããã§ããã
ã¢ããã«ã¯åæ§ã®æ©èœã Mac OS X 10.6 ã§å®è£ ããŸããããã¡ã¢ãªç®¡çãé£ãããæ®å¿µãªãã䜿ãããããšã¯èšããŸãããææ³ã C ã®é¢æ°ãã€ã³ã¿ãåŒããã£ãŠãããèŠãç®ã倧å€ãããããã§ãã Swift ã§å®è£ ãããã¯ããŒãžã£ãŒã¯å€å°ãŸããªææ³ã«ãªã£ããã®ã®ãã¡ã¢ãªç®¡çã®é¢åãã¯ãŒãã«ãªããªãã¿ããã§ããã GC ãšåæšè«ãªãã§ã¯ãšãŠã䜿ã£ãŠããããªãã®ã§ã¯ãªãã§ããããã
Stepstone Objective-C
åçšã©ã€ãã©ãª ICpak ã·ãªãŒãº
å ã«æã£ãŠãããŸããšã仿¥ã«è³ããŸã§ Objective-C ã®æšæºèŠæ Œã¯ãããŸãããçŸåšã®ã¢ããã«ã®ã³ã³ãã€ã©ã®å®è£ ã¯ãªãŒãã³ãœãŒã¹ãšããŠå ¬éãããŠããŠããããã¯ãªãŒãã³ãœãŒã¹ã³ãã¥ããã£å å°ã§ Objective-C ã®éçºãé²ãã§ããããšãæå³ããŸããã Objective-C ã®ä»æ§ã¯ C ã«ã¡ãã»ãŒãžéä¿¡æ©æ§ãšããã°ããã®ææ³ã远å ããçšåºŠã§ãã«ãŒãã¯ã©ã¹ãé£ãªãçšæã§ããŸãããã®ããã Stepstone ãš NeXT ã® Objective-C ã®å ±éç¹ã¯å€ããããŸãããã«ãŒãã¯ã©ã¹ Object ã¯å ±éã§ãããŸã£ããåãå 容ã§ã¯ãããŸããã NeXT ã® Objective-C ãç¶æ¿ããçŸåšã®ã¢ããã«ã® Objective-C ã®ä»æ§ã«ã¯ã Objective-C ãšããåå以å€ã« Stepstone ã®è·¡åœ¢ã¯èŠããªããããªæ°ãããŸãã
Stepstone 㯠ICpak ã·ãªãŒãºãšããåçšã©ã€ãã©ãªã販売ããŠããŸãããåºç€çãªã¯ã©ã¹ã©ã€ãã©ãª (foundation) ã GUI ãã°ã©ãïŒã®äžã€ã§ãã Objective-C ã®å°æ¥æ§ä»¥äžã«èª°ãèå³ããªããšã¯æããŸããããã®ãã¡ã® Foundation ã©ã€ãã©ãªã®ã¯ã©ã¹éå±€ãæããŠãããŸãã
Object
Array
IdArray
IntArray
Ctrn // Collection
OrdCtrn // OrderedCollection
Stack
Set
Dictionary
BalNode // äºåæš
SortCtrn
String
Point
Rectangle
Assoc
IPSequence // ã€ãã¬ãŒã¿ãŒ
Sequence
Array ã Ctrn ã®ã¯ã©ã¹éå±€ã Dictionary ãªããžã§ã¯ããšé¢ä¿ãã Assoc ã¯ã©ã¹ãªã©ã Smalltalk ãæèããã©ã€ãã©ãªã ã£ãããã§ãããªãŒãã³ãœãŒã¹ã® Objective-C ã³ã³ãã€ã© Portable Object Compiler ä»å±ã®ã©ã€ãã©ãªã ICpak äºæãããã§ãã POC 㯠NeXT ã«ããæš©å©è²·å以éã® 1997 幎ã«ãªãªãŒã¹ãããããã§ãã
ãšããã§ãã Stepstore ã®ã©ã€ãã©ãªã¯ãã°ã ããã ã£ããã ãã NeXT ã¯ã©ã€ãã©ãªãæšãŠãŠ Foundation ãã¬ãŒã ã¯ãŒã¯ãäœã£ãããšèšã£ãŠããæ¹ãããŸããåãçãããããŸãããã©ã Stepstone ã®ã©ã€ãã©ãªãè¶ åªç§ã ã£ããšãããšããœãŒããèŠãããšããªãã®ã§ã©ããªãã§ããããã¡ãªã¿ã« ICpak ã©ã€ãã©ãªã¯ãœãŒã¹ã³ãŒãã§æäŸãããŠããããã§ãã
NeXT ã¯ãªã Stepstone ã©ã€ãã©ãªãç䌌ãªãã£ãã®ã
Stepstone Objective-C ã¯ãåçšã©ã€ãã©ãªãé€ãã° Object ã¯ã©ã¹ãããããŸãããã³ã³ãã€ã©ã¯ C ãžã®ãã©ã³ã¹ã¬ãŒã¿ãŒã§ãã³ã³ãã€ã©ã®ã¿ã®è³Œå ¥ã ãšãªããªãã®è²§åŒ±ãã§ãã NeXT ã¯èªç€Ÿã§ GCC ãããŒã¹ã«ã㊠Objective-C ã³ã³ãã€ã©ãéçºããã®ã§ã Stepstone ã®ã³ã³ãã€ã©ã¯äœ¿ã£ãŠããªãã£ããšæããŸãã
åæã® NeXT ã®åºç€ã©ã€ãã©ãªã¯ããããã·ã³ãã«ã§ãã
Object
List
Storage
HashTable
StreamTable
ããã ãã§ãã GUI ã¢ããªã±ãŒã·ã§ã³ã®éçºã«å¿ èŠãªã³ã¬ã¯ã·ã§ã³ã¯ã©ã¹ã®ã¿ã§ããæåååŠçã«ã¯ C æååã䜿ããã€ãã¬ãŒã¿ãŒã¯ãããŸããã NeXT ã¯ãªã Stepstone ã®ã©ã€ãã©ãªãç䌌ãªãã£ãã®ãïŒ åã«ãç䌌ãããªããšããã©ã€ã»ã³ã¹å¥çŽããã£ãã ããªã®ãããããŸããããå¿ èŠãªã¯ã©ã¹ã®ã¿ã«çãã Smalltalk 颚å³ã®ã©ã€ãã©ãªã«ã¯ããŸããã§ããããªãã§ããããïŒ
ããã¯çŸåšãæ®ãæŽç·ŽãããããŒã«ããããéçºãã人ãã¡ã®ããšã§ããããã«ã¯ãã£ãšæ·±ãçç±ã...ããããªãã£ããããããŸããã NeXT ã®äººãã¡ã¯é å»¶æçžã«æè»ãªéçºã®å¯èœæ§ãèŠåºãã OS éçºãšããåéã«æ¬ ãããªã C ãšèåãã Objective-C ã®ã¢ããã³ããŒãžã«æ¹ãããïŒãšæãïŒã®ã§ãã£ãŠã Smalltalk ã«æ¹ããããããããªãããã§ããããã«èªåã«ãšã£ãŠæåã®ããŒã«ããããšæã£ããããã¡ãã¡ãã®ã«ãŒããŸã§ãã©ã£ãŠåèã«ããããªããŠæããªãã§ãããããã®ã«ãŒãããæŽŸçããç®ã®åã«ããããŒã«ãæåãªãã§ããããã Objective-C ãããããšæã£ã人ã®ãã¡ãäœäººã Squeak ã VisualWorks ã詊ããŠã¿ãã®ããã Swift ãããããšæ°èŠåå ¥ãã人ã®ãã¡ãäœäººãä»åŸå€§ããªçºå±ãéããå¯èœæ§ã®ãªã Objective-C ã®ã¿ã§ iOS ã¢ããªã±ãŒã·ã§ã³ãå®è£ ããããšããã®ããã«ãŒãã¯æè©®ïŒãã®äººãã¡ã«ãšã£ãŠïŒéå»ã®éºç£ã§ãã
ãšãŸãåããã«èšãåããŸããããçµ±äžãããã¯ã©ã¹ã©ã€ãã©ãªã¯å¿ èŠãªããšããã ãã ã£ãã®ãããããŸããã NeXT ã® Objective-C 㯠NeXT ã³ã³ãã¥ãŒã¿ãŒã§ã®ã¿åäœããã°ããã£ãã®ã§ãããã
話ã¯å€ãã£ãŠãå ã«æããã NeXT ã¯ãã°ã ããã® Stepstone ã©ã€ãã©ãªã®ä»£ããã« Foundation ã©ã€ãã©ãªãäœã£ããã¯çã ã£ãã®ã§ããããïŒ ç§ãäž»ã«åŸåãæ°ã«ãªããŸãã
çŸåšã® Foundation ãã¬ãŒã ã¯ãŒã¯ã®å身ã§ãã Foundation Kit ã®ãªãªãŒã¹ã¯ 1994 幎ã Core Data ã®å身ã§ãã Enterprise Objects Framework ïŒä»¥äž EOF ïŒã®ãªãªãŒã¹ãšåæã§ãããšãããã Foundation Kit 㯠EOF ã®äžéšã§ããããã®æç¹ã§ NeXT ã¯ãŸã Stepstone ãã Objective-C ã®çæš©ãè²·ãåã£ãŠããŸãããè²·åã¯ç¿å¹Žã® 1995 幎ã§ãã
Foundation Kit ã«ã¯ã«ãŒãã¯ã©ã¹ NSObject ãå«ãŸããŠããŸãããåè¿°ã®éã Foundation Kit 㯠EOF ã®äžéšã§ããŸã NeXTSTEP ã® EOF 以å€ã®ã¯ã©ã¹ã®ã«ãŒãã¯ã©ã¹ã§ã¯ãããŸããã§ãããã€ãŸãã Foundation Kit ãç»å Žããæç¹ã§ã¯ã Object ãš NSObject ãšããäºã€ã®ã«ãŒãã¯ã©ã¹ãæ··åšããŠããŸãã
åæã® Foundation Kit ã«å«ãŸããŠããã¯ã©ã¹éå±€ã¯ä»¥äžã§ãã Cocoa ãã¬ãŒã ã¯ãŒã¯ã䜿ã£ãããšããã人ãªãèŠèŠããããã¯ãã§ãã
NSObject
NSArray
NSMutableArray
NSDictionary
NSMutableDictionary
NSData
NSMutableData
NSValue
NSNumber
NSString
NSMutableString
NSCharacterSet
NSMutableCharacterSet
NSAutoreleasePool
NSAssertionHandler
NSEnumerator
NSException
NSNotification
NSNotificationCenter
NSScanner
NSBundle
NSDate
NSCalendarDate
NSTimeZone
NSTimeZoneDetail
以äžã¯æååãã³ã¬ã¯ã·ã§ã³ãåç §ã«ãŠã³ãã«ããã¡ã¢ãªç®¡çãéç¥æ©æ§ãæ¥ä»ãšæå»ã«é¢ããã¯ã©ã¹ã§ããçŸåšã® Foundation ã®ãã¡ã®äžéšãå«ãŸããŠããŸãã Core Data ã䜿ã蟌ãã§ãã人ãªãããã®ãªã¹ããèŠãŠäœãã«æ°ä»ããããããŸããããããã©ã®ã¯ã©ã¹ã EOF/Core Data ã«æ¬ ãããªãã®ã§ããã ãã Foundation Kit ã EOF ã®äžéšãšããŠãªãªãŒã¹ãããããã§ãããã¶ãã
ãã ãã以åããæåååŠçã«ã¯ C æååã䜿ã£ãŠãŸããããåè¿°ããããã«ã³ã¬ã¯ã·ã§ã³ã¯ã©ã¹ãïŒæ°ããã»ã©ã§ããïŒãã§ã«ãããŸããããããã®ã¯ã©ã¹ã Foundation Kit ã§ NSObject ã®ãµãã¯ã©ã¹ãšããŠåå®è£ ãããçç±ã¯ããåç §ã«ãŠã³ãã§ã®ã¡ã¢ãªç®¡çããšããªããžã§ã¯ã <-> ããŒã¿ããŒã¹ã¬ã³ãŒãéã®å€æåŠçã®ãããã倧ããã®ã§ã¯ãªãããšæããŸãã
Foundation Kit ã®ç®çã¯ãŸã ãã£ãŠããã®ãã¡ã®äžã€ãã¯ãã¹ãã©ãããã©ãŒã ã®ãµããŒãã§ãã EOF ã®ãªãªãŒã¹ã®å幎ã 1993 幎㫠NeXTSTEP 3.2 ããªãªãŒã¹ãããŠããã NeXT 㯠Sun ãš OPENSTEP ã®å ±åéçºãå§ããŸãïŒãã®å»¶é·ç·äžã« WebObjects ããããŸãïŒã仮㫠NeXT ã Stepstone ã®ã©ã€ãã©ãªã䜿ã£ãŠãããšããŠãããããã°ã ããã ã£ããšããŠãã Foundation Kit ã®æããªéçºçç±ã¯è£œåæŠç¥ã§ãããããŸãåè¿°ã®æ¹ã¯ã Foundation Kit ã®éçºåæ©ã Stepstone ã©ã€ãã©ãªã®ãã°ã ãšæãã»ã©åœæå°ã£ãã®ãããããŸããã
Objective-C ãã©ãŠã¶
Stepstone ã¯åŸã«ãªã£ãŠã Smalltalk ã®ã·ã¹ãã ãã©ãŠã¶ãç䌌ãããŒã«ã Objective-C çšã«äœã£ãããã§ããããããã©ãã Smalltalk ã»ã©ã·ã¹ãã ã«çŽçµããããŒã«ã§ã¯ãªããŠãã¯ã©ã¹ãšã¡ãœããããªã¹ã衚瀺ããéžæããŠãœãŒã¹ã³ãŒããç·šéãããããã®ããŒã«ã ã£ãããã§ããããã£ãŠããã¹ããšãã£ã¿ã§ä»£çšã§ããçšåºŠã®ããããŠæçšã§ããªãããŒã«ãããªãã®ïŒ ãšæããªãããªãã£ãã§ãã NeXT ã®äººãã¡ãåãææ³ã ã£ãã®ãã NeXTSTEP ã«åæ§ã®ããŒã«ã¯ãããŸããã
WebObjects: æšãŠããã Objective-C
NeXT 㯠1996 幎ã«åçš Web ã¢ããªã±ãŒã·ã§ã³ãµãŒã/ãã¬ãŒã ã¯ãŒã¯ WebObjects ã®è²©å£²ãéå§ããŸããã WebObjects 㯠Web ã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ãšã Core Data ã®å身ã§ãã OR ãããã³ã°ãã¬ãŒã ã¯ãŒã¯ïŒåè¿°ã® EOF ïŒã§æ§æãããŸããã©ã¡ãã NeXTSTEP ã®ã©ã€ãã©ãªã䜿ã£ãŠå®è£ ããããŸã Objective-C ã®é å»¶æçžã掻çšããŠããŸãããŸãå®è³ªã¯ Objective-C ãæŽ»èºãããšããããã NeXTSTEP ã®è³ç£ããã£ããããããªãã ãšæããŸããã
WebObjects ã¢ããªã±ãŒã·ã§ã³ã®éçºããŒã«ã«ã WebScript ãšããå°çšã®ã¹ã¯ãªããèšèªããããŸãããç°¡æç㪠Objective-C é¢šã®ææ³ããŸã㯠Java é¢šã®ææ³ãæã€ãåçãªèšèªã§ãã䜿ããå Žé¢ã¯ Web å±€ã«éãããŸããã Objective-C ãç¥ããªããŠãã¢ããªã±ãŒã·ã§ã³ãéçºã§ããããŒã«ã§ãã WebScript ããµããŒãããããŒãžã§ã³ã®ãªãªãŒã¹ã 1996 幎ã Python ã®ããŒãžã§ã³ã 1.3 ã Ruby ã®ããŒãžã§ã³ã 1.0 ã®é ã§ãïŒ Perl 㯠5.0 ïŒãå®è¡é床ã¯é ãã£ããããã§ãã
WebScript ãã©ãå®è£ ãããŠããã®ãã¯ããããŸãããé ãã«ææ ¢ã§ãããªãã Objective-C ã®ã¡ã¿ããã°ã©ãã³ã°æ©æ§ã䜿ãã°å®è£ ã¯æ¯èŒç容æã ã£ããšæããŸããããã°ãã㯠Objective-C ã®åçãªæ§è³ªãæå©ã«åããã®ã§ã¯ãªãããšæããŸãã
NeXT ãè²·åããã¢ããã«ã¯ã WebObjects ã®ã©ã³ã¿ã€ã ã Java ã§åå®è£ ããŸãããã®ãšãã¢ããã«ã¯ Java æµã«èšèšãçŽããããªæ é·ãªç䌌ã¯ããã«ã NeXSTEP ã®ãã¬ãŒã ã¯ãŒã¯ãäžžããš Java ã§å®è£ ãçŽããšãããããã§ãªæŠç¥ãæ¡ããŸããã Objective-C ã®é å»¶æçžãå©çšãã API ã¯ã Java ã®ãªãã¬ã¯ã·ã§ã³ã䜿ã£ãŠå®è£ ãããŠããŸããããããããªããšæå¿ããŸããã 2000 幎㫠699 ãã«ã«å€äžãããããŸã§ã¯ 5 äžãã«ïŒåœæã®æ¥æ¬åã§çŽ 700 äžåã§è²©å£²ïŒâ»ãµããŒãæé蟌ã¿ïŒãããŠãã補åã§ããããã ãã®äŸ¡å€ããã£ãã®ã ãããšæããŸããããã« Java ã§ã»ãŒåé¡ãªãåå®è£ ïŒéçšãã§ããã®ãªããããŒã±ãã£ã³ã°çãªçç±ãå«ããŠããã Objective-C ã§ããå¿ èŠãã C ã§ããå¿ èŠããªããªã£ãŠããã®ã ãšæããŸããä»ã§ã¯ WebObjects ã䌌ããããªãã®ã ãšæããŸãããããã¯ãŸãå¥ã®è©±ã§ããã
å¯äžã®ã³ã³ãã€ã©ãã³ããŒã¯äœãæšãŠãŠããã®ã
Smalltalk 颚ã®ïŒ Cox ããèããïŒå®åçãªéçºç°å¢ãç®æããŠèªçãã Objective-C ã¯ã NeXT ãšã¢ããã«æä»£ã§éæ¹åã®éçºãç¶ããŸãã
ææ | åºæ¥äº | æšãŠããã® |
---|---|---|
1983 幎 | Stepstone Objective-C ãªãªãŒã¹ | |
1988 幎 | NeXT Computer çºè¡šãç¬èªã« Objective-C ã³ã³ãã€ã©ãéçºãã | |
1995 幎 | NeXT ã Objective-C ã«é¢ããæš©å©ãè²·å | Stepstone ã®ã©ã€ãã©ãªïŒãš Objective-C ãã©ãŠã¶ïŒïŒ |
1997 幎 | Apple ã NeXT ãè²·å | |
2001 幎 | WebObjects ã Java ã§åå®è£ ããã | Objective-C |
2007 幎 | Objective-C 2.0 ãªãªãŒã¹ | ã¯ã©ã¹ã®ããŒãžã³ã°ïŒããæ¿ãïŒãäžéšã®ã¡ãã»ãŒãžéä¿¡ã¡ã¿ãã¡ãŒ |
2014 幎 | Swift çºè¡š | C ãé å»¶æçžãã¡ãã»ãŒãžéä¿¡ã¡ã¿ãã¡ãŒ |
ãã®äžã§ WebObjects ã¯æ¯è²ãç°ãªãã«ããŽãªã§ããã Objective-C ã§å®è£ ãããŠããåçšè£œåã Objective-C ãæšãŠãããšã¯éèŠãªãã€ã³ãã ãšæããŸãã Java ã§åå®è£ ããã WebObjects ã¯ä»ã§ã iTunes Store ãæ¯ããŠããïŒãã€åã£ãŠæ¿ããããŠããããããªããšæããŸããïŒã Objective-C ãæšãŠãŠãããããåé¡ã¯ãªãã£ãããã«èŠåããããŸãã Java ããã°ã©ãã䜿ãã GC ã«ã¡ã¢ãªç®¡çãäžä»»ã§ããéçšé¢ã§ã¯ Java EE ã¢ããªã±ãŒã·ã§ã³ãµãŒãã®æ©æµãåããããåãã¡ãªããã®æ¹ã倧ããã£ããããããŸããã Java ã§åå®è£ ããçç±ãåäžå «ä¹ããŒã±ãã£ã³ã°äžã®éœåã ã£ãã ããã«ãããã¢ããã«ã¯ãã§ã«äžåºŠã倧éãæã㊠Objective-C ãæšãŠãŠããã®ã§ãã
NeXTSTEP ã§ Smalltalk 颚ã®ã¯ã©ã¹ã©ã€ãã©ãªãšãã©ãŠã¶ãåãæšãŠããã Objective-C 2.0 ã§ã¯ã©ã¹ã®ããŒãžã³ã°ïŒããæ¿ãïŒãåãæšãŠããã Swift ã«ãã£ãŠ C ãåãé¢ãããããã«ã¯ã©ã¹ããŒã¹ã®ãªããžã§ã¯ãæåããã°ã©ãã³ã°ãšã¡ãã»ãŒãžéä¿¡ãåãæšãŠããã€ã€ãããŸããããããŠèŠããš Objective-C ããã©ã£ãæŽå²ã¯ãã Smalltalk ããããã®ïŒé å»¶æçžïŒããšã C ããããã®ïŒäœã¬ãã«ãªåŠçïŒããæ¬¡ã ãšåãæšãŠãããæŽå²ããšèšããªãããªãããã§ãããããããš Smalltalk ãæ¬é ãããçç±ããã®ãããã«ããã®ãããããŸãããã§ã¯ã Swift ãšããåœ¢ã§æ®ã£ããã®ã¯äœãïŒ é«ã¬ãã«ãªåä»ãã«ããæ©ææçžã§ãã
ããæžããŠã¿ããš Objective-C ãš Smalltalk ã®æŽå²ã«æå·çã«ãªã£ãŠããããã§ãããç§ã¯ã©ã¡ããããŸãäœ¿ãæ©äŒããªãã£ãã®ã§ãç¹ã«æãåºã¯ãããŸããããŸããæãåºãããããšãªããããšãããããããŒã«ããã£ãããã£ããšä¹ãæããæ§æ Œã§ãã®ã§ããäžã®äžã£ãŠçµå±ã¯é¡ã§ãããïŒããšæããããã§ãã
ã ãã Objective-C ã¯ãã¢ã
Objective-C ãšèšãã°ãå«ãããã®ã奜ãããã®ãã¡ãã»ãŒãžåŒã®ææ³ã®ããã§ãããã Smalltalk ã®ã¡ãã»ãŒãžåŒããã®ãŸãŸåãå ¥ãããã®ææ³ã¯ããŸã£ããç°è³ªã®æåãåãå ¥ããã®ã§ããããæçµ¶åå¿ããã£ãŠãäžæè°ã§ã¯ãªããšæããŸãã
ãã£ãšããé
å»¶æçžãå®çŸããã ããªã C ã®ææ³ã®ç¯å²å
ã§è¡šããŸããã¬ã·ãŒããšã»ã¬ã¯ã¿ãåŒæ°ãšããŠãã£ã¹ããã颿°ãåŒã¹ã°ããã§ãã
reply = _msg(aReceiver, "aMessage", arg1, ...)
ããããããããªãã£ãçç±ã¯ Cox æ°ãããã®æ¹æ³ã§ã¯ã»ã¬ã¯ã¿ãæååã§æ¯èŒããã®ã§ã³ã¹ããé«ãã€ãããã ããã§ããããã§ã³ã³ãã€ã©ããã³ã³ãã€ã«æã«ã»ã¬ã¯ã¿ãé©åãªããŒã¿ SEL åã«å€æããŸãããšèšã£ãŠãã Stepstone Objective-C ã® SEL åã¯æåå type char *
ã§ããããã ãã»ã¬ã¯ã¿ã®å
容ãéè€ããªãããã«ã³ã³ãã€ã©ã調ç¯ããã®ã§ããã€ã³ã¿ã®æ¯èŒã§ãã£ã¹ãããã§ããããã§ããçŸåšã®ã¢ããã«ã®å®è£
ã§ãåãã§ããäžã€éãã®ã¯ããã¡ã㯠typedef struct objc_selector *SEL
ãšå®çŸ©ãããŠãããæåååã«ãã£ã¹ãã§ããŸããã
ããã§ãã C++ ã®ãããªã¡ãœããåŒã³åºãã®ææ³ã«ããŠãããã°ããã£ãã®ã«ããšæãæ¹ããããšæããŸãããåè¿°ããéã Cox ã®ç®çã¯èšèªã®æ¡åŒµã§ã¯ãªããããå¹ççãã€æ¢åã®ææ³ãšè¡çªããªãæ¹æ³ãéžãã ããã§ãããã ããã®ææ³ãéžãã çç±ã¯ç¹ã«è¿°ã¹ãããŠããããé
å»¶æçžã Smalltalk ã®ã¡ãã»ãŒãžåŒã§è¡šãå¿
ç¶æ§ã¯ãããããããŸããã aReceiver::method(arg1, ...)
ãšãã§ãããã£ãã¯ãã§ãã
ã§ããèããŠãã¿ãŸããšã Cox ãã¯ããã°ã©ãã«ãšã£ãŠçæ³çã ãšèãã Smalltalk ã®éçºç°å¢ïŒã®äžéšïŒããå€ã®äžçã«æã£ãŠæ¥ãããšããŸãããäŸãããã C ã®äžã«å®è£ ããããšããŠãã倧äºãªã®ã¯æã£ãŠæ¥ãããšããæŠå¿µãšæ¬æã§ãã Objective-C ãéçºãããã®ã¯ 1983 幎ã C++ ã C with Classes ããåç§°å€æŽãããã®ã 1983 幎ã Smalltalk ã Smalltalk-80 ãšããŠå ¬éãããã®ã 1983 幎ã§ãã Ada ã¯...Ada 83 ã 1983 幎ã«éçºãããŸãããããªããžã§ã¯ãæåã¯æªå°å ¥ã§ããå ã C ãæ¡åŒµããããšãã C++ ã¯å°ãäºæ ãç°ãªãã«ããŠããæ°ããéçºæ¹æ³ã暡玢ããŠããæä»£ã«ããããæ¢åã®èšèªã®ç¿æ £ã«åŸãå¿ èŠã¯ãªãã¯ãã§ãããšããããæ¢åã®èšèªã«çžãããŠã©ãããã ãšæããŸããåœæã®ïŒãã€ã¢ã¡ãªã«ã®ïŒç©ºæ°ãªããŠããããŸãããã©ãä»ã®æä»£ã®æ¹ã C ç³»ã Algol ç³»ã®ææ³ã«é ãçžãããŠãã®ãããããŸããã
ãããã«
ç§ã¯å¿ ãããããã¢ãããšæãããšãæªã ãšã¯æããŸããããã Objective-C ã¯ãã¢ããªããããšèšãã€ããããããŸããããã¢ããããèŠå ã®äžã€äžã€ã®åççïŒã«èŠããïŒçç±ã説ããŠã¿ããšããã§ããã¢ããšæã人ã«ãšã£ãŠãã¢ããã®ã¯ãã¢ãã§ãããã¢ããããåŽããã¢ããåŽã«å¿ æ»ã«ãã¢ããªãã¢ããŒã«ãããŠã人çã®ç¡é§ã§ãããããã¢ããã䜿ããªããšèšã£ããšããã§ããããããã¢ãé£äžã«èšãããªããã£ãŠäžã®äžã¯ãã¢ãèšèªã¯äœ¿ããªãæ¹åã«æµããŸãïŒã ã£ãŠãã¢ããïŒããã®äžã§ãã Objective-C ã¯ãã¢ããã®åã«ãã ããããä»ãå ããããããã«ãªã£ããšãã Objective-C ã¯ãã£ãšæ»ã¬ããšãã§ããã®ãããããªããªããšæããŸãã
åè
- Object-Oriented Programming: An Evolutionary Approach ïŒåçã第äºçïŒ
- OBJECTIVE-C ãªããžã§ã¯ãæåã®ããã°ã©ãã³ã°
- NEXTSTEP OBJECTâORIENTED PROGRAMMING AND THE OBJECTIVE C LANGUAGE æ¥æ¬èªç
- NeXTSTEP PROGRAMMING STEP ONE: Object-Oriented Applications
- The comp.lang.objective-C FAQ listing
- The comp.lang.objective-C FAQ listing æ¥æ¬èªèš³
- NEXTSTEP 3.3 Developer Documentation
- WebObjects Overview
- WebObjects 3.1 Developer Documentation ïŒ Objective-C æä»£ã®å€ãããã¥ã¡ã³ãã§ãïŒ
Top comments (0)