Pull to refresh
5
0
Send message

Причем тут Паскаль? Он и близко не обладает тем многообразием выразительных элементов, которые используются в современных языках.

Динамическую типизацию не исправить. Это ограничение языка. Это не является удобным, так как приводит к ошибкам. Я понимаю, что
Objective-C является надмножеством С а не С++.
, но я не об этом, а о том, что C++ совместно с ObjC++ превращает зачастую код в весьма сложную солянку.

Язык ObjC очень старый, и требует большей внимательности. Компилятор и рантайм Swift берут очень много рутинной работы на себя.


Это, например,


  1. null-безопасность;
  2. работа с памятью; в MRC-эпоху ObjC был, действительно, очень требовательным к внимательности и, в целом, к способностям разработчика;
  3. работа с множественным наследованием протоколов, что было описано в предыдущей статье;
  4. статистическая типизация помогает значительно уменьшить количество ошибок, по сравнению с динамической;
  5. качественно улучшенные перечисления в Swift;
  6. C++ подобный синтаксис и интеграция C++ кода, которая зачастую раньше была обычным делом, в ObjC значительно повышает порог вхождения программиста в понимание того, что происходит;
  7. качественно иной подход к написанию кода при использовании SwiftUI, и родной Combine, на мой взгляд, должен помочь ускорить разработку, и снять с разработчика достаточно большой объём работы.
    Причём, я оставляю за скобками слишком странный и громоздкий синтаксис языка. Тут, как говорится, на вкус и цвет. Но ObjC – не язык 2019 года. У него роль обвязки C++ кода, и то, если это требуется. И, может быть, по мелочи, есть что-то, что ещё не научился Swift.
    Да, это, безусловно, требует хорошего компилятора, но команда языка Swift весьма хороша, так что в перспективность этой технологии лично я субъективно верю.
    Да, есть моменты падения рантайма Swift, и периодически встречающиеся баги компилятора, но они исправляются, и их количество незначительно.
    И, конечно, можно ещё найти какие-то различия и улучшения.

Пожалуйста, разверните мысль.

Да, верно. Только с терминологией тут достаточно интересно.
docs.swift.org/swift-book/LanguageGuide/Protocols.html
Указан глагол adopt, а не realize и conform.
Можно подобрать более корректный термин. Будут рад услышать варианты.
Conform используется в смысле «валидности протоколу», то есть, методы класса совпадают с методами протокола – это conform. А смысл двоеточия – это adopt.
Предложите свой вариант, пожалуйста. Использую его.
Большое спасибо за комментарии. Поправил.
Что Вы имеете в виду?
В extension для каждого protocol. Протокол не хранит состояние, но может спокойно хранить поведение функции.

Тем, что класс обладает функциями не благодаря наследованию(где и используют protected), а тем, что наследует протоколы.

Используя протоколы, можно со спокойной совестью забыть об использовании protected

Добрый день. Напишите, пожалуйста, на Career-RU@acronis.com с пометкой, что хабра.
А чего в документации для Android не хватает? На мой взгляд, она достаточно неплохая.
Nil так или иначе все равно надо обрабатывать. Синтаксис swift позволяет это делать на раз. Во многих других языках нужно постоянно морочиться на этот счёт.
Неожиданный nil — это плохо проработанный код. разрешённый по умолчанию полностью безотказный nil в objc — это явная недоработка старого языка. Это что-то из серии бага, возведённого в фичу. Работающий и необработанный nil — unexpected behaviour.
То есть, при написании кода в IDE человек не мыслит? Это что из серии: пользуйтесь пером, а не шариковыми ручками, ведь так поступали наши деды. Можно и на перфокартах код писать с запуском куда раз в сутки, как это было в советских НИИ, но зачем. Писанина на бумаге проверяет весьма сомнительные скилы.
Код на бумажке, особенно часто это бывает ObjC, выглядит слишком непонятно: отсутствие подсветки, сплошная какофония из ObjC-style синтаксиса [[SomeClass alloc] initWithParamAndParam]; в распечатанном (или, ещё хуже, написанном от руки) виде введёт кого угодно в ступор. К тому же код на бумажке нигде никогда не используется, очень странно это использовать как тест.
1

Information

Rating
Does not participate
Registered
Activity