- PVSM.RU - https://www.pvsm.ru -

Настоящее и будущее Swift: вопросы взрослым

Скоро два года с того момента, когда язык Swift был официально представлен, но его состояние остаётся неопределённым. С одной стороны, в топе «самых любимых языков» на Stack Overflow он на втором месте — видно, что попытка Apple «улучшить Objective-C» разработчикам понравилась. А с другой, в топе «самых используемых» его при этом нет — там по-прежнему Objective-C. Более того: сообщается [1], что сама компания Apple сейчас толком не использует в iOS свой собственный язык, пока что реализовав на нём только калькулятор.

Одна из причин в том, что язык ещё не достиг стабильности ABI: сейчас никто не гарантирует, что после выхода его новой версии ваш код не сломается. Однако в Apple называют важнейшим приоритетом исправление этой ситуации. А недавно на горизонте показалась [2] версия 3.0, которая должна принести много нового. Означает ли всё это, что настаёт время браться за Swift всерьёз, или целесообразность его использования всё ещё под большим вопросом?

Настоящее и будущее Swift: вопросы взрослым - 1

Мы решили расспросить о настоящем и будущем языка трёх специалистов из крупных компаний, уже использующих Swift и не понаслышке знакомых с темой. На наши вопросы ответили:

  • Максим Соколов (Avito);
  • Игорь Кашкута (Badoo);
  • Егор Толстой (Rambler&Co).

Насколько активно используется Swift в вашей компании?

Настоящее и будущее Swift: вопросы взрослым - 2Максим Соколов
Avito развивает несколько мобильных продуктов. Наша команда работает над тремя мобильными приложениями. Мы активно используем и будем продолжать использовать Swift. Одно из наших приложений полностью написано на Swift и доступно в App Store. Два других мы начинали писать на Objective-C, но на текущий момент весь новый код пишем только на Swift.

Настоящее и будущее Swift: вопросы взрослым - 3Игорь Кашкута
Мы не только используем Swift, но и опубликовали на GitHub [3] часть нашего проекта. Chatto был первой ласточкой, пробой языка в нашей CI инфраструктуре и проекте в целом — не без проблем, конечно, но дело удалось. В дальнейшем мы планируем использовать Swift и в остальных частях приложения.

Настоящее и будущее Swift: вопросы взрослым - 4Егор Толстой
Сейчас на Swift мы разрабатываем два проекта. Один из них, изначально разрабатывавшийся на этом языке, должен в течение месяца появиться в App Store. Второй, Рамблер.Почта, изначально был написан на Objective-C, но после первого релиза в рамках рефакторинга команда начала постепенно переводить его на новый язык.

Что дал этот опыт? С какими подводными камнями пришлось столкнуться? Рекомендуете ли использовать Swift другим, и в каких именно случаях?

Максим Соколов
Использование Swift имеет как преимущества, так и недостатки. К недостаткам я бы отнёс, во-первых проблемы со стороны IDE Xcode — случаются падения компилятора, самого Xcode, может отваливаться подсветка синтаксиса. Во-вторых, сам язык ещё очень молод, иногда не хватает каких-то инструментов: например, в сообществе всё ещё отсутствует адекватный мок-фреймворк, помогающий писать unit-тесты. Очень не хватает старого доброго OCMock, поддержка которого в Swift оставляет желать лучшего.
Некоторые конструкции языка могут существенно влиять на время компиляции, такие проблемы иногда вводят в ступор. Также большой проблемой сейчас является отсутсвие поддержки рефакторинга со стороны Xcode. Нужно учесть предстоящий выход Swift 3.0, где-то ломающий обратную совместимость. Будем надеяться, что Apple сделает шаги для улучшения ситуации.

Но, несмотря на все недостатки, я всё равно рекомендовал бы разработчикам начинать использовать Swift. Apple очень активно его развивает, и мы видим интерес к языку со стороны других крупных компаний, таких, как IBM. Компаниям стоит задуматься об этой инвестиции в будущее, поэтому Avito уже сейчас имеет приложение в App Store, полностью написанное на Swift. Swift помогает нам существенно повысить качество продукта и положительно сказывается на скорости разработки. Строгая типизация языка позволяет нам писать более безопасный код, поведение которого предсказуемо. Новые языковые конструкции, такие, как дженерики, отсутствующие в Objective-C, позволяют по-новому взглянуть на архитектуру приложения в целом и дают возможность писать код, который можно эффективно переиспользовать.

Игорь Кашкута
Мы не сталкивались с чем-либо, что было бы невозможно преодолеть, все проблемы решаемы. Где баг в языке находился (кстати, часто чинится новыми версиями компилятора, они молодцы), где надо было старый код подтюнить, чтобы его можно было использовать в свифте. Но в целом всё идёт достаточно хорошо. Лично я не вижу смысла в том, чтобы начинать новый проект на Objective-C, пишите сразу на свифте. Если только вам не нужен интероп с C++, эту часть всё же надо на objc делать, у свифта интеропа просто нет. Но опять, и это решаемо, можно сделать на objc и сверху нахлобучить свифт.

Егор Толстой
Опыт интересный — во-первых, поймали очень много различных подводных камней, и узнали, как с ними справляться. Во-вторых, поняли, что нужно срочно писать кодогенератор — время, требуемое на ручное создание моковых классов для написания юнит-тестов просто нереальное. Ну и, конечно, как и все остальные, успели огрести проблем со временем компиляции. Сейчас как раз занимаемся его оптимизацией.
Насчет рекомендаций — хороший вопрос. Как и в большинстве других случаев, здесь просто не может быть однозначного ответа. Нужно смотреть на конкретный проект, его команду, требования бизнеса. Если проект очень крупный и долгоиграющий — лично я все еще склоняюсь к Objective-C.

Как вы предполагаете, что будет со Swift в течение ближайшего года — например, произойдёт ли большой рост популярности с выходом версии 3.0? Может ли он оказаться востребованным ещё и за пределами iOS-экосистемы?

Максим Соколов
Я уже могу отметить большую популярность Swift. И в ближайший год мы наверняка увидим применение Swift за пределами мобильной разработки под iOS. Swift является open source-проектом, и мы уже можем наблюдать появление фреймворков для работы, например, с backend’ом и базами данных.

Игорь Кашкута
С моей точки зрения, версия 3.0 будет по-настоящему нормальной версией 1.0 — детские проблемы будут закрыты, гайды появились, Package Manager есть, исходные коды приложены. Большого скачка популярности я не ожидаю, язык принципиально не изменится — нет никаких преград, чтобы начать что-то делать уже сейчас. Я ожидаю, что рост будет происходить более плавно, по мере появления новых проектов — кажется, почти не осталось причин начинать что-то новое на Objective-C.

Что касается использования вне iOS (OS X, watchOS и tvOS ), то здесь всё не так радужно. С iOS всё понятно, раньше выбора не было, в будущем тоже не будет. У свифта как языка нет никаких «фишек», которые бы побудили разработчиков его использовать. Сравните с другими: Go простой и у него есть горутины; Scala про строгую и гибкую типизацию, но на многолетней базе JVM; Clojure — lisp с интересной идеологией, встроенной в язык, на многолетней базе JVM; JavaScript в виде Node.js позволяет иметь один и тот же код на клиенте и сервере, что открывает путь к изоморфным приложениям + модель программирования в ноде весьма простая и понятная большинству веб-разработчиков + npm, где всё есть. Rust — это такой новый безопасный С++, где всё под контролем, с понятным оверхедом и возможностью использования без рантайма.

Свифт берёт всего понемногу у всех, он очень неплох, но я пока не понимаю, какую нишу он может занять. Мне и самому очень интересно, но всё, что остаётся, — наблюдать.

Егор Толстой
Думаю, что в ближайший год хайп постепенно уменьшится. С другой стороны, сообщество взрослеет, разрабатываются новые архитектурные подходы, компоненты и библиотеки, которые будут упрощать жизнь разработчикам — так что появится больше аргументов в пользу его использования.
Про востребованность за пределами экосистемы пока еще говорить рано, на мой взгляд — время покажет.


4 июня на петербургской конференции Mobius [4] все ответившие выступят с докладами, касающимися iOS-разработки. Один из их докладов будет непосредственно о Swift: Максим Соколов подробно расскажет [5] об использовании в нём дженериков. Если после этого материала вы ощутили, что для вашего проекта настало время использовать Swift — не пропустите :)

Автор: JUG.ru Group

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ios/121593

Ссылки в тексте:

[1] сообщается: https://medium.com/ios-os-x-development/is-apple-using-swift-4a6c80f74599#.g7zc66wew

[2] на горизонте показалась: https://swift.org/blog/swift-3-0-release-process/

[3] на GitHub: https://github.com/badoo/chatto

[4] Mobius: http://mobiusconf.ru

[5] подробно расскажет: http://mobiusconf.com/talks/sokolov/

[6] Источник: https://habrahabr.ru/post/301600/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best