Как грамотно начать погружаться в разработку под iOS и что для этого нужно?
Здравствуйте, друзья.
Решил кардинально сменить сферу своей деятельности (оптимизация и продвижение сайтов, и интернет-магазины) и серьёзно подойти к iOS-разработке. Какого-то конкретного опыта в программировании нет вообще, всё только в общих понятиях на уровне базовой теории. К самой разработке подхожу с точки зрения профессионального развития и заработка на этом, а также с точки зрения просто интересного дела и возможных своих проектов.
Тостер по моей теме читал, поэтому вопросов а-ля "какие книги читать?" задавать не буду.
1. Насколько срочно мне понадобится MacBook для погружения в разработку? Однозначно знаю, что без него в итоге никуда. Дело в том, что купить не проблема (не миллионер, но для серьёзных профессиональных перемен готов потратить 1000-1500$ на рабочую технику), но есть ли смысл, не зная ещё абсолютно ничего по теме, в таких начальных тратах? Достаточно ли, скажем, установить на Windows 7 (если что: HP, 2 x 1.7 ГГц, 2 ГБ памяти, встроенное видео) какой-либо эмулятор и хотя бы первые пару месяцев разобраться с начальной базой и основными понятиями?
2. Насколько мощный нужен MacBook для iOS-разработчика? Скажем, достаточно ли будет MacBook Air 13" (Intel Core i5, 4 Гб, 128 Гб (SSD), Intel HD Graphics 5000)? Или смотреть какой MacBook Pro 13'' Retina (Intel Core i5, 8 Гб, 128 Гб (SSD), Intel Iris graphics 5100)? Или, может, ещё что мощнее нужно (процессор i7, памяти 16 Гб, видео не встроенное)? Понятное дело, что если деньги позволяют, лучше брать пошустрее, но, к сожалению, покупать MacBook топовой конфигурации -- ну совсем сейчас неудобно в финансовом плане. С другой стороны, взять старенький MacBook у кого-то с рук, чтобы потом менять его через полгода -- тоже не очень хочется.
3. Нужен ли сам девайс с iOS для старта обучения разработки? Или на Windows 7 / OS X можно будет как-то эмулировать iPhone, чтобы смотреть, что получается? Или это как-то вообще по-другому делается? :-) Опять же, купить не большая проблема, но нужно ли мне это сейчас? И, если он необходим, ещё один смежный вопрос: покупать что-то свежее (5 / 5s) или не важно (4s)?
4. Есть ли необходимость в классических курсах по Objective-C? Или же лучше самостоятельно разбираться с нуля? Живу в Минске, курсы ничего особенного не представляют, всё обычное (подходы, методики, общий уровень). Ещё знаю, что программирование -- это постоянное самообучение. Вопрос: есть ли смысл пройти месячные курсы, чтобы получить стартовую базу, а уже дальше двигаться самостоятельно? Или же без проблем можно старт взять дома?
5. Как планировать процесс самообучения? Ничего нового: прочитал -- попробовал сделать, непонятно -- поискал в интернете, сильно непонятно -- вперёд на форум? Просто примерно так давно я учил HTML. Но, понятное дело, Objective-C дело серьёзное, как и все смежные технологии, и будет ли толк с такого обучения? Или нужна какая-то конкретная система и четкая градация повышения своего уровня (сначала прочесть книгу, потом пройти курс, потом изучить эту смежную технологию и так далее)? Подскажите, пожалуйста, как входили в iOS-разработку именно вы.
Будущие коллеги, уверен, что во время процесса обучения у меня будет возникать уйма вопросов, ради которых стыдно создавать новые темы. Если у кого-нибудь из вас есть возможность пару раз в неделю поотвечать на мои вопросы и кратко проконсультировать по какой-нибудь теме -- дайте, пожалуйста, об этом знать в ответах (оставьте ваши любые контактные данные и условия (бесплатно/платно и так далее)). У всех свои дела, альтруистов очень мало -- всё понимаю, поэтому мои обращения к вам будут максимально редкие и по делу.
Спасибо большое за ваше внимание и интерес к моим вопросам. Хорошей недели всем! ;-)
Нормально начать разрабатывать для apple можно только на компьютерах apple. Это самая большая преграда. Не стоит связываться со всякими виртуальными машинами и прочими гениальными идеями. Экономия будет очень сомнительная. Только mac. Для начального уровня не важно что именно это будет: MacBook, Macmini, iMac. Если собираетесь брать новое устройство, то по мне лучше взять 13 MacBook Pro без Ретины. Причем взять минимальную конфигурацию. Почему именно ее? Эту модель можно доапгрейдить. Добавить Ram (до 16 Gb), поменять или добавит HD или SSD диск. В остальных MacBook'ах это уже сделать нельзя, память впаяна в плату. Retina, ну не знаю, все таки не бюджетный вариант. Retina хороша 15 дюймовая в топовой комплектации, но там и цены заоблачные. А у 13 дюймовых моделей все равно придете к тому, что нужен внешний монитор. Тогда смысл в ретине пропадает. По поводу устройств их можно вообще не иметь первый год -полтора. Эмуляторы прекрасно работают с основными функциями. Опять таки для запуска приложения на реальном устройстве нужна лицензия разработчика. Стоит она 100$ В год. (Для запуска на эмуляторах такая лицензия не нужна.)
По поводу самого программирования: тут нужно начинать изучать с ООП, без этого никуда. ( Что такое классы, объекты, указатели, конструкторы и т.д.) т.е. изучать теорию. Лучший выбор это любая книжка про Objective C. Причем в начале просто сидеть и читать изучая термины. В начале будет такая каша в голове, что иногда будет казаться, как этот бред вообще можно понять и освоит. После посмотреть какое-либо обучающее видео на эту тему. И так постепенно, со временем что-то начнет усваиваться. Только ПОСЛЕ этого нужно Обязательно пойти на курсы. Там все систематизируют и раставят по полочкам. Сразу с 0 идти на курсы не советую, тяжело. Усвоите очень мало. Любую информацию нужно переварить, обдумать, а тут бац, новая подвалила, Эээ я еще это не запомнил и т.д. По опыту скажу курсы без подготовки, деньги на ветер.
P.s. Если остались вопросы пишите, чем смогу помогу. (densobakacom собака mail.ru)
Буквально вчера вечером приобрёл MacBook Pro 13'' Retina (Intel Core i5, 8 Гб, 128 Гб (SSD), Intel Iris graphics 5100). Сейчас читаю Пола Макфедриса - Переходим на Mac :-)
Спасибо большое за информация по эмуляторам: она очень полезна для меня. Т.к. буквально полгода назад разбил свой Айфон, взял на пробу Nokia и в ближайший год не хотелось бы её менять. Хотя, конечно, "яблоки" в разы лучше.
1) Нативный макбук и ничего другого, можешь взять мак мини, тем более их обновили
2) Всё уже зависит от твоего бюджета, но думаю логично, чем дороже - тем комфортней работать, и да, есть смысл смотреть в сторону ретина 13", ибо это золотая середина между портативностью и мощностью, да и экран будет радовать
3) Нет, девайс на старте не нужен, туторы делаются в эмуляторе, но если есть возможность, можешь купить минимальный ipad mini with retina
4) Вышел Swift, есть смысл начать изучение с него, ибо обж-с очень сложен (язык 15 или 20 летней давности)
5) Зашёл на https://www.codeschool.com/ и делай туторы (обж-с) или по эппл туторам (есть в iBooks)
6) На профильных сайтах есть ссылки на конференции в скайпе, там и приютят, затролят и помогут :)
Здравствуйте, popcorn2d! Благодарю вас за краткие, но дельные советы по всем моим пунктам. Итого:
1. Единственная причина, по которой хотелось бы оттянуть покупку Мака (такое маловероятно, но всё может быть, сами знаете) -- не потяну разработку под iOS, окажется всё в миллионы раз сложнее и вынужден буду смирится с моим решением об обучении. Хотя, как уже говорил выше, очень хочу, понимаю, что будет сложно, поэтому такое маловероятно.
2. Так и думал, когда искал золотую середину. Вы подтвердили это, спасибо. Смотрю в сторону MacBook Pro 13'' Retina (Intel Core i5, 8 Гб, 128 Гб (SSD), Intel Iris graphics 5100).
3. Супер, что не нужен девайс со старта. Сэкономлю 500$, после НГ возьму. Наверное, если уже брать какой-то девайс, есть смысл взять iPhone 5 или 5s? Не намного он дороже выходит iPad mini, но функционала телефонного побольше ведь там (возможно, приложения будут связаны именно с ним). Или я ошибаюсь и функционал в Айфоне и Айпаде почти идентичен?
4. Знаете, я хотел задать вопрос: так всё-таки что учить Objective-C или Swift. Но побоялся, что закидают тапками. Более того, везде в соседних темах 90% советующих рекомендуют начинать с Obj-C, а потом переходить к Swift. Почти никто не сказал, что есть смысл приходить в iOS-разработку, начиная с полного нуля учить Swift. Что вы скажете?
5. Так туторы по Обж-С или таки сразу копать Swift? ;-)
1) Мак очень хороший компьютер, как минимум вы останетесь довольны качеством
2) Без комментариев
3) У меня 5s, но смотрю в сторону 6ки (не плюс), на самом деле, можно любой девайс под айос, на что денег хватит, как говорится
4) Swift, обж-с будет очень и очень тяжек без опыта программирования, например:
Objective-c
#import
#import
int main(void)
{
NSLog(@"Hello, world!\n");
return 0;
}
Да, очевидно, что Swift легче. Но многие пугают, что мало кто будет связываться с разработчиком, который знает Swift без Objective-C. Ну и пишут, что если влезать в эту тему, то нужно будет часто сталкиваться с кодом Obj-C, т.к. 99% приложений уже написано на нём.
Как я понимаю, зная только Swift, можно с нуля писать полноценные и любые приложения под iOS, верно? То есть, вообще без кода Obj-C?
Ну и если вы уж любезно консультируете меня по вопросам ЯПов для iOS, то подскажите, пожалуйста: а какие ещё технологии нужно будет знать? Понятно, что ситуации бывают разные, но что должен знать ещё iOS-разработчик, если, условно скажем, он выучил и хорошо практикует только Swift. Накидайте терминов популярных (имею в виду не только ЯП, а ещё какие-то технологии о которых нужно знать).
На ближайшие пару лет можете забыть о разработке на Swift без знаний Obj-C.
Если вам понадобится что-то серьезнее хеллоуворлда, то или вы будете писать велосипеды, или вы будете ориентироваться в Obj-C коде уже реализованных решений.
Про поддержку уже написанных на obj-c приложений даже и говорить не буду.
@igafonov Я считаю наиболее правильным, на данный момент, делать основной упор исключительно на Obj-C.
Т.е. основной мастхэв для iOS разработчика - знать, как та или иная задача решается в рамках Obj-C.
Swift - скорее приятное дополнение, и больше показывает что разработчик следит за индустрией и готов развиваться. Но на данный момент все, что нужно - действительно следить за новостями данного языка, соотносить их с теми или иными возможностями Obj-C.
И да, мне кажется очевидным преувеличением сложность Obj-C.
Он несколько перегружен, за счет тесного слияния с С, и нестандартен в плане синтаксиса, однако ничего запредельно сложного и неординарного тем нет.
Главное - понять принципы.
@azShoo, благодарю за развёрнутый ответ. Жить стало полегче, правда.
Может, подскажете вот ещё что: Obj-C -- понятно, Swift на перспективку -- понятно. А какие технологии ещё нужны для умения полноценно писать приложения под iOS? Ну чтобы ознакомиться, быть в курсе, что ещё будет нужно со временем.
@igafonov На самом деле все зависит от приложений, над которыми придется работать.
Есть совершенно общие для всех разработчиков вещи по процессу, типа TDD и работы с юнитами, умение работать с Git\SVN, знает, что есть ООП и прочее.
Есть более привязанные к непосредственному написанию кода - это многопоточность, работа с апи, и т.д.
Есть чисто iOS вещи, типа общие знание о Core Data, очереди, фреймоворки и прочее.
Самый просто способ - полистайте вакансии, выпишите по пунктам и вперед.
В целом, я наверное не самый лучший советчик, ибо сам не так давно парсил интернеты в поисках ответа на те же вопросы. :)
@igafonov Успехи, в целом, переменные. До смены деятельности пока не дошел - тяну знания до уровня, когда будет не стыдно проваливаться на собеседованиях :)
Для себя начинал obj-C на codeSchool (немного по-детски, но для понимания синтаксиса подача, на мой взгляд, идеальная).
А дальше накачал миллиард книг (начиная от, на мой взгляд, местами слишком детального O`Reily программируем под ios) и видеороликов и прибегал к ним по мере реализации тех или иных фичей.
По эмулятором и макбукам. На винде вы НИЧЕГО не поднимете из этого. Вариант - либо хакинтош, либо виртуалка с макосью. Под макосью есть встроенные в xCode эмуляторы. На первое время (если старт совсем с нуля) этого вам хватит.
По процессу обучения. Лично мой выбор - чтение литературы +параллельная реализация своего проекта. Т.е. прочитайте совсем основы, посмотрите best practises какие нибуть, и потом начинайте что то писать ДЛЯ СЕБЯ (ни в коем случае не расчитывайте потом заработать на первом проекте) и параллельно читать литературу.
По эмуляторам и Макбукам вас понял. В принципе то, что мне нужно на самое первое время. Тогда вам вопрос: а что лучше поднять -- Хакинтош или виртуалку под Макосью?
И, коль вы уже начали отвечать именно по теме железа, ответьте, пожалуйста, на мой второй вопрос (о нужной мощности Макбука для разработки).
PS. Да, конечно, даже близко не думаю заработать на первом проекте и/или в первые полгода-год обучения.
Если у вас железо рабочее позволяет - делайте виртуалку сначала. Поищите по торрентам maverics для VMWare. Там надо еще саму вмварь патчить, инструкции в раздаче должны быть. С хакинтошем тонна трабблов может быть, как и с установкой реальной макоси на неэппловское железо. Тут надо искать именно под ваше железо. Если ноутбук у вас - тут проще, ищите по модели ноутбука. Если проц amd - можете сразу забыть про невиртуалку.
По мощности реальных девайсов сказать нечего - не сильно в них шарю.
1. Macbook оптимально - пробовал IDE под Винду - постоянная не хватка API - не успевают обновлять.
2. Я работаю до сих пор на 13' 2008 - ну чуток лагает но норм.
3. А вот тут весело - нужен iOS девайс на где-то 4/5 месяц обучения если у вас большой проект - потому что все может отлично работать на эмюляторе но при запуске слетало на телефоне. Ну и самое весело это экраны - сейчас началась проблема та же что с Android - кучу экранов с приходом 6 и 6+.
4. Мммммм - не обязательно - в конечном можно писать и на Objective-C, и C++, и C - тут уже как пойдет. Если физика вам нужна (i.e. игра) то тут вы в С упретесь.
5. Про обучение - www.raywenderlich.com - очень советую взять какой то проект и с помощью него идти - ставьте перед собой задачу "создать IM или игру" и идите по этому пути натыкаясь на подводные камни (с iOS без них никак).
Большой совет - не пытайтесь сразу бежать за оптимизацией приложения - сперва сделаете чтобы просто работало - потом фиксите (скорее всего первый свой проект вы будете с нуля переписывать парочку раз).
Здравствуйте, Setrino! Благодарю за ваше внимание к моим вопросам.
1. Да, таки коллективно решили, что MacBook почти необходим.
2. У меня выбор: MacBook Air 13" (Intel Core i5, 4 Гб, 128 Гб (SSD), Intel HD Graphics 5000) или MacBook Pro 13'' Retina (Intel Core i5, 8 Гб, 128 Гб (SSD), Intel Iris graphics 5100). Первый стоит 1100$, второй 1400$, разница 300$. Не так много, но не хочу переплачивать за "ну хай будет на всякий случай".
3. Насчёт Айфона тоже пока что коллективно решили, что можно отложить покупку на 4 месяца смело. Это хорошо. Ну а там уже буду смотреть, что мне действительно нужно. Кстати, а вы бы советовали через полгодика взять 5/5s или 6/6s (исходя из размеров экрана и моих целей)?
4. Игр делать не планирую (сам вообще не играю, поэтому скучно будет). Планирую делать современные симпатичные приложения, возможно, какие-то более или менее крупные сетевые проекты. Просто выше посоветовали вообще сразу начать копать Swift, поэтому сейчас и задумался. До создания этой темы планировал взяться за Objective-C, а потом плавно перейти на Swift. Сейчас уже есть идеи сразу идти учить Swift. Про С и С++ не думал вообще. А нужно? Учитывая что будет Obj-C и позже Swift.
Также спасибо за советы по обучению и полезные ссылки. Всё обязательно просмотрю, когда будут накидывать примерный план.
1. Гудт
2. Если брать 13' то тогда нужен еще один монитор (мелковато работать). 4GB оперативной памяти хватит и в Ретине до сих пор не вижу смысла (много приложений не поддерживает Retina до сих пор и если ставим BootCamp то вообще грусть, печаль.
3. Гудт. Смотря на то что происходит брать надо 6 (все 4 телефона 16:9 - делаем на один, "должно хорошо смотреться на всех").
4. Ок. Swift полярен он Obj-C - Один функциональный другой больше чисто объектный. Я все же бы настоял чтобы сперва начать с Obj-C - вы скорее всего все равно придете к тому что местами придется с ним работать - хотя бы основы бы надо. С и С++ - ну если приложение то скорее всего не надо, но никогда не знаешь.
По п. 2. Работать с 4ГБ памяти возможно, но очень тяжело. 8ГБ уже норм. Хотя много в этом вопросе не бывает :) i7 vs i5 и количество ядер не так критичны.
1. Нет. Можно установить виртуалку/хакинтош.
2. Можно вообще мак мини.
3. Нужен только если вы фрилансить будете. А так - симулятора для обучения вполне хватит.
4. Не обязательно.
5. Идете в любую компанию на стажировку с нуля, зарплата низкая, но опыт набрать поможет. Это будет лучший вариант, т.к. обучение сразу на реальных задачах + помощь от знающих людей.
Вам обязательно понадобится MAC OS компьютер, будь то макбук, или же mac mini. IOS устройство несколько более вторично, поскольку можно на первых порах тестировать на симуляторе.К тому же, чтобы тестить на устройстве, вам понадобится сертификат разработчика. При выборе же IOS девайса, имейте в виду, что тест на самом свежем устройстве не даст вам понятия о том, насколько все быстро будет выполняться на более старых устройствах, в то время, как если у вас все работает шустро на 4S, то, разумеется, и на 6+ все будет отлично. С другой стороны, приобретая более старый девайс, вы должны понимать, что весьма скоро APPLE перестанет выпускать для него обновления, а это для разработчика критично.
По вопросам, касающимся разработки, равно, как и получения сертификата,всегда рад помочь. Моя почта ioscreated@gmail.com
Вопрос не совсем в тему, но, возможно кто-то сориентирует.
Книга iOS.Programming.The.Big.Nerd.Ranch.Guide.4th.Edition (Aaron Hillegas) есть в русском переводе?
Если да, то где бы ее купить?