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

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

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

Ответ 1

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

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

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

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

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

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

Microsoft сейчас пытается, но, по моему скромному мнению, терпит неудачу. ( "Неудача!.NET!? КАК DARE YOU!?": с четырьмя основными изменениями примерно за 8 лет они растут больше, чем созревание, что может быть хорошей вещью, если они могут ее развернуть).

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

Ответ 2

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

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

Том: У него был AT & T moniker.

Только это?

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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