Почему 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 позади него):
- Особенности: C++ даже тогда имел гораздо более богатый набор функций, чем Objective-C.
- Синтаксис: Синтаксис Objective-C является гораздо большим изменением по сравнению с C, чем C++.
- Производительность: Stroustrup сосредоточился на том, чтобы сделать функции C++ легко сопоставляемыми с C, чтобы (в теории!) Не было никакого снижения производительности при использовании C++. А при разумном использовании ключевого слова "inline" вы могли бы добиться даже большей производительности с C++, чем с C. Даже сейчас нет способа использовать Objective-C в проекте, где производительность была критической.
- Стиль: Относительно сильный, статичная типизация была модой (по уважительным причинам).
Таким образом, по сравнению с 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++ имеет больше возможностей. Многие люди впечатлены множеством функций. И в него было вложено больше исследований и разработок... и так далее. По сути, импульс.