Стэнфордский университет, США — один из лучших в мире в области информатики (Computer Science). Он щедро делится своими курсами, и одним из самых популярных и успешных курсов является курс CS193P по разработке приложений на iOS, который читает профессор Пол Хэгерти. Это курс читается ежегодно, начиная с 2010 года. На данный момент актуальным является курс CS193P «Developing iOS 10 Apps with Swift», Зима 2017 года — «Разработка iOS 10 приложений с использованием Swift», и на момент написания статьи уже выложены почти все Лекции (15 из 18) и почти все Задания (5 из 6) на iTunes U (но можно смотреть и на Youtube).
В новом курсе отчетливо видно, что профессор сделал небольшой разворот всего курса от ОБЪЕКТНО-ОРИЕНТИРОВАННОГО программирования, к ФУНКЦИОНАЛЬНОМУ программированию с множеством неизменяемых объектов с APIs похожими на математические функции.
Конечно, iOS вовсе не была сконструирована на основе идеи функционального программирования. Но люди, которые изобретали Swift, держали “в голове” идею о функциональном программировании. Так что при разработке вашего iOS приложения (по крайней мере в части Модели) вы можете использовать множество элементов функционального программирования.
Это новый рубеж в iOS программировании, потому что в течение 10 лет люди, в основном, использовали в iOS программировании только reference type объекты, имея в виду концепцию объектно-ориентированного программирования. Но когда вы программируете на Swift с помощью структур
structs
и перечислений enums
, и особенно если вы подключаете механизмы протоколов protocols
и Generics
, то вы можете реально сделать прекрасную работу, имеющую дело с реальным функциональным программированием.И начиная прямо с Лекции 1 и Задания 2 нового курса акценты расставлены совсем по-другому. Теперь на первом месте
value types
, а о reference types
— лишь мимоходом, подробно о структурах structs
и перечислениях enums
, а о классах classes
— лишь мимолетом. Очень подробно о диапазонах Range<T>
и о том, при каких условиях Range<T>
становится последовательностью Sequence
и позволяет применять к себе синтаксическую конструкцию for in
. Начинает профессор с очень подробного рассказа о синтаксисе Swift 3 и о возможностях Xcode 8. Буквально объясняет каждый символ. Далее он показывает как проектировать Модель с использованием структуры
struct
, отталкиваясь от public API
Модели, как добиться расширяемой функциональности в структурах struct
, ведь мы не можем использовать создание subclass
, как в классе class
. Показано создание вложенных структур struct
и перечислений enum
. На очень коротких фрагментах кода объясняется, когда стоит применять Optional
, а когда — нет, исходя из семантического содержания Optional
. Большое внимание уделено перечислениям enum
, имеющим ассоциированные значения любого типа, в том числе и замыкания (closure
). Рассматриваются такие возможности свойств как наблюдатели willSet{}
и didSet {}
и отложенная инициализация lazy
. Поэтому чрезвычайно полезен для начинающих разработку iOS приложений на Swift, но не для начинающих изучать программирование как таковое.Особый прорыв в изучении программирования на
Swift
в операционной системе iOS удается достичь при выполнении Заданий, которые предлагаются на этом курсе. Они, как правило, очень интересные, и вы, несомненно, получите удовольствие от их выполнения. Но они также потребуют от вас знание всего спектра приемов работы в Swift со структурами struct
, перечислениями enum
, семантическое понимание Optional
, использование замыканий, кортежей и т.д, а также утонченное знание iOS 10: «жизненный цикл» View Controller
, многопоточность, Scroll View
, Table View
, Collection View
, Core Data
, Dynamic Animation
и т.д.Уже 3 года существует сайт, который помогает вам пройти этот замечательный курс до конца и выполнить все Задания этого курса. Задача данного проекта в том, чтобы вывести вас, как разработчика, на достаточно высокий уровень iOS программирования, когда вы свободно сможете общаться с экспертами и понимать все, что говорится на WWDC, а также следить за созданием
Swift 4
на сайте Swift.org, а не “болтаться” вечно в обучающих материалах. После качественного самостоятельного программирования Заданий курса CS193P
никакие обучающие курсы уже будут не нужны.На этом сайте выложены все необходимые материалы для изучения стэнфордских курсов: неавторизованные русскоязычные конспекты лекций, демонстрационные примеры, Задания на русском языке и варианты решений Заданий для iOS 10 и Swift 3.
Процесс выполнения заданий на
Mac
в Xcode 8
— очень увлекательный: хорошая информационная поддержка, результат отображается на симуляторах iPhone и iPad или на реальных устройствах, визуализация процесса отладки. Самое интересное заключается в том, что из
Xcode 8
вы можете запустить демонстрационные примеры и выполненные вами Задания на своем устройстве (или поделится с друзьями) совершенно бесплатно — для этого не нужно иметь сертификат разработчика Developer Account
, стоимостью 99 $/год. Начиная с Xcode 7
политика Apple
по отношению к разработчикам изменилась: они стараются привлечь к разработке приложений более молодых программистов.Если вы являетесь опытным программистом на каком-то другом языке (
Java
, Python
, C++
), то, как показывает опыт, вам достаточно 2-3 недель, чтобы разобраться с синтаксическими конструкциями Swift
( у него очень короткий период вхождения). А потом — добро пожаловать на стэнфордский курс «Developing iOS 10 Apps with Swift», чтобы попробовать свои силы на выполнении Заданий, текст которых представлен на русском и английском языках здесь. Первые три Задания не связаны ни с многопоточностью, ни с таблицами Table View
, ни с базами данных Core Data
, ни с анимацией. Это чистая практика на знание Swift
и MVC
. Здесь вам придется управлять хранением данных в UserDefaults
с помощью вычисляемых переменных с кодом в пару строк, понять, что захватывают замыкания (closure), и как «разорвать» циклическую ссылку памяти с помощью weak
и unowned
в списке «захвата», что такое @escaping
функции, как работать с кортежами и т.д. На Github есть примеры решения Заданий. Так что стоит попробовать и использовать все свои навыки в программировании на Swift. Кроме того, можно сравнить свое решение с уже имеющимся.P.S.ОБСУЖДЕНИЕ МАТЕРИАЛОВ курса «Разработка iOS приложений с Swift» проводится на private форуме на Piazza. Вопросы можно задавать там.
Для регистрации вам необходимо пройти по ссылке:
piazza.com/moscow_physical_engineering_institute_bestkora.com/spring2017/mf141
и набрать private код mf141.
Поделиться с друзьями
Lailore
Что бы никто не терял времени, как я.
Это не туториал, а реклама переводов курсов. Стоимостью 500р.
MaM
Плюс один, интересно когда до людей дойдет, что книжки в 200 страниц по цене 1500 и платные интернет курсы, не особо помогают образованию и созданию специалистов.