Пользователь
0,0
рейтинг
18 января 2013 в 13:01

Разработка → iOS разработчик: Обзор книг для новичка

Какое-то время назад я решил перепрофилироваться на разработчика под iOS, и решил систематизировать материал. Так сказать, составить свой roadmap. Получился некий обзор, которым я хотел бы поделиться с вами.
Данный обзор не претендует на полноту, непогрешимость и истину в последней инстанции.

Итак, вы приобрёли iPhone или iPad. Чудесные устройства, не правда ли? Какое-то время спустя пришла мысль “а не создать ли мне под него программу, которая завоюет мир?”. Я расскажу вам, с чего начать.

Первое, что вам понадобится – компьютер с операционной системой Mac OS X. Хотя бы Mac Mini (стоимость от 20000 рублей). По другому никак. На крайний случай, можно поставить под Windows или Linux систему виртуализации (VMWare, VirtualBox и т.д.), и уже там установить Mac OS X (не буду описывать сам процесс – на хабре уже много раз обсуждали).

Второе – нужно знание английского языка. Хотя бы в рамках «перевожу со словариком» — после первых 2-3 книг подтянете ещё и английский (что вообще никогда не помешает) до уровня «свободное чтение технической литературы». Переводные книги выходят с гигантским опозданием – полгода-год минимум. А большинство вообще не выходят на русском языке. Да и большую часть переводной программисткой литературы читать невозможно – переводят люди, далёкие от этой тематики.

Приготовьтесь купить n-ое количество электронных книг (можно и в бумаге, но а: везти будут долго; б: будет дороже). Стоят они примерно 25-80 долларов. Да, дорого, но оно того стоит.

Шаг 0: Необходимый базис


Программировать под iOS вы будете в основном на языке Objective-C. Objective-C — это ООП (объектно-ориентированное программирование) надстройка над языком C. Так что C знать обязательно. Необходимые знания можно почерпнуть в книге
David Mark, James Bucanek. Learn C on the Mac 2nd Edition

Шаг 1: Objective-C


Далее, нужны знания языка программирования Objective-C. Великолепный язык, относительно легко изучаемый.
Итак, основы языка можно изучить по книгам:
Scott Knaster, Waqar Malik, Mark Dalrymple. Learn Objective-C on the Mac 2nd Edition
или
Aaron Hillegass. Objective-C Programming: The Big Nerd Ranch Guide

Следующая книга является, скорее, приложением к предыдущим
Matthew Campbell. Objective-C Recipes

Следующее, что надо знать для полноценного ООП – паттерны проектирования. В идеале, крайне желательно прочесть книгу Банды Четырёх (Gang of Four. Design Patterns). Далее, книга о паттернах применительно к Objective-C:
Carlo Chung. Pro Objective-C Design Patterns for iOS

Шаг 2: iOS SDK и iOS UI


iOS SDK – это комплект средств разработки под iPhone, iPad и iPod. Без его отличного знания – никуда.
iOS UI – пользовательский интерфейс. Проще говоря, это кнопочки, ползунки, надписи и т.д и т.п. – всё что вы видите на экране вашего устройства. Естественно, и это надо знать как «отче наш».
Для начала, следует прочесть эту книгу
David Mark, Jack Nutting, Jeff LaMarche, Fredrik Olsson. Beginning iOS 6 Development

Далее, её продолжение:
David Mark, Alex Horovitz, Kevin Kim, Jeff LaMarche. More iOS 6 Development

Ну и в довершении, можно пролистать приложение к двум предыдущим книгам
Hans-Eric Gronlund, Colin Francis, Shawn Grimes. iOS 6 Recipes

Весьма хороша следующая книга – вполне тянет на звание «полное руководство по разработке для iOS». К сожалению, книга несколько устаревшая, но это нисколько не умаляет её достоинств.
Joe Conway, Aaron Hillegass. IOS Programming: The Big Nerd Ranch Guide, 3rd Edition

Следующие две книги, так сказать, для совершенствования. Каждая из них является сборником уроков и объяснений тонкостей iOS SDK. Все эти материалы можно найти в разрозненном виде в этих ваших интернетах, но в этих книгах это собрано, отсеяно и отсортировано с особой любовью.
iOS 5 By Tutorials, Second Edition
iOS 6 By Tutorials

Приложение: Игры


Предыдущих книг вам будет достаточно, чтобы написать несложные приложения для вашего мобильного устройства. Сложные вы будете писать после огромного количества практики. В какой-то момент вам захочется написать игру, и этих знаний вам просто не хватит. Для написания игр вам потребуется во много раз больше знаний: математический базис, отличное знание геометрии вплоть до трёхмерной, физический базис, основы проектирования AI и многое, многое, многое другое… Но этим вы займётесь сами. Я же просто перечислю набор книг, которые желательно прочитать разработчику игр под iOS.
Lucas Jordan. Beginning iOS 5 Games Development
Kyle Richter. Beginning iOS Game Center and Game Kit
Steffen Itterheim, Andreas Low. Learn cocos2d Game Development with iOS 5
Jayant Varma. Learn Lua for iOS Game Development
Mike Smithwick. Pro OpenGL ES for iOS
Sue Blackman. Beginning 3D Game Development with Unity
Philip Chu. Learn Unity 4 for iOS Game Development
Robert Chin. Beginning iOS 3D Unreal Games Development

Послесловие


Вы думаете, что прочтя все эти книги, вы станете Senior iOS Developer? Нет, нет, нет и нет!
Когда-то Стив Балмер, став генеральным директором корпорации Microsoft, рассказывал, кто приносит успех операционным системам и платформам: «Developers! Developers! Developers! Developers!».
Я переиначу его слова: что делает разработчика мастером? Практика! Практика! Практика! Практика!
Никакие знания не перевесят практики. Лично мой совет: прочитав по моему обзору все книги от первой до «Beginning iOS 6 Development» включительно, устроиться в любую компанию на должность junior разработчика. На любые условия. На любую зарплату. Этот опыт бесценен – его не получишь из книг.
Удачи!

Update: обзор предназначен для полнейших новичков и не претендует на полноту, непогрешимость и истину в последней инстанции.
Armi0000 @Armi0000
карма
1,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (91)

  • +5
    Obj-C простой язык?
    Я вот C# не зная могу читать спокойно, а что значит ЭТО из одного туториала???

    — (id)initWithTitle:(NSString*)title rating:(float)rating thumbImage:(UIImage *)thumbImage fullImage:(UIImage *)fullImage;
    • +6
      Что тут не понятно, это же практически plain English перед вами.
      Например
          [app initWithTitle:@"Cool App"
                      rating:5.0f
                  thumbImage:[UIImage imageNamed:@"thumbImage.png"]
                   fullImage:[UIImage imageNamed:@"fullImage.png"]];
      
      


      Читается прмерно так
      init app with title «Cool Object», rating 5.0f, thumb image named «thumbimage.png» and full image named «fullImage.png».


      Ну-ка откройте тот самый очень понятный код на C# и прочтите его в таком же духе :) Нет, я не спорю, читать C# или C тоже легко если есть опыт, но Objective-C в каком-то смысле ближе к обычной (английской) речи, чем C или C#. Привыкание к синтаксису — дело двух недель, не больше.
      • +2
        Эмм… Чем это ближе к английскому и проще?
        В это кусочке близость к английскому достигает только именованием. Называть параметр глаголом — вообще говнокод.

        var app = new App(withTitle: "Cool App", rating: 5.0f, thumbImage: new Image(named: "thumbImage.png"), fullImage: new Image(named: "fullImage.png"));

        или то же самое

        «new app with title «Cool Object», rating 5.0f, thumb image named «thumbimage.png» and full image named «fullImage.png»»

        В чем принципиальная разница?
        • 0
          Разница в парадигме вызова методов.

          Если в C# в следующем вызове метода его название EndsWith
          someString.EndsWith(anotherString, true, someCulture);
          

          То в ObjC название метода будет isEndedWithString withIgnoreCase andCultureInfo.
          [someString isEndedWithString:anotherString withIgnoreCase:YES andCultureInfo:someCulture];
          

          То есть в ObjC в названии метода уже присутствуют его аргументы.
          И согласись, что строка isEndedWithString withIgnoreCase andCultureInfo к английскому несколько ближе, чем кастрированное EndsWith?
          • 0
            В упор не понимаю какое отношение имеет парадигма именования к языку? Именуйте так как вам удобно.
            Собственно, именовать аргументы так как вы предлагаете в шарпе не нужно, так как там есть инициализаторы, которые дают такую же семантику.
        • +2
          Так а чем это ваш пример отличается от Objective-C по большому счету?
          Заменить "()" на "[]", убрать запятые, убрать «new» и пожалуйста, практически одно и тоже.
          Если уж придираться к синтаксису, то в этом примере получается больше знаков препинания и служебных слов, чем в примере на Objective-C.

          О чем вообще разговор? О фломастерах?
          • 0
            Вы предложили прочесть кусок на сишарпе в таком же духе, как кусок на Obj-c в вашем комменте. Что я и сделал ;)
        • 0
          Кстати, не понял насчет «назвать параметр глаголом», где вы это увидели?
          Все параметры названы существительными: title, rating, thumbImage, fullImage.
          «init» — не именует параметр, это как раз глагол, который означает что делает метод.
          • 0
            Почитал доки по инициализаторам в Obj-C, зачем такое именование понял. Вот только есть мнение, что это костыль из-за кривоватой их реализации.

            msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx
        • –1
          Я английскую школу закончил с отличием — что-то не помогло. Для любого языка программирования английский нужен, тока нужен он по минимуму. Во всех языках пытаються компактно красиво уменьшить количество символов, «sugar syntax» и тд. Если ARC используешь он не дает нормальный Singleton Pattern создать а делает autorelease. Давайте немного истории — создатели Java — девелоперы которым надоел Objective-C и они ушли делать свой нормальный язык.
          • +1
            Так может все-таки «syntax sugar» или «syntactic sugar», раз уж с отличием :)
            Singleton по последнему слову техники, и ARC вам и GDC, и вообще google и stackoverflow этот ворос решают на ура.
            #ifndef SINGLETON_GCD
            #define SINGLETON_GCD(classname)                        \
            \
            + (classname *)shared##classname {                      \
            \
            static dispatch_once_t pred;                        \
            __strong static classname * shared##classname = nil;\
            dispatch_once( &pred, ^{                            \
            shared##classname = [[self alloc] init]; });    \
            return shared##classname;                           \
            }
            #endif
            


            Ну а если мы начнем сейчас рассуждать откуда взялись создатели того или иного языка, так это вообще будет долгий разговор. Вы не поверите, но создатели всех языков (кроме первопроходцев разве) писали до этого на каком-то еще языке, и почти все они делали свой новый и «нормальный» язык, потому что им что-то там надоело или просто захотелось или назрел момент и технологии шагнули вперед. Страуструп, C и C++, к примеру.
            • 0
              Да, давайте «syntactic sugar» :)
              Я использую именно эту заготовку Singleton но у меня ARC её авторелизил когда я начинал еще писать игру (тогда ARC только добавили).
              Ну про языки в этом вы правы :)
      • 0
        Не так давно в C# появились named arguments, так что можно писать также.
        • 0
          ~5 лет вообще-то ;)
          • –3
            Все меры относительны господа, не надо друг друга минусовать ;)
  • +4
    В корне не согласен. Уже сто лет не изучаю новые технологии и языки по книгам. Имхо — все эти книги — это потеря времени и денег.

    Если ты знаешь хоть какой-то язык программирования, то новый можно изучить по примерам, паре туториалов, гуглу и стэкексченджу.
    • +5
      Тоже заметил на своем примере. Изучать Objective-C начал по документации самой Apple, она всегда актуальна, в отличии от книг. Там же UIKit и все остальные фреймворки из SDK.
      Так и не довелось полностью прочесть хоть одну книгу именно про зазработку под iOS. Все сведения берутся в первую очередь из документации и примеров Apple, потом помогает Google, а половина поисковых запросов ведет на stackoverflow.com.

      Не смотря на все это, книги ни в коем случае не повредят, если есть время и желание их читать.
    • +3
      Плюсую. Имея .NET/C++/JS бэкграунд сел писать приложение под iOS, прочитав 1/3 книги, и то, за полгода до этого, то есть фактически всё познавал с нуля. Вполне нормально разрабатывается, ответы на 90% вопросов быстро находятся на stackoverflow\в гугле именно тогда, когда они нужны. Прочитав же книгу, даже если ответы на эти вопросы и будут в ней, они просто напросто забудутся, и не факт, что вспомнятся, когда будут нужны.
      Нужно сразу бросаться с головой в разработку, все эти длительные подготовки в виде чтения кучи литературы — лишь тягание быка за яйца.
    • –1
      Если ты знаешь хоть какой-то язык программирования, то новый можно изучить по примерам, паре туториалов, гуглу и стэкексченджу.

      Ок. У меня знакомый знал один язык (зато на отлично) — Assembler. Как думаешь, ему по паре туториалов C++ дался?
      • +3
        Не передергивайте. Все же поняли, о чем я говорил.
        • –4
          Да причём тут передёргивание?
          Было дано исходное условие «знать хоть какой-то язык программирования», была дана задача «по нескольким туториалам изучить язык». Я привёл живой, не придуманный пример. В чём я не прав?
          • +1
            К словам придираетесь. Всем ведь ясно, что это как минимум совершенно разного уровня языки, и сравнивать их вот так вот «в лоб» никак нельзя
  • +8
    Это что угодно, но никак не «Путь самурая»…
    • +1
      Я понял, как надо было назвать статью!

      «iOS разработчик: Путь книжного червя»
      • 0
        Господи… Да что же вы к словам то придираетесь?
        Изменил название поста. Special for you. Welcome.
  • +1
    Кроме того, Objective-C нужен только если вы хотите писать приложения. Если вы хотите писать игры, то изучайте сразу кроссплатформенные решения. Cocos2d-x, Unity, и т.п., а к Obj-C не приближайтесь на расстояние выстрела =)
    • 0
      А если хочется писать игры только под iOS, Cocos2d уже не подходит?
      • +1
        Имхо, есть резон рассмотреть сразу кросс-платформенные фреймверки чтобы писать одновременно для iOS/Android.
        • 0
          Cocos2d-x полностью подходит для этих целей? Я сейчас просто углубляюсь в эту степь и хотел кого-нибудь знающего как раз об этом спросить.
          • 0
            Вроде как да. Он именно для этого и создан. Но я для себя в свое время выбрал юнити, о чем ни капли не жалею.
            • 0
              Cocos2d-x отстает от cocos2d-iphone под возможностям (отставил во всяком случае когда я последний раз смотрел).

              Лично мне настолько не нравится С++, что я лучше буду поддерживать и Obj-C версию и Java или Mono для андроида.
      • 0
        Я сейчас на OpenGL ES 2.0 пишу игру под iOS — не легко, но зато много интересного узнал.
    • –3
      Ого! А давайте человека, который не умеет плавать, сразу в Ниагарский водопад бросим? Выплывет — станет олимпийским чемпионом.
      Это всё равно, что начинающему разработчику игр для Android сказать «бросай Java! садись сразу за Unity!».
      • +2
        Еще раз — чтобы писать кроссплатформу на юнити — не нужно знать ни Java, ни Objective-C.

        Это как чтобы писать на C/C++ не нужно знать ассемблер.
        • –1
          А если я хочу написать десктопное приложение для Android или iOS, чем мне Юнити поможет?
          И в догонку сразу второй вопрос: кто начинает изучение конкретной платформы сразу с разработки игр?
          • +1
            И в догонку сразу второй вопрос: кто начинает изучение конкретной платформы сразу с разработки игр?
            Разработчики игр, например :).
          • –1
            Я говорил про игры, а не приложения. Цитата из моего коммента начала этой ветки:

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


            Второй вопрос — для разработки игр отлично можно начать изучение прямо с юнити. «Изучение платформы» сводится только к парочки нюансов типа какое сжатие текстур где можно применять и т.п.
            • 0
              Нескромный вопрос: а Вы всегда игры на готовых движках делаете?
              • 0
                Да. Ибо я не собираюсь поддерживать два совершенно разных нативных кода для iOS и Android. Как и абсолютное большинство разработчиков. Найти сейчас игру, написанную не на кроссплатформенном движке — это еще постараться надо!

                Я надеюсь, вы понимаете, что под словом «движок» — понимается среда кросс-платформенной разработки (типа Unity), а не набор «собери игру из кубиков не зная языка программирования», коих великое множество и на них ничего серьезного построить нельзя.
        • +1
          Отличный пример абстракции в программировании!
      • +1
        Чем так, по-вашему, плох Unity? Порог вхождения очень низкий, да и вообще работать с ним явно проще, чем свои велосипеды по книгам писать…
        • +1
          Думаю, судя по его комменту — Armi0000 не очень представляет, как выглядит разработка и программирование на Unity.
          • –1
            Очень даже представляю, можете поверить. Абсолютно ничего ни против юнити, ни против кокоса, ни против юдк не имею. Но лично мне интересно свои движки писать.
            • 0
              Если представляете, то откуда тогда уверенность, что сначала нужно изучить натив, а только потом садиться за юнити? Навыки написания приложения на Obj-C ну вообще никак не помогают в разработке игр на юнити.

              А по поводу движков… Многие и в пределах юнити пишут свои движки. Особенно, если игра двухмерная.
              • –1
                Это не уверенность. Это лично моё мнение, которое никак не может быть на 100% верным. На вкус на цвет все фломастера разные :)
                • 0
                  Ну, вот могу вас заверить — для разработки игры на Unity — знание нативной платформы «поможет» не больше чем знание ассемблера при разработке на C#. И это действительно очень точная аналогия.

                  Знать какой-нибудь шейдерный язык — полезно, да. Понимать, как работает OpenGL — тоже неплохо бы. Но именно нативный язык платформы — ну вообще бесполезен на все 100%.

                  Единственное для чего он может быть полезен — это если вы хотите к юнити какие-то нативные плагины написать. Но в 99% случаев для игр они уже написаны за вас (геймцентр, всякие фейсбуки и т.п.).
                  • 0
                    Да японский бог…

                    Я не призываю учить нативные языки какой-либо платформы.
                    Лично мне нравятся языки Ruby, Python, Smalltalk и Objective-C. Поэтому я их учу и читаю всё возможное про них. Мне нравятся шейдеры, полигоны, Maya и OpenGL. Я читаю про них всё возможное.

                    Никогда не говорил «бросай <подставьте язык сами> и учи именно Objective-C!». Мне это не нужно.
                    Никогда не говорил «бросай эту херь и учи этот движок!». Мне это не нужно.
                    Каждый выбирает сам технологию и путь изучения технологии.

                    В 99% книг обучение разработки под iOS идёт под аккомпанемент Objective-C. Кому нравится — хорошо. Кому не нравится — тоже замечательно.

                    В названии топика нет и не было слов «кроссплатформенный» и «разработка игр». Намёк понятен, надеюсь?

                    Вы своё мнение высказали один раз — отлично. Больше одного раза — навязывание своего мнения, ИМХО.

                    На этом закончим, пожалуй, наш «спор». Вам меня не переубедить. Я вас даже не пытался переубедить. Finita.
    • 0
      Я еще слышал о MonoGame. Все хочу попробовать, что это :)
  • –5
    Фраза про ООП надстройку над Си доставила. Автор пиши еще.
    • +3
      В чём не прав?
      Смотрим руководство Programming with Objective-C от Apple (надёжный источник, надеюсь?):
      Objective-C is the primary programming language you use when writing software for OS X and iOS. It’s a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime. Objective-C inherits the syntax, primitive types, and flow control statements of C and adds syntax for defining classes and methods. It also adds language-level support for object graph management and object literals while providing dynamic typing and binding, deferring many responsibilities until runtime.

      Superset = надмножество. Слово «надстройка» так же применима. Objective-C и на грамм не менял C, он только добавляет ООП составляющую.
      • –1
        В результате получается другой язык с сиобразным синтаксисом по сути. Если рассматривать глубже, то в общем-то и у тех же плюсов с базовым си довольно мало общего, как в чисто программном плане, так и в плане философии разработки.

        При этом при любой надежности источников нужно понимать, что объектная модель Objective-C лежит ближе к смалтолку, чем опять же к тем же плюсам.
        • +1
          При этом при любой надежности источников нужно понимать, что объектная модель Objective-C лежит ближе к смалтолку, чем опять же к тем же плюсам.

          Да кто бы спорил то?
          Вот только по истории вопроса надо понимать: разработчики языка взяли чистый ANSI C, и над ним сделали ООП надстройку. Не изменяя самого C. Именно поэтому надстройка — это термин разработчиков языка. Именно так и написано: Objective-C не новый язык программирования, а надмножество языка C со Smalltalk парадигмой ООП.
          • –1
            3 раза удалил написанное, ладно будь по вашему, волга — надмножество бмв.
            • 0
              Опять 25…
              Пойдём по простейшему ООП примеру (во всех учебниках по ООП вроде обсасывается):
              волга — наследует от автомобиля (четыре колеса, двигатель, руль);
              бмв — наследует от автомобиля (четыре колеса, двигатель, руль).
              Проще: и волга и бмв имеют в пра-пра-пра-дедушке автомобиль.
              Волга не может быть надмножеством бмв (в нормально ситуации), потому что как ни извращайся, а из бмв волги не получишь.

              Опять же ООП пример: ObjC — наследует, но не перегружает от C.

              Блин, ну что непонятно то?
              • 0
                Вы меня не понимаете. То что в волге и бмв используется двигатель об бмв, волгу бмв не делает. Точно так же использование си синтаксиса и элементарных типов не делает ObjC — надмножеством Си. Это по моей логике.

                Согласно вашей логике (которую я понял, но не согласен), тот факт что в основе ядра OSX лежит BSD делает ее надстройкой BSD.
                • 0
                  Согласно вашей логике (которую я понял, но не согласен), тот факт что в основе ядра OSX лежит BSD делает ее надстройкой BSD.

                  Отнюдь нет. Ядро было капитально переработано под требования Mac OS X. Это уже не изначальное ядро BSD. Это новая операционная система.
                  А вот сам ANSI C в составе Objective-C не был затронут изменениями вообще никак. Поэтому создатели языка и называют его не новым языком, а именно надмножеством (так ими пишется в спецификации языка в девелоперском разделе сайта Apple). Давайте уважать разработчиков языка — им всё-таки виднее.
                  • 0
                    У меня в ДНК есть незатронутые гены ящерицы? Я надстройка над ящерицами? В руководстве черным по белому написано, что ObjC это язык программирования соблюдающий стандарты Си для простоты перехода программистов с последнего на указанный. Язык создан в начале 80х годов. За это время притерпел изменения, развивался и прочими доступными методами эволюционировал как мог.

                    Если вернуться в область языков программирования — был ли Делфи надстройкой Паскаля? Является ли C# надстройкой Си или все же Джавы или это вообще отдельный язык?
                    • 0
                      Нет никаких «генов ящерицы». Есть гены, отвечающие за конкретные признаки.
                • 0
                  У вас какой-то зацикленный спор, аргументы начали повторятся. Этак вы сейчас дойдете до того, как определятеся понятие «язык программирования», входит ли туда синтаксис, рантайм и т.д.

                  Все что я вижу это неудачный перевод «надстройка», все-таки «superset» нужно переводить хотябы как «надмножество». В конце концов почти все языки транслируются в машинный код, так может быть они все «надстройка» над машинным кодом?:)
                  • 0
                    С термином «надмножество» согласен, это более точно отражает суть происходящего. Надстройка в нормах русского языка это когда на крыше дома летний сад развели. А когда мы имеем дело с языком который на протяжении многих лет развивается самостоятельно со своей философией, практиками и всеми остальными нюансами, уместнее говорить про эволюционную ветвь, надмножество, но никак не надстройку.

                    Мы же не можем сказать что человек — надстройка обезьяны?
                    • 0
                      Согласен — термин надмножество больше подходит к данному случаю. Но (моё ИМХО), как то это не по-русски, что ли…
                • 0
                  Разве любая программа на C не является валидной программой на ObjC? Если да, то ObjS — superset (надстройка) C в самом прямом смысле этого слова.
                  • –1
                    А что вы понимаете под валидной программой? Запускается? Работает? Корректно работает? Компилируется?

                    ЗЫ Ссылка выше на subset, а не на superset
                    • +2
                      Да на все вопросы. В статье в первом абзаце дается определение подмножества и надмножества. Множество программ на C являются подмножеством программ на ObjC, следовательно C подтип ObjC или ObjC надтип (надстройка) C.

                      Аналогия с человеком и обезъяной не работает, так как не выполняется принцип подстановки Лисков.
                      • 0
                        К сожалению, не хватает кармы плюсануть, но яростно плюсую.
  • 0
    Я думаю не меньше 20% от всех приложений в app store написанны (созданые) без использования Objective-C.

    А если взять приложения которые зарабатывают 90% дохода, то этот процент дорастет до 90% :)
    • 0
      Ок.
      Большинство игр на базе Cocos — на JavaScript.
      Большинство игр на движке Unity — C# или JavaScript.
      Куча игра почти на голом C++.
      Однако UI 95% приложений — написаны на Objective-C.

      А если взять приложения которые зарабатывают 90% дохода, то этот процент дорастет до 90% :)

      У нас что, заработок приложения влияет на его процент от общего количества приложений вообще?
      • 0
        Ну, справедливости ради, можно ещё AIR добавить. Не знаю какой у него процент, но какой-то есть, наверное.
        • +1
          Есть такое дело. Говорят, даже вполне вменяемый процент. Что-то около 5-8%. Так что тоже со счетов сбрасывать нельзя.
        • 0
          К сожалению, наши эксперименты с эиром привели к выводу, что ничего особо требовательное к быстродействию на нем сделать не получится.
    • +2
      Однозначно, большинство кассовых приложений — кроссплатформа.
      • –1
        Большинство, но далеко не подавляющее. Пример: Infinity Blade. Не кроссплатформа. Одна из самых кассовых игр.
        Имхо, можно сосредоточиться для качественной игры под одну платформу, а можно пытаться впихнуть в рамки нескольких платформ, и получить годный результат. У всех подход разный.
        • +2
          Вообще-то, Infinity Blade сделан на Unreal Engine 3 :D.
        • +1
          Лол. Infinity Blade — это Unreal Engine, который благополучно существует и на андроиде тоже и на нем отлично делаются кроссплатформы. Например, Wild Blood.
          • 0
            Ок, забыл про этот момент. Пример некорректен.
  • –2
    Спасибо автору
    • 0
      Рад, если помогло!
  • 0
    Хех. Почти все книги от издательства Apress.
    За подборочку спасибо
    • 0
      Да, это так. К сожалению, ни O'Reiily ни Wrox не понравились по содержанию. Да и Apress быстрее книги для актуальной версии выпускает. И ещё один плюс от Apress — книги до выхода в электронном виде купить можно, в виде Alpha-версии.
      • 0
        А что конкретно не понравилось в O'Reilly? У всех книг приятный формат, информация доносится по существу, да и информация всегда актуальная. Насколько я помню, в Apress нет единого стандарта для всех книг и текст сильно разбавлен отсуплениями от темы.
        • 0
          Да и у тех и у других куча разных авторов, поэтому стили разнятся от книги к книге сильно.
          Apress как то лучше воспринимается — чисто вопрос личностного восприятия.
    • +2
      Если, надумаете покупать, то есть код скидки — FBP212 дает -50% от стоимости.
  • +3
    К тому времени, как прочитаешь все это, выйдет iOS 8 и можно будет цикл начинать сначала с новыми книгами) Пишите приложения — от простого к сложному, разбираясь по ходу — толку будет больше.
    • 0
      Отчасти вы правы. Но от версии к версии мало что меняется.
      К примеру, я начал читать книги и доки по iOS 6. Сделал аппликуху, но она, практически без проблем, и на iOS 5.x работает.
    • 0
      Согласен — так и делаю: пишу аппликухи, а книги в качестве самообразования в транспорте читаю (по 2 часа дороги на работу и домой).
      А насчёт скорости чтения — всё индивидуально. Я, когда разогнался, на каждую из этих книг по неделе максимум тратил. Да и не обязательно для каждой новой версии операционки книги брать — достаточно change читать и уроки по новым фишкам (типа Storyboard и Arc).
  • 0
    Спасибо за книжки, почитаю. Добавлю, что можно писать не только на ObjC, но и на C# (MonoTouch), и Ruby (RubyMotion). Сам сейчас играюсь с RubyMotion и очень доволен.
    • 0
      Полностью согласен! Сам сейчас поглядываю в сторону RubyMotion.
      Данный обзор не охватывает всё разнообразие программинга под платформу iOS, поэтому сторонние языки не упомянул.
      Хотя сам язык Objective-C понравился сильно — в своё время на Smalltalk некоторое время программил, а оттуда в ObjC много взято. Имхо, для меня один из самых красивых ООП языков, наравне с Ruby и Python.
  • +1
    Ваши предположения сколько времени у Вас уйдет на изучение этих книг по вечерам после работы? Мне кажется после их прочтения, возможно уже не актуально будет устраиваться на Junior`a придет мысль перепрофилироваться еще в кого-нибудь. Сам список возможно хорошо, но как roadmap я считаю слишком долгий старт.
    • 0
      Выше написал. Но подробнее, сколько у меня ушло для получения необходимого минимума:
      Learn C on the Mac — где то дней 6-7.
      Learn Objective-C on the Mac — 7 дней.
      Beginning iOS 5 Development — с выполнением примеров где то 9-10 дней.
      После этих 3 книг уже что-то своё писал на уровне junior, и параллельно по дороге на работу-домой (по 2 часа в каждую сторону) остальное читал (и до сих пор что то читаю).
      На абсолютное знание не претендую, мастером пока не зовусь :)
      Совсем же необязательно всё это читать — это, так сказать, обзор. Каждый выбирает то, чего не хватает. К примеру, если человек C знает — первую книгу читать вообще не обязательно. Если человек знает C++, C# или Java — книгу про Objective-C пробежит по диагонали, и ему этого достаточно будет.
      • 0
        Нет. Вам еще понадобится некоторое время что бы разобраться с XCode. Работу c Interface Builder сложно описать текстом, гораздо проще посмотреть на youtube. А вообще я бы по советовал книгу из цикла Head First «Программируем для iPhone и iPad» 2012 г. В книге описан полный цикл разработки приложения ну и как всегда много картинок и все понятно.
        • 0
          XCode — крайне грамотная среда разработки. Необходимые знания для работы с ней приобретаются за час максимум из видеоуроков или книг.
          «Программируем для iPhone и iPad» 2012 г. — книга хорошая, спору нет. И перевод хороший. Один минус — расчитана на iOS 4, то есть несколько устаревшая, как минимум, года на полтора. Но базу по ней получить всё равно можно.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.