Найти в Дзене
Войти в IT

Objective-С и Swift: счастливы вместе?

Как правило, при сравнении языков Objective-С и Swift все ограничивается одним набором шаблонов. Стандартный взгляд на их противостояние сводится к нескольким распространенным истинам. В их верности сомневаться не принято, однако если взглянуть чуть глубже, то можно убедиться, что не все так однозначно.

Гипотеза. Objective-С  - старый и умирающий. Swift - молодой и прогрессивный.   

Казалось бы, здесь все понятно. Перед начинающими разработчиками проблемы выбора, как правило, не стоит. Изучают они Swift - за этим языком будущее, так как Apple поддерживает и развивает именно его. От поддержки Objective-С тоже в ближайшее время, скорее всего, не откажутся, однако вполне очевидно, что новые приложения для iOS на нем будут выходить все реже.

Вот график на основе данных StackOverflow и GitHub. Он наглядно показывает как растет популярность Swift. За три первых года своего существования (с 2014 по 2017 годы) он стал самым быстрорастущим языком в истории программирования.

-2

Однако слухи о смерти Objective-С пока выглядят сильно преувеличенными. В Apple особо не комментируют по этому поводу, но все действия компании говорят о том, что поддержка Objective-С сохраниться в ближайшем будущем. Немаловажен и другой факт - подавляющее большинство кода для iOS и macOS все еще написано на Objective-С. Это и неудивительно - ведь он существует с 1980-го года. На нем воспитано несколько поколений разработчиков.

Гипотеза. Objective-С - сложный и тяжелый. Swift - простой и легкий.

Objective-С известен своей сложностью. Этот язык построен на C и данный факт многое объясняет в его структуре - здесь большое количество условных обозначений, строк кода и скобок с внутренними операторами. Разобраться в этом языке непросто - синтаксис затруднен как для чтения, так и для написания. Другое дело - Swift. Простой синтаксис поставлен здесь во главу угла. Он напоминает естественную английскую речь.

Просто сравните.

-3

Считается, что любой разработчик, который знаком с JavaScript, Python или C++, быстро и легко сможет выучить Swift. Это, в целом, соответствует истине. Однако факт простого перехода с Objective-С на Swift считают уже более сомнительным.

API-интерфейсы в Apple одинаковые, однако конструкции и логика этих языков сильно, иногда даже принципиально отличаются. В зарубежным блогах опытные разработчики часто высказывают точку зрения, что данный переход наоборот бывает довольно болезненным. Этот факт косвенно подтверждается и наличием большего количества программистов, которые упорно не желают перескакивать на Swift, хотя это и делает их менее конкурентоспособными на рынке труда.

Гипотеза. Скоро все проекты перейдут на Swift.

Это кажется очевидным. Apple активно вкладывается именно в Swift, а Objective-С выглядит как отбывающий номер. В яблочной иерархии он явно отходит на второе место. Но.

Взгляните на данные ежегодного исследования  StackOverflow. В 2018 году разница в объемах использования этих двух языков не является слишком существенной.

-4

Есть ряд ситуаций, при которых использование Objective-С кажется более логичным. Например, если проект был изначально написан на Objective-С (а таких великое множество). Да, эти языки совместимы, один проект можно вести сразу на двух языках, однако реальная практика показывает, что в этом случае бездумно переходить на Swift все же не стоит.  

Вторая ситуация - когда в проекте требуется использовать среду C и C++. Objective-С основан на C и здесь он также оказывается в выигрышном положении.

Не стоит забывать, что Swift поддерживают только новые версии операционных систем (начиная с iOS 7 и macOS 10.9). Если нужно, что бы приложение работало на предыдущих версиях, то у вас один выбор - Objective-С.

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

Вывод

Несомненно, Swift по своей концепции является “новым улучшением старого”. Это будущее iOS-разработки, которую в компании Apple решили сделать более простой и доступной. Это проект с открытым исходным кодом, над развитием которого работает все сообщество. В него постоянно внедряются новые функции, он быстрее и производительнее. Один только факт поддержки динамических библиотек (Objective-С использует статистические библиотеки) дает молодому Swift ощутимые преимущества: приложения на нем легко поддерживают свою актуальность, меньше весят и быстрее загружают контент.

Однако хоронить Objective-С все-таки слишком рано. На нем написана большая часть внутреннего кода Apple. Swift не является зрелым продуктом: многие опытные разработчики называют его бета-языком. Такой взгляд вызывает массу споров, однако совершенно очевидно, что по своей зрелости ему в любом случае далеко до Objective-С, который был протестирован сразу несколькими поколениями программистов.

Мы обновbли программу нашего курса Junior iOS Developer. На нем выпускники получают теоретические и практические основы работы с обоими языками программирования, так как именно это чаще всего требуется при трудоустройстве. Если вас заинтересовал этот курс, то для начала вы можете принять участие в нашем бесплатном тренинге по созданию приложения под iOS. Оставить заявку на участие можно здесь