В качестве основного языка для разработки мобильных приложений мы используем
Сомнений в том, что за Swift будущее, у меня нет, но это будущее не сегодня. Язык сильно изменяется от релиза к релизу: нет ABI совместимости, сильная завязка на
Почему будущее за Swift?
Судя по многочисленным отзывам и дискуссиям разработчиков, верится, что Apple настроены очень серьезно. Они делают огромную работу и создают Swift таким, каким его хочет видеть сообщество, и это несомненный плюс. Большинство Open Source проектов перешли на Swift,
Пройдемся по основным тезисам за и против, которые возникали в процессе подобных споров:
Сильные изменения от версии к версии
Это адаптация своего кода к новой версии. Конечно, Apple говорит, что все будет хорошо, у нас есть Migration Tools и он может все. Опыт говорит обратное (stackoverflow подтверждает): Swift позиционируется как Open Source, и я думаю, что день, когда в него не будут вноситься глобальные изменения, наступит не скоро. В нашем проекте я смог полностью перевести библиотеки только спустя 2 месяца после выхода Swift 3, при этом только 2 из 3-х используемых библиотек получилось перевести, третью было решено заменить на аналог, написанный на
Сильная завязка на окружении iOS
UIKit, Foundation и другие стандартные библиотеки — все это
Кроссплатформенность
Кроссплатформенность — сильный аргумент за. Ходят слухи, что Google планирует сделать Swift базовым языком для разработки под Android. К сожалению, сегодня это разбивается о стандартное окружение iOS (UIKit, Foundation и другие), да и поработать придется много. Есть
Порог вхождения в Swift меньше чем в Objective-C
Давайте мыслить логически:
Найти нового сотрудника со знанием Objective-C с каждым днем сложнее
Это отлично видно, в том числе и по нашим кандидатам, которые сначала присылают Swift, и только по запросу —
Смерть Objective-C — вероятное событие
Но оно не произойдет внезапно, и, думаю, никто не пострадает (смерть не в том, что его все забудут, а в соотношении количества разработчиков Swift/
KVC и KVO работает только для наследников от NSObject
Часто можно слышать упрек в сторону Swift, что KVC и KVO работает только для наследников от NSObject. В контексте: «а почему только так и это недоработка, требую справедливости!» Мое понимание таково — это нельзя отнести к ошибкам, багам, недоработкам языка. Философия Swift (и всех новых языков программирования) — свести к минимуму случаи, когда программист может прострелить себе ногу и не понять случившегося. С NSObject это работает только
Вывод
В заключение, можно сказать, что сегодня итоговый счет
Список источников, которые будут полезны:
1. Swift 3.0, много шума, а что на деле?
2. ABI Compatibility: Whoopdty Do, What Does It All Mean?
3. Getting to Swift 3
4. Access Control and protected
5. Swift Needs Protected Access Level
6. Android переходит на Swift
7. RobBoluga/