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

43
задан 3 revs, 2 users 60% 6 April 2010 в 09:35
поделиться

4 ответа

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

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

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

Именно это?

Том: Думаю, да.

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

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

17
ответ дан 26 November 2019 в 22:55
поделиться

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

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

4
ответ дан 26 November 2019 в 22:55
поделиться

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

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

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

12
ответ дан 26 November 2019 в 22:55
поделиться

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

  • 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 лет они больше растут, чем созревают; что может быть хорошо, если они смогут все исправить.)

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

20
ответ дан 26 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: