Антон Полухин - Незаменимый С++

  Рет қаралды 38,716

C++ User Group

C++ User Group

4 жыл бұрын

Ближайшая конференция: С++ Russia 2024, 24 мая (online), 2-3 июня (offline, Москва)
Подробности и билеты: jrg.su/W8skjE
- -
. . . Каждый новомодный язык программирования норовит заявить о том, что он быстрее, надёжнее и вообще по всем параметрам в несколько раз лучше C++.
Давайте разберёмся - где правда, а где вымысел. Да начнётся битва между C++ и Asm/Rust/Go/Java/C#... !

Пікірлер: 109
@ivan.kulenko
@ivan.kulenko 4 жыл бұрын
Вывалили огромную кучу видео разом. С кого начинать смотреть? Конечно с Антона!
@user-yx2tt2sv6h
@user-yx2tt2sv6h Жыл бұрын
2023 год: коды из слайда со сравнением rust и c++ компилируются в одинаковый код на ассемблере
@vladzhukov6116
@vladzhukov6116 4 жыл бұрын
unsafe НЕ отключает "все замечательные проверки", он просто позволяет писать внутри функции и операции помеченные unsafe. Странно ожидать от компилятора не принимать логически неправильные программы, раст этого никогда и не обещал. Либо я что-то не понял. Про взаимодействие с C логичный довод. Только чтобы решить эту проблему нужно писать опять новый язык поверх C и отказываться от свойств языка совсем. Проблемы borrow checker'a решаются архитектурно.
@finalename7464
@finalename7464 3 жыл бұрын
39:50 Явная подтасовка фактов. Во-первых Logstash написан не только на Java, но ещё и на Ruby. Во вторых функционал Logstash - это далеко не только: "считывает логи с диска, бьёт их на ключ-значение и отправляет на удалённое хранилище". В третьих докладчик явно не стал глубоко разбираться почему в его случае Logstash съедал столько CPU и можно ли решить проблему изменением конфигурации, а просто переписал необходимую часть функционала Logstash на любимом и знакомом ему C++. Я видел тот другой его доклад, в котором он более подробно рассказывал о мытарствах с Logstash. Аналогично написанное приложение на Java, с таким же урезаным функционалом, показало бы аналогичный прирость в производительности. Но докладчик об этом никогда не расскажет.
@Alexander_Gurov_RF
@Alexander_Gurov_RF 4 ай бұрын
Большинство софта написано на C/C++. Стандартная библиотека может и маленькая. Зато огромный выбор сторонних библиотек. Большинство существующих библиотек написаны в первую очередь для C, а значит доступны и для C++ (но без ООП). Плюс доступность из коробки библиотек, предоставляемых ОС (WinAPI, POSIX API, glibc, etc...).
@nominatim538
@nominatim538 4 жыл бұрын
Поверхностно прошёлся по сборщикам мусора. Есть сборщики на основе поколений, которые решают проблему прохода всего графа объекта и к тому же если складировать объекты в разные кучи, в 1 кучу на ядро, а не в одну большую на все ядра, и тогда просто можно распараллелить сборку.
@AntonyPolukhin
@AntonyPolukhin 4 жыл бұрын
"Вы рассказали нам о 40 сборщиках мусора, и да, они добавляют накладные расходы. Но вот 41ый сборщик мусора!.." Сборщик мусора на основе поколений выедает оперативную память гигабайтами, обладает почти всеми проблемами с кешами и примитивами синхронизациями (описанная вами схема не работает - в общем случае объекты могут использоваться из нескольких потоков, и нет возможности их прикрепить к thread local куче). Расписал другими словами вот тут: kzbin.info/www/bejne/nIWWgHSCit6ontU
@inbuckswetrust7357
@inbuckswetrust7357 2 жыл бұрын
Сборщик мусора под смаллтолк летал самолетом на железе 90х годов и памяти не требовал много, ява тогда только в ясельки пошла
@IExSet
@IExSet 2 жыл бұрын
@@AntonyPolukhin враньё, не выедает оно память гигабайтами, это воинственное невежество фанатиков C++ давно уже вошло в легенды :-)
@TheDiscoLux
@TheDiscoLux 3 жыл бұрын
плюсы помогают опережать время по производительности. и ты становишся конкурентно способным в нагруженных системах. другое дело скорость разработки повышать надо.
@charlieking7600
@charlieking7600 11 ай бұрын
Надо надёжность разработки повышать в первую очередь, и избавиться к чёрту от заголовочных файлов для ускорения разработки. Модули в C++ уже четвёртый год подряд находятся в экспериментальном состоянии.
@volodymyrkorniichuk1164
@volodymyrkorniichuk1164 4 жыл бұрын
Я правильно понял, что в претензии к Rust были: а) "Из него можно вызвать код на С и поэтому капец - небезопасно" и б) "На нём можно написать не ту программу, которую хотелось". Так подождите - а из С++ что, нельзя вызвать код на С? Или написать не ту программу, которую хотелось? Т.е. по этим пунктам Rust и С++ равны. Но вот только Rust предлагает способы безопасного написания кода и чётко локализует небезопасные места, а С++ этого совершенно не делает.
@HedgehogInTheCPP
@HedgehogInTheCPP 4 жыл бұрын
Советую пересмотреть. Претензий к Rust фактически вообще не было, кроме того что из-за его внутренней сложности его ещё требуется пилить чтобы он начал работать в полную силу. Жаль я забыла во время вопроса сказать что на Rust переписали очень много чего в Firefox, что очень положительно сказалось на развитии языка. Но хоть тут скажу :)
@volodymyrkorniichuk1164
@volodymyrkorniichuk1164 4 жыл бұрын
@@HedgehogInTheCPP Т.е. претензии к Rust были в том, что у него есть потенциал (ещё не раскрытый), которого у С++ и в принципе-то нет (и раскрыт он не будет)? То есть Ваша позиция в общем сводится к тому, что Rust лучше по-просту во всём (ну или будет спустя пару лет) ?
@HedgehogInTheCPP
@HedgehogInTheCPP 4 жыл бұрын
@@volodymyrkorniichuk1164 нет. У Rust есть потенциал поскольку front end языка знает больше о коде и на middle end потенциально способен отдать больше информации. Осилит ли сообщество всё сделать как надо или будет как с D вопрос всё ещё открытый. У C++ есть помимо прочих фич есть ещё и киллер фича в том, что C можно использовать как подмножество C++ без костылей и "заборчика" в виде разного рода "unsave" директив ;)
@paxpax1707
@paxpax1707 3 жыл бұрын
@@HedgehogInTheCPP да блин unsafe не отключается все проверки Rust-а :) Антон в докладе допустил ошибку. Borrow checker также будет работать и все крутые фичи. Просто unsafe разрешает тебе использовать голые сырые указатели и тем самым намекая как бы «теперь за UB будешь сам следить». От этого безопасность не обнуляется более того это все ещё намного безопасней чем голый С/С++. Интеграция с Си достаточно простая есть хорошие проверенные инструменты для этого. Да господи ребята из Firefox/Servo так и живут уже несколько лет. Ну и у Си есть свои особенности тем самым делая интерфейс бриджа между языками достаточно специфичным для растового кода но это все мелочи.
@vas_._sfer6157
@vas_._sfer6157 2 жыл бұрын
@@HedgehogInTheCPP Не всегда так, C и C++ разные языки.
@sergey198
@sergey198 4 жыл бұрын
К слову, сейчас растовый компилятор уже генерит другой код на том примере
@rudeusdoto
@rudeusdoto 4 жыл бұрын
В свободное да и в рабочее время я занимаюсь разработкой ... (с) 0:26
@evgenysuskov2806
@evgenysuskov2806 2 жыл бұрын
Вот интересно почему D так и не пошел. Брайт и Александреску же положили туда почти все, что нехватало плюсам в то время, хотя для современных плюсов уже не актуально.
@some84884
@some84884 26 күн бұрын
Не хватило хайпа
@bravikov
@bravikov 4 жыл бұрын
Насчет Оскара вот это видео: kzbin.info/www/bejne/rJXElqWGha2egsk
@HedgehogInTheCPP
@HedgehogInTheCPP 5 жыл бұрын
По лайкам всё понятно, всё таки кто то один кто был на конфе пишет на J# и его это задело) P.S. очень в тему где то попался комментарий, что этот доклад развеял весь тот тлен, безысходность и боооооль, что были на конфе ^_^'
@vinnymetall9829
@vinnymetall9829 4 жыл бұрын
Если ты попадешь в больницу, то тебе должно душу греть,что дефибриллятор в России сделан из коробки, сквозь которую из розетки до пациента провода идут на прямую, но ВНИМАНИЕ! На коробке конечно же написано, что она с аппаратно-программной составляющей, написаной на С++!!! И где то подпись: Сделано в СКОЛКОВО!
@xvoidee
@xvoidee 4 жыл бұрын
Антон Полухин - один из лучших докладчиков которых мне приходилось когда-либо слушать О_О
@MasterZiv
@MasterZiv 4 жыл бұрын
Антон, а почему же так сложно нам найти РАБОТУ?
@borschetsky
@borschetsky 4 жыл бұрын
Ilya Zvyagin если вы знаете хорошо С++ думаю работу найти не проблема. Если ищете работу, обратите внимание на Болгарию, компании такие как MobiSystems, Visteon, Ocado technology. С руками и ногами разбирают С++ программистов. И релоцируют если понадобится. Был на встрече с основателем МобиСистемс, купили парня из Голландии за €9к в мес.
@eu-rn1xb
@eu-rn1xb 4 жыл бұрын
@@borschetsky а если я джун - то всё, идём учить C#?
@HedgehogInTheCPP
@HedgehogInTheCPP 3 жыл бұрын
@@eu-rn1xb Почему, на стажировку или на Junior позиции тоже берут ;) Да и подрасти можно тоже быстро уже устроившись ;)
@yunushkin88
@yunushkin88 4 жыл бұрын
А про Qt никто ничего не слышал как он вообще? Его нельзя вот в Энтерпрайз как зритель хотел из видео?)
@avazart614
@avazart614 4 жыл бұрын
С++Qt это круть! Но хотелось бы что бы и STL был богаче. Например был бы trim() для std::string
@HedgehogInTheCPP
@HedgehogInTheCPP 4 жыл бұрын
Qt стрёмно, он больно большой сам по себе. Глядя на Dropbox мне хочется использовать Qt буквально нигде.
@SergMirny_yt
@SergMirny_yt 4 жыл бұрын
Qt это самая передовая GUI инфраструктура. Можно юзать как на плюсах, так и на Пайтоне. Может и ещё где, но я не в курсе
@linkernick5379
@linkernick5379 4 жыл бұрын
Очень странные наезды на Rust. Беспомощные, я бы сказал, и весьма спорные.
@charlieking7600
@charlieking7600 Жыл бұрын
Да и он и в самом начале вбрасывает соломенное чучело вида "C++ не популярен". Как раз то и плохо, что мутант из библиотек Сишных и собственных реализаций пользуется спросом.
@KaraMaslyatam
@KaraMaslyatam 4 жыл бұрын
Полный бред про Rust. 1. Код генерируется одинаково хорошо, но функция помечена как pub, поэтому делаются лишние движения со стеком, если добавить публичную функцию-прокладку, то всё оптимизируется до 6 инструкций на ВЕСЬ код (ну да, теперь по логике выступающего С++ справляется плохо?). Да и вообще в Rust структуры на стеке часто жирнее плюсовых, зато без лишнего плюсового копания в куче на каждый чих. Сравнивать с C++ нужно аккуратно и гонять бенчи реального кода, а не смотреть АСМ игрушечных функций или гонять микробенчи. 2. Вызывать сишный код везде опасно, при чём тут вообще Rust?
@AntonyPolukhin
@AntonyPolukhin 4 жыл бұрын
1. Я наблюдаю совсем другую картину godbolt.org/z/ajCMr7 , код Rust лучше не становится. Поделитесь пожалуйста своим кодом. "лишнего плюсового копания в куче на каждый чих" - вы о чём? Приведите, пожалуйста, пример кода. 2. Многие говорят что Rust абсолюто безопасен, но забывают об вызове нативного кода. Из-за чего у людей складывает ложное мнение об инструменте.
@KaraMaslyatam
@KaraMaslyatam 4 жыл бұрын
@@AntonyPolukhin 2. Даже в управляемом языке можно словить сегфолт в безобидном пользовательском коде из-за ошибки в реализации виртуальной машины. Rust даёт лишь гарантии отсутствия UB в пользовательском коде (если не использовать unsafe), никто не заявляет большего. Есть также персонажи, которые заявляют, что C++ абсолютно безопасен, если ты умеешь на нём писать, но это ещё более страшное заблуждение. Любой адекватный программист должен понимать, что вызывать потенциально опасный код опасно. И Rust тут вообще не в тему, так везде, везде вызывается нативный unsafe код. А C++ - это пока что вообще на 100% unsafe код. По первому пункту позже отвечу.
@kpp_
@kpp_ 4 жыл бұрын
@@KaraMaslyatam пример с 17:30: godbolt.org/z/lXIFT9 Так что по первому пункту?
@AntonyPolukhin
@AntonyPolukhin 4 жыл бұрын
Я кажется знаю о каких бенчмарках вы говорите. Их сложно назвать бенчмарками раста benchmarksgame-team.pages.debian.net/benchmarksgame/program/nbody-rust-7.html Там раст только вызывает C функции (см _mm_* и unsafe). Поэтому бенчмарк сравнивает оптимизаторы GCC и Clang, вместо того чтобы сравнивать языки. Пересмотрите презентацию, там было про "честные" бенчмарки.
@AntonyPolukhin
@AntonyPolukhin 4 жыл бұрын
@@eu-rn1xb Вы спорите с тем, что бенчмарк сравнивает оптимизаторы двух разных компиляторов, вместо сравнения двух языков?
@cppprograms5868
@cppprograms5868 4 жыл бұрын
С++- рулить!!!
@cppprograms5868
@cppprograms5868 2 жыл бұрын
@You Tube хэх....
@razee5521
@razee5521 3 жыл бұрын
Почти все проблемы Rust'а связаны с использованием С и С++, это должно о чем-то говорить ;)
@inbuckswetrust7357
@inbuckswetrust7357 2 жыл бұрын
Все проблемы с и с++ связаны с ассемблером, все проблемы ассемблера связаны с машинными кодами, …
@vas_._sfer6157
@vas_._sfer6157 2 жыл бұрын
@@inbuckswetrust7357 Не так. У них есть свои проблемы. Оптимизирующие компиляторы могут ломать логику программы при UB. (Пример с переполнением целых показателен)
@GraimPvP
@GraimPvP 4 жыл бұрын
Охуителено, только не сказал про абстрактные возможности C++ и про то, что практически все новые парадигмы и идеологии появляются в C++. В этом он уделает раст полностью, да и все остальные языки.
@joedoe1042
@joedoe1042 4 жыл бұрын
авторы канала! зачем вы столько видео пачкой выдаёте?! Больно же. Интересно но больно. Можно без боли? Пожалуйста.
@sasichkamega
@sasichkamega 4 жыл бұрын
Нет нельзя
@user-rm4qp2zf7z
@user-rm4qp2zf7z 4 жыл бұрын
Это ж плюсы, как без боли-то
@agraiskr
@agraiskr 2 жыл бұрын
меня одного бесит плаваюшая тумба рядомс Антоном?😱
@MrArhat7
@MrArhat7 4 жыл бұрын
За месяц Яндекс такси обрабатывает 1600000 заявок (по их данным). Это соответствует 6 заявкам в секунду. И зачем С++?
@sergey_fetisov
@sergey_fetisov 4 жыл бұрын
Предполагаю, что заявки распределены сильно неравномерно. Кроме того, вычислительный вес заявки достаточно серьёзный. Вычисление маршрутов, фильтрация навигационных данных, их привязка к маршрутам движения (ведь заявка одна, а машина ведётся по всему маршруту!). Закладывать под это менеджерский язык было бы фатально.
@zxcq
@zxcq 4 жыл бұрын
у них питон. На хабре недавно была статья про асинхронный питон в такси. На С++ только какие то узкие места.
@0day694
@0day694 4 жыл бұрын
Один Rust и...
@SmileGobo
@SmileGobo 4 жыл бұрын
Меня одного удивляет, что книга докладчика издана, только на англйском языке?
@eu-rn1xb
@eu-rn1xb 4 жыл бұрын
а что в этом плохого?
@SmileGobo
@SmileGobo 4 жыл бұрын
@@eu-rn1xb а я не говорил, что это плохо.
@eu-rn1xb
@eu-rn1xb 4 жыл бұрын
@@SmileGobo хорошо, тогда что тут удивительного?
@SmileGobo
@SmileGobo 4 жыл бұрын
@@eu-rn1xb русско говорящий специалист, который активно помогает русскоязычному сообществу(например предложения в комитет переводить помогает) выступает на конференциях на русском языке, но книжку издаёт на английском. Мне было бы крайне странно читать книжку соотечественника, на другом языке.
@eu-rn1xb
@eu-rn1xb 4 жыл бұрын
@@SmileGobo суппортить 2 совершенно разных языка накладно. Если на английском это даст профит, но на русском - не факт
@realfootball338
@realfootball338 4 жыл бұрын
Для обычного бека node... для высоконагруженого более миллиона Elixir ))
@zxcq
@zxcq 4 жыл бұрын
или go, java.
@user-gt7rz5uw5z
@user-gt7rz5uw5z 4 жыл бұрын
яндекс - не то что гугл. яндекс такси не то, что убер. почему не сразу получать у американских преподавателей и конкурировать в РФ.
@kek_cheburec4340
@kek_cheburec4340 4 жыл бұрын
Плохо значит читал документацию, флаги оптимизации компилятора Rust на -O не заканчиваются.
@HedgehogInTheCPP
@HedgehogInTheCPP 4 жыл бұрын
Так это ссылку на код с правильными флагами и покажи что докладчик не в теме. Это же просто :)
@AlexAlex-ms3bg
@AlexAlex-ms3bg Жыл бұрын
А зачем столько кривляний.
@borschetsky
@borschetsky 4 жыл бұрын
Надо это видео показать одному зазнайке для которого Пайтон и Джанго как религия.
@zxcq
@zxcq 4 жыл бұрын
Зачем ? Питон и джанго хороши для своих задач. Проблема С++ в том что задач для него сейчас мало. Потому что основная разработка - веб+мобилки(кроме игр) и там на С++ слишком дорого разрабатывать.
@borschetsky
@borschetsky 4 жыл бұрын
John Turret все хорошо для своих задач. Просто на рынке много разрабов, которые квик сорт не напишут и не объяснят, а уже Sinior Dev. И когда с ними говоришь о CS, их ответ зачем?! Когда есть JS/Node/Python/Django. Ну на крайняк .Net Core. Как по мне все движется обратно, webAssembly и сложные модули в вэбе. Когда без плюсов будет не обойтись.
@vlad071096
@vlad071096 4 жыл бұрын
@@borschetsky Ну так правильно говорят. Можете написать квиксорт - молодец, но им за другое платят. То, что перечисляет Антон в качестве опровержения, что С++ - нишевый язык, по сути, только подтверждает его нишевость. Большинство программистов (увы?) никогда не будут писать ни браузеры, ни игровые движки, ни компиляторы, ни дефибрилляторы).
@apivovarov2
@apivovarov2 4 жыл бұрын
ff на педеrustе кстати написан
@MaceUA
@MaceUA 3 жыл бұрын
только некоторые куски. 10% Rust, 14% C, 27% C++
@vladimir0rus
@vladimir0rus 3 ай бұрын
C не соревнуется с С++ потому что и так понятно что С быстрее и в худшем случае они на равных могут быть.
@alexgorodecky1661
@alexgorodecky1661 4 жыл бұрын
Все это похоже на последние попытки самолюбования(и самоутешения) до тех пор пока Rust наконец-то вытеснит legacy монстра, в котором абсолютно все сделано неправильно, на одну полку с Коболом. Sad but true...
@AntonyPolukhin
@AntonyPolukhin 4 жыл бұрын
Тогда помогите своему любимому языку программирования. Исправьте недостатки, подкрутите оптимизатор... а то разработчики не справляются, а компания-автор так вообще открывает всё больше вакансий на C++ разработчиков.
@alexgorodecky1661
@alexgorodecky1661 4 жыл бұрын
@@AntonyPolukhin, ну типа блин, все очень просто. Нужно депрекейтнуть половину стандарта вместе с его "темными" уголками, и начать идти в сторону memory safety, так как это является основными ограничивающим фактором в построении абстракций и библиотек. 2 - удалить stdlib в том виде, в котором он сейчас, и сделать вагон мелких либ, которые будут мейнтенить конкретные люди, или конторы. Ну и наконец перестать делать фичи в языке "наполовину". Как же это бесит в с++ вы даже не представляете. Я не могу представить какой либо другой язык, где бы имела место такая наглость, и все это сходило с рук. Ну и вообще, главная проблема с++, что у него нет хозяина. Каждая корпорация тянет одеяло в свою сторону, делая свой "волшебный" std и "волшебный" компилятор. Да и в целом, стоит ли оно того? Cpp уже отработанный материал и в плане синтаксиса и в плане семантики. Уже отжали из си все, что можно. Может проще компании X просто сделать новый язык с учётом ошибок? Раст получился, да. Цель сделать безопасный cpp достигнута. Но она настолько жалкая по сравнению с "сделать отличный простой, safe native high performance язык". Может не стоит тратить силы и заняться этим? У Яндекса бы хватило ресурсов вполне.
@yomer355
@yomer355 4 жыл бұрын
Alex Gorodecky, думаю, речь шла о том, чтобы вы помогли Расту.
@zxcq
@zxcq 4 жыл бұрын
Мне кажется не rust заменит С++ а kotlin native. Там уже всё красивее и понятнее чем в Rust.
@octozero
@octozero 4 жыл бұрын
Да он уже жиденько так обделался с этими докладами но никак не успокоится. Ему все на хабре уже расписали. Антон, переходите на следующую стадию принятия неизбежного.
@Moncruist
@Moncruist 4 жыл бұрын
Какой-то бесполезный доклад.
ПЕЙ МОЛОКО КАК ФОКУСНИК
00:37
Masomka
Рет қаралды 10 МЛН
The most impenetrable game in the world🐶?
00:13
LOL
Рет қаралды 31 МЛН
О, сосисочки! (Или корейская уличная еда?)
00:32
Кушать Хочу
Рет қаралды 7 МЛН
СҰЛТАН СҮЛЕЙМАНДАР | bayGUYS
24:46
bayGUYS
Рет қаралды 717 М.
Антон Полухин - C++ трюки из userver
1:01:03
C++ User Group
Рет қаралды 15 М.
C++ Siberia 2020: Антон Полухин - Незаменимый С++
1:27:06
Антон Полухин. Как за час сделать недельную работу
1:05:10
Институт программных систем I Йошкар-Ола
Рет қаралды 13 М.
C++ Siberia 2019: Антон Полухин, C++ на практике
54:26
Should you learn C++?? | Prime Reacts
20:29
ThePrimeTime
Рет қаралды 307 М.
Новости от рабочей группы 21, Антон Полухин
57:19
Carregando telefone com carregador cortado
1:01
Andcarli
Рет қаралды 1,8 МЛН
AMD больше не конкурент для Intel
0:57
ITMania - Сборка ПК
Рет қаралды 494 М.
Куда пропал 3D Touch? #apple #iphone
0:51
Не шарю!
Рет қаралды 531 М.