Вопрос

Я много лет программирую на C, C ++, C # и нескольких других языках, в основном для Windows и Linux, но также и для встраиваемых платформ.Недавно начал программировать для iPhone в качестве побочного проекта, так что я использую платформы Apple впервые со времен Apple II.Мне интересно, что думают другие разработчики, которые выходят на Mac OSX, Xcode и iPhone SDK.Вот мои впечатления на данный момент:

  • Mac OSX:очень запутанно, я, как правило, сталкиваюсь со слишком большим количеством открытых окон и не знаю, что где находится.К счастью, здесь есть вид с высоты птичьего полета, без него я бы заблудился.В оболочке, по крайней мере, есть все знакомые вещи, так что это мне очень помогает.

  • Xcode ( Код доступа ):работает не так хорошо, как VisualStudio или Eclipse, две знакомые мне среды.Я думаю, что мог бы привыкнуть к этому, но мне интересно, не лучше ли было бы Apple использовать Eclipse.До того, как я обнаружил, что все окна склеены, я ненавидел это, теперь я могу это терпеть.

  • iPhone SDK:действительно, странно.Я понимаю желание Apple контролировать свою среду, но в наши дни это кажется немного неряшливым, и они так много упускают, разрушая репутацию разработчиков.

  • Цель-C:Я знал об этом много лет, но никогда даже не заглядывал в него.Синтаксис отталкивает, но на самом деле я очень заинтригован этим языком.Я думаю, что это интересный третий этап между C ++ и C #, оба из которых мне очень нравятся.Есть ли какой-нибудь шанс, что Obj-C выйдет из "песочницы" Mac из-за роста популярности технологий Apple?

Любопытно прочесть ваши мысли,

Эндрю

Это было полезно?

Решение

Я нахожусь в той же лодке, что и вы (в какой-то степени).Я занимаюсь разработкой на C # уже 7 лет, начиная с .NET 1.0.За последние пару недель я приучил себя к Cocoa и Objective-C.Вот мои впечатления (примечание к примечанию с вашими)

  • Согласен с тем, что беспорядок может стать проблемой.Я склонен сильно использовать пробелы при разработке в XCode (помещаю XCode в один пробел, Interface Builder - в другой, Instruments - в третий).Если у вас нет Leopard (и, следовательно, нет пробелов), то используйте Command-H, чтобы скрыть ваше активное окно.Использование этого, как правило, немного очищает ситуацию (однако было бы неплохо, если бы вы могли автоматически управлять текущим окном при переходе с командной вкладки в другое приложение).

  • Мне все больше и больше нравится XCode.Я ненавижу Visual Studio - я нахожу ее нестабильной, медленной и, в общем, просто какой-то дерьмовой IDE.Для сравнения, я обнаружил, что XCode быстрый, стабильный, и мне нравится, как он организует и фильтрует ваши файлы.Я не слишком разбираюсь в своих ярлыках XCode, но я надеюсь, что есть способ быстро переключаться с одного класса на другой (аналогично сочетанию клавиш ctrl + n в ReSharper).Intellisense мог бы быть лучше в отношении того, как он отображается для пользователя, но мне действительно нравится, как он по сути создает шаблон, и вы можете нажать ctrl + /, чтобы перейти к следующему аргументу в сообщении.

  • Я ненавижу документацию в XCode.Справочная система - отстой, и по какой-то причине она никогда находит то, что я ищу.В итоге я просто гуглю все, что мне нужно знать...Я надеюсь, что они улучшат документацию.Сейчас это моя самая большая проблема.

  • Пока это еще не совсем так, поскольку я просматриваю полную версию Cocoa Framework для настольных компьютеров Mac.Пока мне очень, очень нравится то, что я вижу.Единственное, что я скажу, это то, что было бы неплохо, если бы iPhone SDK позволял собирать мусор...

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

В целом, мой опыт разработки для Mac был приятным, и я рад приступить к работе (уже сегодня!ура!) в некоторых реальных проектах для Mac / iPhone.

Другие советы

Я согласен с вашими чувствами.Переход от инструментов разработки Microsoft (и eclipse) к XCode довольно суров.XCode просто чувствует...незавершенный в некоторых отношениях.В нем, конечно, нет того блеска, который я привык ожидать от VS и Eclipse.

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

Objective-C, однако, великолепен.Мне действительно нравится этот язык, несмотря на его причуды и особенности (сообщения на null не являются исключением во время выполнения?серьезно?) Как только ваши глаза на C ++ привыкнут к синтаксису, с анонимными сообщениями со свободной типизацией на самом деле становится действительно круто играть (хотя и несколько опасно и подвержено RTE).)

Я действительно хочу перейти к разработке приложений для iPhone.Я немного занимался разработкой для Motorola, Blackberry и Windows Mobile, которые были классными и простыми в освоении благодаря хорошей документации, легкому доступу к SDK и их установке.Пока что я считаю, что Apple ведет себя немного элитарно из-за того, что кажется, что их среда разработки доступна только на Mac.Мне также не совсем нравятся их концепции лицензирования.Если вы хотите иметь возможность публиковать приложения на самом деле, вам нужно ознакомиться с ними, и они оставят за собой последнее слово относительно того, можете вы это сделать или нет, и будет ли ваше приложение признано приемлемым для запуска на их превосходном продукте.Я убежден, что из-за них сообществу разработчиков с открытым исходным кодом становится сложнее поддерживать и создавать приложения, а новичкам iPhone, таким как я, даже начать писать приложения для продуктов.О Microsoft говорят много плохого, но я должен сказать, что они выпускают свои API и SDK задолго до того, как их продукты попадают на рынок, и действительно поощряют программистов всех уровней копать глубже и вовлекаться в написание приложений для своих фреймворков и операционных систем.

Я работал над несколькими небольшими приложениями для iPhone, и я просто поражен, что они не включали компоненты фреймворка, которые позволяют разработчикам легко получать доступ к веб-сервисам SOAP.Кто-нибудь еще, работающий в корпоративной ИТ-среде, испытывает эту боль?

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

Также рассмотрите возможность включения Research Assistant, когда вы только начинаете, и включите Code Sense (не думайте, что он включен по умолчанию).Комбинация XCode + Interface Builder довольно мощная, когда к ней привыкаешь, и, честно говоря, за несколько десятилетий я никогда не пользовался лучшим interface Builder с точки зрения того, как работает интеграция с кодом или возможность проектировать интерфейсы, которые разумно изменяют размер без тонны дополнительной работы.

Я новичок в программировании для iPhone и XCode тоже, после многих лет программирования для многих платформ, и мое впечатление довольно близко к вашему (с некоторыми отличиями).:

  • Mac OSX:Я перешел с Windows около 2 лет назад (в качестве эксперимента) и остался :) - Не думаю, что переключусь обратно.Иметь Unix foundation - это очень круто, и мне нравится яркий графический интерфейс + мне нравится базовая простота интерфейса.Мне потребовалось около 2 месяцев, чтобы привыкнуть к этому, но я не могу представить, что вернусь назад.Однако я ненавижу раскладку клавиатуры MacBook и некоторые ограничения клавиатуры OSX.Забавно, как компания, которая так гордится своими знаниями в области юзабилити, может прийти к такому паршивому набору решений.Возможно, лучшими примерами являются отсутствие сочетания клавиш контекстного меню (щелчок правой кнопкой мыши) и тот факт, что вам нужны две клавиши для выполнения таких задач, как Home, End, PgUp и т.д.Мой главный совет - потратить время на изучение как можно большего количества сочетаний клавиш.Я также рекомендую установить и использовать следующие сторонние приложения, которые существенно улучшили работу с Mac: Ртуть, Поиск пути, 1 Пароль, Вещи, Текстовый мат, Текстовый редактор & Передавать.

  • Xcode ( Код доступа ):Я полностью согласен с вами.Я думаю, что XCode - это довольно примитивный.Я сравниваю это с IntelliJ IDEA, с которым я много работаю, и мне кажется, что Apple застряла как минимум на 7 лет в прошлом:

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

    Большая ирония заключается в том, что серьезные разработчики Mac даже не понимают, что у них есть проблема...Они настолько привыкли к беспорядку, с которым им приходится иметь дело, что не могут представить себе лучшего мира...Вместо того чтобы помогать вам, XCode продолжает мешать.Я могу привести десятки примеров того, насколько эта среда отстой по сравнению с современными Java IDE (Eclipse, IntelliJ), но я считаю, что это пустая трата времени - похоже, Apple слишком горда, чтобы учиться у других...что забавно, если учесть тот факт, что изобретатели Java не стеснялись учитесь у Objective-C.Мой единственный совет (и самому себе тоже) - делать глубокий вдох всякий раз, когда вы открываете XCode и узнайте как можно больше от экспертов которые больше привыкли к такому окружению.

  • iPhone SDK:это даже хуже - мы рассматривали возможность переноса наше мобильное приложение на iPhone пару месяцев назад, но решили не заморачиваться, потому что мы беспокоились, что Apple может отклонить его из App Store, а вы не можете знать заранее (у них есть отвергнутый несколько похожее приложение в прошлом на том основании, что оно слишком близко к iTunes!)

  • Obj-C:Я нахожу Objective-C довольно приятным, и через несколько дней вы привыкаете к неуклюжему синтаксису обмена сообщениями, но, черт возьми, как же я скучаю по сборке мусора...Необходимость иметь дело с выделением памяти и выпусками немного напоминает возвращение в прошлое к моим ранним дням C / C ++.Я только начинаю изучать нюансы этого языка, но пока мне нравится то, что я нашел.В Интернете разбросано довольно много советов о лучших практиках Obj-C, которые вы не можете найти в официальных документах, и я многому из них научился (см., Например, Следующее обсуждение здесь, в stackoverflow)

Я также имел опыт работы с C # и работаю с iPhone SDK начиная с бета-версии 2.Я полностью согласен с Крэнли в том, что VS немного неуклюж по сравнению с Xcode.Xcode сильно отличается и становится совершенно чужим, когда вы начинаете его использовать.Впрочем, так же было и с VS в те далекие времена.Как только вы пройдете курс обучения, это будет замечательный опыт.Приложения, которые я разрабатываю, используют серверную часть C # (веб-сервис), и я абсолютно не люблю переключаться на VS для написания кода веб-сервиса из Xcode.Obj-C также довольно интересно использовать, как только вы узнаете, как это работает лучше всего:делегаты (сильно отличающиеся от делегатов .NET), сообщения, Категории и все остальные присутствующие странности.

Я немного занимался программированием на Java и Flex до .NET, и я всегда ненавидел .NET docs по сравнению с Java docs.Они просто не режут его.Я лично нахожу документы Xcodes и поисковую систему просто потрясающими.Существует бесчисленное множество руководств в формате PDF, связанных с документами, которые содержат тонны примеров кода.Подумай об этом:бета-версия iPhone SDK вышла уже около 2 месяцев назад.Документы показывают уровень зрелости в течение многих лет.И да, это потому, что Obj-C существует уже больше года, и фреймворки похожи.

В целом, самая большая проблема, которую я обнаружил, заключается в том, что многие .NET-разработчики переходят на сторону iPhone и пытаются использовать Obj-C так, как если бы это был C # или VB.Они не могут прочитать базовые документы Obj-C, не говоря уже о документах iPhone, а затем они очень расстраиваются и в конечном итоге терпят неудачу.Дискуссионные форумы пестрят подобными сценариями.Программировать iPhone непросто.Выучить новый язык непросто.Это требует времени и множества попыток.Это не так.NET, поэтому избавьтесь от этого мышления еще до того, как начнете, и все будет замечательно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top