Автор не входит в состав редакции iXBT.com (подробнее »)
avatar
Госспади, я кажется понял, что это за «кодер»
Да мы все тут уже давно поняли, что это за кодер тут топит за Kotlin. Вы разрабатываете обычные приложения на Kotlin, ходите на собеседования на вакансию разработчика на Kotlin, и вообще весь мир состоит из приложений на Kotlin, полных активностей и сервисов. На Kotlin можно написать все, а что нельзя — того не существует. Использовать C++ в Google придумали от скуки и практической пользы от этого никакой. Приложения можно писать только на каком-то одном языке, от и до, и только последний оставшийся в живых имеет право носить гордое имя официально поддерживаемого языка.
.
Непонятно только два момента: чего вы в самом начале прикопались к использованию Rust в экосистеме, которая с вашим опытом может быть пересекается примерно никак, и с чего вы вдруг взяли что если лично вам C++ не вперся, то значит язык неофициальный, сколько бы там официальных материалов Google по нему не опубликовал.
avatar
Не ну понятное что «если долго мучится, что-нибудь сломается» =). Там и не только unsafe, знающий человек на самом деле много чего может сломать в Rust. Но суть в том, что это сделать очень сложно и обычно невозможно сделать случайно.
avatar
Ну то есть официальным языком у вас является только тот, под который вы подогнали свои личные условия. А то, что он везде упоминается наравне, официальная SDK для него есть и т. п. это пофигу.
.
The native-activity sample resides under the NDK samples root, in folder native-activity. It is a very simple example of a purely native application, with no Java source code. In the absence of any Java source, the Java compiler still creates an executable stub for the virtual machine to run. The stub serves as a wrapper for the actual, native program, which is located in the .so file

Если автоматически генерируемая формальная заглушка «for the actual, native program» это причина утверждать что на чистом С++ приложение написать нельзя — ну что тут сказать, действительно остается только рассмеяться. Давайте тогда и Java не будем считать официальным языком, а то ведь приложение на чистом Java тоже нельзя просто так взять и запустить, нужен написанный на С++ рантайм.
.
Игрушки уже сто лет никто на чистом C++ не пишет
Ага, игрушки типа Genshin почему-то пишут на C#, который якобы тоже вообще не настоящий язык для мобилок, требует 10 интерпретаторов деля на сколько-то там производительность и прочая дичь.
.
А все дело в том, что давно уже до лампочки на каком языке писать обычные приложения, лишь бы системный API был доступен. Java или Kotlin вообще не уникальные единороги, на которых свет клином сошелся. С++ и Rust выделяются только тем, что позволяют залезть чуточку ближе к железу и не имеют оверхеда в виде рантайма.
avatar
Надо завернуть цитату в теги blockquote и соответственно /blockquote, в угловых скобках.
avatar
Плюс Rust — это вроде нативный язык, а это небезопасно
Особенность Rust, из-за которой он и оброс всем этим хайпом, заключается в довольно революционном подходе, когда небезопасности нативного языка делаются невозможными на стадии написания. Язык изначально так спроектирован, что на нем например невозможно написать программу с утечкой памяти.
.
Смысл Java в том, что вы изначально пишете в безопасной виртуально среде, а в нативный код это преобразуется уже на конечном устройстве, так что заражение кода вирусом где то по дороге просто исключено.
Ничего подобного, прямо вообще не близко. Во-первых, приложения пишутся одинаково, одинаково проверяются и распространяются и выполняются потом тоже в одной и той же среде. С++ менее безопасный только в том плане, что там больше шансов феерично накосячить. Грубо говоря, приложение на нативном языке легче развести на секретные данные и неожиданное поведение, чем приложение на Java.
.
Во-вторых, приложения из официального источника (магазина приложений) одинаково проверены на наличие вирусов и всякой вредоносной функциональности. А если вы ставите приложение из стороннего источника, то там уже без разницы что за язык использовался, в Java может быть даже проще встроить что-нибудь эдакое.
avatar
Котлин — это самое крутое, что было сделано за последние лет 5
Ну а Rust например самое крутое, что было сделано за последние 10 лет — в своей нише, разумеется, как и Kotlin.
.
Разработка для мобильных устройств смартфонами не ограничивается. Если экосистема охватывает устройства начиная с «200 МГц и 32 МБ» и предъявляет повышенные требования к энеогоэффективности, то Kotlin запросто может оказаться не самым подходящим вариантом.
.
нативные языки для Android: Java/Kotlin
Так и вы неправильно помните =) полный список официальных это Java, Kotlin и С++ (https://developer.android.com/guide/components/fundamentals). Разумеется, Rust там тоже рано или поздно будет — пару лет назад выходила статья от Android Team в Google на эту тему.
avatar
Если внимательно прочитать мое сообщение, можно заметить, что f/14 это не опечатка:
f/4 на 1/1.3" сенсоре соответствует примерно f/14 на полнокадровой камере
Кроп-фактор сенсора размером 1/1.3" равен 3.56, то есть получается f/4*3.56 = f/14.24 в полнокадровом эквиваленте.
avatar
Он тут при том, что транспилятор выполняет перманентный перевод из одного кода в другой на одном уровне абстракции, например из одного высокоуровневого ЯП в другой или из одного микрокода в другой (в отличие от компилятора, который производит так же перманентный перевод, но из высокоуровневого в низкоуровневый или наоборот).
.
В то время как транслятор это самый общий термин — это и интерпретатор на лету, и транспилятор из чего угодно во что угодно, и компилятор это тоже транслятор. Хз вообще что он подразумевает без уточнений.
.
Поэтому «транспилятор» это как раз уточнение какой вид транслятора тут имеется в виду.
avatar
Но я работаю с жавой, мне проще
Еще по ощущениям разработчикам любого бэкенда на Linux проще, что Java, что C++. Ой не зря Microsoft целый Linux в Windows втащили.
avatar
Вообще GDB умеет все то же самое, в том числе интерактивность. Просто интерфейс консольный, отсюда и ощущение неповоротливости. Та же история с LLDB. Ну и разумеется IDE просто используют их, никто в здравом уме не будет целый отладчик писать.
avatar
Точнее даже транспилятор. Транслятор обычно подразумевает постоянную конвертацию в реальном времени, тогда как на macOS, ЕМНИП, бинарный код целиком, но однократно конвертируется при первом запуске и потом уже выполняется «нативное» приложение.
avatar
Так никто торопиться и не будет, вот в чем петрушка =). Но вопрос был не останутся ли бедные пользователи без софта, не надо ли будет ждать пока разработчики все не перепишут с нуля. Ответ — не останутся. А что кому-то придется полгода подождать перед покупкой пока пару багов в Autocad пофиксят — ну так это статистическая погрешность.
.
Вот игры, это да. С играми может не все радужно быть поначалу.
avatar
На самом деле нет =(. В плане переписать/адаптировать разница между ОС намного больше, чем между x86 и ARM. Есть много кроссплатформенного софта, который уже написан с учетом того, что его будут собирать и под такую ОС, и под такую, но если программа была написана не учитывая этого — переписать обычно ой как нелегко. Жопка даже, я бы сказал.
avatar
Само собой, кому-то пришлось и раздать. Во-первых, чтобы самые популярные приложения проверили-обкатали и не было конфуза на пафосном старте. Во-вторых, чтобы подправили и/или максимально отладили «вау-приложения», которые используют специфичное аппаратное ускорение.
.
Windows одновременно и сложнее, и проще. Сложнее потому что зоопарк софта несравненно больше и полюбому будут всплывать разные проблемы, которых на macOS и не могло быть, неподдерживаемое легаси, всякий упоротый производственный софт и т. п. Вони при переходе будет много, тут и рассуждать нечего.
.
Проще потому, что в целом никто и не ожидает что вот так вот презентовали и почти сразу вообще все само заработало. Банально покупать эти новые компы будут потихоньку, а не так массово как все обновлялись на M1.
.
Тем не менее, практически весь набор софта простого обывателя за исключением может быть игр — ему до лампочки на каком там процессоре выполняться, ну разве что перекомпилировать придется, ОС намного важнее в этом плане.
avatar
еще на цифро мыльницах проходили такие «переменные» диафрагмы на «глазках» объективах
Так на мыльницах тех времен матрицы были вообще милипипические. Когда диафрагма регулируется в пределах типа f/10-f/20 полнокадрового эквивалента, то действительно толку от этого мало. А в случае с Xiaomi 14 Pro диапазон изменения получается f/5.0-f/14.25 полнокадрового, что уже хотя бы заметно.
avatar
Так ультру можно сделать толще, чем «обычную» модель.
avatar
Тем не менее, порядка 48 МП очень даже имеют смысл, потому что можно кропнуть 2x центр кадра с довольно вменяемым качеством. А это по сути плюс фокусное расстояние без установки дополнительного модуля.
avatar
На ЛОРЕ, как и везде, 80% идиоты. У меня Lenovo X1 Nano — да, это на x86, но от установки Ubuntu вместо Windows (ничего не имею против Windows, просто надо было по работе) продолжительность работы от батареи изменилась примерно никак. С чего бы вдруг на ARM быть по-другому? То, что Windows или Linux в примерно одинаковой конфигурации (похожие интерфейсные рюшечки, похожий софт) как-то себя по-разному ведут в плане производительности/энергоэффективности — тупой миф.
avatar
Про все переписывать — лукавство.
.
Навскидку, 80% программ будет достаточно просто пересобрать под новую платформу или даже вообще ничего делать не надо. Потому что они либо написаны на в том или ином виде абстрагированном от архитектуры языке типа Java, .NET, Python, JS и пр., либо уже кросс-платформенные и потому более вылизанные, либо просто написаны без явных косяков. Потому что разница между Windows на x86 Windows на ARM несравнимо меньше, чем между скажем Windows на x86 и Linux на том же x86.
.
15% придется подправить по причине некритичной, но халтуры в коде.
.
5% специфичного софта да, придется переписывать. Или просто эмулировать и забить на производительность, вопрос в деньгах.
avatar
Дайте пользователям железо уровня Apple M2 и разработчики перепишут/пересоберут все как миленькие. Это я вам как разработчик говорю.