Выложил первую часть последней лекции магистерского курса — мы начинаем сопрограммы.
https://youtu.be/mDajl0pIUjQ
Сначала мы потратим немного времени на обзор разновидностей сопрограмм, потом исследуем их основные части и дальше нас ждёт много интересных упражнений: собственный генератор, исследование объектов ожидания и разбор тонких и сложных проблем.
#cpp_postgraduate
https://youtu.be/mDajl0pIUjQ
Сначала мы потратим немного времени на обзор разновидностей сопрограмм, потом исследуем их основные части и дальше нас ждёт много интересных упражнений: собственный генератор, исследование объектов ожидания и разбор тонких и сложных проблем.
#cpp_postgraduate
YouTube
Магистерский курс C++ (МФТИ, 2022-2023). Лекция 23. Сопрограммы, часть 1.
Лекции в магистратуре МФТИ по современному C++ на русском языке. Кафедра микропроцессорных технологий.
На этой лекции мы поговорим о сопрограммах. Сначала мы потратим немного времени на обзор разновидностей сопрограмм, потом исследуем их основные части и…
На этой лекции мы поговорим о сопрограммах. Сначала мы потратим немного времени на обзор разновидностей сопрограмм, потом исследуем их основные части и…
🔥46👍17❤5🦄1
Выложил последнюю лекцию курса.
Она завершает изложение корутин и в отличие от прошлой существенно уходит от изложения прошлого года. Я подключаю многопоточку и она помогает мне раскрыть главную тайну корутин.
https://youtu.be/WZhxMwKaXmw
Это завершает мой магистерский курс и я сам не верю что мне удалось его записать и выложить. У меня бы это не получилось без Юлия Тарасова https://t.me/botan_razdolb который на всех этих лекциях был оператором и звукорежиссером (и немного продюсером).
Базовый курс 2021-22 и магистерский курс 2022-23 вместе это главное что есть на моём канале.
Базовый:
youtube: https://www.youtube.com/playlist?list=PL3BR09unfgciJ1_K_E914nohpiOiHnpsK
rutube: https://rutube.ru/plst/119828/
Магистерский:
youtube: https://www.youtube.com/playlist?list=PL3BR09unfgcgf7R88ZQRQqWOdLy4pRW2h
Дальнейшие творческие планы -- это записать наконец-то базовый курс по языку C и ассемблеру. Также хочется записать курс по вычислимости. И может быть что-то по бэкендам компиляторов.
Летом я скорее всего также запишу и выложу несколько обещанных лекций по системам сборки (я обещал на 1к в телеграме и приближается 10к на ютубе).
Ну и ещё бы перезаписать тулчейн с понями, так как слайдов явно добавилось и пони тоже.
В общем как мне сказала сейчас ChatGPT когда я попросил её сделать последнюю фразу этого поста: "пусть каждый ваш день будет наполнен сияющими моментами и вдохновением, а ваши мечты сбываются с легкостью. Идите вперед и покоряйте мир своим уникальным блеском".
#cpp_postgraduate #official
Она завершает изложение корутин и в отличие от прошлой существенно уходит от изложения прошлого года. Я подключаю многопоточку и она помогает мне раскрыть главную тайну корутин.
https://youtu.be/WZhxMwKaXmw
Это завершает мой магистерский курс и я сам не верю что мне удалось его записать и выложить. У меня бы это не получилось без Юлия Тарасова https://t.me/botan_razdolb который на всех этих лекциях был оператором и звукорежиссером (и немного продюсером).
Базовый курс 2021-22 и магистерский курс 2022-23 вместе это главное что есть на моём канале.
Базовый:
youtube: https://www.youtube.com/playlist?list=PL3BR09unfgciJ1_K_E914nohpiOiHnpsK
rutube: https://rutube.ru/plst/119828/
Магистерский:
youtube: https://www.youtube.com/playlist?list=PL3BR09unfgcgf7R88ZQRQqWOdLy4pRW2h
Дальнейшие творческие планы -- это записать наконец-то базовый курс по языку C и ассемблеру. Также хочется записать курс по вычислимости. И может быть что-то по бэкендам компиляторов.
Летом я скорее всего также запишу и выложу несколько обещанных лекций по системам сборки (я обещал на 1к в телеграме и приближается 10к на ютубе).
Ну и ещё бы перезаписать тулчейн с понями, так как слайдов явно добавилось и пони тоже.
В общем как мне сказала сейчас ChatGPT когда я попросил её сделать последнюю фразу этого поста: "пусть каждый ваш день будет наполнен сияющими моментами и вдохновением, а ваши мечты сбываются с легкостью. Идите вперед и покоряйте мир своим уникальным блеском".
#cpp_postgraduate #official
YouTube
Магистерский курс C++ (МФТИ, 2022-2023). Лекция 23. Сопрограммы, часть 2
Лекции в магистратуре МФТИ по современному C++ на русском языке. Кафедра микропроцессорных технологий.
На этой лекции мы закончим разговор о сопрограммах. В итоге всё срастётся -- и сопрограммы и многопоточность и даже асинхронность.
Лектор: Константин…
На этой лекции мы закончим разговор о сопрограммах. В итоге всё срастётся -- и сопрограммы и многопоточность и даже асинхронность.
Лектор: Константин…
❤133👏24👍14🔥8❤🔥6🍓2😁1👨💻1
Всем привет. Есть такая идея — для всех кто вместе со всеми нами весь год смотрел магистерский курс провести пиринговый экзамен (когда вы пишете задание и оно отправляется на проверку двум людям и вам тоже приходят два задания других людей).
Задание будет состоять из двух задач. Одна вида "спроектируйте класс" (нечто многопоточное или с умными указателями или с аллокаторами или всё вместе), другая вида "напишите код" (обычно что-то с корутинами или параллелизмом или вместе).
Четыре часа на выполнение (можно не отлаживать код до идеального состояния, достаточно продемонстрировать идею), потом четыре часа на кросс-проверку.
Сколько людей хотело бы в таком участвовать в какие-нибудь ближайшие выходные? Сейчас устрою опрос, проголосуйте там если хотите, а этот пост оставлю для комментариев.
#official
Задание будет состоять из двух задач. Одна вида "спроектируйте класс" (нечто многопоточное или с умными указателями или с аллокаторами или всё вместе), другая вида "напишите код" (обычно что-то с корутинами или параллелизмом или вместе).
Четыре часа на выполнение (можно не отлаживать код до идеального состояния, достаточно продемонстрировать идею), потом четыре часа на кросс-проверку.
Сколько людей хотело бы в таком участвовать в какие-нибудь ближайшие выходные? Сейчас устрою опрос, проголосуйте там если хотите, а этот пост оставлю для комментариев.
#official
👍26🔥17🌚4❤1
🔥8🥴4💔1
Моё прошлогоднее выступление на C++ Russia наконец-то выложили в открытый доступ (раньше было только по ссылке).
https://www.youtube.com/watch?v=YJd6Ig4ihJ0
Напоминаю что у этого выступления есть follow-up и допглавы: https://www.youtube.com/watch?v=-aE1hD9OWRk где мы погружаемся глубже и разбираем те же вопросы более обстоятельно.
#conference #graphics
https://www.youtube.com/watch?v=YJd6Ig4ihJ0
Напоминаю что у этого выступления есть follow-up и допглавы: https://www.youtube.com/watch?v=-aE1hD9OWRk где мы погружаемся глубже и разбираем те же вопросы более обстоятельно.
#conference #graphics
YouTube
Константин Владимиров — Память как концепция в гетерогенных системах
Подробнее о конференции C++ Russia: https://jrg.su/9Sszhd
— —
Память это то, что программисты на C++ хорошо знают и полагают, что имеют над ней контроль. Но много ли известно о памяти на GPU?
Внезапно многие привычные концепции из мира C++ ломаются, а создание…
— —
Память это то, что программисты на C++ хорошо знают и полагают, что имеют над ней контроль. Но много ли известно о памяти на GPU?
Внезапно многие привычные концепции из мира C++ ломаются, а создание…
👍53🔥12❤7🍓3💔2🥰1
Всем привет. После размышлений и консультаций, было решено что пиринговый экзамен по магистерскому курсу устроим в следующую субботу, 27 мая.
В течении недели есть время на подготовку. Проголосовали "за" в опросе 45 человек, вполне достаточно для экзамена. Если решите сдавать, добавляйтесь в группу https://t.me/+RtzEqpc4OKpmYzhi вся остальная информация о формате проведения и прочем — будет там.
#official
В течении недели есть время на подготовку. Проголосовали "за" в опросе 45 человек, вполне достаточно для экзамена. Если решите сдавать, добавляйтесь в группу https://t.me/+RtzEqpc4OKpmYzhi вся остальная информация о формате проведения и прочем — будет там.
#official
👍18🔥2🙈1
Выложил своё выступление на конференции Аскон от 25 апреля сего года.
По сути это очень сжатый (мне урезали таймслот до 40 минут и я выживал в этих пределах как мог) рассказ про многопоточность с нуля и до транзакционной памяти.
Огромная благодарность организаторам за отличные съёмки, монтаж и разрешение выложить на своём канале.
https://www.youtube.com/watch?v=R1XcV5vHn0I
P. S. Я там вначале упоминаю код на футболках которые раздавали на конференции. Сфоткал: https://ibb.co/RSXSyMx
#conference
По сути это очень сжатый (мне урезали таймслот до 40 минут и я выживал в этих пределах как мог) рассказ про многопоточность с нуля и до транзакционной памяти.
Огромная благодарность организаторам за отличные съёмки, монтаж и разрешение выложить на своём канале.
https://www.youtube.com/watch?v=R1XcV5vHn0I
P. S. Я там вначале упоминаю код на футболках которые раздавали на конференции. Сфоткал: https://ibb.co/RSXSyMx
#conference
YouTube
Аскон 2023: Проблема ABA и методы её решения в современном C++.
Выступление на конференции Аскон 25 апреля 2023 года. Огромная благодарность организаторам за приглашение и за разрешение выложить запись на моём канале.
Слайды: https://sourceforge.net/projects/cpp-lects-rus/files/conference-talks/
Фотография кода с футболки…
Слайды: https://sourceforge.net/projects/cpp-lects-rus/files/conference-talks/
Фотография кода с футболки…
👍62🔥24❤7🥰1
Выложили по ссылке мой вебинар проведённый в рамках программы вебинаров Российского Альянса RISCV для различных университетов.
Кратко рассказываю что такое RISCV и как устроена эта архитектура. Очень общий обзор.
https://www.youtube.com/watch?v=3Jv9_jBq1fE
В этой серии у меня также будет второй вебинар посвящённый конкретно средствам разработки под RISCV.
Также из ближайших планов: скоро откроется по ссылке моё выступление на C++ Russia этого года, ссылку я скину сюда же. И в этом году я ещё подался на Zero Cost с докладом про масштабируемую векторизацию. Просто лето конференций получается ))
#conference #toolchain #riscv
Кратко рассказываю что такое RISCV и как устроена эта архитектура. Очень общий обзор.
https://www.youtube.com/watch?v=3Jv9_jBq1fE
В этой серии у меня также будет второй вебинар посвящённый конкретно средствам разработки под RISCV.
Также из ближайших планов: скоро откроется по ссылке моё выступление на C++ Russia этого года, ссылку я скину сюда же. И в этом году я ещё подался на Zero Cost с докладом про масштабируемую векторизацию. Просто лето конференций получается ))
#conference #toolchain #riscv
❤59🔥38👍25👏2🌭2😁1
Выложили по ссылке моё выступление на C++Russia 2023. Выступление было на конференции отлично принято коллегами и набрало массу лестных отзывов и высоких оценок. Теперь можно представить его более широкой аудитории.
https://www.youtube.com/watch?v=lc3UkIZ4zOY&t=110s
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if.
Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение. Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам. Этот доклад посвящен описанию взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка.
#conference #cpp_postgraduate #llm
https://www.youtube.com/watch?v=lc3UkIZ4zOY&t=110s
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if.
Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение. Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам. Этот доклад посвящен описанию взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка.
#conference #cpp_postgraduate #llm
YouTube
Константин Владимиров — Семантические процессы в C++
Подробнее о конференции C++ Russia: https://jrg.su/9Sszhd
— —
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if.
Но когда…
— —
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if.
Но когда…
🔥98❤9👍9👏3
Выложили по ссылке мой второй вебинар проведённый в рамках программы вебинаров Российского Альянса RISCV для различных университетов.
Кратко рассказываю про инструменты разработчика от начала до конца. В начале рассказываю чем компилятор от линкера отличается. В конце загружаю RISCV Linux на System QEMU. Всё это за полчаса, поэтому плотненько.
https://www.youtube.com/watch?v=29iNHEhHmd0
Дальнейшие вебинары там будут вести уже другие спикеры (мы изначально договаривались что мои там первые две лекции). Общий плейлист для желающих следить: https://www.youtube.com/playlist?list=PLJujc0We8tx80x0z8W6v68Iotteb4wK3W
#toolchain #conference #riscv
Кратко рассказываю про инструменты разработчика от начала до конца. В начале рассказываю чем компилятор от линкера отличается. В конце загружаю RISCV Linux на System QEMU. Всё это за полчаса, поэтому плотненько.
https://www.youtube.com/watch?v=29iNHEhHmd0
Дальнейшие вебинары там будут вести уже другие спикеры (мы изначально договаривались что мои там первые две лекции). Общий плейлист для желающих следить: https://www.youtube.com/playlist?list=PLJujc0We8tx80x0z8W6v68Iotteb4wK3W
#toolchain #conference #riscv
YouTube
Инструменты разработчика RISC-V. Констанин Владимиров @tilir Syntacore.
Константин Владимиров @tilir , автор курсов по C++ и LLVM, рассказывает о доступных и полезных инструментах программирования под RISC-V, поясняет про Syntacore Early Access Kit.
Вторая лекция серии вебинаров от Альянса RISC-V и СПбГУ.
----
Первая лекция:…
Вторая лекция серии вебинаров от Альянса RISC-V и СПбГУ.
----
Первая лекция:…
👍54🔥13❤12⚡3🕊1💊1
Всем привет. Через две недели выступаю вот здесь: https://cppzerocostconf.yandex.ru/cxxzerocostconf_2023 с докладом про векторизацию. Сначала разберём всю боль обычной векторизации, повекторизуем руками некоторые вещи. Потом я представлю масштабируемую векторизацию, это новая концепция которая сейчас набирает обороты в ARM и RISCV. Посмотрим как она решает проблемы. А потом поговорим о том как она создаёт проблемы.
Можно рассматривать это как продолжение записанного мной прошлым летом допсеминара про SIMD, см. https://t.me/cpp_lects_rus/27
Вход на площадку свободный, но по регистрации. Которую можно пройти уже сейчас. Меня пока в программе нет, но я появлюсь, доклад согласовали.
#conference
Можно рассматривать это как продолжение записанного мной прошлым летом допсеминара про SIMD, см. https://t.me/cpp_lects_rus/27
Вход на площадку свободный, но по регистрации. Которую можно пройти уже сейчас. Меня пока в программе нет, но я появлюсь, доклад согласовали.
#conference
C++ Zero Cost Conf
C++ Zero Cost Conf 29/07
🔥82👍22⚡3❤3
В прошлую субботу выступил на Zero Cost Conf
https://youtu.be/lwIBp6cc-HY
Если кратко, то из всех конференций этого лета эта была лучше прочих организована. Формально она была бесплатная, реально Яндекс не поскупился. Меня даже загриммировали, чтобы я не бликовал, это невероятно.
#conference #riscv
https://youtu.be/lwIBp6cc-HY
Если кратко, то из всех конференций этого лета эта была лучше прочих организована. Формально она была бесплатная, реально Яндекс не поскупился. Меня даже загриммировали, чтобы я не бликовал, это невероятно.
#conference #riscv
YouTube
Масштабируемая векторизация в RISCV, Константин Владимиров
Расширяемая архитектура RISC-V имеет ряд интересных нововведений. Одно из самых необычных - масштабируемая векторизация
(scalable vectorization), когда настройки VPU
можно изменять прямо во время работы программы.
Константин расскажет:
— про основы векторизации…
(scalable vectorization), когда настройки VPU
можно изменять прямо во время работы программы.
Константин расскажет:
— про основы векторизации…
🔥68👍22❤4👎1👏1🤯1
Немного о планах на предстоящий учебный год.
Ссылки на стримы бакалаврского и магистерского курса будут выкладываться в дискорд в соответствующие текстовые каналы: https://discord.gg/vSEp8yW
В стримах возможно удалённое участие, также будут оставаться записи.
Я очень надеюсь что получится сделать наконец-то запись и выкладку на Youtube (в хорошем качестве и с видео) пояснительной части моих семинаров по языку C и ассемблеру. Идея того как мы это будем делать проработана, материал давно готов. Пилотную запись надеюсь сделать в первой половине сентября, дальше по графику. Если всё получится, ссылки на записи будут появляться здесь.
Также напоминаю, что если вы нашли интересный материал, интересное видео, у вас есть интересный вопрос и т.д. вы можете писать мне в лс, и, если я соглашусь, что это действительно интересно, я вполне могу сделать на этом канале ветку для обсуждения.
#official
Ссылки на стримы бакалаврского и магистерского курса будут выкладываться в дискорд в соответствующие текстовые каналы: https://discord.gg/vSEp8yW
В стримах возможно удалённое участие, также будут оставаться записи.
Я очень надеюсь что получится сделать наконец-то запись и выкладку на Youtube (в хорошем качестве и с видео) пояснительной части моих семинаров по языку C и ассемблеру. Идея того как мы это будем делать проработана, материал давно готов. Пилотную запись надеюсь сделать в первой половине сентября, дальше по графику. Если всё получится, ссылки на записи будут появляться здесь.
Также напоминаю, что если вы нашли интересный материал, интересное видео, у вас есть интересный вопрос и т.д. вы можете писать мне в лс, и, если я соглашусь, что это действительно интересно, я вполне могу сделать на этом канале ветку для обсуждения.
#official
❤81👍55🔥21🙏3
Выложил запись первого семинара по основам C
https://youtu.be/7YhRFx-oyW4
Буду стараться выкладывать в субботу утром, но это пилотный выпуск и я задержался с монтажом. Разумеется надо будет посмотреть как зайдёт. Небольшой дисклеймер: это не лекции. Я считаю что студенты ходят на лекции по C и их веду не я. Но я объясняю достаточно теории чтобы можно было вместо лекций просто читать Кернигана и Ричи и всё понимать.
Записывать это куда сложнее чем записывать лекции. Я выбрал такой вариант: на семинаре я первые минут 30-40 что-то говорю и даю задание на семинар. Потом студенты примерно 1.5 часа решают задачи и это на видео не попадает. И в конце я снова беру слово. Так что запись поделена местом где нужно остановить видео и тоже решать задачи.
#c_graduate
https://youtu.be/7YhRFx-oyW4
Буду стараться выкладывать в субботу утром, но это пилотный выпуск и я задержался с монтажом. Разумеется надо будет посмотреть как зайдёт. Небольшой дисклеймер: это не лекции. Я считаю что студенты ходят на лекции по C и их веду не я. Но я объясняю достаточно теории чтобы можно было вместо лекций просто читать Кернигана и Ричи и всё понимать.
Записывать это куда сложнее чем записывать лекции. Я выбрал такой вариант: на семинаре я первые минут 30-40 что-то говорю и даю задание на семинар. Потом студенты примерно 1.5 часа решают задачи и это на видео не попадает. И в конце я снова беру слово. Так что запись поделена местом где нужно остановить видео и тоже решать задачи.
#c_graduate
YouTube
Практика языка C (МФТИ, 2023-2024). Семинар 1.1. Алгоритм Евклида.
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
На этом семинаре мы познакомимся с языком C, научимся писать простые функции и циклы и решим первые простые задачи.
Семинарист: Константин Владимиров.
Дата: 1 сентября 2023 года.…
На этом семинаре мы познакомимся с языком C, научимся писать простые функции и циклы и решим первые простые задачи.
Семинарист: Константин Владимиров.
Дата: 1 сентября 2023 года.…
👍131🔥43❤14🎉6😁1🕊1💔1
Вторая часть первого семинара по основам C.
https://www.youtube.com/watch?v=oWGrH0R8iwU
Мы продолжаем изучать основы программирования на C. На этом семинаре будут разобраны системы счисления. Чтобы проще делать перевод между системами счисления, мы введём понятие массива. Кроме того мы сразу же используем системы счисления для построения алгоритма эффективного возведения в степень по модулю. Также мы разберём расширенный алгоритм Евклида который я давал на дом в прошлый раз и посмотрим очень красивое построение рекуррентности для решения этой задачи.
#c_graduate
https://www.youtube.com/watch?v=oWGrH0R8iwU
Мы продолжаем изучать основы программирования на C. На этом семинаре будут разобраны системы счисления. Чтобы проще делать перевод между системами счисления, мы введём понятие массива. Кроме того мы сразу же используем системы счисления для построения алгоритма эффективного возведения в степень по модулю. Также мы разберём расширенный алгоритм Евклида который я давал на дом в прошлый раз и посмотрим очень красивое построение рекуррентности для решения этой задачи.
#c_graduate
YouTube
Практика языка C (МФТИ, 2023-2024). Семинар 1.2. Системы счисления.
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
На этом семинаре мы продолжим знакомство с языком C. Остановимся на таком важном понятии как системы счисления и посмотрим приложения двоичных чисел к умножению и возведению в степень.…
На этом семинаре мы продолжим знакомство с языком C. Остановимся на таком важном понятии как системы счисления и посмотрим приложения двоичных чисел к умножению и возведению в степень.…
👍63🔥13❤11🤡1
Дополнения к семинару 1.2
Я сегодня уже выкладывал и стирал этот пост т.к. он был не идеален. Теперь надеюсь останется.
1.2.1.
В комментариях был отличный вопрос можно ли обобщить русское крестьянское возведение в степень на комплексные числа с целыми действительной и мнимой частями. Ответ разумеется нет, так как такого рода числа (гауссовы целые) не замкнуты относительно возведения в степень. Простой контрпример это i в степени i.
Интересно что я не сразу это понял сам, хотя если бы меня попросили посчитать i в степени i у меня не было бы проблем. К счастью мне всё объяснили: https://cs.stackexchange.com/questions/162098
1.2.2.
Многие заметили что наивное обобщение русского крестьянского умножения и возведения в степень перестаёт работать на сверхстепень и в этом смысле проблема RPS коварна. Всё дело в том, что шагом для возведения в степень является умножение и для умножения (a * b) mod m = ((a mod m) * (b mod m)) mod m. Но для возведения в сверхстепень шагом должно являться возведение в степень, а там это очевидно не так.
Простой контрпример:
(2 ^ 4) mod 5 = 1
(2 ^ 9) mod 5 = 2
То есть кажется RPS надо бы пометить звёздочкой. Тем не менее тесты к этой задаче допускают тривиальное решение -- там просто нигде нет слишком большого показателя сверхстепени и достаточно уметь быстро возводить в степень и писать обычные циклы.
1.2.3.
Один из студентов сделал интересное решение проблемы NS, не использующее дополнительного массива, а вместо этого использующее обратный ход рекурсии: https://youtu.be/oWGrH0R8iwU?t=3508
Интересно, что компиляторы gcc и clang сильно расходятся в вопросе оптимизации этого кода: clang на O3 не делает ничего. Что делает на O3 gcc я бы охарактеризовал как двойной прыжок с переворотом в воздухе: https://godbolt.org/z/o6bjs3aP1
Было бы интересно если бы кто-нибудь исследовал корректность такого рода оптимизации. Мы явно ухудшаем размер кода, но неясно будет ли хотя бы теоретически выигрыш в быстродействии.
#c_graduate
Я сегодня уже выкладывал и стирал этот пост т.к. он был не идеален. Теперь надеюсь останется.
1.2.1.
В комментариях был отличный вопрос можно ли обобщить русское крестьянское возведение в степень на комплексные числа с целыми действительной и мнимой частями. Ответ разумеется нет, так как такого рода числа (гауссовы целые) не замкнуты относительно возведения в степень. Простой контрпример это i в степени i.
Интересно что я не сразу это понял сам, хотя если бы меня попросили посчитать i в степени i у меня не было бы проблем. К счастью мне всё объяснили: https://cs.stackexchange.com/questions/162098
1.2.2.
Многие заметили что наивное обобщение русского крестьянского умножения и возведения в степень перестаёт работать на сверхстепень и в этом смысле проблема RPS коварна. Всё дело в том, что шагом для возведения в степень является умножение и для умножения (a * b) mod m = ((a mod m) * (b mod m)) mod m. Но для возведения в сверхстепень шагом должно являться возведение в степень, а там это очевидно не так.
Простой контрпример:
(2 ^ 4) mod 5 = 1
(2 ^ 9) mod 5 = 2
То есть кажется RPS надо бы пометить звёздочкой. Тем не менее тесты к этой задаче допускают тривиальное решение -- там просто нигде нет слишком большого показателя сверхстепени и достаточно уметь быстро возводить в степень и писать обычные циклы.
1.2.3.
Один из студентов сделал интересное решение проблемы NS, не использующее дополнительного массива, а вместо этого использующее обратный ход рекурсии: https://youtu.be/oWGrH0R8iwU?t=3508
Интересно, что компиляторы gcc и clang сильно расходятся в вопросе оптимизации этого кода: clang на O3 не делает ничего. Что делает на O3 gcc я бы охарактеризовал как двойной прыжок с переворотом в воздухе: https://godbolt.org/z/o6bjs3aP1
Было бы интересно если бы кто-нибудь исследовал корректность такого рода оптимизации. Мы явно ухудшаем размер кода, но неясно будет ли хотя бы теоретически выигрыш в быстродействии.
#c_graduate
🔥29👍13❤1😁1
Третья и завершающая часть первого семинара по языку C,
https://youtu.be/qaCsf7wOpRQ
Мы продолжаем практиковаться в азах языка C и программирования. На этот раз мы посмотрим на простые и красивые алгоритмы связанные с числами Фибоначчи. Мы увидим случай когда математика заводит нас в алгоритмический тупик, разберемся с переполнениями беззнаковых типов, изобретём интересную систему счисления, а в конце — сыграем в игру, в которой очень легко победить.
А впереди нас ждёт допсеминар по Unix Shell, запись которого я выложу в ближайший вторник.
#c_graduate
https://youtu.be/qaCsf7wOpRQ
Мы продолжаем практиковаться в азах языка C и программирования. На этот раз мы посмотрим на простые и красивые алгоритмы связанные с числами Фибоначчи. Мы увидим случай когда математика заводит нас в алгоритмический тупик, разберемся с переполнениями беззнаковых типов, изобретём интересную систему счисления, а в конце — сыграем в игру, в которой очень легко победить.
А впереди нас ждёт допсеминар по Unix Shell, запись которого я выложу в ближайший вторник.
#c_graduate
❤46🔥22👍15💔2
Опрос по итогам выкладки первых трёх видео. Интересно ли уважаемым подписчикам происходящее у меня на первом курсе или всё слишком просто и неинтересно и вообще не формат моего канала?
Anonymous Poll
97%
Продолжаем выкладку, хочется увидеть весь курс.
3%
Эксперимент, очевидно, неудачный
🔥51👍14👏4
Я иногда устраиваю для ребят так называемые "допсеминары". Это с моей стороны чистая благотворительность — предложение собраться у меня в офисе, обычно в выходной, чтобы я рассказал о чём-нибудь интересном. Студенты не обязаны туда приходить и на их успеваемость это никак не влияет (вообще я и на обычных занятиях надеюсь, что они взыскуют более знаний чем оценок).
Тем не менее для видеозаписи полного курса, я склонен включить этот допсеминар в курс, так как он на самом деле очень важный. Также в курс запланирован допсеминар про сборку и некоторые другие, которым ещё предстоит быть прочитанными (если студенты на них придут, разумеется).
https://youtu.be/KLv-5jWlKjM
В этом видео речь пойдёт о работе в консоли. Мы научимся работать с пакетным менеджером, узнаем основы идеологии Unix, научимся писать сначала однострочники, а потом и полноценные bash-скрипты, освоим несколько консольных супероружий, таких как grep sed и awk и многое другое. В конце мы с некоторой грустью поймём границы применения техники.
#c_graduate
Тем не менее для видеозаписи полного курса, я склонен включить этот допсеминар в курс, так как он на самом деле очень важный. Также в курс запланирован допсеминар про сборку и некоторые другие, которым ещё предстоит быть прочитанными (если студенты на них придут, разумеется).
https://youtu.be/KLv-5jWlKjM
В этом видео речь пойдёт о работе в консоли. Мы научимся работать с пакетным менеджером, узнаем основы идеологии Unix, научимся писать сначала однострочники, а потом и полноценные bash-скрипты, освоим несколько консольных супероружий, таких как grep sed и awk и многое другое. В конце мы с некоторой грустью поймём границы применения техники.
#c_graduate
YouTube
Практика языка C (МФТИ, 2023-2024). Допсеминар: unix shell
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
Этот допсеминар был прочитан факультативно. Он посвящён тому, чтобы познакомить студентов первого курса с работой в консоли.
Семинарист: Константин Владимиров.
Дата: 16 сентября…
Этот допсеминар был прочитан факультативно. Он посвящён тому, чтобы познакомить студентов первого курса с работой в консоли.
Семинарист: Константин Владимиров.
Дата: 16 сентября…
🔥163👍45❤🔥9❤6
Начинаем второй логический семинар по языку C. Он будет также из трёх частей и будет посвящён времени и памяти.
В первой его части мы разберёмся с двумя крайне важными концепциями -- со структурами в языке и с асимптотикой алгоритмов. Для иллюстрации и того и другого я выбрал простые числа.
https://youtu.be/duVH3_hp60I
#c_graduate
В первой его части мы разберёмся с двумя крайне важными концепциями -- со структурами в языке и с асимптотикой алгоритмов. Для иллюстрации и того и другого я выбрал простые числа.
https://youtu.be/duVH3_hp60I
#c_graduate
YouTube
Практика языка C (МФТИ, 2023-2024). Семинар 2.1. Простые числа.
Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
На этом семинаре мы разберёмся с двумя крайне важными концепциями -- со структурами в языке и с асимптотикой алгоритмов. Для иллюстрации и того и другого я выбрал простые числа.
…
На этом семинаре мы разберёмся с двумя крайне важными концепциями -- со структурами в языке и с асимптотикой алгоритмов. Для иллюстрации и того и другого я выбрал простые числа.
…
🔥61👍17🎉5❤4