Swift, Kotlin vs C++. Что нативнее для мобильных устройств?
Оговорюсь сразу.
Я понимаю, что за Swift стоит Apple, которая эту iOS и разрабатывает.
Я понимаю, что сейчас почти все приложения под Android (нативные) пишутся на Kotlin.
Сам я занимаюсь разработкой на React Native. Да, это круто писать код под 2 платформы, но ты можешь столкнуться с проблемами отсутствия нужного функционала при разработке. Решение есть - выучить 2 языка и писать на них нативные библиотеки и модуля для использования через мост JavaScript.
Но эта перспектива меня не очень устраивает, т.к. помимо JavaScript, я также планирую развиваться в сторону микроконтроллеров (хобби), где используют C и C++, для серверов стартапов и нейронных сетей нужно уметь писать на Python. Также есть ещё суперкрутой Flutter, который я уже успел попробовать и ещё тонна всяких интересных вещей.
В мире iOS я плаваю - не знаю что там с нативностью.
Но в иерархии Android истоком является C++. Т.к. Kotlin выше Java, а Java над C++.
Вопрос не про то, что именно нужно учить, чтобы писать код, который работает. А насколько возможно использовать один C++ для написания модулей под мобильные платформы? Я знаю, что есть кроссплатформенная Qt и QML. Но я не могу назвать себя экспертом в области C++. Могу ли я писать нативные библиотеки под iOS и Android или же есть какие-либо ограничения и костыли связанные с этим?
illuzor, наверное дальность от нативных двоичных команд процессора :)
с++ таки компилиться в нативный код, а джабка крутится в яйце вирт.машины, потому и дальшееее :) (наверное)
Sergio, UI я не планирую переписывать на плюсы. Это слишком долго по времени и не так красиво, как хотелось бы (при наличии того времени, которым располагает один человек). Не знаете ли вы? Есть ли там ограничения какие- либо? Может быть что-то доступно только из Swift (в чём я сомневаюсь), или например для того, чтобы написать библиотеку для управления по Bluetooth нужно будет потратить год. Есть ли там какие-нибудь такие нюансы?
это полный бред, который показывает что вы не понимаете как они работают
котлин и джава оба компилятся в байткод, они не могут быть выше или ниже друг друга, и опять же есть котлин натив который работает без jvm. То есть по этой извращенной логике джава выше котлина? Его кстати используют для одновременной разработки на андроид и айос
Получается ни с какой стороны котлине не "выше" джавы
belyy_lis, на iOS я знаю, что можно легко вызывать системные API из кода на Objective-C++ (в общем смесь ObjC и С++), на Android - думаю что вряд ли фичи SDK для работы с устройствам легко доступны из C++-кода, т.к. весь фреймворк на Java написан. Хотя в теории можно вызывать Java-методы из C++ через JNI.
Имеет смысл какую-нибудь бизнес-логику писать на C++, а остальной платформозависимый код на соответствующем языке. Но сам я таким не занимался.
Я и сам недавно интересовался этой темой, люблю иногда что-нибудь покодить на C++ для прикола. Попробовал Qt 6 недавно - не понравился уродский UI (возможно это как-то лечится, но разбираться лень было). Ещё есть вроде как фреймворк другой - https://www.boden.io/ - можно его ещё попробовать. Больше ничего годного не нашёл пока что...
Sergio, да, плюсы манят и это основная проблема вопроса. Qt 5 - 6 - UI действительно уродский, но у Qt есть возможность создавать библиотеки, думаю эта функция как раз была бы полезна для таких фреймворков как React Native и Flutter в будущем.
Просто не хочется тратить время на то, что не особо тебе интересно (Kotlin и Swift).
Имеет смысл какую-нибудь бизнес-логику писать на C++, а остальной платформозависимый код на соответствующем языке. Но сам я таким не занимался.
не имеет, и дропбокс яркий этому пример. В реальности это не сработало. Котлин нэтив вроде как облегчает эту задачу, но в реальности там тоже постоянная борьба с непонятными ошибками. Вроде от яндекса была недавно статья, что они так утечку на айос нашли, а на андроид все норм было. Это вечная борьба с платформой, вместо написания бизнес логики
Могу ли я писать нативные библиотеки под iOS и Android или же есть какие-либо ограничения и костыли связанные с этим?
можно даже на ассемблере, только нет таких самоубийц. Максимум проекты для развлечения. Пока ты будешь на плюсах писать одну либу под обе платформы, другие уже напишут 10 раздельных
belyy_lis, это общепринятое обобщенное мнение. Наверняка есть исключения. Если нужно писать простенькие прилажушки типа магазины, то флаттер или два этих языка. Если либа с каким нибудь ИИ это уже скорее всего на плюсах лучше будет
Jacen11, ну вообще сильно зависит от того, какой код хочешь делать общим.
Вот телеграм, например, вынес практически всю основную логику для клиента в tdlib на плюсах, и использует её и на десктопе, и на всех мобилках.
Но при этом весь UI, и вообще всё что вокруг tdlib пишется на каждую платформу отдельно.
Василий Банников, это потому что телеграмм может себе такое позволить. Обычно нет, даже в банках не видел такого. Пока небольшая команда будет воевать с технологией, другие сделают хоть что то на какашке и отвоюют рынок
Практически невозможно.
Реализовать можно, но так практически никто не делает, потому что это просто неэффективно, гораздо быстрее, и менее трудозатратно написать отдельно