Как стать автором
Обновить

Комментарии 83

Круто!

А не думали запустить свой курс на Coursera?
Не знал про такой замечательный ресурс как Coursera, спасибо огромное!
думали делать он-лайн курс, а вот насчет именно курсеры не думали
Серьезно, стоит задуматься. На курсеры катастрофическая нехватка русскоязычный курсов, а вновь появляющиеся просто жадно заглатываются студентами. Например, Высшая Школа Экономики запустила курс «Экономика для неэкономистов» — подключилось 20 тысяч студентов (сейчас уже может и больше).

Разбить 9 лекции на 9 недель, а каждую лекцию раздробить на 10-12 секции по 10-15 минут. Слушаться будет намного проще.
Лично мне «Универсариум» больше нравится, но подумаем и о курсере, конечно )
НЛО прилетело и опубликовало эту надпись здесь
Кармы на плюсик не хватает, так что напишу здесь — спасибо! Выглядит как отличное пособие для повторения тех вещей, которые в рутине начинают забываться.
P.S. Лекции по два с половиной часа это все-таки хардкорно)
Спасибо. 2,5 часа лекций и правда многовато. Мы в последнее время практикуем т.н. «смешанные занятия», когда вначале 2 ак. часа лекция, потом 2 ак. часа — семинар
увы. ни того, ни другого пока не делали
Зачем учить мертвый язык?
Зачем задавать глупые вопросы?
Это тролль, у него в профиле написано, что он пишет в основном на С++.
Я пишу на С++, но я считаю, что это отвратительный язык, тем более для обучения.
Сколько я намучился, сколько костылей, велосипедов пришлось сделать, пока С++ стал для меня более-менее юзабельным.
С++ ужасен, этот его препроцессор, скорость компиляции, отсутствие нормальных модулей, отсутствие менеджера зависимостей, шаблоны, в которых могут разобраться только извращенцы создатели Boost. Я уж не говорю о том, что переносимость С++ это всего лишь миф. Компиляторы, ни один из которых не соблюдает стандарт. Бинарная несовместимость разных компиляторов и разных версий одного компилятора.
Пусть люди учат нормальные языки вроде Руби, Питона или C#, а C++ закопают глубоко и надолго, как продукт больного мозга Страуструпа.
Если для вас это сложно, то это вопрос задуматься о себе.
Ну-ка расскажите мне, как в С++ с использованием только стандартных библиотек открыть файл с юникодным именем. Кроссплатформенно.
На дворе 2015 год.
Юникод придумали в 1991 году.
Никак. С++ вообще не предназначен для разработки без подключения сторонних библиотек для выполнения определённых задач. Берёте, например, Boost и открываете.

Вопрос был в том, зачем Вы пишете на языке, который не доставляет Вам удовольствия. Мне вот, например, удовольствия не доставляет разработка фронтэндов — ну так я их и не пишу!
Определенных задач. Открыть файл. С юникодным именем. Программисты на C# и Java дружно посмеялись. Впрочем смеются уже не один десяток лет.
С++ вообще ни для чего не предназначен. Разве что для наступания на грабли и выстрелов себе в ногу.
Прекратите выливать своё недовольство ващей личной жизнью, которую вы не хотите менять на окружающих.
Ваша личная неудовлетворённость — это ваша личная проблема.
Согласен со сложностью овладения С++. Но это всего-лишь ваша проблема. Вы еще смешиваете «все в одном» скриптовые языки, которые в стоке тоже не все умеют, и расширяют свои возможности посредством сторонних модулей, с фрагментарностью библиотек С++. Но с этим как может борются Boost, Qt.

И давайте не будем упоминать «высоконагруженные сервера youtube», а вспомним на чем написаны рантайм тех языков что вы указали? MRI — С, Rubinius — C++, Python — С, C#(coreclr) — C++. И многие из модулей этих языков используют врапперы над С/C++ библиотеками.

А еще немного из более близкого к пользователю. Знаете LibreOffice? Помните времена когда он еще был на Java? И где там сейчас она? Я даже не буду описывать причины почему в таких приложениях приходится писать на C++. Или вы думаете что команду джавистов выгнали и насильно притащили рабов-плюсовиков переписывать весь код на C++?

А теперь вопрос, кто будет через 10, 20 лет поддерживать и развивать эти библиотеки и программы? Потому необходимо учить молодых специалистов.

По поводу того же открытия файла с юникод именем.
Берем Boost::filesystem, которая предложена в стандарт www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4100.pdf

boost::filesystem::wpath filePath = L«вася.txt»;
boost::filesystem::ofstream stream;
stream.open(filePath);

Qt:
QFile file(QString::fromWCharArray(L«D:/вася.txt»));
if (file.open(QIODevice::ReadOnly)) {

}
Дополню, что c++ уже тоже пишут на c++ ( начиная с gсс-4.8 )
Ну раз предложена в стандарт, то хорошо. Значит где-то в году 2020-2025, пока они закончат ковырять в носу, обмусоливая стандарт, я таки смогу открыть свой файл.

На самом деле, единственное, за что я люблю C++, так это за его илитность. Потому что осилить его на должном уровне среднестатистическому программисту не под силу. Я уж не говорю про молодежь, избалованную простотой современных языков, они вообще от слова «указатель» падают в обморок. У нас в университете С++ преподавали 2 или 3 семестра, как думаете, много человек его осилили, ну хотя бы вместе с STL? Где-то 3,5 человека, включая меня. Сколько человек из выпускников, работающих программистами, пишет на C++? 0,5 человека, опять же, включая меня.
может не стоит обсмеивать других и язык, если у Вас есть какие-то личные неприязни к языку?
Зато эти задачи (наступание на грабли и выстрелы себе в ногу) он осуществляет с максимальной эффективностью. Наличие специализированных библиотек позволяет делать это кроссплатформенно и мультизадачно.
С++ вообще ни для чего не предназначен

Ну ок, пойдите напишите ядро Винды или Линукса на сишарпе. Или движок ААА-игры на джаве. Или драйвер на питоне. Или движок базы данных на руби. Или патч к Хрому на чём-то там ещё. Получилось? Нет, во всех этих вещах нужен С++. И всё это — очень живые и современные продукты.

То, что Вас жизнь заставляет на С++ писать что-то, что на нём писать не надо (веб-сайты, например) — это лишь Ваша трагедия, меняйте место работы и не страдайте.
Почти все, что вы назвали это C, а не C++. Хотя и лекции на 60% про C без плюсов.
Шел 2015 год, а люди все еще пытаются доказать, что С хоть в чем-то лучше плюсов…
Это вам мерещится. C лучше плюсов только в одном — более предсказуемый низкоуровневый код, это важно для драйверов, ядер ОСей, БД. На этом преимущества заканчиваются.
Почитайте книгу Б.Страуструп. Дизайн и эволюция C++. Очень многое поясняет. Этот язык уникален и его выпилить с рынка ооочень не просто. Задачи которые он позволяет решать ни один из существующих языков не может решать их также как С++.

Вы вот говорите, долго изучал. А в жизни человека все не просто! Попробуйте за один день стать хорошим боксером или хорошим игроком на 6-струнной классической гитаре. Многое в жизни человека требует труда и упорства!
Да не читайте вы советских газет по утрам. Уникальность C++ только в том, что на нем писали буквально все последние 15 лет. А писали на нем, потому что 15 лет до этого писали на C, альтернатив не было.

C++ как язык — говно полнейшее, только начиная с С++11 пытаются это исправить, и весьма успешно. Но врожденные недостатки сохранились во многом (основной из них — совместимость с C и указатели). Надеюсь что в C++17 или в этом районе введут strict-режим который просто уберет совместимость с C, ручную работу с памятью, указатели и прочие нездоровые вещи, это позволит языку расправить крылья.
Ага, конечно! )))
Сколько ж Вас таких убогих еще существует.

Вы не понимает сути C++. Его дизайн и суть очень похожи на UNIX-принцип. Напомню: «Система не должна думать и решать за пользователя, если пользователь решил набрать и выполнить команду <rm /> значит он понимает, что делает». C++ следует такому же принципу: «Нет никаких библиотек, вот тебе язык, а все что нужно сам напишешь».

У Вас просто руки в неправильном месте растут.
Ты путаешь C и C++. В C++ столько всего неявно происходит, что сравнивать с UNIX-принципом язык не повернётся.
1. Не «Ты», а «Вы»!
2. Если для Вас что-то не явно в C++, это значит Вы не знаете языка и не хотите знать.
1) можешь обращаться ко мне на вы, если тебе от этого спокойнее
2) то есть ты хочешь сказать, что деструкторы, автогенерируемые конструкторы, сложные правила вызова конструкторов, инстанцирование шаблонов, rvalue-ссылки это явные и очевидные вещи, когда программист всегда прав?
Если ты действительно так считаешь, то могу только посочувствовать тебе, ты не видел никогда нормальных языков.
Зачем будет нужен C++ без указателей и ручной работы с памятью? Чем он будет от сишарпа/джавы отличаться?
Вы действительно не знаете или прикалываетесь?
Оператор new и вообще динамическое выделение памяти — страшный тормоз. Языки C и C++ выигрывают по скорости у сишарпа\Джавы именно за счет размещения объектов на стеке. В c++11 еще прикрутили move semantics, которая позволяет еще меньше вызывать new, даже в тех местах, где раньше требовалось выделение памяти.

Поэтому для скорости вовсе не нужны ручные операции с выделением памяти, а по факту, врукопашную написанный код с указателями, операторами new и delete оказывается более ресурсоёмким, чем использование STL. Про надёжность такого C-кода в C++ вообще молчу.
Что по вашему использует сам STL? Как быть с тем, чего нет в STL?
Какая разница что использует STL? Цель курса написать STL? В этом нет смылса, другая подготовка нужна.
Важно что будут разработчики в своей программе использовать. А после такого курса они будут использовать new и указатели, что приведет и к тормозам, и к низкой надежности.
Боюсь Вас расстроить, но в своих проектах я не вижу никакой другой возможности реализации сложно-связанных структур без указателей, потому как эти самые структуры никаким стандартам не известны. А уж с надежностью Вы совсем палку перегнули, и если у Вас, конкретно, дружба с забывчивостью, то это никаким образом не говорит о том, что у большинства программистов такие же патологии. которые в конечном итоге отражаются на качестве ПО.
А по-факту: следуя Вашей логике, Ассемблер — тем более нужно искоренить как «адское зло», потому что на нем очень трудно писать, ввиду сложности работы с адресами, и прочей «сатанинской сути».
Что уж говорить про машинный код, на котором, смею Вас заверить, тоже пишут, тоже люди, как бы странно Вам это не показалось.
Про какие структуры вы говорите?

А на ассемблера пишут и так единицы, ровно те для кого другие средства не подходят. И дело вовсе не в производительности.
чем Вам всем не угодили указатели? что в них такого страшного?
То что именно указатели и ручное управление памятью создают 99% всех проблем языка. Утечки, не инициализированные указатели, обращения к объектам после разрушения, реинтерпретациия и расстрелы памяти — это все следствие наличия указателей и ручного управления. В C без этого никуда, а в C++ полно средств, с которыми можно написать львиную долю кода вообще без указателей.
А немалую часть кода без указателей нельзя написать, и? Как по вашему реализованы эти ваши современные умные указатели?
Они могут быть хоть магией реализованы. Более того, если полностью отказаться от неуправляемых указателей, то появится гораздо больший простор для более эффективной реализации умных указателей.
Откройте для себя динамическую инструментацию кода. Ну, valgrind там, Dr. Memory.
Это не помогает не ошибаться, а помотает лишь быстрее искать ошибки.
Нездоровые вещи по вашему мнению — это видимо те, что позволяют в C++ писать фрагменты кода, которые работают на порядок быстрее стандартных конструкций именно благодаря прямой работе с памятью и позволяют использовать в программах низкоуровневый код.

Ну, наверное, для программиста, который не в состоянии написать этот самый низкоуровневый код без утечек памяти, битых указателей и т.п., это действительно нездоровые вещи…
Можете привести такие фрагменты кода, которые работают на порядок (то есть в 10 раз) быстрее стандартных из-за ручных игр с указателями?

Я много фрагментов кода видел, усиленное увлечение указателями в C++ всегда (в 99% случаев) приводило к более медленному, менее надежному и менее переносимому коду.
Уверяю Вас, как только перед Вами встанет написать максимально эффективно и Вам за это готовы заплатить и заплатить прилично, то Вы не только про «мертвый язык» вспомните, но и про ассемблер и возможно про машинные инструкции!
C++ в наши дни это удел маргиналов и узкоспециализированных специалистов, но таким людям не нужны видеолекции, они просто открывают страуструпа и начинают писать.
Да, действительно! Зачем учить язык и тренироваться? Можно взять справочник и сразу написать. Да и со специалистами тоже все просто, они неожиданно для себя проснувшись утром в один из обычных дней и вдруг осознают они же «узкоспециализированные»!!!
На C и C++ написано 90% программ на вашем пк, в т.ч. браузер с которого вы отправили это сообщение. Обработал запрос сервер, написанный на C, после чего оно было сохранено СУБД, написанной на C++. Все это работало под управлением написаной на C ОС Узкоспециализировано, да.
Путь к ассемблеру лежит не только через С++.
Получился учебный курс для будущих задротов. Имхо слишком много внимания низкоуровневым деталям и непрактичным навыкам вместо того, что нужно в реальных приложениях.

Я посмотрел по 10 минут с нескольких частей, возник вопрос: после этих лекций реально работающее приложение создать? Что-то я не уверен.
Интересно. Вот ютуб. Написан на сях и плюсах. Вы его смотрите и любуетесь. И заяляете, что непрактично и никому не надо. Куда девались мозги у читателей хабра?
походу на мегамозг ушли…
А при чем тут ютуб? Слушатель этого курса смогут ютуб сделать? Я же не говорю что c++ не нужен. Но большие сомнения что нужно такое обучение.
Дайте определение «реального приложения».
Которое решает реальные (существующие объективно) проблемы реальных пользователей (живых людей).
LLVM, GCC, XNU достаточно «реальные приложения»?
А после этого курса ктонить сможет повторить одно из них????
Это точно хабр? Может это d3, где такие вопросы еще простительны? Вы что вообще не понимаете что пишете? O_o
Просто нет слов. Или троль.
Я-то понимаю, а вы похоже нет. Я спросил чему учит этот курс, можно ли после него сделать полезное приложение. Я вижу что нет, слишком много внимания уделено малозначимым деталям.
малозначимые детали нужны для того, чтобы оптимизировать Ваше приложение, чтобы потом оно не загнулось, не требовала всё больших вычислительных мощностей
Для начала надо сделать корректное приложение, а потом его оптимизировать. При этом в реальном мире жонглирование такими малыми величинами, связанными с выделением памяти даст бесконечно малый эффект.
Выделение/освобождение памяти — второе узкое место после работы с дисковой памятью. Оптимизация этого дает очень даже большой эффект.
Разница примерно на 3-4 порядка между диском и памятью, но что-то я в курсе не увидел темы как оптимизировать дисковые операции. А в реальном приложении вообще 90% времени проходит в ожидании, и становится важная такая вещь, как отзывчиваость, а не пропускная способность и способы увеличить отзывчивость совершенно другие.
У сферического реального приложения в пользовательском вакууме.
Одна лекция идет минимум два с половиной часа! Честно, через 40 минут устал просто сидеть и слушать, так что, ИМХО, курс не для онлайн-просмотра совсем.
Хотя есть моменты, которые реально интересно послушать.
И все же, если давать такому(или подобному) курсу жизнь «в массы» в виде online, то на мой взгляд стоит разбить каждую лекцию на куски и из них сделать, к примеру, одну учебную неделю курсов.

А вообще, я лишь только «за», что бы было хотя бы несколько действительно хороших курсов по С++! (а то всяких питонов там уже куча несусветная, не в обиду питону, конечно)
Для тех кому неудобен youtube, кому на работе нельзя слишком много трафика есть, у кого есть время смотреть видео по дороге на работу — залил на rutracker. Видео самого лучшего качества что было доступно в YouTube:

rutracker.org/forum/viewtopic.php?t=4963072
Просидирую сегодня до 01 часа где-то, кому не лень — поставьте на закачку все лекции и пораздавайте завтра днем, на работе нет возможности этого сделать.

Позже возьмусь за другие темы технопарка. Ну и спасибо огромное за лекции!
Лихо… а Технопарк Вы спросили?
Нет, но думаю они не против, так как они сами выложили в открытый доступ видео лекций на ютуб, притом что на сайте ограничений по распространению данного видео не нашел. А на рутрекере указал сайт-источник(технопарк) и имя лектора.
Смотрите на здоровье )
Тогда продолжу. Все-таки в оффлайне удобнее просматривать видео, особенно в дороге.
«Лекции Технопарка. 1 семестр. Алгоритмы и структуры данных»
rutracker.org/forum/viewtopic.php?t=4963811

И еще раз спасибо вам за прекрасные лекции. Завтра залью веб, скорее всего.
Глубоко и с любовью рассказано. Одно только напугало: примерно через полчаса заметил что на слайде логотип технопарка движется, сначала подумал что гипноз или обман зрения)))
Да это же «Изучаем C за 24 часа»!!!
Галопом по европам, IMHO. За 9 лекций нельзя изучить C++, и особенно в таком объёме с паттернами, Boost-ом и template metaprogramming. Поэтому практическая полезность этих лекций вызывает у меня сомнение.
НЛО прилетело и опубликовало эту надпись здесь
Всем, кто устал смотреть по 2,5 часа довольно медленного изложения: включаем HTML5-плеер в Youtube и увеличиваем скорость до 2x.
вы книгу также читаете?
Книга получается обычно в 3-5 раз быстрее, чем 3-5x изложение лекций.
Неее, не факт! Если книгу читаешь с получением знаний, то следует прокручивать в голове тот или иной кусок кода. Пытаться вспомнить те или иные конструкции, которые ранее писал и как можно их улучшить с помощью новых знаний и т.д. и т.п. так что книга не факт, что быстрее
Зарегистрируйтесь на Хабре, чтобы оставить комментарий