Ads
Comments 16
Таким образом, эпоха Objective-C со всеми своими недостатками отмирает

Если можно конкретнее о каких недостатках идет речь.

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


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


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

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

1. Приложение натыкается на null и падает — это и есть ваша хваленая безопасность? Равно как и дописывать до кучи лишнего кода из-за того, что кто-то решил оперировать опционалами, когда там обязательно должны быть какие-то значения?
2. почему-то в других языках люди вполне себе нормально живут с подсчетом ссылок вручную. А тут кто-то не смог, поэтому язык плохой?
3. Если сравнивать с другими языками, то Obj-C нормально работает с множественным наследованием, но в нем нет абстрактных классов. Ваша статья по сути и описывает реализацию абстрактных классов в Swift. Вот только Swift появился недавно, а в нем это сделано уже через костыли (добавлять реализацию методов в протоколы).
4. пустые слова. Зато 2+2.5 на Obj-C будет равно 4.5, а на Swift — ошибка. И таких примеров много
5. я бы согласился, но часто приходится иметь дело с перечислениями, которые вложены в перечисления, которые вложены в перечисления, которые ну вы сами поняли
6. язык внешне больше похож на какой-нибудь javascript или другой скриптовый, но никак не на с++
7. по слухам в SwiftUI вещи, которые просто делать, делать еще быстрее и проще, вещи, которые делать сложно, вроде взаимодействия с БД, с сервером и т.п. делать настолько сложно, чтобы вы пожалели, что выбрали SwiftUI
Combine — не могу ничего сказать, существует +100500 библиотек, делающих то же самое, apple решила выпустить 100501-ю. Лишь бы не получилось как с cocos2d — клонировали идею, сделали нативную реализацию, cocos2d в результате «умер», и одновременно эти клоуны прекратили развивать свою нативную библиотеку (видимо от недостатка фантазии)
А библиотеки Свифтовские то уже в IOS 13 есть в составе ОС или проги «hello world» так и весят по 20 мегабайт?
Рантайм свифта 5 версии включили в состав операционок ещё с iOS 12.2, tvOS 12.2, watchOS 5.2 и macOS 10.14.4
Одним из важных шагов, будет переход ноутбуков на ARM чипы ближайшие годы. Тут будет во всей красе работать приложения написаные для iPadOS запущеные на MacOs ARM без эмуляции.

Objective-C — имхо, лучшее, что случалось в программировании. Если, вдруг, его перестанут поддерживать вообще, я, пожалуй, сменю профессию.

Спорно. Уже сейчас скорость разработки и низкий порог вхождения являются одним из самых важных факторов в разработке. И как следствие — стоимость разработки. Objective-C здесь чуть лучше чем С++, но сильно хуже чем тот же Swift.
Only those users with full accounts are able to leave comments. Log in, please.