Нашел вот такой комментарий на стак оверфлоу, видимо когда b == INT_MIN и мы берем его со знаком минус, то оно становится положительным, а положительных чисел на 1 меньше чем отрицательных, т.к. ноль считается положительным, но вот во втором примере не могу понять почему UB нет. int modulo_Euclidean(int a, int b) { int m = a % b; if (m < 0) { // m += (b < 0) ? -b : b; // avoid this form: it is UB when b == INT_MIN m = (b < 0) ? m - b : m + b; } return m; }
@tilir9 сағат бұрын
На этом занятии ещё не вводится понятие ub, оно будет куда дальше по курсу. Мы ещё не говорили о представлениях целых чисел, это будет ещё дальше. А вы необоснованно умничаете.
@ozhirnovКүн бұрын
1:08:00 быстрый поиск показал, что арифметика над void* указателем допустима в gcc (далее на видео видно, что подобное решение проходит контест). в то же время в обсуждениях на stackoverflow (stackoverflow.com/questions/3523145/pointer-arithmetic-for-void-pointer-in-c) был достигнут консенсус, что такое действие не соответствует стандарту C
@alex_grannyКүн бұрын
Великолепно!
@w5346cКүн бұрын
Спасибо за отличный курс! Но зачем вы перерисовываете реальную доску на виртуальной? Когда реальная попадала в кадр, на ней всё прекрасно было видно.
@tilirКүн бұрын
Это ошибка выжившего: когда она попадала в кадр это было именно из-за того что на ней всё было ок, и это бывало редко.
@EvgenyPrudilovКүн бұрын
что такое парасил и где его найти?
@tilirКүн бұрын
Синтетический язык, используемый мной для обучения студентов. См. лекцию 8 бакалаврского курса.
@alexanderkristoffel87572 күн бұрын
А зачем отсекать 0 абортом при поиске общего делителя? Ведь любое число является делителем нуля (кроме самого нуля, в этом случае дробь неопределена). Т. е. по идее, gcd(x, 0) = gcd(0, x) = x
@tilirКүн бұрын
Да, может быть следовало так и сделать.
@alexanderreactance3 күн бұрын
Также очень интересные изображения породжает правило 34
@optozorax4 күн бұрын
Очень понравилось начало, где процесс вычисления программы до остановки переформулируется как сборка доминошек в особом порядке. Открывает глаза по новому на это всё!
@crea7or4 күн бұрын
Вообще больше похоже на COM чем на Java, ручками же AddRef / Release вызываются как в COM.
@tilirКүн бұрын
Интересное сравнение, спасибо ))
@Scherbakov4 күн бұрын
Возникает подозрение, что клеточные автоматы помогут в будущем понять как в днк закодированы цепочки белков. И, возможно, помогут что-то упростить в квантовых вычислениях..
@leonid_agafonov4 күн бұрын
Принципы кодировки белков в ДНК уже известны. В ДНК все белки кодируются одним или более триплетом, т. е. последовательностью из трёх нуклеотидов. В ДНК (именно в ДНК, а не РНК) используются всего четыре нуклеотида: А, Т, Г и Ц. Каждый из нуклеотидов может соединяться только с определённым нуклеотидом: А - Т, Г - Ц.
@rouchy_4 күн бұрын
@@leonid_agafonov держи в курсе
@lisenkoevg4 күн бұрын
Попробовал выполнить пример на 1:08:10. В процессе выполнения 2-й строки main() - foo(b1); - выполняется A dtor (и только он). Может кто-нибудь подскажет, почему так? Или почему не A ctor и A dtor одновременно? godbolt - z/Mfj9671Ez (результат работы 1-й и 3-й строк (вернее закрывающего блока после 3-й строки) соответственно A ctor, B ctor и B dtor, A dtor - с этим вроде ясно.) И то, что при этом вывод 3-й строки содержит "5" - это так повезло? (ведь объект A разрушился)
@khlruslanico4 күн бұрын
Спасибо, Константин Игоревич. Хоть немного стал понятен принцип динамического программирования.
@AlienRealAlien4 күн бұрын
очень интересная лекция благодарю
@rayrayray46534 күн бұрын
классно!
@lordtimey5 күн бұрын
48:49 - Я написал такой же код в Visual Studio. В консоли напечатано 42 без выброса ошибки. Это такая особенность у компилятора, встроенного в Visual Studio?
@tilirКүн бұрын
Это вам просто повезло. Ну или не повезло, как посмотреть. Могло произойти что угодно, не произошло ничего. Ничего это явно разновидность чего угодно ))
@RuslanPrestige-i8u5 күн бұрын
Спасибо вам большое за столь подробную информацию.
@user-apostata8 күн бұрын
Добрый день. Может я чего то то не дочитал, или не так понял. Прошу пояснить, контест Problem RL. нам дают рекурсию (я так понимаю с корректным кодом), и надо её превратить в цикл. В исходном коде используется unsigned long long, НО на вход тест подаёт отрицательное значение. т.е. верным становится решение long long. Спасибо, что тест сообщает при каких значениях мы получили WA.
@tilir7 күн бұрын
Изначально это было ошибка (я неправильно записал программу в условии). Но мне так понравился педагогический эффект этой ошибки, когда студент с первым же заданием понимает, что информация, которая ему сообщена может быть неполна или неверна и рассчитывать надо только на фидбек от конкретных тестов, что я решил так всё и оставить.
@yuryshadchnev_education8 күн бұрын
будь сегодня 20 год я бы ночь не спал но сделал бы 100 акков и подписался для продолжение и все под фоновый просмотр MLP)))) спасибо ютубу за такую рекомендацию
@ermuhambetcalmenov81049 күн бұрын
Рахмет
@AutoTrucker9 күн бұрын
Константин, здраствуйте, спасибо за лекции. Мне интересно, как нужно смотреть ваши лекции. Я щас посмотрел курс по С. Далее мне смотреть Базовый курс по плюсам, а потом уже Магистерский?
@tilir9 күн бұрын
Да именно так. Можете ещё про тулчейны, полезно.
@AutoTrucker9 күн бұрын
@tilir от души
@unlomtrash9 күн бұрын
Чудесный лектор (и не только! Семинары по С ❤)
@Румяные_Блины9 күн бұрын
Шутка: у вас там сущность в виде гномика переводит буковки в нолики или единички.
@f9ka97511 күн бұрын
Благодарю за видео , но у меня возник вопрос , почему нам просто изначально не взять абсолютные значения чисел и не найти для них нод? 39:18
@tilir7 күн бұрын
Потеряете знак.
@Bublerkin11 күн бұрын
Отдельное уважение за использование светлой темы в Vim. После 2010 года среди юных маминых кодеров пошла мода на эти ужасные тёмные темы 😵💫
@vacsa9 күн бұрын
темные берут потому что глаза горят от белого фона
@Bublerkin9 күн бұрын
@@vacsa Значит, в комнате плохое освещение. Как у девочки с ютуба, которая свой 3d-движок пишет - сидит в потёмках как сыч 😆А люстра должна быть ярче, чем монитор, и будет всё хоккей.
@anatagenki205611 минут бұрын
Главное чтобы код человек писал хороший, а это - дело вкуса
@w5346c11 күн бұрын
Здравствуйте, Константин, спасибо за лекции, они великолепны. В лекциях по C/C++ вы часто ссылаетесь на Кнута, и правда - у него много интересных и уникальных инсайтов. Но читать его тяжко, с этим его ассемблером, массой математики и т.д. Идея - сделать курс лекций по алгоритмам на основе книг Кнута, так сказать Кнут с человеческим лицом, на C++ вместо ассемблера. Мне кажется было бы востребовано.
@tilir11 күн бұрын
У меня на канале есть немного перепевок Кнута с человеческим лицом и на C++. Это плейлист комбинаторика и он не очень популярен, мягко скажем.
@oldrat90198 күн бұрын
@@tilirплейлист с комбинаторикой великолепен! Впрочем, другие Ваши лекции быть может даже ещё интереснее. (я правда ни разу не программист и смотрю ваши видосики чисто чтобы расслабиться и посмотреть что-то интересное... Так что моё мнение видимо не релевантно, но все равно).
@w5346c6 күн бұрын
@@tilir нужно название более рекламирующее, типа "Кнут и пряник: алгоритмы с человеческим лицом" 😀
@juliap.53755 күн бұрын
@w5346c В реальной жизни оно практически никому не нужно. Ну т.е. когда программист встречает реальную задачу, то лучше и дешевле пригласить для её решения математика. А если есть математик, то для реализации лучше и дешевле пригласить программиста. Не нужно это смешивать. PS. Кнута читала, решала - в юности была олимпиадница. Самая моя бесполезная трата времени как оказалось. Когда потом встречалась с реальными задачами, они были всегда за гранью моего понимания, их с трудом решали профессиональные математики, на выходе генерируя талмуды в сотни страниц "что, как и почему" (ещё и кандидатские на этом делая). Как и почему никто не понимал, натурально магия даже если понимаешь о чём в принципе речь, бывало что и просто это что-то непонятное, из областей до которых нужно расти много-много лет будучи математиком. Так что нет, не нужно оно)
@AlienRealAlien11 күн бұрын
какое счастье
@Арсен-с9я12 күн бұрын
не могу понять scp алгоритм в данном виде Допустим у нас есть ребро в worklist E, где def(E) = {y1 = 6}, use(E) = {z1 = x3 + y1} По алгоритму мы делаем операцию meet(LV[y1], LV[z1])? meet для z1 в описанном случае будет 6, что неверно Или я неправильно понимаю смысл use(E)?
@Sysyoutu14 күн бұрын
59:24 Как говорил один мой руководитель в Intel: Ваши тесты - это мусор. Ахахахахахааха
@std-sort14 күн бұрын
Спасибо за ваши труды!
@useruserovich539714 күн бұрын
По поводу оптимизации вызова функций, есть вопрос: если у нас есть, допустим цикл, где в начале много инструкций load, а потом идёт вызов виртуальной функции. Хочется оптимизировать load инструкции, поместив выше цикла, однако виртуальная функция может этот контест изменить. Можно ли хоть что-то улучшить?
@tilirКүн бұрын
Это какой таймкод или номер слайда?
@useruserovich5397Күн бұрын
@tilir нет это общий вопрос
@myvin288717 күн бұрын
А зачем итератор цикла проверять в двух ББ, раздельно на вход в цикл и выход?
@tilirКүн бұрын
Это какой таймкод или номер слайда?
@SteelBlueVision17 күн бұрын
Pardon my English and feel free to use Google Translate, if necessary. At 28:13, the correct way to redirect STDERR to the same file as STDOUT, is using the expression "2>&1" and not "2>1", as shown at the end of the second example. The expression shown in the example in the video (i.e., "2>1") will result in STDERR being redirected to a file with the filename "1", rather than to the same file to which STDOUT has been previously redirected (i.e., "001.log"). I should add that this is a very common mistake when BASH commands are entered via the CLI - we've all done it many times, only to wonder where our STDERR output has disappeared to. Bonus tip: The use of "1" in "1>..." is always optional. Demonstrated via the corrected pattern of the second example, it could just as well be written, "./allthree <001.in >001.out 2>&1". Notice the omission of the file descriptor (i.e., "1") before the first right angle bracket (i.e., the expression phrased ">001.out" is equivalent to the more verbose form, "1>001.out", which is seldom used in practice). This is because the omission of a file descriptor number before a right angle bracket used to indicate output stream redirection, causes the default value of "1" (i.e., STDOUT) to be deduced implicitly. In fact when we say "<001.in", we are implicitly indicating to redirect file descriptor zero (i.e., STDIN) to read from this file. If we want to be more explicit, we could just as well write, "0<001.in", with the leading zero explicitly specifying to use file descriptor 0 for this input redirection expression.
@tilirКүн бұрын
Спасибо, отличное дополнение. Я плохо понимаю как вы посмотрели лекцию, если не знаете русского и зачем пишете на английском если знаете ))
@Nika-y5w17 күн бұрын
Браво. Замечательная книга и курс лекций. Очень вдохновляет. Теперь попасть на стажировку или устроиться на работу осталось попробовать. За идею для стартапа из прошлых лекций отдельное спасибо. 💙
@AlienRealAlien18 күн бұрын
золотой курс лекций книга золотая. я рад что мне предоставилась уникальнаявозможность ознакомитсья с вашими трудами
@Gesha-t5k19 күн бұрын
Подскажите, пожалуйста, где можно подробнее почитать или найти реализацию прокси класса для двойных квадратных скобок класса матрицы(23:53)
@tilirКүн бұрын
К сожалению это не попало на гитхаб курса. Погуглите по "two square brackets overloading C++", в интернете такого много. В новых стандартах добавили перегрузку квадратных скобок любой кратности и этот трюк в целом уже не нужен.
@skovoroda1419 күн бұрын
уух, спасибо. Будь у меня такие преподаватели, я бы может быть крудошлепом бы не стал. Вопросы, возможно я пропустил. 1. Поддержка вулкана на видеокартах реализована на уровне драйверов? На старых его не завести? 2. Если уже есть код, который рисует в openGL, передавая в точку рендерера данные вершин и данные для униформ с полной отвязкой в проектировании от внутренностей GL, за исключением разве что последовательностей байтов в текстурах, тяжело ли будет переписаться на вулкан?
@tilirКүн бұрын
1. На уровне рантайма. Это не совсем "драйвера", но нечто на них похожее. 2. Сложно, у Vulkan высокий входной порог.
@skovoroda14Күн бұрын
@@tilir спасибо за ответ!
@РусланКарнеенко21 күн бұрын
Спасибо
@holl_tv29324 күн бұрын
полез углюбится в С++ но пришлось учить заново С
@pumfnuci24 күн бұрын
Пришлось попотеть покупая книгу! Проблема с смс при совершении оплаты- выкрутился указав способ « оплата при получении»
@AlienRealAlien24 күн бұрын
ты не пожалеешь книга при совмещении с такими великолепными лекциями просто великолепна. не зря старался
@sergeykirdyankin702725 күн бұрын
Можно ли как то получить Traits из переменной, например для deducing this - self как тип не прокатывает. decltype каждый раз дописывать не хочется))
@tilirКүн бұрын
Это к какому таймкоду или слайду вопрос?
@sergeykirdyankin702725 күн бұрын
Так работает: template<auto n> auto foo(){return n;}
@tilirКүн бұрын
Это к какому таймкоду или слайду уточнение?
@trimo112025 күн бұрын
У вас есть видео по кодировкам, им их преобразования? Например, я вообще не понимаю, почему в символах не используются unsigned char, а просто char, может дело, что включённый старший бит означает, что это не один символ в один бай, а ищи другой байт и также проверяй?
@tilirКүн бұрын
Нет, таких видео у меня нет. Я пытался читать такие лекции, но на них все засыпали -- там масса довольно неинтересных деталей. Может быть рано или поздно я придумаю как это подать. К счастью в интернете много таких видео и на zerocost conf этого года было даже на русском.
@SlavaVy026 күн бұрын
Константину больше спасибо, это очень интересный алгоритм Евклида, когда сначала пеберм два числа, получаем 3е (например справа), делаем сдвиг и повторяем, когда визуализируешь этот алгос - очень интересно. Вообще такие лекции, от разработчика такого уровня на русском языке - это прям национальное достояние, без шуток.
@andrew_klygin27 күн бұрын
Спасибо за лекцию. К сожалению, ссылка на 47:42 перестала работать :(
@tilir26 күн бұрын
Увы, снесли с ютуба. Не исключено, что снёс как раз тупой робот "за нарушение авторских прав" и т.п. Как же, пять минут ролика вставили.
@cavesalamander630829 күн бұрын
"Довезли даже до Новосибирска". Ну-ну.
@tilir28 күн бұрын
Самая далёкая пока точка, откуда мне написали ))
@vividbwАй бұрын
Спасибо за интересные видео. Тема сложная и интересная