Незаменимый С++. Антон Полухин. CoreHard Spring 2019

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 ก.พ. 2025
  • Slides: www.slideshare...
    Каждый новомодный язык программирования норовит заявить о том, что он быстрее, надёжнее и вообще по всем параметрам в несколько раз лучше C++. Давайте разберёмся - где правда, а где вымысел. Да начнётся битва между C++ и Asm/Rust/Go/Java/C#... !
    Join CoreHard community:
    CoreHard Telegram t.me/corehard_by
    CoreHard Facebook / corehard.by
    CoreHard Vkontakte corehardby
    CoreHard Instagram / corehard.by
    CoreHard Conference conference.core...
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 38

  • @red75prim
    @red75prim 5 ปีที่แล้ว +29

    19:19 В блоках unsafe разрешено: разыменовывать сырые указатели, вызывать unsafe функции, обратиться к static mut переменной, реализовать unsafe trait. Borrow checker не отключается.

    • @pavellazarev3435
      @pavellazarev3435 4 ปีที่แล้ว +2

      И доступ к полям union'а

  • @ZekeFast
    @ZekeFast 4 ปีที่แล้ว +20

    От фразы "В дефибриляторах ПО на плюсах" аж мурашки пробежали по коже!

  • @red75prim
    @red75prim 5 ปีที่แล้ว +10

    18:02 Это ABI, `pub extern "C" fn sum(...) ...` даёт тот-же код, что и на C++. ABI в Rust пока не зафиксирован, так что его смена не будет чем-то экстраординарно сложным.

  • @TheSunscratch
    @TheSunscratch 4 ปีที่แล้ว +37

    Это называется C++ головного мозга. Встречается и в других языках, и в общем показывает ограниченность инженера. Из-за этой ограниченности он сует то что знает куда только может. Любой ЯП это инструмент, который либо подходит для задачи либо нет. Что до плюсов/раст спора - если откинуть споры про производительность то можно ещё поговорить об эргономике языков, а также CI и системах сборки проектов, а также о том что в больших проектах есть инженеры разных уровней. По эргономике - со стороны раста: мощные енамы, паттерн матчинг, отсутствие null. Также сравнение Cargo с зоопарком систем сборки в плюсах будет не в пользу последних. Зелёному инженеру зашотганить ногу на плюсах будет намного легче чем на расте - там он в истерике будет пытаться удовлетворить компилятор.

    • @dent3552
      @dent3552 4 ปีที่แล้ว +7

      А по-моему, это фанбои раста больше всех визжят - другое такое наглухо отбитое коммьюнити надо ещё поискать. Кстати, в России из-за отсутствия политкорректности (хоть какой-то плюс) никто, похоже, не обращает внимание, что этот ваш всраст из коробки идёт со своим Code of Conduct. Получается, как не посмотри, а язык-то - левый, if you know what I mean

    • @vasiliytaranov3921
      @vasiliytaranov3921 2 ปีที่แล้ว +4

      @@dent3552 хех, правильно. нет агрументов по существу - переходи на личности

  • @ZekeFast
    @ZekeFast 4 ปีที่แล้ว +28

    Зачем делать доклад о языках в которых не разбираешься? Или проверить инфу для доклада не хватает коллег?

    • @riendlyf
      @riendlyf 4 ปีที่แล้ว +4

      Зачем делать негативный коммент без аргументов

    • @rumisbadforyou9670
      @rumisbadforyou9670 2 ปีที่แล้ว +7

      @@riendlyf для проверки переполнения есть checked_mul. При компиляции если использовать --lto и -O3, то код будет ещё компактнее, но видимо открыть доки это слишком сложно для разраба на плюсах. unsafe не отключает все проверки, unsafe лишь даёт доступ к unsafe функциям, которые можно вызвать только явно. При работе с C либами не нужно каждый раз следить за памятью, в Rust есть так же как и в C++ shared/unique pointer'ы которым можно дать свой деструктор, не говоря уже о самом, что можно просто всё в структуру обернуть, и Rust будет следить за временем жизни сам. "Придётся писать юнит тесты", вау, а чего докладчик хотел? Волшебную пилюлю, которая за него будет правильный код писать?
      80% заявлений про rust не совпадают с реальностью. Такое чувство, что человек лишь 2 часа на расте писал и решил, что всё знает.

  • @voilin
    @voilin 3 ปีที่แล้ว +2

    Как же хорошо подходит фраза: If you torture the data long enough, it will confess to anything

  • @user-GXVqxa715japr
    @user-GXVqxa715japr ปีที่แล้ว

    Немного неверная инфа по сборщику мусора. В java используется алгоритм Дейкстры, а не счетчики ссылок. Это удаляет проблему циклических ссылок.

  • @PavelOmelchenko
    @PavelOmelchenko ปีที่แล้ว

    Стандартные библиотеки для си написанные на плюсах (4:18), это как?

  • @user-GXVqxa715japr
    @user-GXVqxa715japr ปีที่แล้ว

    спроси у джависта -- сколько тактов занимает доступ какому-нибудь члену объекта и по тишине поймешь многое

  • @hydrogen5911
    @hydrogen5911 ปีที่แล้ว

    Ну теперь на все вопросы будет GPT 4

  • @kyzmitch2
    @kyzmitch2 ปีที่แล้ว

    4ый момент не аргументирован совсем, никакого вывода или написание тестов на с++ отменяется?

  • @trenkvaz
    @trenkvaz 4 ปีที่แล้ว +11

    Виртуальная машина для Java размером с пару гигабайт ?
    Ну сказочник.))

    • @HedgehogInTheCPP
      @HedgehogInTheCPP 3 ปีที่แล้ว

      Это про C# скорее, у Java поменьше, плюс доклад этот очень тролльчатиной пахнет, что собственно вот тут озвучивалось th-cam.com/video/LZflL44SVVY/w-d-xo.html

  • @RobertoGPuentesDiaz
    @RobertoGPuentesDiaz 3 ปีที่แล้ว

    Conclusiones? Rust or C++? Which is faster?

  • @tormentorone
    @tormentorone 4 ปีที่แล้ว +9

    Очень много фактических ошибок, например: в swift нет GC, а есть reference counters или говорить о том, что самый медленный язык Python сопоставим с Golang. Фортран - язык процедурный, а не функциональный.
    Хотя сама идея доклада правильная.

  • @kyzmitch2
    @kyzmitch2 ปีที่แล้ว

    выкусил, в Swift и obj-c нет сборщика

  • @alexanderxx2982
    @alexanderxx2982 5 ปีที่แล้ว +3

    16:40 А если в Rust убрать pub у функции mutate и добавить
    pub fn foo() -> [i32; 6] {
    mutate(5)
    }
    то компилятор функцию mutate вообще выкинет, а вот C++ этого не делает. Что-то мне подсказывает, все эти сравнения вилами по воде писаны.

    • @AntonyPolukhin
      @AntonyPolukhin 5 ปีที่แล้ว +3

      Не забывайте, что сравнивать надо одинаковые по смылсу функции. Если вы выкидываете pub у Rust, то добавляейте static к C++. Получите одинаковый код, middle end всё подсчитает на этапе компиляции: godbolt.org/z/FC3hNb

  • @almasabdrazak5089
    @almasabdrazak5089 4 ปีที่แล้ว +2

    GraalVm и тепепь сравним что меньше весит

  • @zamazan4ik17
    @zamazan4ik17 5 ปีที่แล้ว +1

    Пример кода Rust vs C++ из презентации на поиграться:
    godbolt.org/z/W3TXhM
    godbolt.org/z/WOhbhY
    godbolt.org/z/LZS_2p
    godbolt.org/z/nHL8Id
    godbolt.org/z/xLqqaB
    godbolt.org/z/vzUEpJ
    godbolt.org/z/WsrusD

  • @demg7738
    @demg7738 4 ปีที่แล้ว +6

    Лучше полагаться на "оптимизации компилятора", чем следовать установленный правилам языка, чтобы получилось то же самое и явное ?
    Интересно, а что по этому поводу думает Python ?
    "Каждый новомодный язык программирования норовит заявить о том, что он быстрее" где это заявлялось ? Каким местом это относится к RUST ? Я вроде бы во всех книгах и статьях видел основную цель - надежность и защиту памяти.
    ПС: Вот это да! Как же у "Яндекс" и "Mail.ru" бомбануло, когда оказалось что в погоне за попсовым Go (и другими гугль-продуктами) и поднятия ЧСВ при помощи C++, они как-то разучились видеть действительно достойные вещи...
    Перестаньте уже, никто в Mozilla вас не трогает и никто не заявлял, что C/C++ нафиг никому не нужны, читайте внимательно абзацы "Зачем это" и "Почему это". Живите счастливо со своими висячими указателями и надейтесь на компилятор %)

    • @HedgehogInTheCPP
      @HedgehogInTheCPP 3 ปีที่แล้ว

      Доклад про другое ;) и изначально вообще был с запросом на конфе от оргов чтобы финальным докладом развеять тлен и безысходность

  • @yelltube
    @yelltube 2 ปีที่แล้ว +1

    Говорят Rust может быть скомпилирован в dev режиме и в release. И во втором случае происходят все оптимизации. Соответственно, вопрос как именно компилировалось то, что на слайде. Ну, а то что может быть принято за оверхед Rust'a, так оно занимается выделение/освобождением памяти. Добавьте эту составляющую ручками в C++ и получите тоже самое.
    Ну, а в целом предвзятый обзор от адепта С++. Так на скорую руку языки нельзя сравнивать. Например, писать десктопные приложения c GUI на С++ это вообще мазохизм.

  • @hikkarion
    @hikkarion 5 ปีที่แล้ว +3

    Забавно слышать про сравнение c++ с go, учитывая, что как раз go был создан гуглом, как альтернатива плюсам и про чуть производительнее питона - это шутка?

    • @HedgehogInTheCPP
      @HedgehogInTheCPP 3 ปีที่แล้ว

      Как замена плюсам для более простой разработки сетевых распределённых приложений ;)

    • @hikkarion
      @hikkarion 3 ปีที่แล้ว +1

      @@HedgehogInTheCPP Самое забавное, что я решил учить c++, сейчас смешно свой же комментарий читать...

    • @HedgehogInTheCPP
      @HedgehogInTheCPP 3 ปีที่แล้ว +2

      @@hikkarion жизнь течёт, всё меняется ^^

  • @PsijicV
    @PsijicV 4 ปีที่แล้ว +2

    Тут подсказки дают, почему Rust молодец и делает именно так www.viva64.com/en/b/0733/

  • @kpp_
    @kpp_ 4 ปีที่แล้ว +6

    C++ быстрее и безопаснее Rust, Yandex сделала замеры: habr.com/ru/post/492410/