en
Feedback
C++ and other lectures

C++ and other lectures

Open in Telegram

Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы. Написать автору: @Tilir Boosty автора: https://boosty.to/cpp_lects_rus

Show more
9 610
Subscribers
No data24 hours
+137 days
+10330 days
Posts Archive
Первая часть лекци и про диапазоны. https://youtu.be/sfweY8osTEs Первые минут сорок не отличаются да, наверное, и не могут отличаться от того что я обычно рассказываю про диапазоны. Но дальше становится интересно. Я сознательно ограничил себя в этом году в первой части очень простыми диапазонами: чем-то что не сложнее пары из итератора и ограничителя. Зато они у меня получились, как мне кажется, обстоятельно. Ну и да в конце первой части я сорву покров мрака с расхождения между компиляторами в трактовке старшинства семантических процессов.

Готовлюсь к лекции по ranges. Есть такой вопрос (а скорее даже опрос) для уважаемых подписчиков этого канала. Вот есть пример в котором GCC и clang не согласны. https://godbolt.org/z/1ro9x3nh1 Кто-то, ясное дело, прав, кто-то нет. Мне интересно как бы вы аргументировали кто прав в C++20 и почему. Также задал вопрос на stackoverflow: https://stackoverflow.com/questions/74668972/c20-move-only-ranges-gcc-vs-clang-on-istream-view-copy Большая просьба именно проиллюстрировать ход мысли. Куда пойдёте в стандарте, что будете смотреть.

Выложил лямбды. Я в этом году, как мне кажется, смог наконец-то придти к правильной структуре этой лекции, мотивировав через лямбды массу захватывающих вещей. У меня там к сожалению получились несколько минут (!) непрерывного сообщения откровенной неправды, которую я только после лекции слазил проверить в стандарт. Но я не стал вырезать: я довольно честно так заблуждался много лет (насчет того есть ли в кложуре круглые скобки), позаблуждайтесь со мной в последний раз. Но многое другое получилось хорошо. https://youtu.be/j-UyAKux590

Выложил лекцию по вариабельным шаблонам. Отличия от прошлых лет существенные: даже в базовой части шаблонов и свёрток я теперь копаю куда глубже, беззастенчиво пользуясь тем, что курс магистерский и можно отрываться. Кроме того, у меня появилась возможность рассказать о вариабельных концептах и о раскрытии свёрток в концептах и я этим тоже воспользовался. https://youtu.be/op7z7R6aBvk

Сегодняшний стрим для первого курса по динамическому программированию (и немного по линейному). https://youtu.be/KQlldBz77u8 Сам стрим был открытый но запись будет под замком т.к. в след. годах надеюсь переделать в лучшем качестве.

Больше подзамочного контента для моих уважаемых подписчиков. Семинары 10, 11 и 12 базового курса этого года. Семинары 10 и 11 в один день и одним видео т.к. мы одно занятие пропустили. Благо они посвящены исключениям и как раз получилось полное изложение. Семинар 12 по проектированию в этот раз пожалуй менее убедительный чем в прошлом году, но я кое-что учёл и пофиксил из комментариев. Семинары 10, 11: https://youtu.be/gUaDkStyICc Семинар 12: https://youtu.be/SlYFPGuYIcM Более ранние выпуски: 7,8,9: https://t.me/cpp_lects_rus/59 4,5,6: https://t.me/cpp_lects_rus/51 1,2,3: https://t.me/cpp_lects_rus/45

Выложил лекцию по выводу типов и правым ссылкам. Благодаря правильной структуре курса (вывод типов после концептов и SFINAE) получилось включить некоторые примеры Йосьюттиса где концепты облегчают множества перегрузок для форвардящих конструкторов. Правда Нико считал что это ночной кошмар, но мне кажется, что правила избегания проблем тут довольно просты и систематичны. https://youtu.be/zrZdBzXBZtE

Выложил очередную лекцию магистерского курса. Главным моментом там я считаю раскрытие того к какому именно из семантических процессов относится requires и как это влияет на то, как он работает. https://www.youtube.com/watch?v=HxdrGM6ZbNs

Всем привет. Я сегодня посмотрел лучшее в этом году видео по C++ (я учитываю только англоязычные). Я не скажу какое до лекции по ranges иначе, боюсь, вы увидите в моём творчестве слишком много ремейков. Но я приглашаю всех в этом чате т.к. год в плане C++ событий заканчивается, написать какое из видео с зарубежных конференций этого года было самым полезным для вас. P. S. Если никто не угадает, то до конца года выложу что это за доклад и его таймлайн.

Выложил очередную лекцию магистерского курса. Зашкаливающее количество волшебства. И фокус с пальцем. https://youtu.be/NS-qY5P7xDc

Больше подзамочного контента для моих уважаемых подписчиков. Семинары 7, 8 и 9 базового курса этого года. Мне кстати очень нравится как мне в этом году удалось изложить наследование и множественное наследование. Хотя вроде бы материал строго тот же. Семинар 7: https://youtu.be/zgkIiNNLLYM Семинар 8: https://youtu.be/wb5ML1WajXM Семинар 9: https://youtu.be/FqQNDyKRkRA Более ранние выпуски: https://t.me/cpp_lects_rus/51 Ещё более ранние: https://t.me/cpp_lects_rus/45

Выложил очередную лекцию. Она отличается в первую очередь визуальным оформлением: я был вынужден перенести её в другую переговорку (а вовсе не в мрачный подвал как кто-то мог бы подумать). Начнём с глубокого нырка в константность. Далее речь пойдёт в основном о константных выражениях: constexpr, в меньшей степени — consteval и constinit. https://youtu.be/jyYys1UcHkM

Выложил очередную лекцию магистерского курса. Мы начинаем с проблем void_t и странных правил для шаблонных алиасов. Далее мы долго обсуждаем enable_if. Последняя треть лекции посвящена развитию классического (периода до 2011-го года) метапрограммирования. Это скорее интересно, чем практично, так как всё это уже история. Но без этого дальше будет неясно откуда что берется в современных подходах. https://youtu.be/jL3CNQr-0Cg

Посмотрел доклад "What’s New in C++23" - Sy Brand - CppCon 2022 http://youtube.com/watch?v=vbHWDvY59SQ Мой таймлайн к докладу: 00:00 Вводное безумие (пропустите это) 03:45 Часть про ranges: chunk(_by), repeat_range_n, zip, ranges::to. Также std::print и always_inline. 14:30 Часть про std::optional и std::expected: and_then, or_else 19:45 Краткий рассказ про deducing this 24:06 Вопросы (промежуточные) 26:10 Часть про корутины: std::generator 30:50 Умные указатели: static op(), std::out_ptr, std::to_underlying, etc. 35:12 Move-only functions 37:15 std::unreachable и создание целенаправленного UB 38:30 std::mdspan 41:00 Пример с пересылкой по сети: std::byteswap, if consteval, ospanstream, stacktrace 46:00 Снова ranges: join_with, iota, shift_left 49:15 import std и завершение При рассказе про deducing this уважаемый докладчик ссылался на крайне интересный доклад Бена Дина: https://youtu.be/jXf--bazhJw Очень скоро лекция, в которой будет разбор этой техники, также появится в моём магистерском курсе (как только мы с магистрантами этого года дойдём до систематического обсуждения правых ссылок). Пожалуй deducing this и if consteval это самое интересное и самое перспективное в 23-м стандарте.

Предложили тему про изучение языка C. У меня есть для этого некоторые материалы. Слайды к моему курсу по С для первокурсников: http://cs.mipt.ru/wp/?page_id=7775 На слайдах большое количество задач и есть задачник с автоматической проверкой и открытой регистрацией: http://olymp1.vdi.mipt.ru/ Очень надеюсь когда-нибудь записать и выложить что-то для youtube. Но пока формат записи не очень ясен и времени не хватает, всё в процессе. Кроме того классический список литературы это. C Programming Language, 2nd Edition: Brian W. Kernighan, Dennis M. Ritchie Живая классика, должна быть первой книгой студента. Beginning C: From Novice to Professional: Ivor Horton C Programming: A Modern Approach, 2nd Edition: K. N. King Эти две книги — более детальные альтернативы, если изложение K&R кажется слишком сжатым. Expert C Programming: Deep C Secrets: Peter van der Linden Очень глубокое погружение. Опасайтесь акул. C Interfaces and Implementations: Techniques for Creating Reusable Software: Hanson, David Немного о том как люди виртуозно используют макросы и void*. Один раз надо этому научиться чтобы с одной стороны больше так не делать, а с другой стороны всегда и везде видеть эту альтернативу. Немного прикладных областей т.к. C очень простой язык и обычно его изучение должно быстро выходить на прикладные вещи: TCP/IP Sockets in C: Practical Guide for Programmers: Michael J. Donahoo, Kenneth L. Calvert Фундаментальный труд по сокетам и сетевому программированию. Выучить до знакомства с boost::asio Numerical Linear Approximation in C: Nabih Abdelmalek, William A. Malek Линейная алгебра, линейное программирование и линейное счастье Algorithms in C: Robert Sedgewick Книга ученика Дональда Кнута, очень неплохая (её версия на C++ куда хуже, там у меня от его понимания C++ глаза вытекают кровью). Image Processing in C: Dwayne Phillips Древняя и наивная но приятная книга про обработку изображений на CPU. Потом легко перекладывается на OpenCL C и на GPU. И конечно вершина и венец вычматематики (и кстати книга которая на C тоже нравится мне куда больше чем её же версия на C++ по тем же причинам что и Седжвик) это Numerical Recipes in C (коллектив авторов). Это просто надо один раз осилить.

Всем привет. Мне не нравится что комментарии к тематическим постам используются как общий чат. Давайте если кто то очень хочет что то конкретное обсудить и это тут в тему, пишите мне я создам корневую ветку в порядке очереди.

Посмотрел выступление Страуструпа на CppCon'22 https://youtu.be/2BuJjaGuInI Мой таймлайн для этого доклада: 00:00 Вступление: борьба со сложностью, ограниченные среды выполнения, заблуждения о языке 18:10 Основания и принципы языка C++: механизмы абстракции, RAII, сдвиг вычислений в компиляцию, 40:34 C++ Core guidelines 56:28 Обработка ошибок и исключения 01:09:19 Мысли о настоящем и будущем 01:16:55 Ответы на вопросы Снова подумал что надо бы хоть раз заглянуть в core guidelines. Последний раз заглядывал туда кажется в 2016-м году, увидел там рекомендацию везде использовать array_view, закрыл и больше не открывал. Может быть они и впрямь привели проект в полезное и актуальное состояние, то что я услышал от Страуструпа в этом докладе мне понравилось. Увы, опять педалируется мысль что можно учить C++ не потратив до этого как минимум год на изучение C. Мне кажется методически это ошибка. У студента с нуля как раз год уходит чтобы понять указатели, массивы, структуры, циклы и рекурсию, выучить какие-нибудь простые алгоритмы и понять как работает архитектура и как используют тулчейны. А уже потом поверх этого можно накладывать ссылки, классы, шаблоны и прочее. Иначе всё смешивается и человек просто ничего не поймёт.

Выложил лекцию по SFINAE. Она начинается, как ни странно, с модулей. Далее обсуждаются ленивые и э https://youtu.be/XGbpmSCEK0s

Еще немного подзамочного контента для ценителей. Первые три лекции бакалаврского курса этого года были тут ранее https://t.me/cpp_lects_rus/45 и были приняты неплохо. Продолжаем. Семинар 4: https://youtu.be/3eeyeEAP4no Семинар 5: https://youtu.be/SepMv--t6r4 Семинар 6: https://youtu.be/fGruSH0wS20 Звук все также плох. Контент всё также почти не отличается от того, что есть в куда лучшем качестве на youtube в базовом курсе прошлого года. Хотя тут четвертый семинар объективно отличается, но дальше конвергенция берёт своё.

Выложил лекцию по модулям. Я может быть лишние десять минут вначале посвятил прекомпилированным хедерам. Но мне кажется без этого модули куда сложнее воспринять. А так сразу ясны их корни и их источники. https://youtu.be/Dsfccho1QX0