Подтвердить что ты не робот

Является ли Objective-C только для разработки на Mac OS/iPhone?

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

Есть ли что-то в открытых? Или существует уже более широкая база для Objective-C? Мне интересно, есть ли компании, которые выбрали Objective-C для разработки своих продуктов.

4b9b3361

Ответ 1

Я думаю, что ObjC был изолирован от мира Apple через причуду истории и характер собственных систем.

Сначала вам нужно отделить ObjC от Cocoa. ObjC - очень примитивный язык. Я думаю, что это очень элегантный язык, но он очень простой. Вы можете реализовать ObjCv1 в предварительном процессоре C. С++ и ObjC были разработаны примерно в одно и то же время. С++ создает огромную инфраструктуру, чтобы привести синтаксис C-типа к тому, что в основном является совершенно другим языком. ObjC привнесла синтаксис типа Smalltalk в C, причем почти ничего. Даже такие вещи, как +alloc и -release, не являются языковыми элементами ObjC. Они довольно простые обертки вокруг malloc() и free(). * Стоя сам по себе, ObjC на самом деле не такой интересный (элегантный, как мне кажется). Это очень похоже на характер Smalltalk. Без его объектных библиотек вы не можете с ним справиться. С его объектными библиотеками он невероятно мощный.

NeXT предоставил всю эту структуру поверх ObjC под названием NeXTSTEP. Поскольку компьютер NeXT не был широко распространенным коммерческим успехом, а NeXTSTEP был собственностью, мало кто узнал структуру или основной язык. Когда Apple купила его и превратила его в Cocoa, он по-прежнему оставался проприетарной системой.

GNUStep там, но они никогда не разрабатывали ничего интересного, чтобы привлечь множество разработчиков (крупный веб-браузер или текстовый редактор или тому подобное). И Cocoa значительно опередил GNUStep за последние несколько лет. Возможно, что с ростом интереса к Cocoa из-за iPhone, GNUStep может оживить и принести хорошую кросс-платформенную платформу разработки, но я как бы сомневаюсь в этом. Люди, которые имеют опыт работы на С++, смотрят на С# и видят явное улучшение. Когда они смотрят на ObjC, они видят множество квадратных скобок, где их не ждут. Для людей, поднятых по парадигме "вызывающих методов", парадигма Smalltalk "передачи сообщений" чужда и даже немного страшна. Многие разработчики предполагают, что им нужен строго типизированный язык, чтобы избежать ошибок, и им неудобно с системой, которая в основном зависит от дисциплины программиста и тщательной согласованности. Гораздо проще взломать что-то, что "просто работает" на С#, чем в ObjC. ObjC действительно ожидает гораздо большего от разработчика в понимании того, что происходит, и не полагаться на компилятор, чтобы защитить вас от ваших хаков.

В принципе, люди знали C из Unix, а С++ имеет смысл с точки зрения C, а Java имеет смысл с точки зрения С++, а С# - просто очищенная Java. ObjC не является одним из них. Это Smalltalk, и никто больше не узнает Smalltalk.

* Недавно я побеседовал с парнем, который написал +alloc о его истории, и он может возразить против того, что я назвал его простой оболочкой, учитывая включение зон. Итак, для вас, кто знает разницу, замените +alloc на +new.

Ответ 2

Ну, есть и структура GNUStep, для которой все еще развиваются люди. Однако я не знаю, насколько активна это сообщество.

Но по большей части Objective-C теперь является языком Apple, о чем свидетельствует тот факт, что версия 2.0 версии была запущена как часть OSX 10.5 и, по-видимому, была чисто внутренней разработкой в Apple.

Изменить: Apple, как вы, вероятно, знаете, имеет что-то, называемое инфраструктурой Cocoa, которая в основном относится ко всему стеку библиотек для Objective-C, включая общий базовый класс NSObject. Cocoa является продолжением библиотеки NextStep, которая GNUStep является версией с открытым исходным кодом. Таким образом, вы найдете много классов NS-prefixed в обоих местах, но Apple не сдерживала добавление новых классов или изменение их в Cocoa, поэтому интероперабельность на уровне GUI на самом деле является только теоретической возможностью.

Ответ 3

@Stephen: Я постоянно удивляюсь тому, как люди никогда не читают наш сайт или даже не проверяют ход проекта, прежде чем говорить такие вещи.:) GNUstep теперь следует за Cocoa сейчас, и на данный момент мы гораздо больше, чем OpenStep. Если вы или другие люди хотите получить реальное мнение по этому вопросу, получите GNUstep из SVN, установите его и попробуйте. Понтификация о чем-то, о чем вы ничего не знаете (о чем свидетельствует ваш ответ здесь), бессмысленна.

Грег К. Ведущий разработчик GNUstep

Ответ 4

GNUstep на самом деле гораздо более активен, чем большинство людей думает, и очень стоит следить. Не сложно создавать приложения, которые работают через GNUstep и Cocoa (что потенциально может быть в OSX, Win, Linux, BSD...)

Эти ссылки, безусловно, заслуживают внимания всем, кто интересуется темой:

http://www.gnu.org/software/gnustep/information/aboutGNUstep.html

http://etoileos.com/news/

http://www.nongnu.org/gap/

Затем существует Cocotron, проект с открытым исходным кодом, целью которого является реализация межплатформенного API Objective-C, аналогичного описанному Apple Inc. Cocoa documentation ":

http://www.cocotron.org/

EDIT: для примера коммерческого кросс-платформенного продукта, созданного с помощью GNUstep, проверьте Eggplant.

Ответ 5

GNUstep. Существует также Étoilé, который является ОС, созданным с помощью GNUstep.

Я думаю, что многие люди просто любят C или С++ лучше, и если они хотят более современный язык, они будут использовать С# или Java.

Ответ 6

Я думаю, что реализация Apple просто лучше поддерживается и все еще находится в активной разработке. Есть и другие места, такие как GNUStep, но они по-прежнему выглядят очень на уровне NextStep/OpenStep. К сожалению, с тех пор многое произошло!

Ответ 7

Команда Mono делает что-то с разработкой для iPhone, которая позволяет писать приложения для iPhone в .NET и кросс-компилировать с помощью компилятора (ов) Mono.NET. Проверьте это на http://www.mono-project.com/Mono:Iphone

Последний подкаст .NET Rocks рассказывает Рори Блайту о том, что он делал для целей C и разработки для iPhone.