Как правильно переквалифицироваться на Desktop/Mobile Apple apps?

Прошу не пинать, не смеяться, а понять, и помочь, чем сможете.

Вот и настал тот день, когда я понял, что в web-разработке мне как-то некомфортно. Увы но чувствую что пора покидать родные стены и идти дальше, пока башка варит и может запоминать.

Итак:
Что я знаю сейчас:

html5/css3/Jquery/JqueryUI/vanilaJS/pure Java Script <- фронтенд. Вот это вот все вплоть до того, что можно делать крутые эффекты в крутых связках. Любая верстка любого сайта.

PHP/Yii framework/MySQL <- бэкенд. Тут не до самых высших материй, но тоже уверенно и со вкусом.

Хочу переехать на iOS/MacOS на основательном уровне. 2 дня уже рыскаю в веб, и все что нашел - это старенький курс по созданию приложения под iOS (типа кодер учит дизайнера), это все прикольно, но на уровне школьного развлечения.

Нашел гору книг, из которых полгоры просто можно отправить в костер или в музей, устарели хорошенько.

Сам по себе я человек туго доходящий, и все аббревиатуры и сленг мне давался с трудом (пока дошло...), как и на пример я не могу читая книгу отличить С от С++, как бы это не звучало смешно, а как код из книги 2008 года выполнять в XCode в 2014... Не всегда работает, вообще загадка (как и все ошибки, кроме эмпирических конечно же...).

Что есть из железа:
27-inch iMac 2.9 GHz Core i5 и iPhone 5s на 16гб.

Чего требуется
Мне просто как и с вебом в свое время не ясно: с чего начать, как понять архитектуру приложений (как ее создать конечно же), как и на чем лучше писать (язык программирования), что тут с базой данных я вообще ни сном ни духом, сразу писать в XCode или есть еще что для самого-самого-самого чайника, как можно понять архитектуру (как на пример я понял паттерн MVC и Yii с его вкусностями ), что есть фронтенд, что есть бэкенд, как пишут анимации, где это все найти я просто не понимаю. Увы... =(

Вопрос я задал так явно не потому, что я не умею пользоваться гуглом или яхо, или яндексом, или хабром, или тостером, или еще чем, а потому что я просто не могу вкурить, что и к чему.

Тем, кто помог, заранее спасибо, тем кто начал умничать и т.д.... И вам тоже спасибо.

З.Ы. Кодить в полном размере вплоть до создания чего-то прекрасного и большого было мечтой детства (еще хотел быть пиратом или наемным киллером, по моральным и правовым обстоятельствам отпало само... =) ).
  • Вопрос задан
  • 3122 просмотра
Решения вопроса 2
GxocT
@GxocT
Ссылки кидаю на Shelfari, там есть подробное описание книги, возможность покупки на Amazon, а также вы можете создать свою полку с книгами для чтения.
Варианты книг привожу в оригинале, так как они обычно более адекватны и материал более свежий. Думаю не составит труда найти их переводы на русский язык.

1. Рекомендую начать с этого.
www.shelfari.com/books/36153187/iOS-Programming-Th...
Много примеров, общая теория. Доступно и понятно.

2. www.shelfari.com/books/35960099/Programming-iOS-6
Очень качественная книга с подробным описанием теоретических аспектов. Практики в ней маловато, зато разложите свои знания по полочкам. К книге нужно приступать после прочтения K&R и получения базовых знаний программирования под iOS, иначе рискуете многое не понять. В декабре вышла версия книги под iOS 7, если не ошибаюсь ее разбили на 2 тома.

3. Классная книга по программированию для нескольких потоков и управлению памятью.
www.shelfari.com/books/25895332/Pro-Multithreading...

4. Две книги с готовыми рецептами для iOS. Рассматриваются определенные задачи и даются их решения.
www.shelfari.com/books/27011451/The-iOS-5-Develope...
www.shelfari.com/books/33213224/iOS-6-Recipes-A-Pr...

5. Подробное описание по работе с Core Data. Обертка для работы с базами данных под iOS.
www.shelfari.com/books/25871163/Pro-Core-Data-for-iOS

Также рекомендую обратить ваше внимание на видео лекции по iOS программированию. Лекции ведет Paul Hegarty, человек знающий о разработке не понаслышке.
itunes.stanford.edu
Ответ написан
Комментировать
@gleb_kudr
Архитектура приложений под десктоп/мобилки существенно проще архитектуры веб-приложений. У вас есть страница, все элементы которой контролируются одним процессом, который происходит тут же на устройстве (UI тред). Как будто это html+ js, а вместо браузера - операционная система, которая контролирует жизнь треда. Обычно есть даже некий аналог html разметки (на каждой платформе свой).
Этого уже достаточно для написания простейшей программы. И по сути это фронтенд.

А далее, например, если вы хотите реализовать обращение к данным но не блокировать интерфейс пользователя, то вы делаете это в отдельном треде, к которому обращается UI тред и получает коллбеки по завершении. По сути это механизм клиент-сервер, только реализованный в одной и той же программе. Так работают любые нормальные десктопные приложения и добрая часть мобильных. Сервер здесь реализуется точно так же как сервер в вебе, только обычно используется тот же самый язык что и для работы с UI + упрощенные способы хранения данных, например xml, SQLite. На мобилках данные хранятся отдельно от кодов программы, для этого им выделяются директории.
В чем отличие от веба? В том, что не всегда реально нужно выделять "серверную" часть как отдельный тред и вообще, как нечто отдельное. Многие вызовы происходят быстро (т.к. одна физическая машина) и не успевают блокировать UI. Обычно надо соблюдать некий баланс сложности архитектуры и производительности.

Далее еще круче, вы можете вынести функционал сервера реально на сервер и получите полный принципиальный аналог веб-приложения, только клиент сайд у вас будет реализован с помощью нативных методов в оболочке из операционной системы. А сервер будет крутиться на чем угодно, хотя на php. Плюс можно зафигачить некую кеширующую прослойку на клиенте, тогда вы получите толстый клиент (например, facebook)

Все написанное справедливо как минимум для iOS, Android, Windows Phone, Windows.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@scft
1. Просто начните писать. По личному опыту уже успел понять, что боязненно-перфекционистское, академично-книжное и зубрёжное отношение к предмету - помехи. Всё равно для того чтобы писать достаточно быстро и "привычно" - нужно как бы привыкнуть к инструменту, не бояться его использовать, ощущать его изнутри.
Возьмите классический короткий k&r для начала, в процессе чтения играйтесь с доступными примитивами - а далее должна сойти любая популярная литература по Obj-C, например ссылки выше.

2. В прикладном программировании, однообразной типичной архитектуры или какой-то центральной платформы нет (потому что задачи куда разнообразнее динамического вывода страниц и работы с бд), есть только библиотеки, из них я бы заметил libboost и Qt. (Другое дело что не все библиотеки кроссплатформенны, и не под все платформы есть кроссплатформенная библиотека для задачи.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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