Обновить
16K+
638
Андрей Карпов@Andrey2008

Директор по развитию бизнеса

19,9
Рейтинг
377
Подписчики
Отправить сообщение

Вот значит мы молодцы, что быстро :) Ведь проекты разные бывают.

Рисунок N1 — 13-й слайд презентации “Итоги испытаний” (файл 10_SA_ponomarev_end.pdf).
Рисунок N1 — 13-й слайд презентации “Итоги испытаний” (файл 10_SA_ponomarev_end.pdf).

Из статьи "Кратко об итогах испытаний статических анализаторов исходного кода в 2025 году".

Это так не работает. Что значит никому не нужны 100 быстрых детекторов? Анализ должне работать быстро. Анализ и есть эти 100 детекторов.

Разные программисты живут на разных планетах :).

Я понимаю (и сам пишу) про вред преждевременной оптимизации. При этом, мы сами не можем позволить себе такой подход, как думаю, как и многие программисты в разных областях. Особенность в том, что суть анализатора — это сотни детекторов. Каждый по отдельности, даже если он медленный, не замедляет скорость в целом. Но вот у нас 100 небыстрых детекторов – и приплыли. Непонятно как оптимизировать. Нет нескольких критических медленных мест, который выявит профайлер. Есть сотня не очень критичных. Вариант – только всё переписывать. Так что писать надо сразу хорошо.

О! Надо будет ещё один вартант кода написать. Спасибо.

Уверен, что нет. Понятно, что даже если не знаешь, можно понять этот код. Но это требует лишних усилий. Ключевое слово - лишних.

Код показывает, "смотрите как я могу и знаю", но не несёт какой-то пользы (не упрощает чтение, не убыстряет выполнение цикла).

Есть вообще подход уменьшения подмножества языков С и C++ с целью облегчить их понимание и поддержку. Например, отраслевой стандарт ГОСТ Р МЭК 61508 в 7 части рекомендует для высоких уровней полноты безопасности использовать безопасные подмножества языков (такие как MISRA C, C++).

Понял. Но по мне лучше смотрится auto sz : std::ranges::views::reverse(sizes) Дело вкуса :)

Про rbegin и rend я не понял. Там ведь два контейнера. Прошу показать, какой код должен получиться.

По поводу i-- > 0 я против таких конструкций: Вредный совет N30. Необычные конструкции.

Непонятно, ударил ли вообще, или наоборот добавит клиентов в перспективе.

uint64_t kstrncmp(char *str1, char *str2, uint64_t len){
    uint64_t index_str = 0;
    uint64_t different_char = 0;
    while (index_str < len) {
        if (str1[index_str] != str2[index_str]) {
            different_char++;
        }
        index_str++;
    }
    return different_char;
}

Я так понимаю, речь идёт об этом проекте OS. Ну что же, автору предстоит узнать ещё много о языке С. Например, что такое выход за границу буфера.

void terminal_write_hex(uint64_t hex_num) {
    uint64_t index_buffer = 0;
    char buffer[sizeof(uint64_t)];
    if (hex_num == 0x0) {
        terminal_write("0x0");
        return;
    }
    terminal_write("0x");
    while (hex_num > 0) {
        uint64_t digit = hex_num % 16;
        if (digit >= 10) {
            digit = digit - 10;
            buffer[index_buffer] = 'A'+digit;
        }else {
            buffer[index_buffer] = '0' + digit;
        }
        hex_num = hex_num / 16;
        index_buffer++;
    }
  .....

Какой милый баг. Обратите внимание на размер буфера. Мда, интересные времена "безопасного ПО" настают. Простите за едкость комментария, но не удержался, увидев проект автора.

Safe Life System

Наш проект — это платформа для обеспечения и сохранения безопасности информации в цифровой среде, а также для развития независимой IT-экосистемы.

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

P.S. Приходите узнать про нормальную разработку безопасного, надёжного ПО.

Так жирно, что тонко :)

А если серьёзно, то ещё как! Как раз с Сергеем уже цикл вебинаров есть на тему GameDev и оптимизации:

  1. Оптимизация игр

  2. Оптимизация игр: работа со строками

  3. Инструменты для разработчиков игр и не только

Спасибо за публикацию. Просто отмечу, что короткий и красивый код, это не обязательно всегда замедление. Конечно, надо понимать, что ты делаешь и зачем. Без этого никак. И тогда вполне возможен сценарий, когда от упрощения и лакончиности все только выигрывают. Вот прямо сейчас разбираю такой случай в здесь – https://t.me/programming_tales/662

Нет методики, даю файл, говорю найди ошибки, изучаю вывод. В целом всё нормально работает и есть полезные наблюдения. Но иногда, переклинивает так, что у меня случается сворачивание глаз в трубочку. Один из таких случаев я и описал.

С точки зрения статического анализа такие наблюдения надо осмыслить. Классические аналиторы тоже выдаёт ложные срабатывания, но делают это детерминировано. Если исключить/поправить все места где выдавались срабатывания - новых не будет. А здесь какой то бесконечный ревью получается, зависящее от... хз от чего :)

Да, это отдельное направление развития статического анализа – фильтрация/разметка предупреждений. Мы планируем начать заниматься этим направлением после большого релиза в этом году, где добавим проверку новых языков программирования (JS, TS, GO).

Дык не важно, подпишись на канал сбежавшая нейросеть

Даже приблизительно спрогнозировать не могу :)

1
23 ...

Информация

В рейтинге
430-й
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
C++
C
Разработка программного обеспечения
Информационная безопасность
Обеспечение качества