Можливості та переваги використання Objective-C
я практично не знайомий з мовою програмування Objective-C, і хотів би почути вашу думку про її можливості порівняно з іншими популярними на сьогоднішній день мовами.
Якщо бути конкретнішими, то мене цікавлять наступні моменти:
- Чому Apple вибрала саме цю мову як основну для своєї платформи?
- Які елементи дизайну мови відображають дизайн самої платформи Cocoa?
- Які елементи дизайну Objective-C подобаються особисто вам, виявляються дуже корисними/незамінними в роботі, і яких не вистачає в якихось інших мовах, з якими ви теж працюєте?
Звертаю вашу увагу, що мені хотілося б почути відповідь у ключі сильних сторін Objectove-C. Я розумію, що у мови, як і в будь-якої іншої програмної системи, напевно існують свої переваги та недоліки, але мені хотілося б почути насамперед саме про переваги.
Заздалегідь дякую за відповіді.
> 1. Чому Apple вибрала саме цю мову як основну для своєї платформи?
Тому що Jobs в Apple вдруге прийшов із компанії Next, у якій мова була основою платформи. А там він був основою платформи через те, що був кращим за інших (у середині-кінці вісімдесятих). Джобс, що прийшов у Apple, застав нереальний бардак в операційній системі (Mac OS 8, 9), яка на роки відставала від своїх конкурентів (Windows, Linux), не мала нормальної багатозадачності, etc. Тому він втягнув туди половину софтверної складової компанії Next, щоб починати писати операційну систему не з чистого аркуша. До моменту приходу Джобса в Apple (1997) C++ не був значно кращим, ніж Objective C (проблеми з ABI, проблеми з метапрограмуванням, etc), томунавіть тоді сенсу міняти шило на мило не було.
> 2. Які елементи дизайну мови відображають дизайн платформи Cocoa?
Простоту (single-inheritance) та документованість.
> 3. Які елементи дизайну Objective-C подобаються особисто вам, виявляються дуже корисними/незамінними в роботі, і яких не вистачає в якихось інших мовах, з якими ви теж працюєте?
Objective C є найкращою мовою із сімейства С для роботи в команді. Явні імена аргументів збільшують читання коду та знижують гостроту необхідності та/або свіжості документації. Single inheritance, no operator overloading, відсутність метапрограмування нівелюють різницю у стилях між членами команди (коли один розуміє іншого). Спрощується реву коду.
2 Cocoa – Objective-C фреймверк, що використовує всі особливості мови.
За можливостями практично не поступається C #, але синтаксис спочатку може викликати відторгнення.
1. Швидкість (немає проміжного коду) – тому вони мають кращу графіку. tonsky теж, напевно, має рацію 2 і 3 — відповівarielf, я з ним згоден.
1. Ні, там де потрібна продуктивність (ядро) використовується C++ (IOKit) і C (Mach/BSD).
Зокрема через ту саму динамічну типізацію і динамічний же message passing-а.