C++ Russia 2018: Илья Шишков, Как научить языку C++: опыт создания курсов на Coursera
ฝัง
- เผยแพร่เมื่อ 24 มิ.ย. 2018
- Подробнее о конференции C++ Russia: jrg.su/W8skjE
- -
. . . В течение последних полутора лет я руковожу созданием специализации на Coursera о современном C++. Специализация будет состоять из пяти курсов, два из которых уже запущены, а ещё один почти готов.
В своём докладе я хочу рассказать:
с какими проблемами мы столкнулись в работе над курсами (например, через 3 месяца работы мы выбросили все материалы и начали заново)
как мы формируем программу курсов и почему именно так (например, почему слово "указатель" не прозвучало в двух наших первых курсах ни разу)
Кроме того, за время работы над специализацией у нас выработался набор принципов, которые, я уверен, применимы и в повседневной работе:
в процессе интеграции нового сотрудника в проект
во время code-review
при найме Поэтому я не просто хочу рассказать, как мы делаем специализацию, но и попытаюсь переложить полученный опыт на повседневные задачи.
cppconf.ru
cpp_russia - วิทยาศาสตร์และเทคโนโลยี
Когда он поднял бутылку и сказал - А это наш "новичок"! Я жесть как испугался
Я испугался на первых минутах, что доклад без звука.
Отличный доклад, спасибо!
классные спецы! Стремимся к вашему уровню!
Доклад супер!
Спасибо. Продано.
Есть ещё хороший вариант вместо еретического using namespace std; импортировать те имена, которые нужны.
Например:
using std::vector;
using std::string;
// etc...
По сути, именно так это и делается в C#. И углубляться в пространства имён не надо, и проблем не будет.
Были бы все курсы такими
Я вот хотел бы пройти курс, НО на курсере его НЕТ, где он есть еще знает кто ?
Помянем его.... Яндекс забил на него
39:25
такая жиза о боги
Звук начинается не сразу, а вроде после 00:56.
Видео и том, что для того, чтобы тебя поняли, надо понятно объяснять.
Доклад интересный
если там задачи становятся большими, жаль что не упоминают/используют Git
По последнему вопросу есть ссылка на особенности работы с беззнаковыми типами? Н
е расслышал чей доклад.
Похоже что вот этот: Jon Kalb “unsigned: A Guideline for Better Code"
Курсера закрыта, где сейчас взять эти курсы?
Нашли ?
В 2011 году в Нижнем Новгороде в НИИТ преподаватели из НГТУ им.Р.Е.Алексеева нас так и учили. Говорили, ребята пока просто пишите using namespace std, потом мы вам расскажем зачем это нужно.
33:47
В первом примере типа int более, чем достаточно.
Да, там переполнение по другой причине. С того примера хорошо переходить к рассказу о приведении типов.
Есть ссылка на курс ?
Скажите пожалуйста или помогает изучение Pascal перед C++ ?
Нет
Да
Помогает в принципе знание любого императивного языка программирования. Но если решил изучать С++ то надо сразу изучать С++.
Ура! Человек понял дидактические принципы преподавания 2 курса пед колледжа
Проблема многих современных курсов: их создают люди, не имеющие педагогического образования.
Все, убедили. Понес деньги на курсеру ) Жаль, конечно, что этот цикл не включили в новый оптовый пакет курсера+. Так бы хоть как-то была бы возможность сэкономить. Но Илья был настолько убедителен, что отдам ему последнюю рубашку и буду есть доширак, но черный пояс по С++ получу. Тем более, что по каратэ уже есть ))))
как у вас успехи? поделитесь что ожидать)
@@setnemo я например начал в марте с белого, сейчас осталась финальная задача по красному, был перерыв в занятиях на 3 месяца. интересно)
@@ramilyagafarov5566 спасибо. Я доделал белый, и сейчас желтый доделываю. Уже не так просто, как с белом...
Стоящий курс? Кто проходил?
"Поискать в яндексе" XD
С двумя миллиардами все понятно, а с вектором что не так объясните пожалуйста...
Некрокоммент для потомков.
На 32:43 проблема в переполнении при неявном приведении типов.
t.size() возвращает беззнаковый тип.
Далее, чтобы поделить знаковое число на беззнаковое, sum приводится к беззнаковому типу.
И здесь происходит такое же переполнение, как если бы мы из беззнакового нуля вычли 12 - значения отсчитываются от максимального вниз.
Поэтому, крайне нежелательно использовать знаковые и беззнаковые типы в одном выражении.
Если всё же возникает такая необходимость, то нужно их явно преобразовать к одному типу с помощью static_cast.
Но это не значит, что на этом можно забыть о переполнении: например, максимальное значение unsigned int в 2 раза больше, чем максимальное значениие int, поэтому даже простое присваивание может выйти боком.
Лучший курс на русском!
Где их найти эти курсы ? Дайте ссылку !
@@Gillarann Thanx, но это не наш метод. Нам бы, ну знаешь, безденежно, от слова совсем :)
@@Tiolych ну я попробовал....и на меня в первых 3 видосах вылили столько инфы,аж сложно стало)
@@Gillarann там номер картона просят, чот я очкую.
@@Tiolych Ну я ввел и все норм было
@Красный Поршень Ну не мошенники эт точно. Это такой бизнес сейчас, где задача не научить, а просто дать направление. Ну и денег заработать. И от мэилру подобное есть, гикбрэинс... много таких сейчас.
Когда я учился в школе, то нас учили логарифму так:"логарифмом называется степень в которую нужно возвести число, чтобы и т.д. Дальше, свойства логарифма и т.д." Я не понимал при этом ничего про логарифмы. И уже когда я окончил школу, то увидел учебник в котором было написано так:" Жил был Непер во времена, когда умножать было сложно. Он заметил, что когда степенные функции умножаются, то их степени складываются. И он придумал логарифм как функцию, обратную степенной, чтобы облегчить процесс умножения." Блинннннн! Я сразу же понял что такое логарифм и зачем он нужен!
Объяснение понятия логарифм через Непера как раз таки совсем непонятно, в отличии от классического.
@@finalename7464 Через Непера понятие логарифма не объясняется. Понятие объясняется классически. Непер, это "подводка" к определению логарифма, исторический экскурс. Без него голое определение просто повисает в воздухе, как некая бессмысленная и бесформенная сущность. Не знаю как Вам, а мне понятнее вещи, которые не вырваны из контекста.
@@user-hh2qp6ez4d Ну так контекст логарифма - это уже известная математическая операция - возведение в степень. Непер тут соверешенно не причём и лишь отвлекает. По-моему ваш пример с этим Непером неудачный.
@@finalename7464 Речь идет об обучении. Когда знаешь контекст, тогда действительно понятно. А когда не знаешь и тебе его в процессе обучения не озвучивают? Я именно об этом написал. Давайте я Вам буду долго объяснять техническое устройство, например, адсорбера и ни слова не скажу про автомобили, двигатели внутреннего сгорания и проч. Я Вам гарантирую, ничего кроме недоумения этот адсорбер Вам не доставит.
@@user-hh2qp6ez4d В смысле, вы не зали контекста? То есть про логарифмы вам в школе начали рассказывать до того, как рассказали про возведение числа в степень?
А как и где найти их курс?
На Coursera. Основы разработки на С++
@@nikitabelov1478 спасибо , нашел торрент
@@user-jj5km1cu2n привет, можешь поделиться?
@@MaksVlasov-p4j у меня его нет уже, давненько я его находил
@@user-jj5km1cu2n подскажи где Не обязательно ссылку, название сайта и название темы
Им давно следовало бы выкинуть все записанное и начать делать курс заново)
К примеру, кто пробовал пройти первую неделю на маке, познал всю прелесть связки эклипс + гдб. Решение этой проблемы наверняка может потянуть на какой-то более высокий "пояс" и специализация дальше уже вряд ли понадобится :D
Пишу из 2020 года. В данный момент прохожу курс, про который рассказывает выступающий, они действительно начинают обучение постепенно и даже понятно, но ближе к концу даже белого пояса начинаются появляться задания, даже формулировка которых непонятна. Сейчас удовольствие от изучения пропало.
Ну как курс, пройден?
@@0imax нет, этот курс выбрал для общего развития, а не от потребности, и раз он перестал радовать, то ушел с него. Подсел на книги, все таки любым онлайн курсам далеко до профессиональной литературы
До сих пор переполнение чисел никак не обрабатывается компилятором. Ржу не могу 2019 год
А в каком языке обрабатывается и как?
@@0imax например в Delphi есть опция компилятора. В С# есть и опция и конструкция языка.
Если у вас числа начали по кругу ходить под повышенной нагрузкой, то это будет нарушением целостности данных.
@@user-gKjP не знал, что дедушка Delphi такое умеет)
А майкрософт молодцы, не стали копировать поведение джавы (там в 0 сбрасывается)
Что значит "не обрабатывается компилятором"? Кроме как проверки на каждое сложение интов в рантайм пихать а это оверхед огромный. Можно пользоваться -ftrapv флагом компиляции чтобы прога падала на оверфлоу.
Могли обрати Code::Blocks він теж багатоплатформовий та безкоштовний. :-)
Русский язык тоже "багатоплатформовий " и всем понятный, включая даже вас, но вы выбрали мову.
@@finalename7464Оу, вы из отдела контроля языковой полиции? Можете подсказать куда оплатить штраф за нарушение правил пунктуации в комментариях?
"С++ для самых маленьких и тупых" no offence
"Мы учим С++ людей которые знают любой язык программирования". Знаете, для математика это значит, что вы учите тех, кто уже знает все языки, в том числе С++. Не лучше ли сказать учим тех, кто знает какой-то язык программирования?
Они
так и сказал
Все эти "гуру С++" очень не любят людей, знающих С. Потому что любой сишник прекрасно знает реальную ценность всей это лабуды про иерархию классов и полиморфизм шаблонов, ему не получится впаривать это по видом знаний вместо реально ценных знаний.
Крик души хейтера ООП :)
@@0imax Да просто для написания реального софта кроме ЯП очень много чего надо знать. Лекции по С++ очень копаются в подробностях и льют воду, в то же время не дают понимания подходов к написанию конкретных видов ПО.
@@TheChipburner согласен, для написания промышленного софта надо знать гораздо больше, в том числе принципы построения приложений. Но нельзя давать эти принципы _вместо_ основ языка.
@@0imax Это верно, но основой С++ является С, вот его и надо дать для начала, причем только часто употребимые вещи.
@@TheChipburner именно что "для начала". Но от этого "начала" до принципов построения ПО - целая пропасть.