Спасибо за ваши лекции. Это лучшее по С++ что есть в ютубе. По крайне мере в русскоязычном сегменте. И как же легко смотрится вводная лекция после лекции по корутинам.
@@СеменЦимбалюк-ф4л Мой вопрос скорее про цельный курс (в идеале видеокурс) по advanced C++. За материалы в конце лекций, естественно, большой респект!)
51:52: "...вы можете ставить сколько угодно подчёркиваний в конце..." Из [lex.name] пункта 3.1: "Each identifier that contains a double underscore ... is reserved to the implementation for any use" Таким образом, имена с двумя или более подчёркиваниями подряд в конце будут иметь в своём составе хотя бы одно двойное подчёркивание, и они запрещены даже более строго, чем имена, начинающиеся с одного подчёркивания, - не только в глобальном пространстве имён Так что да, сколько угодно, но ни в коем случае не более одного :)
Сейчас выкладка будет каждую неделю, выпуск на 2к не втиснуть в график. Поэтому он будет зимой, когда бакалавры пойдут на зачетную неделю. Слайды уже готовы.
@@tilir скажите, вопрос про функцию сорт: как я понимаю, выигрыш будет в с++ коде, как продемонстрировано в видео, только в случае возможности проинлайнить, но этой возможности не будет, когда мы динамически линкуем модуль, где описан объект, массив которых мы и хотим сортировать. В общем так ли это? Т.е. инлайн we работает только в случае статического (времени компиляции) полиморфизма? Вы в видел упоминали, что эффективность с++ можно сломать и потом починить, вероятно, речь и идёт о динамическом связывании, не могли бы подсказать, где про это почитать/посмотреть? p.s. спасибо, очень крутые лекции, лучшего материала я не встречал!
@@tilir Спасибо за Ваш труд! Да, увидеть лекции по "C" было бы здорово. У Вас очень приятная и простая для понимания подача материала. За всем этим чувствуется опыт и огромная база знаний!
Константин Игоревич, очень благодарен вам за то, что даете возможность людям слушать такие прекрасные лекции. Интересует вопрос по поводу литературы, как вы относитесь к Стивену Прата?
Как хотелось бы услышать от вас иронический рассказ о холиварах между фанатами и хейтерами С++ vs true C vs Rust, сдобренный тонким юмором и несравненным сарказмом.
Почему при обсуждении способа представления алгоритмов не было классических блок-схем (слайд 22 8:53)? Проходил ряд курсов по программированию от Яндекса, там тоже их не было. Я по основному образованию инженер-конструктор и нас учили описывать алгоритмы в виде блок-схем. По сей день их использую в работе и порой оформляю коллегам исходные данные в таком виде. Ни у кого они не вызывают отторжения, наоборот благодарят.
Блок-схемы не добавляют читаемости алгоритмам (если не наоборот). Это что-то такое с запахом советских шестидесятых. На листе A3, на миллиметровой бумаге... романтика на любителя. Но вот например в UML для описания архитектуры визуальные диаграммы вполне себе используются и там (на лекции по архитектуре) я их и объясняю.
@@tilir позволю себе ещё небольшое замечание. 42:22, std::less это же шаблон, хотя у него самого с c++14 есть значение параметра по умолчанию (void), треугольные скобки все равно нужны. Увы даже в c++ 17 и выше CTAD не работает в указании значений по умолчанию параметров шаблонов.
@@tilir и да, лекции реально отличные. Завидую вашим студентам. У нас в свое время преподавали c++ параллельно с программированием под Windows на си, эти два языка не всегда разделялись, да и c++ 11 тогда ещё не было.
Константин, огромное спасибо за ваши лекции, смотрю с огромным удовольствием! Есть вопрос - с каким набором знаний студенту следует подходить к изучению этого курса? При просмотре мне часто бывают не понятны многие вещи и создается впечатление, что курс ориентирован на людей, которые уже знают многое в C++ и хотят углубиться. Может быть вы смогли бы посоветовать какие материалы и стек знаний необходимы для успешного изучения этого базового курса? Заранее спасибо за ответ
Предварительных знаний не требуется, кроме знания языка C и ассемблера в объеме первого курса МФТИ. Требуется способность восстанавливать пробелы используя литературу. Курс рассчитан на большой объём самостоятельной проработки но не перед его началом, а в процессе.
Это кажется уже разбиралось в комментариях. Тут действительно на слайдах кеш не без проблем и это одна из. Те из студентов кто присылали домашние работы увидели это первыми и исправили каждый по своему.
@tilir Скажите, вопрос про функцию сорт: как я понимаю, выйгрыш будет в с++ коде, как продемонстрировано в видео, только в случае возможности проинлайнить, но этой возможности не будет, когда мы динамически линкуем модуль, где описан объект, массив которых мы и хотим сортировать. В общем так ли это? Т.е. инлайн we работает только в случае статического (времени компиляции) полиморфизма?
Здравствуйте! Только начал учить С++. А почему мы не можем использовать просто хэш таблицу без использования листа? У неё и вставка, поиск и удаление О(1)
А вы попробуйте там найти элемент к которому последним обращались. Вообще если к вам приходит такого рода идея пробуйте на бумажке спрототипировать а лучше даже просто написать программу.
Я рассказываю ассемблер на первом курсе. Возможно я доберусь до записи первого курса, например в следующем году. Так чтобы вот очень хороших курсов на youtube я как-то и не знаю.
Спасибо за лекцию! Если не секрет, почему решили поменять формат показа слайдов на видео? В целом ничего страшного, но просто вглядываться надо усерднее в физический экран. Мне кажется лучше было как с магистерским курсом: все время показывать запись с экрана и сбоку вставлять кадрированное видео с вами. Или возникли какие-то технические сложности?
А последний том про плюсы из трёхтомника А.В.Столярова тоже второсортный шлак или вам просто не довелось его читать? Очень интересно узнать что вы думаете о работах этого автора.
Я уже где-то про Столярова высказывался. Если коротко, то я бы не рекомендовал. Я, правда, его не столько читал, сколько проглядывал по диагонали, но в общем мне хватило. Да там и введения достаточно. Это не просто бессмысленная для развития книжка, это книжка (с моей точки зрения) вредная.
Спасибо за великолепную лекцию ! Есть один вопрос: в методе lookup_update в случае, если мы не нашли в хеше элемент по ключу и при этом наш список полный, происходит hash_.erase(cache_.back()) 37 строчка кода, это корректно ? Ведь тип cache_.back() не является ни типом ключа хэш-табдицы, ни типом итератора.
Да уже обсуждали тут в комментариях. На слайдах упрощённый кеш где ключи равны значениям. В реальности там будет храниться пара и искать вы будете cache.back().first или что-то вроде того.
Там мало экшена. Это трёхчасовые семинары где я процентов 50 времени хожу по рядам, смотрю как люди решают простые задачки, что-то лично подсказываю и т. п. Все материалы, как водится, в открытом доступе: слайды cs.mipt.ru/wp/?page_id=7775 и задачник olymp1.vdi.mipt.ru Я думаю я к следующему году придумаю как это записать и выложить так, чтобы зрители не умерли от тоски. Например у меня есть идея сделать из моих объяснений выжимку-мультфильм в стиле 3blue1brown или просто заснять отдельно мои объяснения, или что-то в том же духе.
Курс скорее для продолжающих, чем начинающих. не каждый поймёт такой литературный стиль преподавания и объяснений. Ну и соответственно базовым сложно назвать данный курс, с учётом того что рассматривается ассемблер!
"Базовый курс по C++" это не "первый курс в программировании". Первый курс читается на базе C и ассемблера и занимает год, включая также основные алгоритмы и структуры данных. Ко второму курсу я предполагаю что собравшиеся всё это знают и можно начинать изучать C++. Курс базовый в смысле базы в языке.
А можно детали, почему когда мы пишем хорошую хэш таблицу, мы сделаем один список и указатели внутрь него? Почему не динамический массив бакетов плюс хэш-функция, которая вычисляет индекс в массиве по ключу?
1. Лучше начинаешь понимать как они работают. 2. В сравнении с более удачной реализацией понимаешь - расти есть ещё куда (и возможно, даже поймёшь куда). 3. Если у тебя результат лучше - можно порадоваться, что получилось ( правда, с такими библиотеками *соревноваться* - та ещё задача)) ). 4. Практика. Теоретические и практические знания и навыки - вещи разные, которые очень хорошо дополняют друг друга, но с большим трудом вытекают друг из друга. Сейчас много что уже реализовано, а то что не реализовано - либо трудно, либо крайне не очевидно. И как же дорасти до такого уровня? Правильно, делать что-то самому, даже если это уже сделано другими. Даже наоборот, это полезнее, потом можно увидеть в сравнении свои недостатки и преимущества, на примере научиться лучшим практикам (имеет смысл, если сделаешь сам, а уже потом посмотришь; иное тоже эффективно, но меньше). Список можно продолжать бесконечно.
Ещё забыл важный нюанс. Библиотеки общего назначения делаются под всех, то-есть с наиболее оптимальными решениями. В твоей задаче могут быть не нужны некоторые детали, а некоторые отсутствующие - наоборот нужны. Тут вариант только один, сделать тоже самое, но под свои нужды. Те же списки можно реализовать множеством способов, некоторые из них могут эффективнее использовать память, другие будут быстрее работать, и т.д..
Здравствуйте. А разве шаблоны с++ это не предпроцессорные автоматические реализации различных вариантов функции или метода? Вы говорите что они идут внутри грамматики языка а не предпроцессора.
Здраствуйте, Константин Владимиров! Я не студент МФТИ, но как видите я тут. На моменте, когда вы разбирали списки литературы, у меня возник вопрос, почему там не было Брюса Эккеля? Название книги: "Философия С++. Введение в стандартный С++"
А почему он тут должен быть? Ничего плохого про Эккеля не скажу, но это явно не блестящая книга и не мастрид. Так, серединка второго эшелона. Я никак её при подготовке лекций не использовал, не цитировал и конечно её нет в списке литературы.
" изучить си за недельки две". М да хотел бы посмотреть на такого человека кто знает Си в полном объёме. От всех его стандартов и всех возможностей за такой срок😁.
Константин, отличные лекции, спасибо за ваш труд! Всегда приятно слушать грамотного профессионала. А всё-таки позвольте поправочку, коль название лекции у вас на английском (первые слова, которые видит студент, так сказать) - правильно говорится "Ссент ов си плас плас", не скент :) По той же причине, что и компьютер сайенс, а не скаенс.
Спасибо. Меня уже поправляли. Есть несколько слов в которых я делаю систематические ошибки: scent (скент), vehicle (вехайкл), entry (энтрай) и еще парочка. Я стараюсь за собой следить и говорить ссент, виикл и энтри, но сбиваюсь.
Говорят, что язык Си это подмножество языка Си++. А как правильно делать? 1. Сначала изучить Си, затем с этими знаниями изучать Си ++. 2. Начать изучать Си++ и параллельно изучить Си, предварительно не изучая Си.
начальный уровень обоих языков одинаковый. Поэтому, можете сразу изучать с++. Изучив начальный уровень языка с++, вы будете владеть начальным уровнем сишки тоже.
Вы спрашиваете про знание Си. Я знаю, что Вы преподавали Си, но почему то не выкладываете лекции по этому языку. Хотелось бы с ними ознакомится. Хотя бы по тому, что Си можно выучить, а С++ нет. Спасибо.
Я уже отвечал ниже в комментариях. Мои семинары по языку C сложны для экранизации. Там мало экшена, люди там много решают задачи прямо на семинаре и т.п. Все материалы выложены. Зайдите на cs.mipt.ru/wp/?page_id=7775 и дальше по ссылкам.
Ну я про VLA вообще не думал, но наверное да (хотя с моей точки зрения его и в C нет, там сомнительная условная поддержка в стандарте). Ещё про всякий там restrict, про static в аргументах, про расширенную инициализацию массивов и прочее.
Возможно, Константин был в курсе идей по обучению C++, предложенных Bjarne Stroustrup th-cam.com/video/fX2W3nNjJIo/w-d-xo.html и Kate Gregory th-cam.com/video/YnWhqhNdYyk/w-d-xo.html . Но он пошёл дальше! Именно поэтому его курс по C++ лучше, чем другие! P.S.: я искренне восхищен Константином и его логикой изложения идей! Единственное, по правде говоря, я бы перед этим курсом в тайне прочитал 3 книги Bjarne Stroustrup (с задачами из третьего издания, как и было сказано). Просто чтобы происходящее казалось непринужденной беседой )))
Понимаю, что эта лекция может помочь мне в явлении гармонии народу. Поясняю, я пытаюсь создать велосипед. Идея: из центра сферы треугольниками изобразить путь, который доходя до внешней оболочки построенной тоже на треугольниках , при совпадении пронизывается лучом, совершая цикл. Так вот у меня модель. у вас глубокие знания, но я не уверен, что удастся так погрузиться в понимание всей темы. Ваши энциклопедические знания давят на меня ужасно.
Пишу на C++ больше 10 лет, но, наткнувшись на ваши лекции, понимаю, что все это время только лишь "трогал его лапкой". Спасибо!
Да ладно!
Огромная благодарность за лекцию и за ту энергию с которой вы преподаете!
Наконец-то! Заждались Ваших лекций, спасибо.
Очень рад, что нашёл ваши лекции. Огромное спасибо за такой ценный материал!
Вау, новый урок, премного благодарен Вам Константин за эту лекцию.
Спасибо за ваши лекции. Это лучшее по С++ что есть в ютубе. По крайне мере в русскоязычном сегменте. И как же легко смотрится вводная лекция после лекции по корутинам.
А вне русского сегмента можете что-нибудь посоветовать?
@@makaedg в лекциях Константина всегда есть ссылки на доп литературу, и на видео с лекциями на конференциях.
@@СеменЦимбалюк-ф4л Мой вопрос скорее про цельный курс (в идеале видеокурс) по advanced C++.
За материалы в конце лекций, естественно, большой респект!)
@@СеменЦимбалюк-ф4л Добавлю, что лекции Константина потрясающие, и было бы круто найти что-то соответствующего уровня на английском.
@@makaedg не могу с этим помочь.
Очень понятно и продуманно подано! Благодарю за лекцию!
11:23 как же приятно сейчас видеть реализацию по кэшу и понимать, что пару недель назад сделал приблизительно также))
Огромное спасибо за такую отличную лекцию в открытом доступе! Получилось захватывающе: интриги, расследования, разве что без скандалов :)
10:17 - самая гениальная шутка про C, которую я когда-либо слышал!
Авторство не моё, это что-то с просторов интернета.
Константин Игоревич, спасибо большое за лекцию! Часть видео, которая начинается с 50:18, называется "LRU на C", хотя речь идет о LRU на C++.
После лекции по матроидам стало ясно, что именно этот курс по C++ следует послушать.
Новый учебный год начался!
51:52: "...вы можете ставить сколько угодно подчёркиваний в конце..."
Из [lex.name] пункта 3.1:
"Each identifier that contains a double underscore ... is reserved to the implementation for any use"
Таким образом, имена с двумя или более подчёркиваниями подряд в конце будут иметь в своём составе хотя бы одно двойное подчёркивание, и они запрещены даже более строго, чем имена, начинающиеся с одного подчёркивания, - не только в глобальном пространстве имён
Так что да, сколько угодно, но ни в коем случае не более одного :)
Я формально согласен. Реально в любой реализации стандартной библиотеки идентификаторы "чтобы не пересекались" именно что начинаются с подчёркиваний.
Потрясающе
Смотрю лекцию ради неизвестных терминов и хороших практик))
Спасибо за лекцию! Ждём special на 2к подписчиков!
Сейчас выкладка будет каждую неделю, выпуск на 2к не втиснуть в график. Поэтому он будет зимой, когда бакалавры пойдут на зачетную неделю. Слайды уже готовы.
Неплохое введение.
P.S. Номер телефона нужно было потереть на видео...
Круто!
спасибо лектору
Спасибо!
Поехали!
Спасибо огромное за леции! Очень круто! Было бы классно ещё и Ваши лекции по C, которые Вы упомянули в начале, тоже посмотреть. Нигде не лежат?
Пока нигде, запись планируется.
@@tilir скажите, вопрос про функцию сорт: как я понимаю, выигрыш будет в с++ коде, как продемонстрировано в видео, только в случае возможности проинлайнить, но этой возможности не будет, когда мы динамически линкуем модуль, где описан объект, массив которых мы и хотим сортировать. В общем так ли это? Т.е. инлайн we работает только в случае статического (времени компиляции) полиморфизма?
Вы в видел упоминали, что эффективность с++ можно сломать и потом починить, вероятно, речь и идёт о динамическом связывании, не могли бы подсказать, где про это почитать/посмотреть?
p.s. спасибо, очень крутые лекции, лучшего материала я не встречал!
@@tilir Спасибо за Ваш труд! Да, увидеть лекции по "C" было бы здорово.
У Вас очень приятная и простая для понимания подача материала. За всем этим чувствуется опыт и огромная база знаний!
Было б очень здорово C шные лекции тоже.
вот это я удачно зашел.
Запах C++ устойчивый, странный но вроде приятный
Нормально. Кто не знает язык Си выучите его за недельку.)
Константин Игоревич, очень благодарен вам за то, что даете возможность людям слушать такие прекрасные лекции. Интересует вопрос по поводу литературы, как вы относитесь к Стивену Прата?
Неплохо, но без какого то полёта мысли. Я бы специально эту книгу не отмечал. Но и антирекомендаций у меня нет.
Спасибо. Интересно. С юмором. Про кошку в яблочко.
Как хотелось бы услышать от вас иронический рассказ о холиварах между фанатами и хейтерами С++ vs true C vs Rust, сдобренный тонким юмором и несравненным сарказмом.
Большое спасибо Вам за лекции. Не могли бы Вы выложить лекции по ассемблеру? Спасибо заранее.
Почему при обсуждении способа представления алгоритмов не было классических блок-схем (слайд 22 8:53)?
Проходил ряд курсов по программированию от Яндекса, там тоже их не было. Я по основному образованию инженер-конструктор и нас учили описывать алгоритмы в виде блок-схем. По сей день их использую в работе и порой оформляю коллегам исходные данные в таком виде. Ни у кого они не вызывают отторжения, наоборот благодарят.
Блок-схемы не добавляют читаемости алгоритмам (если не наоборот). Это что-то такое с запахом советских шестидесятых. На листе A3, на миллиметровой бумаге... романтика на любителя.
Но вот например в UML для описания архитектуры визуальные диаграммы вполне себе используются и там (на лекции по архитектуре) я их и объясняю.
@@tilir понятно, спасибо за ответ!)
15:12 Это же код на чистом Си, не уверен, может в последние стандарты и завезли, но nullptr это ключевое слово из C++ 11.
Кстати да, отличное замечание. Я писал на C-подмножестве C++ и пропустил это, набрав на автомате, а вы заметили. Спасибо, внесу в errata =)
@@tilir позволю себе ещё небольшое замечание. 42:22, std::less это же шаблон, хотя у него самого с c++14 есть значение параметра по умолчанию (void), треугольные скобки все равно нужны. Увы даже в c++ 17 и выше CTAD не работает в указании значений по умолчанию параметров шаблонов.
@@tilir и да, лекции реально отличные. Завидую вашим студентам. У нас в свое время преподавали c++ параллельно с программированием под Windows на си, эти два языка не всегда разделялись, да и c++ 11 тогда ещё не было.
Согласен. Тоже отличное наблюдение.
Константин, огромное спасибо за ваши лекции, смотрю с огромным удовольствием! Есть вопрос - с каким набором знаний студенту следует подходить к изучению этого курса? При просмотре мне часто бывают не понятны многие вещи и создается впечатление, что курс ориентирован на людей, которые уже знают многое в C++ и хотят углубиться. Может быть вы смогли бы посоветовать какие материалы и стек знаний необходимы для успешного изучения этого базового курса? Заранее спасибо за ответ
Предварительных знаний не требуется, кроме знания языка C и ассемблера в объеме первого курса МФТИ. Требуется способность восстанавливать пробелы используя литературу. Курс рассчитан на большой объём самостоятельной проработки но не перед его началом, а в процессе.
@@tilir спасибо за ответ! еще сильнее захотелось одолеть курс
52:44 Что то мне кажется что удаление из хэш-таблицы неверное, вы передаете в hash_.erase(cache_.back()); значение, но никак не ключ для удаления.
Это кажется уже разбиралось в комментариях. Тут действительно на слайдах кеш не без проблем и это одна из. Те из студентов кто присылали домашние работы увидели это первыми и исправили каждый по своему.
@tilir Скажите, вопрос про функцию сорт: как я понимаю, выйгрыш будет в с++ коде, как продемонстрировано в видео, только в случае возможности проинлайнить, но этой возможности не будет, когда мы динамически линкуем модуль, где описан объект, массив которых мы и хотим сортировать. В общем так ли это? Т.е. инлайн we работает только в случае статического (времени компиляции) полиморфизма?
Нет это не так. Выигрыш будет всегда т.к. хедер с шаблоном обязан быть связан статически.
Здравствуйте! Только начал учить С++. А почему мы не можем использовать просто хэш таблицу без использования листа? У неё и вставка, поиск и удаление О(1)
А вы попробуйте там найти элемент к которому последним обращались. Вообще если к вам приходит такого рода идея пробуйте на бумажке спрототипировать а лучше даже просто написать программу.
было бы круто по ассемблеру увидеть такой курс.
не порекомендуете материал для его изучения?
Я рассказываю ассемблер на первом курсе. Возможно я доберусь до записи первого курса, например в следующем году. Так чтобы вот очень хороших курсов на youtube я как-то и не знаю.
Большое спасибо!!! теперь то я точно уверен,что я тупой 😂.надо,надо как то подтягиваться😢
Эх было бы классно начать с: "если вы думаете что знаете C++..."
Thanks for a brilliant lecture.
Is the C course that you mentioned also available?
Nope, planning to record next year.
Спасибо за лекцию! Если не секрет, почему решили поменять формат показа слайдов на видео? В целом ничего страшного, но просто вглядываться надо усерднее в физический экран. Мне кажется лучше было как с магистерским курсом: все время показывать запись с экрана и сбоку вставлять кадрированное видео с вами. Или возникли какие-то технические сложности?
Наоборот когда слайды важные их виднее. В данном случае это было вынуждено т.к. видео было местами темновато.
@@tilir Почему то с этой лекцией трудности возникли после лекций по С.. много незнакомых вещей, где их добрать?
Ю-туб дико режет комментарии. Информацию по упражнениям из 4-го издания читайте на странице 8 4-го издания. (Упражнения вынесены на сайт автора)
Имеется в виду 4-е издание Страуструпа? Надо же. Я был уверен что их просто убрали =) Спасибо за информацию.
В классе треугольника функция-член square необосновано не const, хотя на более поздних слайдах становится const.
Когда я рассказываю про const, тогда и становится.
А последний том про плюсы из трёхтомника А.В.Столярова тоже второсортный шлак или вам просто не довелось его читать? Очень интересно узнать что вы думаете о работах этого автора.
Я уже где-то про Столярова высказывался. Если коротко, то я бы не рекомендовал. Я, правда, его не столько читал, сколько проглядывал по диагонали, но в общем мне хватило. Да там и введения достаточно. Это не просто бессмысленная для развития книжка, это книжка (с моей точки зрения) вредная.
Огромное спасибо! Эх мне бы такого преподавателя по плюсам в своё время) Кстати, книгу Антона Полухина по бусту никак не назвал бы второсортным шлаком
А это так и должно быть, что на слайдах указателя не видно? (7:59)
Я там в процессе исправляюсь =)
Спасибо за великолепную лекцию ! Есть один вопрос: в методе lookup_update в случае, если мы не нашли в хеше элемент по ключу и при этом наш список полный, происходит hash_.erase(cache_.back()) 37 строчка кода, это корректно ? Ведь тип cache_.back() не является ни типом ключа хэш-табдицы, ни типом итератора.
Да уже обсуждали тут в комментариях. На слайдах упрощённый кеш где ключи равны значениям. В реальности там будет храниться пара и искать вы будете cache.back().first или что-то вроде того.
Вы говорите, что ведёте курс си. А есть возможность его тоже выложить.
Там мало экшена. Это трёхчасовые семинары где я процентов 50 времени хожу по рядам, смотрю как люди решают простые задачки, что-то лично подсказываю и т. п.
Все материалы, как водится, в открытом доступе: слайды cs.mipt.ru/wp/?page_id=7775 и задачник olymp1.vdi.mipt.ru
Я думаю я к следующему году придумаю как это записать и выложить так, чтобы зрители не умерли от тоски. Например у меня есть идея сделать из моих объяснений выжимку-мультфильм в стиле 3blue1brown или просто заснять отдельно мои объяснения, или что-то в том же духе.
@@tilir спасибо
@@tilir Было бы отлично!
@@tilir было бы здорово!!! Надеюсь мир увидит это в скором будущем!!!
Курс скорее для продолжающих, чем начинающих. не каждый поймёт такой литературный стиль преподавания и объяснений. Ну и соответственно базовым сложно назвать данный курс, с учётом того что рассматривается ассемблер!
"Базовый курс по C++" это не "первый курс в программировании". Первый курс читается на базе C и ассемблера и занимает год, включая также основные алгоритмы и структуры данных. Ко второму курсу я предполагаю что собравшиеся всё это знают и можно начинать изучать C++. Курс базовый в смысле базы в языке.
@@tilirок, понятно
а есть лекции которые читаються для первого курса ?
Пока нет.
А можно детали, почему когда мы пишем хорошую хэш таблицу, мы сделаем один список и указатели внутрь него? Почему не динамический массив бакетов плюс хэш-функция, которая вычисляет индекс в массиве по ключу?
Из-за рехеша. О хороших хеш-таблицах в этом курсе есть лекция "ассоциативные контейнеры" можете её посмотреть.
@@tilir спасибо!
Super++//!!!
А почему надо обязательно писать свои реализации? Есть GLib, например, в нем уже есть списки, хеш-таблицы и всё прочее...
1. Лучше начинаешь понимать как они работают.
2. В сравнении с более удачной реализацией понимаешь - расти есть ещё куда (и возможно, даже поймёшь куда).
3. Если у тебя результат лучше - можно порадоваться, что получилось ( правда, с такими библиотеками *соревноваться* - та ещё задача)) ).
4. Практика. Теоретические и практические знания и навыки - вещи разные, которые очень хорошо дополняют друг друга, но с большим трудом вытекают друг из друга. Сейчас много что уже реализовано, а то что не реализовано - либо трудно, либо крайне не очевидно. И как же дорасти до такого уровня? Правильно, делать что-то самому, даже если это уже сделано другими. Даже наоборот, это полезнее, потом можно увидеть в сравнении свои недостатки и преимущества, на примере научиться лучшим практикам (имеет смысл, если сделаешь сам, а уже потом посмотришь; иное тоже эффективно, но меньше).
Список можно продолжать бесконечно.
Ещё забыл важный нюанс. Библиотеки общего назначения делаются под всех, то-есть с наиболее оптимальными решениями. В твоей задаче могут быть не нужны некоторые детали, а некоторые отсутствующие - наоборот нужны. Тут вариант только один, сделать тоже самое, но под свои нужды. Те же списки можно реализовать множеством способов, некоторые из них могут эффективнее использовать память, другие будут быстрее работать, и т.д..
Здравствуйте. А разве шаблоны с++ это не предпроцессорные автоматические реализации различных вариантов функции или метода? Вы говорите что они идут внутри грамматики языка а не предпроцессора.
Шаблоны не имеют отношения к препроцессору. Это часть грамматики.
Здраствуйте, Константин Владимиров! Я не студент МФТИ, но как видите я тут. На моменте, когда вы разбирали списки литературы, у меня возник вопрос, почему там не было Брюса Эккеля? Название книги: "Философия С++. Введение в стандартный С++"
А почему он тут должен быть? Ничего плохого про Эккеля не скажу, но это явно не блестящая книга и не мастрид. Так, серединка второго эшелона. Я никак её при подготовке лекций не использовал, не цитировал и конечно её нет в списке литературы.
" изучить си за недельки две". М да хотел бы посмотреть на такого человека кто знает Си в полном объёме. От всех его стандартов и всех возможностей за такой срок😁.
Так в полном объёме и не нужно.
Константин, отличные лекции, спасибо за ваш труд! Всегда приятно слушать грамотного профессионала. А всё-таки позвольте поправочку, коль название лекции у вас на английском (первые слова, которые видит студент, так сказать) - правильно говорится "Ссент ов си плас плас", не скент :) По той же причине, что и компьютер сайенс, а не скаенс.
Спасибо. Меня уже поправляли. Есть несколько слов в которых я делаю систематические ошибки: scent (скент), vehicle (вехайкл), entry (энтрай) и еще парочка. Я стараюсь за собой следить и говорить ссент, виикл и энтри, но сбиваюсь.
Скажите пожалуйста, просто любопытно а литература за 1988 год разве еще актуальна 🤨?
Да.
Говорят, что язык Си это подмножество языка Си++.
А как правильно делать?
1. Сначала изучить Си, затем с этими знаниями изучать Си ++.
2. Начать изучать Си++ и параллельно изучить Си, предварительно не изучая Си.
Есть разные мнения но мне кажется правильно так: на первом курсе Си и ассемблер, на втором C++.
начальный уровень обоих языков одинаковый. Поэтому, можете сразу изучать с++. Изучив начальный уровень языка с++, вы будете владеть начальным уровнем сишки тоже.
Вы спрашиваете про знание Си. Я знаю, что Вы преподавали Си, но почему то не выкладываете лекции по этому языку. Хотелось бы с ними ознакомится. Хотя бы по тому, что Си можно выучить, а С++ нет. Спасибо.
Я уже отвечал ниже в комментариях. Мои семинары по языку C сложны для экранизации. Там мало экшена, люди там много решают задачи прямо на семинаре и т.п.
Все материалы выложены. Зайдите на cs.mipt.ru/wp/?page_id=7775 и дальше по ссылкам.
31:00
"Возможность из C, которой нет в C++" --- это ты не про VLA, часом?
Ну я про VLA вообще не думал, но наверное да (хотя с моей точки зрения его и в C нет, там сомнительная условная поддержка в стандарте). Ещё про всякий там restrict, про static в аргументах, про расширенную инициализацию массивов и прочее.
@@tilir "расширенная инициализация массивов" это как выглядит?
@@victormustya1745 int arr[MAX] = { 1, 3, 5, [MAX-3] = 8, 4, 2 };
Почему-то думал что у вас аудитория всегда постарше курса так на 3
На этом же канале лежит магистерский курс. Там для пятого. А этот базовый бакалаврский. Он для второго.
@@tilir будем посмотреть продолжение.
Возможно, Константин был в курсе идей по обучению C++, предложенных Bjarne Stroustrup th-cam.com/video/fX2W3nNjJIo/w-d-xo.html и Kate Gregory th-cam.com/video/YnWhqhNdYyk/w-d-xo.html . Но он пошёл дальше! Именно поэтому его курс по C++ лучше, чем другие! P.S.: я искренне восхищен Константином и его логикой изложения идей! Единственное, по правде говоря, я бы перед этим курсом в тайне прочитал 3 книги Bjarne Stroustrup (с задачами из третьего издания, как и было сказано). Просто чтобы происходящее казалось непринужденной беседой )))
Я в курсе и я не в восторге. Тут зависит от целей обучения. Для моих целей подход госпожи Грегори не подходит.
О каких трёх книгах книгах Страуструпа вы имеете ввиду?
Я бы сказал Deep Dive in С++
Интел)))
Понимаю, что эта лекция может помочь мне в явлении гармонии народу. Поясняю, я пытаюсь создать велосипед. Идея: из центра сферы треугольниками изобразить путь, который доходя до внешней оболочки построенной тоже на треугольниках , при совпадении пронизывается лучом, совершая цикл. Так вот у меня модель. у вас глубокие знания, но я не уверен, что удастся так погрузиться в понимание всей темы. Ваши энциклопедические знания давят на меня ужасно.
недавно поковырял winapi, плюсами и не пахнет, а количесво макросов удручает.
Любое API стараются делать сишным по причинам, которые излагаются в третьей лекции (манглинг и пр.)