Теперішнє і майбутнє Swift: питання дорослим

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

Одна з причин в тому, що мова ще не досяг стабільності ABI: зараз ніхто не гарантує, що після виходу його нової версії ваш код не зламається. Однак в Apple називають найважливішим пріоритетом виправлення цієї ситуації. А нещодавно на горизонті показалася версія 3.0, яка повинна принести багато нового. Чи означає все це, що настає час братися за Swift всерйоз, чи доцільність його використання все ще під великим питанням?



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

  • Максим Соколов (Avito);
  • Ігор Кашкута (Badoo);
  • Єгор Товстої (Rambler&Co).



Наскільки активно використовується Swift у вашій компанії?
Максим Соколов
Avito розвиває кілька мобільних продуктів. Наша команда працює над трьома мобільними додатками. Ми активно використовуємо і будемо продовжувати використовувати Swift. Одне з наших додатків повністю написано на Swift і доступний в App Store. Два інших ми починали писати на Objective-C, але на поточний момент весь новий код пишемо тільки на Swift.

Ігор Кашкута
Ми не використовуємо тільки Swift, але й опублікували на GitHub частина нашого проекту. Chatto був першою ластівкою, пробій мови в нашій CI інфраструктурі і проект в цілому — не без проблем, звичайно, але справа вдалося. Надалі ми плануємо використовувати Swift і в інших частинах програми.

Єгор Товстої
Зараз на Swift ми розробляємо два проекти. Один з них, спочатку розроблявся на цій мові, повинен протягом місяця з'явитися в App Store. Другий, Рамблер.Пошта, спочатку був написаний на Objective-C, але після першого релізу в рамках рефакторінгу команда почала поступово переводити його на новий мову.

Що дав цей досвід? З якими підводними каменями довелося зіткнутися? Чи рекомендуєте використовувати Swift іншим, і в яких саме випадках?
Максим Соколов
Використання Swift має як переваги, так і недоліки. До недоліків я б відніс, по-перше проблеми з боку Xcode IDE — трапляються падіння компілятора, самого 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 всі відповіли виступлять з доповідями, що стосуються iOS-розробки. Один з їхніх доповідей буде безпосередньо про Swift: Максим Соколов докладно розповість про використання в ньому дженериків. Якщо після цього матеріалу ви відчули, що для вашого проекту настав час використати Swift — не пропустіть :)
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.