Pull to refresh
41
1
Dmitry @domix32

Жопа котика

Send message

Задача-то собственно сделать код на Си, то есть сначала надо написать интерпрептатор кода на Си и каким-то образом скормить литерал с пробелами без зачёта этого литерала в размер программы.

Фронтенд clang генерирует тоже весьма неоптимизированный IR код

Там довольно немало подсказок имеется касательно данных, позволяя делать иногда не самые очевидные оптимизации - где-то автовекторизация срабатывает, где-то constexpr вычисляется, где-то память остаётся на месте (move семантика и return value optimization). Не знаю насколько это поддеживается в U, но с большой долей вероятности их может и не оказаться.

только если обращаться к произвольному индексу через оператор [].

ну вот по крайней мере в Rust если точно известно, что индекс никогда не превысит размер массива, то он вроде осиливает убрать проверку границ. Что-то вроде

let mut vec= Vec::with_capacity(sz);
/* 
...
массив как-то заполняется до sz
...
*/
for i in 0..sz {
...
   let blabla = vec[i]; // граница проверяется ровно 
                        // 1 раз при входе в массив
...
}

Но собственно идею с инвариантами вы поняли - ограничения типов позволяют статически проверять все эти границы и динамически проверок уже не требуется. Обычно такого рода штуки проверяются со стороны фронтенда.

Я могу конечно ошибаться и U всё это могёт умеет, но и изначальный комментарий это скорее камень в ваш огород кастательно сравнения перформанса "на дцать процентов" на глазок без бенчмарок.

пардон, веткой промахнулся.

Средств выразительности языка вполне хватило для осуществления этого проекта.

Оно конечно хорошо, но киллер-фичей пока не замечено, учитывая большую вербозность языка в сравнении с тем же C++.

Производительность тоже весьма неплоха — на уровне других компилируемых языков, вроде C++

Вот тут press X doubt . Производительность скорее на уровне, который позволяет наоптимизировать LLVM из того наивного IR, который делает U. Да и снижение производительности на 10 процентов означает, что проверка границ происходит не при помощи инвариантов типа (как в том же Rust), которые выоптимизировываются, а наивными проверками.

Если ограничений на количество бутылок нет, то кажется проблем с этим возникнуть не должно. Пончик же завелся

С тем же эффектом "для примера" можно было сравнить print("hello world") с enterprise level hello world. Если ваш код не делает то же самое, то смысла сравнивать его по прочим параметрам смысла особо нет.

который (пока?) не называется никак

В веб станадартах оно зовётся XPath. Оно и в CSS и в JS и в XML/HTML используется. В среднем оно довольно универсально в плане API, но конкретно ваши примеры работают с HTML.

В примерах в статье предлагалось выносить if за пределы метода. Опять же внутри filter я так понимаю сидит оператор условия, который и предлагается вынести.

собственно использование filter и есть вынос - условие оказывается выше, а обработка в цикле ниже.

Так это он по сути и есть, просто выведеный через одно место.

Ну фиг знает. Иметь что-то вроде

shtuki
.filter(is_valid)
.filter(some_other_condition)
.split_by(process_condition)
.process_yes(/* обработка для if (true)*/)
.process_no(/* обработка для if (false)*/)

вроде выглядит не сказать чтобы нечитаемо даже с точки зрения адептов чистого кода. прочая обвязка в том или ином виде все равно будет иметь дикие if, но там и циклической обработки обычно нет, так что не знаю где вы там копипаст плодите.

Отдельно стоит помнить про количество данных - на малых размерах какой-нибудь вектор неотличим от хэшмапы и полтора десятка условий погоды не сделают даже при безумных способах их индексирования, так что перед оптимизациями необходимо иметь замеры, что данный участок кода действительно узкое горлышко. И иметь примерное представление о доступной производительности/пропускной способности.

Более того, узнав про них, люди обижаются и начинают искать пути обхода. Да просто из принципа.

Никогда такого не было и вот опять. Если нельзя управлять метрикой, то кажется она бесполезна. Если метрикой начинают управлять измеряемые, то получается ожидаемый результат - всякого рода статистических хакинг и прочее выращивание кобр.

SDL довольно большой, почему именно он, а не Raylib например? Портировать его точно было бы проще.

На 15 штуках не сильно принципиально, но если штук заметно больше, то выгоднее сначала отфильтровать/поделить штуки по if и уже после вызывать обработку штук. Это во первых открывает путь к применению автовекторизации (то бишь когда в регистр процессора кладётся несколько штук сразу и все они обрабатываются за один такт), во вторых становится cache friendly - инвалидацию кэшей процессора можно будет делать реже, потому что предсказание веток уже сделано фильтром.

afaik там есть ещё кучка неожиданных побочек, которые толком не выявлены и не имеют понятного механизма воздействия. Готовы ли вы, например, частично ослепнуть? тот же ozempic из-за изменений в секреции как-то там начинает влиять на сосуды глазного дна, что может приводить к потере цветовой чуствительности и даже отслоениям.

 а на куя мне это???

кажется вопрос "зачем государству нужна собственная независимая ОС" имеет довольно очевидный ответ - оно его делает и им же управляет как им надо, а не как в нулевые 99% ОС составляла пиратская Windows XP, которую заразить вирусом легко настолько, насколько просто ткнуть флешку в компьютер - stuxnet тому свидетель. И это при том, что у винды тоже был сертификат ФСТЭК когда-то. У китайцев по тому же принципу Harmony OS не так давно в поля вышла, например.

Тогда они неправильно написали условия конкурса 

"Покройте 5% разницы - получите 20 килобаксов" я не понимаю, что тут может быть неправильным.

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

то есть вместо понятной иммутабельной системы добавили security through obscurity.

Исходный код недоступен

и следом

поддержка российских криптоалгоритмов на уровне API.

то есть закладки в шифровании известны пока только силовикам, пока не найдётся евреев, которые захотят последить за пользователями. Сомнительный профит.

пишутся строго на QML (для интерфейсов) и C++/JavaScript (для логики), а с недавних пор добавилась поддержка Flutter.

так вы определитесь, строго или не строго. Особенно учитывая тот же контейнер андроида, который вы зовёте Avroid. Как оно те же игры рендерит из QML? Выходит оно просто вместо JNI у них?

Кстати отдельный вопрос каким образом реализован QML - честно вырезан из Qt или переписан по некоторым спекам дабы потом все это дело можно было относительно просто сертифицировать? Или по чесноку какую-то версию Qt сертифицировали?

чтобы чиновники могли печатать на клавиатуре без риска утечки данных в облачные платформы.

как это помешает слать запросы к каким-то сервисам для трекинга, особенно учитывая, что там есть JS, который можно динамически подгружать.

В тестах планшетов на процессорах Эльбрус

даже не знал, что они мобильные процессоры производил. Хотелось бы знать откуда дровишки.

Aurora — это единственная мобильная ОС, где Госуслуги, СБИС и другие государственные сервисы работают не как сторонние приложения, а как полноценная часть системы.

То есть вместо Google Services висят Gosuslugi Services? Или оно вовсе прошивается в API системы по аналогии с доступом к переферии (как доступ к камере, гироскопу и тп)?

15% просто потому, что система понимает российские форматы дат, номеров и других данных непосредственно из коробки.

Боюсь представить что же они там такого обрабатывали ужасного, что номера и даты давали такие хардкорные тормоза - казалось бы DD-MM-YYYY отличаются от MM-DD-YYYY парой знаков. Вообще было бы замечательно послушать технические детали этого кейса.

Например, система корректно обрабатывает склонение ФИО во всех падежах — проблема, с которой до сих пор сталкиваются многие Android-приложения.

Основной вопрос как это реализовано и как оно догадывается какой падеж нужен и в каких местах системы нужно, чтобы ФИО склонялось? Что-то вроде Fluent?

При выполнении задач, важных для корпоративного сектора, Aurora регулярно обходит Android в тестах:

Пруфов я так понимю конечно же не будет? А то там моя ОС Аврору регулярно на 80% обгоняет, а на Эльбрусе так и все 146%.

система сертификации для защищенных решений;

в смысле при публикации в стор оно просит сразу исходники присылать и автоматически отправляется во ФСТЭК на аудит или как?

В тестах на Эльбрусах и Байкалах разница в производительности достигает 30-40%

учитывая, что код на андроиде всегда запускается на устройствах c этими процессорами в режиме совместимости - т.к. андроид в принципе не поддерживает эти архитектуры (насколько мне известно) - было бы странно получать иные цифры в сравнении с нативной компиляцией под указанные архитектуры. Тут заслуга системы минимальна - режим трансляции почти наверняка пилили сами производители процессоров, а не разработчики системы.

А можно было бы немного нашаманить и сделать механику тасок из Sims и не париться с промптами

Можно податься в стримеры и заниматься рекреационным программированием, по аналогии.

Ждём когда автор выкатит свой улучшенный NumPy

В итоге получился не терминал, а оболочка aka shell. Терминал (а если точнее - псевдотерминал aka pty) занимается в основном приёмом ввода от пользователя и рендерингом всякого текстового на экран. Собственно Windows Command Line, Windows Terminal, Kitty, Alacritty, wezterm, xterm и тд - это именно терминалы. Bash, fish, zsh, ksh, nushell - это уже командные оболочки, которые занимаются обработкой ввода пользователя, управления сессиями, окружением и прочим. Ваш питон как раз относится к последним.

Ну и чисто совет для новичка - научитесь поьзоваться вирутальным окружением aka venv и посмотрите как устанавливаются питоновские пакеты.

Information

Rating
2,754-th
Date of birth
Registered
Activity