Практика языка C (МФТИ, 2023-2024). Интермедия. Стандарт языка C.

Поділитися
Вставка
  • Опубліковано 9 тра 2024
  • Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
    На этом занятии мы поговорим о стандарте C. Мы начнём с попытки изобрести очень простой язык программирования и увидим на его примере основные особенности поведения высокоуровневых программ. Далее мы подробно разберём разные формы поведения программ на языке C, познакомимся и потренируемся со стандартом языка.
    У нас будет один вставной момент где я учу детей разбивать программы на модули и писать тесты. Это связано с тем что они сейчас делают проекты, можете это пропустить если смотрите эту лекцию в отрыве от основного курса.
    В конце я приготовил небольшое рассуждение про важность стандартизации.
    Семинарист: Константин Владимиров.
    Дата: 15 апреля 2024 года.
    Съёмка: Марк Гончаров.
    Звук: Юлий Тарасов.
    Предыдущий семинар: • Практика языка C (МФТИ...
    Следующий семинар: • Практика языка C (МФТИ...
    Слайды к занятиям: cs.mipt.ru/wp/?page_id=7775
    Примеры кода: github.com/tilir/c-graduate
    Задачник: olymp1.vdi.mipt.ru/
    00:00 Язык программирования INC и поведение программ
    12:38 Семантика и стандарт языка
    23:50 Поведение программ
    34:15 Неопределённое поведение
    47:17 Тренировка в чтении стандарта и время решать задачи
    50:20 Немного информации про проект и live coding
    01:08:43 Стандарт как источник знаний
    01:19:11 Важность стандартизации
    Errata
    * Тут пока пусто

КОМЕНТАРІ • 33

  • @total_anihilation
    @total_anihilation 19 днів тому +27

    У меня теперь каждая суббота начинается с этих лекций )

    • @sibedir
      @sibedir 19 днів тому +3

      У меня жизнь началась с этих лекций 😅

  • @user-cy3do4xc2c
    @user-cy3do4xc2c 14 днів тому +4

    Душевная атмосфера на семинаре. И звук с картинкой сделали достойно. Прям так и хочется что-то приятное написать

  • @user-fw3kx2ix3p
    @user-fw3kx2ix3p 20 днів тому +20

    Лайк как всегда ❤

  • @pitche
    @pitche 19 днів тому +10

    Такое милое начало)). Сразу видно, что вы офигенный препод!

  • @saefsasdf
    @saefsasdf 12 днів тому +2

    Благодарю

  • @ill4374
    @ill4374 19 днів тому +3

    Прекрасный лектор!

  • @ruslankhl
    @ruslankhl 19 днів тому +1

    Спасибо!

  • @moshamiracle
    @moshamiracle 20 днів тому +9

    Вот бы от Вас в Вашем неповторимом изложении послушать про стандарт C24 с пояснениями, что, зачем и почему там было добавлено

    • @tilir
      @tilir  20 днів тому +16

      Я планирую записать видео. Но не сейчас а когда его примут.

    • @moshamiracle
      @moshamiracle 19 днів тому +7

      @@tilir заранее огромное спасибо за вашу деятельность

  • @johoaprl2505
    @johoaprl2505 15 днів тому +1

    Милота)))

  • @OldAndy
    @OldAndy 18 днів тому

    37:30 Скомпилил пример в godbolt в gcc и clang для арма, добавив в конце вывод k и инициализацию массива случайным числом, всегда k=16 . GCC дает предупреждение iteration 15 invokes undefined behavior [-Waggressive-loop-optimizations], а clang даже передупреждения не дает.

  • @ivankorotkov2563
    @ivankorotkov2563 20 днів тому +3

    34:10 когда начали говорить что разыменование нулпоинтера может быть соптимизровано ожидал на следующем слайде увидеть классический пример из статьи "Why undefined behavior may call a never-called function" вызова по указателю на функцию, в которой лежит нулпоинтер.

    • @tilir
      @tilir  20 днів тому +3

      Да, это достойный классический пример. Постоянно его упускаю.

    • @ivankorotkov2563
      @ivankorotkov2563 20 днів тому

      Проверил пример - на clang все еще актуален. На gcc не воспроизвелось. Сначала пытался по памяти его написать, но не получилось из-за того, что потерял static в объявлении переменной. Видимо если нет static, то компилятор считает что эту переменную засетапят из другого файла и не видит смысла в этой "оптимизации".

  • @DmitryKandiner
    @DmitryKandiner 14 днів тому

    46:00 Как вариант, найти индекс старшей единицы в обеих переменных, и проверить, что сумма меньше, чем индекс старшего бита в INT_MAX (lg(a) + lg(b) < lg(INT_MAX))

  • @user-zg2bx5cb3d
    @user-zg2bx5cb3d 16 днів тому +1

    А это какой по номеру семинар, 8.0?

    • @tilir
      @tilir  16 днів тому +2

      Нет, это без номера. Посередине между 7 и 8, у меня такие раньше уже были.

  • @noch_temna111
    @noch_temna111 17 днів тому +1

    Это про вас говорят, что вы ставите двойки только за темную тему в IDE?

    • @tilir
      @tilir  17 днів тому +6

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

  • @alexs7931
    @alexs7931 19 днів тому +1

    37:12 да это ужастно, нужно думать как компилятор, синтаксис ничего не значит.

  • @McGewen
    @McGewen 20 днів тому +4

    makefile???

    • @tilir
      @tilir  19 днів тому +8

      Первый курс всё-таки. Я к слову скоро запишу допсеминар по простой сборке.

    • @McGewen
      @McGewen 19 днів тому +2

      @@tilir супер!

  • @friren_elf
    @friren_elf 14 днів тому

    36:42 на gcc выводит не 42.

    • @tilir
      @tilir  14 днів тому +1

      Дайте угадаю: вы -О2 забыли подать?

    • @friren_elf
      @friren_elf 14 днів тому

      @@tilir с ним выводит, но вы на слайде написали, что на всех известных вам компиляторах выведет 42, без упоминания флага) Но лекция интересная, не знал о таком. Спасибо!

    • @tilir
      @tilir  14 днів тому +1

      Как следует из того что я объясняю, они не просто так это делают, а в итоге оптимизаций. То есть попросить оптимизировать всё таки надо.

    • @bv9876
      @bv9876 13 днів тому

      @@tilir Спасибо за семинары!
      Всё верно, с -О2 выводит 42 ✌

  • @tohaya123
    @tohaya123 13 днів тому +1

    Фигаж се контент! Я в шоке.

  • @frokinnfrok9007
    @frokinnfrok9007 11 днів тому

    на 37 минуте явная ошибка. по умолчанию в переменную х запишется тот мусор, который был в стеке. лично у меня вывелось 63683453

    • @tilir
      @tilir  11 днів тому

      Дайте угадаю. Забыли подать -O2?