Pull to refresh
16K+
638
Андрей Карпов@Andrey2008

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

23
Rating
376
Subscribers
Send message

Понял. Но по мне лучше смотрится 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).

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

Я сегодня как раз делился наблюдением в заметке Минутка улыбок сеньоров, возящихся с legacy-проектами. :)

Решил погуглить, что последний год пишут на тему "поиск ошибок в коде". Раньше находились статьи про разные инструменты, сейчас всё забито статьями с общим названием "Нейросети для поиска ошибок в коде". Заглянул внутрь, например, этой: "Исправить код с помощью нейросети: ИИ для исправления ошибок в коде на Python, JavaScript и в больших проектах".

Спасибо за статью. Не согласен, со словом «нет» в ячейке таблицы: статический анализ – анализирует сквозное влияние изменений.

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

Естественно, заставляя инструмент анализировать изменения в конкретном файле (инкрементальный анализ) обрубается/усложняется возможность заметить, как эти изменения влияют на другие части проекта. Но и проблемы как таковой нет. Достаточно время от времени выполнять полную проверку проекта, когда включен межмодульный анализ.

Более того ГОСТ Р 71207—2024 (Статический анализ программного обеспечения) явно предписывает выполнять оба вида анализа (см. п. 5.6.).

Статический анализ добавленных или измененных частей ПО следует выполнять после каждого внесенного изменения.

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

Суть – быстро ловим многие ошибки в момент их внесения в код. Время от времени выполняем полный (к сожалению, часто весьма медленный) анализ и выявляем баги при взаимодействии разных модулей. См. вебинар про процессы статического анализа по ГОСТ Р 71207–2024.

Чуть подробнее и с примером написал здесь.

 

Ну то есть новых проектов нет? У Linux Kernel всё было отлично и раньше.

сгенерированный код пока слишком часто выглядит красиво только на демке

В точку. Ревью вайб-кода с гнильцой, который притворяется оптимизированным С++ кодом.

1
23 ...

Information

Rating
392-nd
Works in
Date of birth
Registered
Activity

Specialization

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