Ошибки как часть дизайна программы на C • Live coding

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ม.ค. 2025

ความคิดเห็น • 33

  • @КузьмаМазуренко
    @КузьмаМазуренко 4 วันที่ผ่านมา

    Очень интересно и удивительно актуально, вне зависимости от уровня. Спасибо огромное!

  • @_dzen_tv_
    @_dzen_tv_ 11 วันที่ผ่านมา

    59:40 Это вопрос о цикломатической сложности. И в данном случае мы видим один из вариантов её уменьшения.
    Если почитать исходники парсеров дат или вещественных чисел то можно увидеть как люди "упражняются" в данной дисциплине.
    Да и множественные ретурны с ошибками это норм, правда не в мире розовых пони.
    Зачем нам дальше выполнять бессмысленную работу если наткнулись на ошибку.

  • @rudthakyred_alert6359
    @rudthakyred_alert6359 12 วันที่ผ่านมา

    Можно создать стек с указателями на выделенную память и освобождать ее по мере необходимости.(Захардкоженный строго типезированный массив определенного размера с проверкой переполнения стека и реализацией поведения при переполнении).
    Или реализовать аналог vector (с указателями на следующей и предыдущий выделенный в памяти элемент).
    Это для тех кому не понравился пример с выделением памяти. А так да, создать структуру errors (например) элементы которой будут указывать на различные ошибки при выполнения кода затем разбераем ошибки. Например ошибки приема данных по тому же UART или неверный строб (не по таймингу) и т.д.
    Автору: нашел Вас недавно, смотрю стримы с удовольствием! Так держать!

    • @olgapavlova
      @olgapavlova  12 วันที่ผ่านมา

      Постараюсь сделать ещё и стрим по техникам со звёздочкой. В том числе и по тем, что вы упомянули. Спасибо!

  • @s6x9n
    @s6x9n 16 วันที่ผ่านมา +3

    ❤❤❤

  • @_dzen_tv_
    @_dzen_tv_ 11 วันที่ผ่านมา

    1:06:00 По поводу таблиц истинности не совсем корректно(это касается комментария из чата).
    Таблица истинности подразумевает проверку всех входных значений при формировании результата.
    А в данном случае происходит вычисление выражения.
    && или || - это булевый оператор. Значит для него нужно вычислить левое и правое выражения.
    Но реализация оператора предусматривает оптимизацию и опускает вычисление правого выражения в случае истинности(ложности) левого.
    if (left || right) do_work();
    по факту отрабатывает как:
    if (left == true) do_work();
    else if (right == true) do_work();

  • @DruiD478
    @DruiD478 15 วันที่ผ่านมา

    Благодарю за информацию‼️🫡

  • @mtp7261
    @mtp7261 15 วันที่ผ่านมา

    У нас реестр, у них sdn - паритет, если видеть общую картину системы под названием человечество.
    Однабокость не окрыляет.
    Этот стрим философским получился,
    goto к чистым истокам )

  • @mtp7261
    @mtp7261 15 วันที่ผ่านมา

    Ольга, расскажите о себе немного. Какие проекты вы разрабатываете на Си.

  • @Виктор-ч1ц3з
    @Виктор-ч1ц3з 15 วันที่ผ่านมา

    59:37, разве при завершении программы, выделенная ей память не освобождается?
    Про динамическую память было бы интересно послушать

    • @Виктор-ч1ц3з
      @Виктор-ч1ц3з 15 วันที่ผ่านมา

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

    • @olgapavlova
      @olgapavlova  15 วันที่ผ่านมา

      Дело в том, что многие программы, написанные на C, должны работать постоянно. Поэтому на событие «завершение программы» полагаться и нельзя. Впрочем, если вы точно знаете, что программа завершится в предсказуемое время, а работает она при этом на системе с приличным объёмом памяти - да, можно забить на все эти утечки (я вам этого не говорила :)). Просто знаете вы это крайне редко.

  • @m_stifeev
    @m_stifeev วันที่ผ่านมา

    Здравствуйте. Лекция получилась интересная. Но один вопрос из чата так и остался без ответа. Что всё-таки с зарплатами программистов на си?

    • @olgapavlova
      @olgapavlova  วันที่ผ่านมา

      Ну почему же без ответа. Ответ всё тот же: мне эта тема не интересна, а кругом полно желающих её обстоятельно обсудить. Их спрашивать точно эффективней.

  • @MSaidu-sj6vx
    @MSaidu-sj6vx 15 วันที่ผ่านมา

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

    • @olgapavlova
      @olgapavlova  15 วันที่ผ่านมา +1

      Без проблем, в одном из ближайших видео будет. Спасибо за идею!

  • @Retro_Botanik
    @Retro_Botanik 11 วันที่ผ่านมา

    Ольга здравствуйте. Не планируете цикл передач "С для начинающих" с самого нуля, вплоть с установки и настройки среды?

    • @olgapavlova
      @olgapavlova  11 วันที่ผ่านมา

      Спасибо за идею. Тут с кондачка не сделаешь, готовиться надо :) Я обязательно подумаю, но не в ближайшие полгода.

    • @Retro_Botanik
      @Retro_Botanik 11 วันที่ผ่านมา

      @@olgapavlova Ну а можно хотя бы видео по установке и настройке ПО для С которым пользуетесь вы?

    • @olgapavlova
      @olgapavlova  11 วันที่ผ่านมา

      Вы, кстати, видели лекции Тимофея Хирьянова по основам Си? Очень хороши.

    • @olgapavlova
      @olgapavlova  11 วันที่ผ่านมา +1

      По установке-настройке сделаю, договорились :)

    • @Retro_Botanik
      @Retro_Botanik 11 วันที่ผ่านมา

      @olgapavlova Спасибо!

  • @NickChi
    @NickChi 16 วันที่ผ่านมา

    В obs есть настройка фильтра шумоподавления на микро. Не будет шума от кулера. ❤

    • @olgapavlova
      @olgapavlova  16 วันที่ผ่านมา

      Спасибо!

  • @aleksandr2245
    @aleksandr2245 15 วันที่ผ่านมา

    а по JS видео будут?)

    • @olgapavlova
      @olgapavlova  15 วันที่ผ่านมา +1

      Будут, но не очень скоро. Надеюсь, через год.

    • @aleksandr2245
      @aleksandr2245 15 วันที่ผ่านมา

      @olgapavlova супер, спасибо)

  • @NickChi
    @NickChi 16 วันที่ผ่านมา

    Динамическая память самая больная тема в си. Ждем лекции

  • @mtp7261
    @mtp7261 15 วันที่ผ่านมา

    Очень круто
    int ok = 1;
    ok = ok && !check_f();

    • @_dzen_tv_
      @_dzen_tv_ 11 วันที่ผ่านมา

      int ok = 0;
      ok = ok || check_f();
      или
      ok = (ok || step1() || step2() || step_n() || step_end()) && err_f();
      или
      ok = (ok || (step1() && err1()) || (step2() && err2()) || (step_n() && err_n()) || (step_end() && err_end())) && err_f();