![][1]
Стэнфордский университет, США — один из лучших в мире в области информатики (Computer Science). Он щедро делится своими курсами, и одним из самых популярных и успешных курсов является курс CS193P по разработке приложений на iOS, который читает профессор Пол Хэгерти. Это курс читается ежегодно, начиная с 2010 года. На данный момент актуальным является курс CS193P [«Developing iOS 10 Apps with Swift»][2], Зима 2017 года — «Разработка iOS 10 приложений с использованием Swift», и на момент написания статьи уже выложены почти все Лекции (15 из 18) и почти все Задания (5 из 6) на [iTunes U][3] (но можно смотреть и на [Youtube][4]).
В новом курсе отчетливо видно, что профессор сделал небольшой разворот всего курса от ОБЪЕКТНО-ОРИЕНТИРОВАННОГО программирования, к ФУНКЦИОНАЛЬНОМУ программированию с множеством неизменяемых объектов с APIs похожими на математические функции.
Конечно, iOS вовсе не была сконструирована на основе идеи функционального программирования. Но люди, которые изобретали **[Swift,][5]** держали “в голове” идею о функциональном программировании. Так что при разработке вашего iOS приложения (по крайней мере в части Модели) вы можете использовать множество элементов функционального программирования.
Это новый рубеж в iOS программировании, потому что в течение 10 лет люди, в основном, использовали в iOS программировании только **[reference type][6]** объекты, имея в виду концепцию объектно-ориентированного программирования. Но когда вы программируете на Swift с помощью структур `structs` и перечислений ` enums`, и особенно если вы подключаете механизмы протоколов `protocols` и `Generics`, то вы можете реально сделать прекрасную работу, имеющую дело с реальным функциональным программированием.
[Читать дальше →][7]
[1]:
https://habrastorage.org/files/38d/c44/73f/38dc4473fbf94b2986b2f7a2866e5199.png
[2]:
https://itunes.apple.com/ru/course/developing-ios-10-apps-with-swift/id1198467120?l=en
[3]:
https://itunes.apple.com/ru/course/developing-ios-10-apps-with-swift/id1198467120?l=en
[4]:
https://www.youtube.com/watch?v=ilQ-tq772VI
[5]:
https://www.apple.com/ru/swift/
[6]:
https://developer.apple.com/swift/blog/?id=10
[7]:
https://habrahabr.ru/post/326342/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut