Почему Objective-C не очень популярен вне сообщества Apple?

Я знаю, что сообщество Apple, включая разработчиков Mac и iPhone, в основном использует Objective-C для языка разработки. Но, похоже, что не многие люди используют Objective-C вне сообщества Apple, например, в мире Windows или Linux.

Каковы возможные причины того, что Objective-C не особенно популярен за пределами сообщества Apple?

5 ответов

Другой способ размышления над этим вопросом может быть следующим: почему C++, а не Objective-C, стал "объектно-ориентированным C"?

Я изучил C++ в 1991 году, и помню, что C++ выглядел как горячая вещь, тогда как Objective-C был тем странным маленьким языком, который никто (кроме NeXT) не хотел использовать. Я пытался вспомнить, почему, и я думаю, что это сводится к 4 вещам (5, если вы включите C++ с AT&T позади него):

  1. Особенности: C++ даже тогда имел гораздо более богатый набор функций, чем Objective-C.
  2. Синтаксис: Синтаксис Objective-C является гораздо большим изменением по сравнению с C, чем C++.
  3. Производительность: Stroustrup сосредоточился на том, чтобы сделать функции C++ легко сопоставляемыми с C, чтобы (в теории!) Не было никакого снижения производительности при использовании C++. А при разумном использовании ключевого слова "inline" вы могли бы добиться даже большей производительности с C++, чем с C. Даже сейчас нет способа использовать Objective-C в проекте, где производительность была критической.
  4. Стиль: Относительно сильный, статичная типизация была модой (по уважительным причинам).

Таким образом, по сравнению с Objective-C, C++ в начале 90-х дал вам больше возможностей с меньшими потерями производительности, с синтаксисом, который был и модным, и более знакомым, чем Objective-C.

Это сложный вопрос; но вкратце; Я думаю, что ответ, скорее всего, заключается в возрасте операционных систем и их корнях.

  • UNIX это C, вот и все.
  • Linux рассматривается как прямой клон Unix (хорошо, это немного неточно, но достаточно близко для этого обсуждения), и как таковой, он более или менее написан на C.
  • Windows - старая операционная система; и тот, который создается путем взлома взлома вплоть до Windows 3.1. C++ очень популярен, и в.NET, C#.

    Этот новый приток, конечно же, основан на том, что Microsoft имеет с этой платформой.

  • Mac OS X; с другой стороны, это (сравнительно) молодая операционная система, и ее новые части (все еще довольно старые, наследуемые от NeXT и еще много чего) основаны на Objective-C, потому что "Эй! Почему нет?".

    В качестве обратной совместимости не было в списке приоритетов с Mac OS X 10.0; Toolbox и Carbon на основе C/C++ получили короткий конец флешки, а вся операционная система была более или менее сделана как обновленная версия NeXTStep.

Проблема с Obj-C заключается в том, что сила языка в основном зависит от значительных структур, общего высокого уровня интеграции в систему и так далее. Почти невозможно получить хороший джайв, подобный этому, без чистого перерыва от обратной совместимости, и, таким образом, у него никогда не будет шансов на любой платформе, которая не осмелится сделать это. Apple, с небольшой (в то время) и преданной пользовательской базой, осмелилась сделать это и ударила в золото.

Microsoft сейчас пытается, но, по моему скромному мнению, терпит неудачу. ("Сбой?! .NET!? КАК ВЫ СМОЖЕТЕ!?": с 4 основными ревизиями в течение примерно 8 лет, они делают больше, чем взрослеют; это может быть хорошо, если они смогут изменить это.)

Редактировать: Есть несколько проектов, пытающихся портировать OpenStep на Linux, но они немного неуклюжи и сложны в использовании; Есть также небольшие проекты на NS/OS-like с небольшими проблемными доменами, но это тяжелая работа.

Недавно я стоял в книжном магазине, где читал Masterminds of Programming, где создатели языков программирования рассказывают о своих творениях. В Objective-C была одна глава, в которой Тома Лава (одного из создателей Objective-C вместе с Брэдом Коксом) спросили, почему C++ зашел так далеко, а Objective-C - нет:

Почему вы думаете, что C++ использовался чаще, чем Objective-C?

Том: За этим стояло прозвище AT&T.

Только то?

Том: Я так думаю.

Что вы думаете о Objective-C сегодня?

Том: Это все еще существует. Как насчет этого?

Objective-C - это не что иное, как тонкий слой (чуть толще с 2.0) синтаксического сахара для передачи сообщений поверх стандартного C. Даже самая простая объектная ориентация обеспечивается библиотекой времени выполнения, которая долгое время была проприетарной. Инерция является важным фактором в использовании языка.

Он особенно хорош для графических интерфейсов, но единственными инструментальными средствами, которые его поддерживают, являются Apple и в основном неизвестный и играющий в ловушку GNUStep.

Несмотря на то, что Objective-C имеет определенную ценность вне графического интерфейса, и я думаю, что люди будут использовать расширения, если они импортированы в C, даже в системном коде, нет особых оснований выбирать его среди альтернатив, когда мало вашей системы предназначено для работать с этим.

Я считаю, что C++ старше, чем Objective-C, и не только по этой причине имеет гораздо большую базу пользователей. Куда бы ни пришел OC, C++ уже был там:)

Кроме того, C++ имеет больше возможностей. Многие люди впечатлены множеством функций. И в него было вложено больше исследований и разработок... и так далее. По сути, импульс.

Другие вопросы по тегам