Konstantin Vladimirov
Konstantin Vladimirov
  • 144
  • 1 162 531
Практика языка C (МФТИ, 2023-2024). Дополнение: SDL и визуализация
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
Это дополнение к восьмому семинару, не обязательное, но мне кажется милым и интересным. Мы поговорим про использование библиотеки SDL для создания простых визуализаций и даже игр. Вы также получите уже не контестное а почти настоящее задание на подумать.
Семинарист: Константин Владимиров.
Дата: 6 мая 2024 года.
Съёмка: Марк Гончаров.
Звук: Юлий Тарасов.
Предыдущий семинар: ua-cam.com/video/Yp-rN_AZVSI/v-deo.html
Следующий семинар: TBD
Слайды к занятиям: cs.mipt.ru/wp/?page_id=7775
Примеры кода: github.com/tilir/c-graduate
Задачник: olymp1.vdi.mipt.ru/
Timeline
00:00 Обзор графических библиотек
06:35 Небольшой трюк с макросами и механизм atexit
15:48 Окно и рендерер
26:10 Двойная буферизация и простая геометрия
31:30 Текстуры и анимация
47:55 Работа с клавиатурой и прочие события
53:41 Задача
56:05 Текст и его замены
01:08:20 Абстрагирование рисовалки
01:21:15 Учёт практических соображений.
Errata
* Тут пока пусто
Переглядів: 4 182

Відео

Практика языка C (МФТИ, 2023-2024). Семинар 8.2. Решение уравнений и вычисление функций.
Переглядів 3,8 тис.День тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. Вторая часть восьмого семинара посвящена решению уравнений. Мы начнём с того, что рассмотрим разнообразные сложности и ловушки плавающих чисел. Далее мы займёмся нахождением корней уравнений: сначала рассмотрим методы в которых надо сохранять брекетинг корня, потом уйдём от них в неизвестность. Ну и в конце нас ждёт прим...
Практика языка C (МФТИ, 2023-2024). Семинар 8.1. Матрицы и линейное программирование.
Переглядів 4,3 тис.14 днів тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы начинаем последний логический семинар, посвящённый научным вычислениям. Мы разберёмся с матрицами, линейным программированием, захватим библиотеки BLAS и LAPACK и познакомимся с солверами на примере COIN-OR Linear Programming Solver. Семинарист: Константин Владимиров. Дата: 22 апреля 2024 года. Съёмка:...
Практика языка C (МФТИ, 2023-2024). Допсеминар: системы сборки (make, cmake).
Переглядів 13 тис.21 день тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. У студентов в самом разгаре проекты и настало время познакомиться с системами сборки. Мы начнём с разминки в виде анализа зависимостей между файлами. Очень быстро пройдя первый наивный способ собирать скриптом, мы за час напишем три версии makefiles возрастающей сложности. Ну а в конце нас ждёт немного cmake. Семинарист:...
Практика языка C (МФТИ, 2023-2024). Интермедия. Стандарт языка C.
Переглядів 16 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы поговорим о стандарте C. Мы начнём с попытки изобрести очень простой язык программирования и увидим на его примере основные особенности поведения высокоуровневых программ. Далее мы подробно разберём разные формы поведения программ на языке C, познакомимся и потренируемся со стандартом языка. У нас буде...
Практика языка C (МФТИ, 2023-2024). Семинар 7.2. Конвейер.
Переглядів 5 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы окажемся максимально глубоко и решим сразу две интересных загадки. Первая приведёт нас к концепции конвейера, на которой мы остановимся и внимательно её изучим. Вторая же приведёт нас к ещё более удивительным открытиям, касающимся истинной природы кешей. Семинарист: Константин Владимиров. Дата: 8 апрел...
Практика языка C (МФТИ, 2023-2024). Семинар 7.1. Кеши и немного о бенчмаркинге.
Переглядів 6 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы погрузимся в реальный мир. Начнём с простого бенчмаркинга и особенностей поведения оптимизирующих компиляторов, разберёмся с макросами, а потом встанем перед загадкой связанной с произведением матриц и решим её. Семинарист: Константин Владимиров. Дата: 1 апреля 2024 года. Съёмка: Марк Гончаров. Звук: Ю...
Практика языка C (МФТИ, 2023-2024). Семинар 6.5. Кросс-ассемблеры, их сходства и различия.
Переглядів 4,4 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. Это занятие посвящено тому чтобы показать как похожи на самом деле различные ассемблеры и как различны похожие концепции. Мы рассмотрим ассемблеры ARM и RISCV, идею линк-регистра, постиндексную адресацию, жизнь без регистра флагов, векторизацию и прочее. В конце после обзора литературы не выключайте, будет бонус про рело...
Практика языка C (МФТИ, 2023-2024). Семинар 6.4. Представления плавающих чисел и ассемблер x86.
Переглядів 4,1 тис.Місяць тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы попробуем осознать сложность представления вещественных чисел, познакомимся со стандартом IEEE754, посмотрим на два способа работы с плавающими числами в ассемблере x86 и даже обсудим влияние на оптимизации. Параллельно будет введена концепция строгого алиасинга: в будущем она нам сильно пригодится. Се...
Практика языка C (МФТИ, 2023-2024). Семинар 6.3. Вызовы функций в ассемблере x86 и ABI.
Переглядів 4,7 тис.2 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы займёмся вызовами функций и познакомимся с основными концепциями ABI: работой со стеком, caller и callee saved регистрами и конвенциями передачи аргументов. Во второй половине мы немного обсудим инлайн-ассемблер и сформулируем главное правило разработки на ассемблере. Семинарист: Константин Владимиров....
Практика языка C (МФТИ, 2023-2024). Семинар 6.2. Условные переходы и память в ассемблере x86.
Переглядів 15 тис.2 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы погрузимся в работу с флагами. Мы начнём с того что обсудим детали goto. Далее вспомним кодировку для целых чисел. Далее мы увидим как отличаются знаковые и беззнаковые сравнения. Потом мы познакомимся с концепцией "эффективного адреса" и научимся работать с памятью. В конце нас ждёт погружение в тёмны...
Практика языка C (МФТИ, 2023-2024). Семинар 6.1. Изобретаем ассемблер.
Переглядів 19 тис.2 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы начнём своё путешествие в ассемблер. Для начала мы изобретём свой собственный несложный ассемблер и даже потренируемся писать для него кодировщик и декодер инструкций. Далее мы посмотрим на более взрослый x86 его регистры и систему команд. Я также устрою большой сеанс live-coding и в конце мы подумаем ...
Практика языка C (МФТИ, 2023-2024). Семинар 5.3. Динамическое программирование.
Переглядів 4,6 тис.2 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы познакомимся с принципом оптимальности Беллмана и дискретным динамическим программированием. Мы решим несколько классических задач: рюкзак, размен монет, расстояние редактирования в строках. Кроме того мы ещё немного сдвинем пределы регулярности и выясним связь формальных грамматик как с регулярными вы...
Практика языка C (МФТИ, 2023-2024). Семинар 5.2. Регулярные выражения и автоматы.
Переглядів 4,2 тис.3 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы погрузимся в более интересную обработку строковой информации. Вы познакомимся с понятиями конечного автомата и регулярного выражения, поиграем с утилитой grep, научимся писать наши собственные регулярные выражения на C и даже используем их для условно-практических задач (скажем распознавания email в те...
Практика языка C (МФТИ, 2023-2024). Семинар 5.1. Строки и символы.
Переглядів 6 тис.3 місяці тому
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики. На этом занятии мы начнём второй семестр знакомства с основами языка C и разберём работу с индивидуальными символами и со строками. Кроме того мы возобновим знакомство с объединениями и перечисляемыми типами. Семинарист: Константин Владимиров. Дата: 5 февраля 2024 года. Съёмка: Марк Гончаров. Звук: Юлий Тарасов. Предыдущ...
Практика языка C (МФТИ, 2023-2024). Семинар 4.3. Структуры данных.
Переглядів 4 тис.4 місяці тому
Практика языка C (МФТИ, 2023-2024). Семинар 4.3. Структуры данных.
Практика языка C (МФТИ, 2023-2024). Семинар 4.2. Обходы деревьев.
Переглядів 4,4 тис.5 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 4.2. Обходы деревьев.
Практика языка C (МФТИ, 2023-2024). Семинар 4.1. Односвязные списки.
Переглядів 4,6 тис.5 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 4.1. Односвязные списки.
Практика языка C (МФТИ, 2023-2024). Интермедия: командная строка, файлы и вариабельные аргументы.
Переглядів 4,3 тис.5 місяців тому
Практика языка C (МФТИ, 2023-2024). Интермедия: командная строка, файлы и вариабельные аргументы.
Практика языка C (МФТИ, 2023-2024). Семинар 3.3. Цифровые сортировки.
Переглядів 3,2 тис.6 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 3.3. Цифровые сортировки.
Практика языка C (МФТИ, 2023-2024). Семинар 3.2. Стратегия "разделяй и властвуй".
Переглядів 4,1 тис.6 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 3.2. Стратегия "разделяй и властвуй".
Практика языка C (МФТИ, 2023-2024). Семинар 3.1. Линейный поиск и простые сортировки.
Переглядів 5 тис.6 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 3.1. Линейный поиск и простые сортировки.
Практика языка C (МФТИ, 2023-2024). Углубление пройденного: логическая память и виртуальная память.
Переглядів 7 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Углубление пройденного: логическая память и виртуальная память.
Практика языка C (МФТИ, 2023-2024). Семинар 2.3. Время и случайность.
Переглядів 4,3 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 2.3. Время и случайность.
Практика языка C (МФТИ, 2023-2024). Семинар 2.2. Побитовые вычисления.
Переглядів 6 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 2.2. Побитовые вычисления.
Практика языка C (МФТИ, 2023-2024). Семинар 2.1. Простые числа.
Переглядів 7 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 2.1. Простые числа.
Практика языка C (МФТИ, 2023-2024). Допсеминар: unix shell
Переглядів 14 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Допсеминар: unix shell
Практика языка C (МФТИ, 2023-2024). Семинар 1.3. Числа Фибоначчи.
Переглядів 6 тис.7 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 1.3. Числа Фибоначчи.
Практика языка C (МФТИ, 2023-2024). Семинар 1.2. Системы счисления.
Переглядів 10 тис.8 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 1.2. Системы счисления.
Практика языка C (МФТИ, 2023-2024). Семинар 1.1. Алгоритм Евклида.
Переглядів 37 тис.8 місяців тому
Практика языка C (МФТИ, 2023-2024). Семинар 1.1. Алгоритм Евклида.

КОМЕНТАРІ

  • @otorvysh
    @otorvysh 15 годин тому

    Константин, доброго вреени суток и мое почтение Вашему преподавательскому таланту! разъясните, пожалуйста (ну или может сообщество знает ответ), как правильно работать с геометрией? например, на плоскости даны 2 точки и надо провести серединный перпендикуляр. проблемы с форрмулой нет, но непонятен один момент: если проводить вычисления в логических координатах, то при пуше на неквадратный viewport визуально линия вообще не выглядит, как серединный перпендикуляр. или все-таки геометрию надо решать в экранных координатах, потом переводить в логические для вершин, а pipeline потом снова их пересчитает в координаты viewport? какая-то двойная работа получается) заранее спасибо за ответ...

  • @DmitryKandiner
    @DmitryKandiner День тому

    29:18 Если не ошибаюсь, Intel 4004 всё-таки 4-битный процессор. Возможно, Вы имели в видu Intel 8008?

  • @johntrucena4947
    @johntrucena4947 День тому

    по поводу алгоритма поиска большинства а если массив вида 2 2 2 1 3 1 3 4 5 4 5 6 7 6 7 по идее правильный ответ это двойка, но она не наберёт нужного количества голосов и покажется неправильный результат

  • @normanmaddyson8408
    @normanmaddyson8408 День тому

    Спасибо за лекцию nitpicking, но почему функции на 1:17:40 объявлены как static inline? Разве от inline в этом случае есть какой-то эффект?

    • @tilir
      @tilir День тому

      Да, где то на 30% повышает вероятность инлайна если собирать gcc )) Если более серьёзно то static inline это устоявшаяся идиома.

    • @alexloktionoff6833
      @alexloktionoff6833 21 годину тому

      @@tilir также static inline в gcc автоматически убираются если не используются, бинарными меньше.

  • @dmitry-strakhov
    @dmitry-strakhov День тому

    Небольшая опечатка (две) на таймлайне. Написано "Вчет приктических сообрадений"

    • @tilir
      @tilir День тому

      Спасибо, пофиксил ))

  • @user-zl1fy7ej6t
    @user-zl1fy7ej6t 2 дні тому

    В следующий раз нужно добавить raylib библиотека проще sdl при этом поддерживает работу с шейдерами из коробки

    • @pavelrid
      @pavelrid День тому

      raylib это OpenGL, а у SDL есть в бекэндах OpenGL, D3D, Vulkan и Metal и даже софтварный рендер

    • @user-zl1fy7ej6t
      @user-zl1fy7ej6t 23 години тому

      ​@@pavelrid понятно, просто на рейлибе можно проще и быстрее получить рабочее дэмо, если цель проекта запустить проверить визуализировать для собственных нужд то этот вариант подходит лучше всего ( за исключением специфичных сценариев )

  • @alexorlovecky6662
    @alexorlovecky6662 2 дні тому

    Не совсем понял последнюю задачу студентам.. Всмысле посчитать к чему сводится такой ряд? Ну к нулю... Или я где то туплю?

  • @mkdir4701
    @mkdir4701 2 дні тому

    Прочитал Прату. Посмотрев вас - понял, что надо ещё много интересного узнать!

  • @user-ne4bd3ry1n
    @user-ne4bd3ry1n 2 дні тому

    проверку столкновений надо было бы еще

  • @user-ne4bd3ry1n
    @user-ne4bd3ry1n 2 дні тому

    отлично

  • @AlexAlex-ll5sz
    @AlexAlex-ll5sz 2 дні тому

    29:42 а где же в описании вольфрам_альфа? Я не вижу ссылки.

    • @tilir
      @tilir 2 дні тому

      Ссылка на вольфрам на слайдах. Ссылка на страничку со слайдами в описании.

  • @MallSerg
    @MallSerg 2 дні тому

    Не самый удачный пример на процессоре генерировать текстуру фрактала ((. В том же SDL2 самые удобные инструменты для реализации шейдеров на GLSL через OpenGL или Vulkan API.

    • @tilir
      @tilir 2 дні тому

      Про шейдеры уже отвечал. Идея хорошая, но в расписание первого курса не лезет и для первокурсников тяжеловата. Объясняю на втором, уже в курсе по C++.

    • @alexloktionoff6833
      @alexloktionoff6833 21 годину тому

      @@tilir да интересно на втором курсе показать и сравнить быстродействие!

  • @eugenevladoff2758
    @eugenevladoff2758 2 дні тому

    А разве при включенной vsync SDL2 не сам у себя внутри делает паузу для каждого кадра, чтобы довести ее до умолчальных 60 fps?

    • @tilir
      @tilir 2 дні тому

      Это если устройство с таким флажком найдено. Ну и потом вдруг вы хотите меньше. Донести идею как это делается руками мне кажется важным.

    • @eugenevladoff2758
      @eugenevladoff2758 2 дні тому

      А, понял. Вы же увеличивали задержку. Сначала для получения 50 FPS, а потом до получения 10 FPS, для примера.

  • @AlexAlex-ll5sz
    @AlexAlex-ll5sz 2 дні тому

    Класс!!

  • @DmitryKandiner
    @DmitryKandiner 2 дні тому

    1:12:10 Немного покопался и выяснил, что идеальным коэффициентом для размера буфера было бы золотое сечение (1.612...), а оптимальным в практическом плане - 1.5

  • @Stedmiel
    @Stedmiel 2 дні тому

    35:45 так как у меня видеокарта от nvidia- то я могу взять библиотеку nvidia reflex и попросить видеокарту выдать мне ровно 50 кадров в секунду 😀(а всем остальным выдавать сообщение "ну вы же смотрели на системные требования" xD ) ну или переключить монитор в 50 герц и включить vsync. но эт слишком грязно и инпутлаг поедет... 1:11:34 насколько помню- в 2022 вижле сишку починили. ну или clang-cl притащить, чо уж там.

    • @tilir
      @tilir 2 дні тому

      Вы сейчас радостно агитируете за чудовищный и отвратительный вендорлок.

    • @Stedmiel
      @Stedmiel 2 дні тому

      @@tilir ну, благо там, где рефлекс нужен (всякие компетитив-игоры)- и так почти везде нвидия. ну и может быть к какому-нибудь vulkan 1.9 оно доедет и до стандарта... там внутре же просто семафорчики и доступ к аппаратным/драйверным счетчикам. а так да. плоховастенько. жаль, что альтернатив ему не особо есть (на винде). *а еще на винде контекст вулкана надо создавать через одно место- dxgi зовется. потому что только там можно поставить флажок "обходить композитор". это бы тоже куда-нибудь в дефолтное расширение вулкана припереть... так что пока что да- или вендорлок, или волосатый график фреймтайма (потому что sleep'ы косые как не в себя) + инпутлаг конь. с рефлексом в типичной игоре можно 6-9мс от ввода до видеовыхода, как повезет со временем запуска. и не улетая при этом в много-много фпс, которые еще и VRM взорвать могут (косится на нвидию, не чинящую этот баг с 900-ой серии до 4000) а, ну или дедовский вариант с переключением частоты монитора. вариант еще хуже xD

    • @tilir
      @tilir 2 дні тому

      У AMD тоже есть очень конкурентные карточки. Да и у Интела ARC Alchemist неплоха.

    • @Stedmiel
      @Stedmiel 2 дні тому

      @@tilir я там не про сами карточки, а про драйвера и весь софт вокруг них. не знаю, как у интела, их ARC ни на одной из моих машин не завелся (но эти машины весьма кривые, эт ожидаемо), но у красненьких просто нет способа снизить инпутлаг. тот, который заявлен- не работает как надо. а еще у них проблемы, если вдруг видеокарта повисла- их невозможно ресетнуть. там, где у других достаточно bus reset, у амд надо выключать питание. (и даже если выключишь питание- там драйвер выгружаться не умеет нормально. но в линуксе все в целом плохо с хотплагом/анплагом гпу. но хотя бы так можно перезапустить виртуалку с амдшной графикой, не перезапуская всю машину.) а чтобы повесить амдшную графику в линуксе- чуть ли не достаточно сделать for(;;); в шейдере. да, оно настолько плохое там. но в целом начиная с 7000 серии у них наконец-то кодер видео стал адекватно кодировать видео! и даже лучемет лучи метает как надо! (оне там формат дерева blas/tlas поменяли на примерно как у нвидии.) ждем всего остального xD про то, что "и так почти везде нвидия"- это чисто из стимовской статистики, там ее 76.59% за апрель 2024.

  • @DmitryKandiner
    @DmitryKandiner 3 дні тому

    26:30 Можно ещё добавить "джигитовки": while (*dst++ = *src++);

  • @andrewkot5212
    @andrewkot5212 3 дні тому

    Скажите, а девайс , которому коннектиться рендерер- это что за сущность? Вроде как и драйвер к устройству, но если есть софвар асселератор - то просто подпрограмма

    • @tilir
      @tilir 2 дні тому

      Это рантайм. В обычном случае у нас есть графический kernel-mode драйвер к которому цепляется например OpenGL runtime, представляющий собой user-mode часть драйвера. SDL умеет собирать несколько поддерживаемых рантаймов и цепляется уже к ним.

  • @johndick996
    @johndick996 3 дні тому

    Отличная вводная в графику, с самой базы. Константин Игоревич, большое спасибо за труд!

  • @user-ko2th7mx2n
    @user-ko2th7mx2n 3 дні тому

    1:23:00 Почему в интрузивном счётчике не нужно его делать атомарным?

  • @stanislavstanislavius7618
    @stanislavstanislavius7618 3 дні тому

    Так вот как работает реверс инжениринг))

  • @atmr90
    @atmr90 4 дні тому

    Константин, большое Вам спасибо за курс лекций, от человека из региона! как то было сказано что доп. семинара по vim не будет. Но если это станет возможным, то курс станет шикарным в квадрате. В меру часто приходится подключаться к удаленным серверам и что то править и хорошие практики работы с vim были бы очень полезны. Сам очень долго (несколько месяцев) разбирался как работает буфер и как его прокинуть на удаленный сервер в vim. (Прокинуть ssh -X, ssh config X11Forwarding yes, установить xclip, vim config set clipboard += "unnamedplus"). А ведь копи-паст это полезная функция. Без иксов можно системно и логично (как Вы это делаете, отдельная благодарность) рассказать о базовых настройках чистого vim. нумерация строк, сплит экрана - то чем пользовались на семинарах.

  • @thepawday
    @thepawday 4 дні тому

    33:26 мое любимое UB - std:: unreachable()

  • @MVZ1983
    @MVZ1983 4 дні тому

    Аппаратные кэши, конвейеры, транзисторы, конденсаторы... Как же низко мы пали!

  • @FeelUs
    @FeelUs 5 днів тому

    Взятие адреса переменной не гарантирует, что она не окажется в регистре (может оказаться, что этот адрес не используется). А вот если добавить volatile, то должно сработать. Поправьте меня пожалуйста если я не прав.

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

      Достаточно чтобы адрес куда то утёк. Например был передан как аргумент во внешнюю функцию и т.п. volatile да, всегда работает, но это очень дорогой метод ))

    • @FeelUs
      @FeelUs 4 дні тому

      @@tilir а чем дорог volatile?

    • @tilir
      @tilir 2 дні тому

      @@FeelUsвокруг него отключается большинство компиляторных оптимизаций.

    • @FeelUs
      @FeelUs 2 дні тому

      2:13 а разве мы не этого хотим? Для чего вообще может потребоваться явно выделить память но при этом оставить какие-то оптимизации с памятью?

  • @stanislavstanislavius7618
    @stanislavstanislavius7618 5 днів тому

    59:48 Если мы из "B A E" возьмем B и добавим в "D C" то у нас будет конфликт, т.к. у B и D дедлайн первого дня, а значит мы не любое значение можем взять из "B A E". Или у матроидов предусматривается взятие даже конфликтующих значений?

  • @FeelUs
    @FeelUs 5 днів тому

    В общем, чтобы понять исходники clang'а нужен анализатор кода, а чтобы сделать анализатор кода нужно понять исходники clang'а

  • @FeelUs
    @FeelUs 5 днів тому

    а в каком файле исходников находится main(argc,argv) ?

  • @FeelUs
    @FeelUs 5 днів тому

    В самом деле, сейчас clang 18.1.4

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

      Да много времени уже прошло ))

  • @user-fh9jb9nz2m
    @user-fh9jb9nz2m 6 днів тому

    Скажите пожалуйста, просто любопытно а литература за 1988 год разве еще актуальна 🤨?

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

      Да.

  • @user-fh9jb9nz2m
    @user-fh9jb9nz2m 6 днів тому

    " изучить си за недельки две". М да хотел бы посмотреть на такого человека кто знает Си в полном объёме. От всех его стандартов и всех возможностей за такой срок😁.

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

      Так в полном объёме и не нужно.

  • @alexanderspeshilov839
    @alexanderspeshilov839 6 днів тому

    "Подсмотриваю" ваши семинары (хоть и в 2 раза старше студентов). Про бенчмаркинг sqrt. На X64 и мощных ARM понятно что итеративно (даже Ньютоном) вариант dsqrt обогнать если и можно, то не просто. Но вот на каком-нибудь Cortex- M0 или RISC-V без нужных расширений dsqrt может оказаться совсем небыстрым. При этом для целых есть хорошее начальное приближение что-нибудь типа x >> ((32 - clz(x)) >> 1), где clz - количество нулей впереди. Впрочем, у m0 clz тоже, если я правильно помню не одной командой считается.

  • @MVZ1983
    @MVZ1983 6 днів тому

    ну и про union не забываем если нужно представить float как unsigned

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

      Не используйте type punning.

  • @dsorvq
    @dsorvq 7 днів тому

    Асимптотика на 1:07:20 скорее всего несколько выше, чем O(n), нам ведь еще нужно на каждой итерации считать что-то вроде lcm(i, result). O(n * log(lcm(2,...,n))) точно подойдет, но наверное, можно уже

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

      Если числа M-битные, это добавляет множитель O(logM). Но для 32-битных чисел это константа, поэтому O(N) -- мы зависим только от общего количества чисел и съедаем их по одному.

  • @Dav1d5611
    @Dav1d5611 7 днів тому

    Вывод с пробелом можно через правую свёртку написать? template <typename... Ts> void print_all(Ts&&... args) { (((std::cout << args << ' '), ...)) << ' '; } И в Addable можно же убрать requires sizeof...(Ts) > 1? т.к. (... + std::forward<Ts>(args)) будет компилироваться с ошибкой (not satisfied). Или оставить, но написать в начале. Как и другой requires, но там будут проходить sum_all(2.0, 1), но не sum_all(1, 2.0) =)

  • @user-vh9dg8hl8o
    @user-vh9dg8hl8o 8 днів тому

    !

  • @stanislavstanislavius7618
    @stanislavstanislavius7618 8 днів тому

    Самое главное здесь, что только на шестом этапе нужно начать думать)))

  • @MVZ1983
    @MVZ1983 8 днів тому

    Балы, красавицы, лакеи, хакера, И вери трики кейс, и хруст французской булки...

  • @lwind4884
    @lwind4884 9 днів тому

    При проверке на равенство чисел с плавающей точкой рекомендую руководствоваться следующей методикой. Если, например, нужна точность до 5го знака после десятичной точки, берите допуск равный 0,5*0,00001 (т.е. 0,000005). Так Вы нивелируете погрешность математического округления.

    • @user-hh2qp6ez4d
      @user-hh2qp6ez4d 2 дні тому

      Нас на вычислительной математике учили считать на разряд выше требуемой точности.

    • @lwind4884
      @lwind4884 2 дні тому

      @@user-hh2qp6ez4d Я имел ввиду следующее. Нужно сравнить два числа так, как если бы Вы перевели эти числа в строку с одинаковыми настройками форматирования, а потом проверили на равенство. Например, сравните числа 1.5551 и 1.5552 с точностью до третьего знака после десятичной точки. Если считать на разряд выше, то с точностью до четвёртого знака эти два числа не равны. Но с точностью до третьего знака они не различимы, т.е. равны. Впрочем. Вообще выбор метода сравнений чисел с плавающей точкой зависит от конкретной задачи.

    • @user-hh2qp6ez4d
      @user-hh2qp6ez4d 2 дні тому

      @@lwind4884 я не про количество знаков после запятой. Я про количество разрядов. Например, 123456.789(9 разрядов)*1.234(4 рязряда) - так считаль нельзя, потому что результат умножения будет достоверным только на 4 разряда. Нужно сохранять количество разрядов, а именно 123456.789*1.23456789 - так правильно, если нужна точность 8 разрядов. Как тут сравнивать? В каждом конкретном случае свое количество знаков после запятой.

    • @lwind4884
      @lwind4884 День тому

      @@user-hh2qp6ez4d Благодарю за комментарий по поводу точности вычислений. Однако, прошу обратить внимание, что я писал о методе сравнения.

  • @MVZ1983
    @MVZ1983 9 днів тому

    да... хак на хаке и хаком погоняет хороший курс лекций, но как с этим жить?

  • @hohlovin
    @hohlovin 9 днів тому

    Давали бы мне такие знания году так в 95-м...

  • @tetraphobie
    @tetraphobie 9 днів тому

    Пришёл из-за аниме, остался из-за раскрутки стека.

  • @akulijbe
    @akulijbe 9 днів тому

    1:13:10 - видимо запись решила скрыть, что мы увидим в реализации синуса) но я дополню, что почти всегда мы увидим ряды Тейлора (к примеру, как в musl и glibc) P.S.: видео как всегда супер! Спасибо)

  • @narzaru
    @narzaru 9 днів тому

    Здравствуйте, доступа к заданиям в задачнике нет, и ссылка на плейлист с записями семинаров в конце задачника неправильная

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

      У вас проблемы с браузером, он подменяет вам http на https.

    • @narzaru
      @narzaru 9 днів тому

      @@tilirтак и не смог победить, пробовал Edge, Google Chrome, Firefox. Потыкал настройки, не помогло. Код последней ошибки 4e816500.

  • @2_x_2_4
    @2_x_2_4 10 днів тому

    ua-cam.com/video/Yp-rN_AZVSI/v-deo.html Эту формулу (1/2(xn+a/xn)) ещё называют фомулой Герона. А т.к. одну формулу Герона студенты знают, то, полагаю, у вас, Константин, интересно получилось бы обыграть такую ситуацию в лекции. :-)

  • @evseee
    @evseee 10 днів тому

    да, одно дело когда говорят "для икс меньше дельта", а другое когда ты на, ещё зелёном, но уже графическом, мониторе видишь как колбасит ряд маклорена для синуса при удалении от нуля :)

  • @fedorbabkin
    @fedorbabkin 10 днів тому

    Вспомнился ФОПФовый анекдот. Студент на экзамене по электродинамике все время подглядывает на ладонь руки. Преп ловит его, говорит: показывай шпаргалку. Тот показывает левую ладонь, там буква Л. Преп: зачем тебе это? Студент: правило левой руки помню, а какая из них левая, всё время забываю...

  • @allallall2321
    @allallall2321 10 днів тому

  • @wumi2419
    @wumi2419 10 днів тому

    Семинары для себя это да) Сам на 4 курсе в другом ВУЗе, но смотреть интересно и местами есть новая информация.

  • @sibedir
    @sibedir 10 днів тому

    34:35 Числа с плавающей точкой на столько отличаются от вещественных чисел, что там даже левое и правое не такие 😂