Язык ObjC очень старый, и требует большей внимательности. Компилятор и рантайм Swift берут очень много рутинной работы на себя.
Это, например,
null-безопасность;
работа с памятью; в MRC-эпоху ObjC был, действительно, очень требовательным к внимательности и, в целом, к способностям разработчика;
работа с множественным наследованием протоколов, что было описано в предыдущей статье;
статистическая типизация помогает значительно уменьшить количество ошибок, по сравнению с динамической;
качественно улучшенные перечисления в Swift;
C++ подобный синтаксис и интеграция C++ кода, которая зачастую раньше была обычным делом, в ObjC значительно повышает порог вхождения программиста в понимание того, что происходит;
качественно иной подход к написанию кода при использовании SwiftUI, и родной Combine, на мой взгляд, должен помочь ускорить разработку, и снять с разработчика достаточно большой объём работы.
Причём, я оставляю за скобками слишком странный и громоздкий синтаксис языка. Тут, как говорится, на вкус и цвет. Но ObjC – не язык 2019 года. У него роль обвязки C++ кода, и то, если это требуется. И, может быть, по мелочи, есть что-то, что ещё не научился Swift.
Да, это, безусловно, требует хорошего компилятора, но команда языка Swift весьма хороша, так что в перспективность этой технологии лично я субъективно верю.
Да, есть моменты падения рантайма Swift, и периодически встречающиеся баги компилятора, но они исправляются, и их количество незначительно.
И, конечно, можно ещё найти какие-то различия и улучшения.
Да, верно. Только с терминологией тут достаточно интересно. docs.swift.org/swift-book/LanguageGuide/Protocols.html
Указан глагол adopt, а не realize и conform.
Можно подобрать более корректный термин. Будут рад услышать варианты.
Conform используется в смысле «валидности протоколу», то есть, методы класса совпадают с методами протокола – это conform. А смысл двоеточия – это adopt.
Nil так или иначе все равно надо обрабатывать. Синтаксис swift позволяет это делать на раз. Во многих других языках нужно постоянно морочиться на этот счёт.
Неожиданный nil — это плохо проработанный код. разрешённый по умолчанию полностью безотказный nil в objc — это явная недоработка старого языка. Это что-то из серии бага, возведённого в фичу. Работающий и необработанный nil — unexpected behaviour.
То есть, при написании кода в IDE человек не мыслит? Это что из серии: пользуйтесь пером, а не шариковыми ручками, ведь так поступали наши деды. Можно и на перфокартах код писать с запуском куда раз в сутки, как это было в советских НИИ, но зачем. Писанина на бумаге проверяет весьма сомнительные скилы.
Код на бумажке, особенно часто это бывает ObjC, выглядит слишком непонятно: отсутствие подсветки, сплошная какофония из ObjC-style синтаксиса [[SomeClass alloc] initWithParamAndParam]; в распечатанном (или, ещё хуже, написанном от руки) виде введёт кого угодно в ступор. К тому же код на бумажке нигде никогда не используется, очень странно это использовать как тест.
На основании каких критериев?
Причем тут Паскаль? Он и близко не обладает тем многообразием выразительных элементов, которые используются в современных языках.
Язык ObjC очень старый, и требует большей внимательности. Компилятор и рантайм Swift берут очень много рутинной работы на себя.
Это, например,
Причём, я оставляю за скобками слишком странный и громоздкий синтаксис языка. Тут, как говорится, на вкус и цвет. Но ObjC – не язык 2019 года. У него роль обвязки C++ кода, и то, если это требуется. И, может быть, по мелочи, есть что-то, что ещё не научился Swift.
Да, это, безусловно, требует хорошего компилятора, но команда языка Swift весьма хороша, так что в перспективность этой технологии лично я субъективно верю.
Да, есть моменты падения рантайма Swift, и периодически встречающиеся баги компилятора, но они исправляются, и их количество незначительно.
И, конечно, можно ещё найти какие-то различия и улучшения.
Пожалуйста, разверните мысль.
docs.swift.org/swift-book/LanguageGuide/Protocols.html
Указан глагол adopt, а не realize и conform.
Можно подобрать более корректный термин. Будут рад услышать варианты.
Conform используется в смысле «валидности протоколу», то есть, методы класса совпадают с методами протокола – это conform. А смысл двоеточия – это adopt.
Тем, что класс обладает функциями не благодаря наследованию(где и используют protected), а тем, что наследует протоколы.
Используя протоколы, можно со спокойной совестью забыть об использовании protected