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

Поділитися
Вставка
  • Опубліковано 28 вер 2024
  • Подробнее о конференции C++ Russia: jrg.su/W8skjE
    - -
    . . . Каждый новомодный язык программирования норовит заявить о том, что он быстрее, надёжнее и вообще по всем параметрам в несколько раз лучше C++.
    Давайте разберёмся - где правда, а где вымысел. Да начнётся битва между C++ и Asm/Rust/Go/Java/C#... !

КОМЕНТАРІ • 111

  • @ivan.kulenko
    @ivan.kulenko 5 років тому +26

    Вывалили огромную кучу видео разом. С кого начинать смотреть? Конечно с Антона!

  • @finalename7464
    @finalename7464 4 роки тому +9

    39:50 Явная подтасовка фактов. Во-первых Logstash написан не только на Java, но ещё и на Ruby. Во вторых функционал Logstash - это далеко не только: "считывает логи с диска, бьёт их на ключ-значение и отправляет на удалённое хранилище". В третьих докладчик явно не стал глубоко разбираться почему в его случае Logstash съедал столько CPU и можно ли решить проблему изменением конфигурации, а просто переписал необходимую часть функционала Logstash на любимом и знакомом ему C++. Я видел тот другой его доклад, в котором он более подробно рассказывал о мытарствах с Logstash. Аналогично написанное приложение на Java, с таким же урезаным функционалом, показало бы аналогичный прирость в производительности. Но докладчик об этом никогда не расскажет.

  • @nominatim538
    @nominatim538 4 роки тому +7

    Поверхностно прошёлся по сборщикам мусора. Есть сборщики на основе поколений, которые решают проблему прохода всего графа объекта и к тому же если складировать объекты в разные кучи, в 1 кучу на ядро, а не в одну большую на все ядра, и тогда просто можно распараллелить сборку.

    • @AntonyPolukhin
      @AntonyPolukhin 4 роки тому +8

      "Вы рассказали нам о 40 сборщиках мусора, и да, они добавляют накладные расходы. Но вот 41ый сборщик мусора!.."
      Сборщик мусора на основе поколений выедает оперативную память гигабайтами, обладает почти всеми проблемами с кешами и примитивами синхронизациями (описанная вами схема не работает - в общем случае объекты могут использоваться из нескольких потоков, и нет возможности их прикрепить к thread local куче).
      Расписал другими словами вот тут: ua-cam.com/video/fT3OALUyuhs/v-deo.html

    • @inbuckswetrust7357
      @inbuckswetrust7357 3 роки тому +1

      Сборщик мусора под смаллтолк летал самолетом на железе 90х годов и памяти не требовал много, ява тогда только в ясельки пошла

    • @IExSet
      @IExSet 2 роки тому

      @@AntonyPolukhin враньё, не выедает оно память гигабайтами, это воинственное невежество фанатиков C++ давно уже вошло в легенды :-)

  • @ГерманМальцев-ш5ж

    2023 год: коды из слайда со сравнением rust и c++ компилируются в одинаковый код на ассемблере

    • @eugeneus77
      @eugeneus77 Місяць тому

      Но С++ всё равно быстрее, да

  • @vladzhukov6116
    @vladzhukov6116 5 років тому +16

    unsafe НЕ отключает "все замечательные проверки", он просто позволяет писать внутри функции и операции помеченные unsafe.
    Странно ожидать от компилятора не принимать логически неправильные программы, раст этого никогда и не обещал. Либо я что-то не понял.
    Про взаимодействие с C логичный довод. Только чтобы решить эту проблему нужно писать опять новый язык поверх C и отказываться от свойств языка совсем.
    Проблемы borrow checker'a решаются архитектурно.

  • @rudeusdoto
    @rudeusdoto 4 роки тому +4

    В свободное да и в рабочее время я занимаюсь разработкой ... (с) 0:26

  • @bravikov
    @bravikov 5 років тому +7

    Насчет Оскара вот это видео: ua-cam.com/video/vdaerPPHkLg/v-deo.html

  • @evgenysuskov2806
    @evgenysuskov2806 2 роки тому +1

    Вот интересно почему D так и не пошел. Брайт и Александреску же положили туда почти все, что нехватало плюсам в то время, хотя для современных плюсов уже не актуально.

    • @some84884
      @some84884 4 місяці тому +1

      Не хватило хайпа

  • @volodymyrkorniichuk1164
    @volodymyrkorniichuk1164 5 років тому +20

    Я правильно понял, что в претензии к Rust были: а) "Из него можно вызвать код на С и поэтому капец - небезопасно" и б) "На нём можно написать не ту программу, которую хотелось". Так подождите - а из С++ что, нельзя вызвать код на С? Или написать не ту программу, которую хотелось? Т.е. по этим пунктам Rust и С++ равны. Но вот только Rust предлагает способы безопасного написания кода и чётко локализует небезопасные места, а С++ этого совершенно не делает.

    • @HedgehogInTheCPP
      @HedgehogInTheCPP 5 років тому +4

      Советую пересмотреть. Претензий к Rust фактически вообще не было, кроме того что из-за его внутренней сложности его ещё требуется пилить чтобы он начал работать в полную силу. Жаль я забыла во время вопроса сказать что на Rust переписали очень много чего в Firefox, что очень положительно сказалось на развитии языка. Но хоть тут скажу :)

    • @volodymyrkorniichuk1164
      @volodymyrkorniichuk1164 5 років тому +6

      @@HedgehogInTheCPP Т.е. претензии к Rust были в том, что у него есть потенциал (ещё не раскрытый), которого у С++ и в принципе-то нет (и раскрыт он не будет)? То есть Ваша позиция в общем сводится к тому, что Rust лучше по-просту во всём (ну или будет спустя пару лет) ?

    • @HedgehogInTheCPP
      @HedgehogInTheCPP 5 років тому +8

      @@volodymyrkorniichuk1164 нет. У Rust есть потенциал поскольку front end языка знает больше о коде и на middle end потенциально способен отдать больше информации. Осилит ли сообщество всё сделать как надо или будет как с D вопрос всё ещё открытый. У C++ есть помимо прочих фич есть ещё и киллер фича в том, что C можно использовать как подмножество C++ без костылей и "заборчика" в виде разного рода "unsave" директив ;)

    • @paxpax1707
      @paxpax1707 3 роки тому +1

      @@HedgehogInTheCPP да блин unsafe не отключается все проверки Rust-а :) Антон в докладе допустил ошибку. Borrow checker также будет работать и все крутые фичи. Просто unsafe разрешает тебе использовать голые сырые указатели и тем самым намекая как бы «теперь за UB будешь сам следить». От этого безопасность не обнуляется более того это все ещё намного безопасней чем голый С/С++. Интеграция с Си достаточно простая есть хорошие проверенные инструменты для этого. Да господи ребята из Firefox/Servo так и живут уже несколько лет. Ну и у Си есть свои особенности тем самым делая интерфейс бриджа между языками достаточно специфичным для растового кода но это все мелочи.

    • @vas_._sfer6157
      @vas_._sfer6157 2 роки тому

      @@HedgehogInTheCPP Не всегда так, C и C++ разные языки.

  • @HedgehogInTheCPP
    @HedgehogInTheCPP 5 років тому +7

    По лайкам всё понятно, всё таки кто то один кто был на конфе пишет на J# и его это задело)
    P.S. очень в тему где то попался комментарий, что этот доклад развеял весь тот тлен, безысходность и боооооль, что были на конфе ^_^'

  • @cppprograms5868
    @cppprograms5868 5 років тому +7

    С++- рулить!!!

  • @yunushkin88
    @yunushkin88 4 роки тому +1

    А про Qt никто ничего не слышал как он вообще? Его нельзя вот в Энтерпрайз как зритель хотел из видео?)

    • @avazart614
      @avazart614 4 роки тому +2

      С++Qt это круть!
      Но хотелось бы что бы и STL был богаче.
      Например был бы trim() для std::string

    • @HedgehogInTheCPP
      @HedgehogInTheCPP 4 роки тому +1

      Qt стрёмно, он больно большой сам по себе. Глядя на Dropbox мне хочется использовать Qt буквально нигде.

    • @SergMirny_yt
      @SergMirny_yt 4 роки тому +1

      Qt это самая передовая GUI инфраструктура. Можно юзать как на плюсах, так и на Пайтоне. Может и ещё где, но я не в курсе

  • @Alexander_Gurov_RF
    @Alexander_Gurov_RF 8 місяців тому

    Большинство софта написано на C/C++. Стандартная библиотека может и маленькая. Зато огромный выбор сторонних библиотек. Большинство существующих библиотек написаны в первую очередь для C, а значит доступны и для C++ (но без ООП). Плюс доступность из коробки библиотек, предоставляемых ОС (WinAPI, POSIX API, glibc, etc...).

  • @xvoidee
    @xvoidee 5 років тому +13

    Антон Полухин - один из лучших докладчиков которых мне приходилось когда-либо слушать О_О

  • @agraiskr
    @agraiskr 2 роки тому

    меня одного бесит плаваюшая тумба рядомс Антоном?😱

  • @joedoe1042
    @joedoe1042 5 років тому +4

    авторы канала! зачем вы столько видео пачкой выдаёте?! Больно же. Интересно но больно. Можно без боли? Пожалуйста.

  • @SmileGobo
    @SmileGobo 5 років тому +2

    Меня одного удивляет, что книга докладчика издана, только на англйском языке?

    • @eu-rn1xb
      @eu-rn1xb 4 роки тому

      а что в этом плохого?

    • @SmileGobo
      @SmileGobo 4 роки тому

      @@eu-rn1xb а я не говорил, что это плохо.

    • @eu-rn1xb
      @eu-rn1xb 4 роки тому

      @@SmileGobo хорошо, тогда что тут удивительного?

    • @SmileGobo
      @SmileGobo 4 роки тому +5

      @@eu-rn1xb русско говорящий специалист, который активно помогает русскоязычному сообществу(например предложения в комитет переводить помогает) выступает на конференциях на русском языке, но книжку издаёт на английском. Мне было бы крайне странно читать книжку соотечественника, на другом языке.

    • @eu-rn1xb
      @eu-rn1xb 4 роки тому +3

      @@SmileGobo суппортить 2 совершенно разных языка накладно. Если на английском это даст профит, но на русском - не факт

  • @0day694
    @0day694 4 роки тому

    Один Rust и...

  • @vladimir0rus
    @vladimir0rus 7 місяців тому

    C не соревнуется с С++ потому что и так понятно что С быстрее и в худшем случае они на равных могут быть.

  • @apivovarov2
    @apivovarov2 4 роки тому

    ff на педеrustе кстати написан

    • @MaceUA
      @MaceUA 4 роки тому +1

      только некоторые куски. 10% Rust, 14% C, 27% C++

  • @TheDiscoLux
    @TheDiscoLux 3 роки тому +3

    плюсы помогают опережать время по производительности. и ты становишся конкурентно способным в нагруженных системах. другое дело скорость разработки повышать надо.

    • @charlieking7600
      @charlieking7600 Рік тому +1

      Надо надёжность разработки повышать в первую очередь, и избавиться к чёрту от заголовочных файлов для ускорения разработки. Модули в C++ уже четвёртый год подряд находятся в экспериментальном состоянии.

  • @ordinary_man_84
    @ordinary_man_84 Місяць тому

    сложно ли выделять память и освобождать ее, когда она перестала быть нужной объекту?

  • @KaraMaslyatam
    @KaraMaslyatam 5 років тому +18

    Полный бред про Rust. 1. Код генерируется одинаково хорошо, но функция помечена как pub, поэтому делаются лишние движения со стеком, если добавить публичную функцию-прокладку, то всё оптимизируется до 6 инструкций на ВЕСЬ код (ну да, теперь по логике выступающего С++ справляется плохо?). Да и вообще в Rust структуры на стеке часто жирнее плюсовых, зато без лишнего плюсового копания в куче на каждый чих. Сравнивать с C++ нужно аккуратно и гонять бенчи реального кода, а не смотреть АСМ игрушечных функций или гонять микробенчи. 2. Вызывать сишный код везде опасно, при чём тут вообще Rust?

    • @AntonyPolukhin
      @AntonyPolukhin 5 років тому +3

      1. Я наблюдаю совсем другую картину godbolt.org/z/ajCMr7 , код Rust лучше не становится. Поделитесь пожалуйста своим кодом.
      "лишнего плюсового копания в куче на каждый чих" - вы о чём? Приведите, пожалуйста, пример кода.
      2. Многие говорят что Rust абсолюто безопасен, но забывают об вызове нативного кода. Из-за чего у людей складывает ложное мнение об инструменте.

    • @KaraMaslyatam
      @KaraMaslyatam 5 років тому +3

      @@AntonyPolukhin 2. Даже в управляемом языке можно словить сегфолт в безобидном пользовательском коде из-за ошибки в реализации виртуальной машины. Rust даёт лишь гарантии отсутствия UB в пользовательском коде (если не использовать unsafe), никто не заявляет большего. Есть также персонажи, которые заявляют, что C++ абсолютно безопасен, если ты умеешь на нём писать, но это ещё более страшное заблуждение. Любой адекватный программист должен понимать, что вызывать потенциально опасный код опасно. И Rust тут вообще не в тему, так везде, везде вызывается нативный unsafe код. А C++ - это пока что вообще на 100% unsafe код.
      По первому пункту позже отвечу.

    • @kpp_
      @kpp_ 4 роки тому +4

      @@KaraMaslyatam пример с 17:30: godbolt.org/z/lXIFT9
      Так что по первому пункту?

    • @AntonyPolukhin
      @AntonyPolukhin 4 роки тому +3

      Я кажется знаю о каких бенчмарках вы говорите. Их сложно назвать бенчмарками раста benchmarksgame-team.pages.debian.net/benchmarksgame/program/nbody-rust-7.html
      Там раст только вызывает C функции (см _mm_* и unsafe). Поэтому бенчмарк сравнивает оптимизаторы GCC и Clang, вместо того чтобы сравнивать языки. Пересмотрите презентацию, там было про "честные" бенчмарки.

    • @AntonyPolukhin
      @AntonyPolukhin 4 роки тому

      @@eu-rn1xb Вы спорите с тем, что бенчмарк сравнивает оптимизаторы двух разных компиляторов, вместо сравнения двух языков?

  • @linkernick5379
    @linkernick5379 4 роки тому +30

    Очень странные наезды на Rust. Беспомощные, я бы сказал, и весьма спорные.

    • @charlieking7600
      @charlieking7600 Рік тому

      Да и он и в самом начале вбрасывает соломенное чучело вида "C++ не популярен". Как раз то и плохо, что мутант из библиотек Сишных и собственных реализаций пользуется спросом.

  • @MasterZiv
    @MasterZiv 4 роки тому +15

    Антон, а почему же так сложно нам найти РАБОТУ?

    • @borschetsky
      @borschetsky 4 роки тому +2

      Ilya Zvyagin если вы знаете хорошо С++ думаю работу найти не проблема. Если ищете работу, обратите внимание на Болгарию, компании такие как MobiSystems, Visteon, Ocado technology. С руками и ногами разбирают С++ программистов. И релоцируют если понадобится.
      Был на встрече с основателем МобиСистемс, купили парня из Голландии за €9к в мес.

    • @eu-rn1xb
      @eu-rn1xb 4 роки тому +15

      @@borschetsky а если я джун - то всё, идём учить C#?

    • @HedgehogInTheCPP
      @HedgehogInTheCPP 3 роки тому +1

      @@eu-rn1xb Почему, на стажировку или на Junior позиции тоже берут ;) Да и подрасти можно тоже быстро уже устроившись ;)

  • @AlexAlex-ms3bg
    @AlexAlex-ms3bg Рік тому

    А зачем столько кривляний.

  • @vinnymetall9829
    @vinnymetall9829 4 роки тому +4

    Если ты попадешь в больницу, то тебе должно душу греть,что дефибриллятор в России сделан из коробки, сквозь которую из розетки до пациента провода идут на прямую, но ВНИМАНИЕ! На коробке конечно же написано, что она с аппаратно-программной составляющей, написаной на С++!!! И где то подпись: Сделано в СКОЛКОВО!

  • @Moncruist
    @Moncruist 5 років тому +35

    Какой-то бесполезный доклад.

  • @GraimPvP
    @GraimPvP 4 роки тому +7

    Охуителено, только не сказал про абстрактные возможности C++ и про то, что практически все новые парадигмы и идеологии появляются в C++. В этом он уделает раст полностью, да и все остальные языки.

  • @sergey198
    @sergey198 4 роки тому +2

    К слову, сейчас растовый компилятор уже генерит другой код на том примере

  • @realfootball338
    @realfootball338 5 років тому +3

    Для обычного бека node... для высоконагруженого более миллиона Elixir ))

    • @zxcq
      @zxcq 4 роки тому

      или go, java.

  • @razee5521
    @razee5521 3 роки тому +3

    Почти все проблемы Rust'а связаны с использованием С и С++, это должно о чем-то говорить ;)

    • @inbuckswetrust7357
      @inbuckswetrust7357 3 роки тому +8

      Все проблемы с и с++ связаны с ассемблером, все проблемы ассемблера связаны с машинными кодами, …

    • @vas_._sfer6157
      @vas_._sfer6157 2 роки тому

      @@inbuckswetrust7357 Не так. У них есть свои проблемы. Оптимизирующие компиляторы могут ломать логику программы при UB. (Пример с переполнением целых показателен)

  • @borschetsky
    @borschetsky 4 роки тому +2

    Надо это видео показать одному зазнайке для которого Пайтон и Джанго как религия.

    • @zxcq
      @zxcq 4 роки тому

      Зачем ? Питон и джанго хороши для своих задач. Проблема С++ в том что задач для него сейчас мало. Потому что основная разработка - веб+мобилки(кроме игр) и там на С++ слишком дорого разрабатывать.

    • @borschetsky
      @borschetsky 4 роки тому +1

      John Turret все хорошо для своих задач. Просто на рынке много разрабов, которые квик сорт не напишут и не объяснят, а уже Sinior Dev. И когда с ними говоришь о CS, их ответ зачем?! Когда есть JS/Node/Python/Django. Ну на крайняк .Net Core.
      Как по мне все движется обратно, webAssembly и сложные модули в вэбе. Когда без плюсов будет не обойтись.

    • @vlad071096
      @vlad071096 4 роки тому +1

      @@borschetsky Ну так правильно говорят. Можете написать квиксорт - молодец, но им за другое платят. То, что перечисляет Антон в качестве опровержения, что С++ - нишевый язык, по сути, только подтверждает его нишевость. Большинство программистов (увы?) никогда не будут писать ни браузеры, ни игровые движки, ни компиляторы, ни дефибрилляторы).

  • @АндрейРеш-г9в
    @АндрейРеш-г9в 4 роки тому

    яндекс - не то что гугл. яндекс такси не то, что убер. почему не сразу получать у американских преподавателей и конкурировать в РФ.

  • @alexgorodecky1661
    @alexgorodecky1661 5 років тому +18

    Все это похоже на последние попытки самолюбования(и самоутешения) до тех пор пока Rust наконец-то вытеснит legacy монстра, в котором абсолютно все сделано неправильно, на одну полку с Коболом. Sad but true...

    • @AntonyPolukhin
      @AntonyPolukhin 5 років тому +16

      Тогда помогите своему любимому языку программирования. Исправьте недостатки, подкрутите оптимизатор... а то разработчики не справляются, а компания-автор так вообще открывает всё больше вакансий на C++ разработчиков.

    • @alexgorodecky1661
      @alexgorodecky1661 5 років тому +1

      @@AntonyPolukhin, ну типа блин, все очень просто. Нужно депрекейтнуть половину стандарта вместе с его "темными" уголками, и начать идти в сторону memory safety, так как это является основными ограничивающим фактором в построении абстракций и библиотек. 2 - удалить stdlib в том виде, в котором он сейчас, и сделать вагон мелких либ, которые будут мейнтенить конкретные люди, или конторы. Ну и наконец перестать делать фичи в языке "наполовину". Как же это бесит в с++ вы даже не представляете. Я не могу представить какой либо другой язык, где бы имела место такая наглость, и все это сходило с рук. Ну и вообще, главная проблема с++, что у него нет хозяина. Каждая корпорация тянет одеяло в свою сторону, делая свой "волшебный" std и "волшебный" компилятор. Да и в целом, стоит ли оно того? Cpp уже отработанный материал и в плане синтаксиса и в плане семантики. Уже отжали из си все, что можно. Может проще компании X просто сделать новый язык с учётом ошибок? Раст получился, да. Цель сделать безопасный cpp достигнута. Но она настолько жалкая по сравнению с "сделать отличный простой, safe native high performance язык". Может не стоит тратить силы и заняться этим? У Яндекса бы хватило ресурсов вполне.

    • @yomer355
      @yomer355 5 років тому +8

      Alex Gorodecky, думаю, речь шла о том, чтобы вы помогли Расту.

    • @zxcq
      @zxcq 4 роки тому +2

      Мне кажется не rust заменит С++ а kotlin native. Там уже всё красивее и понятнее чем в Rust.

    • @octozero
      @octozero 4 роки тому +3

      Да он уже жиденько так обделался с этими докладами но никак не успокоится. Ему все на хабре уже расписали. Антон, переходите на следующую стадию принятия неизбежного.

  • @MrArhat7
    @MrArhat7 5 років тому +4

    За месяц Яндекс такси обрабатывает 1600000 заявок (по их данным). Это соответствует 6 заявкам в секунду. И зачем С++?

    • @sergey_fetisov
      @sergey_fetisov 5 років тому +8

      Предполагаю, что заявки распределены сильно неравномерно. Кроме того, вычислительный вес заявки достаточно серьёзный. Вычисление маршрутов, фильтрация навигационных данных, их привязка к маршрутам движения (ведь заявка одна, а машина ведётся по всему маршруту!). Закладывать под это менеджерский язык было бы фатально.

    • @zxcq
      @zxcq 4 роки тому +1

      у них питон. На хабре недавно была статья про асинхронный питон в такси. На С++ только какие то узкие места.

  • @kek_cheburec4340
    @kek_cheburec4340 5 років тому +6

    Плохо значит читал документацию, флаги оптимизации компилятора Rust на -O не заканчиваются.

    • @HedgehogInTheCPP
      @HedgehogInTheCPP 4 роки тому +1

      Так это ссылку на код с правильными флагами и покажи что докладчик не в теме. Это же просто :)