Незаменимый С++. Антон Полухин. 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... - วิทยาศาสตร์และเทคโนโลยี
19:19 В блоках unsafe разрешено: разыменовывать сырые указатели, вызывать unsafe функции, обратиться к static mut переменной, реализовать unsafe trait. Borrow checker не отключается.
И доступ к полям union'а
От фразы "В дефибриляторах ПО на плюсах" аж мурашки пробежали по коже!
18:02 Это ABI, `pub extern "C" fn sum(...) ...` даёт тот-же код, что и на C++. ABI в Rust пока не зафиксирован, так что его смена не будет чем-то экстраординарно сложным.
Это называется C++ головного мозга. Встречается и в других языках, и в общем показывает ограниченность инженера. Из-за этой ограниченности он сует то что знает куда только может. Любой ЯП это инструмент, который либо подходит для задачи либо нет. Что до плюсов/раст спора - если откинуть споры про производительность то можно ещё поговорить об эргономике языков, а также CI и системах сборки проектов, а также о том что в больших проектах есть инженеры разных уровней. По эргономике - со стороны раста: мощные енамы, паттерн матчинг, отсутствие null. Также сравнение Cargo с зоопарком систем сборки в плюсах будет не в пользу последних. Зелёному инженеру зашотганить ногу на плюсах будет намного легче чем на расте - там он в истерике будет пытаться удовлетворить компилятор.
А по-моему, это фанбои раста больше всех визжят - другое такое наглухо отбитое коммьюнити надо ещё поискать. Кстати, в России из-за отсутствия политкорректности (хоть какой-то плюс) никто, похоже, не обращает внимание, что этот ваш всраст из коробки идёт со своим Code of Conduct. Получается, как не посмотри, а язык-то - левый, if you know what I mean
@@dent3552 хех, правильно. нет агрументов по существу - переходи на личности
Зачем делать доклад о языках в которых не разбираешься? Или проверить инфу для доклада не хватает коллег?
Зачем делать негативный коммент без аргументов
@@riendlyf для проверки переполнения есть checked_mul. При компиляции если использовать --lto и -O3, то код будет ещё компактнее, но видимо открыть доки это слишком сложно для разраба на плюсах. unsafe не отключает все проверки, unsafe лишь даёт доступ к unsafe функциям, которые можно вызвать только явно. При работе с C либами не нужно каждый раз следить за памятью, в Rust есть так же как и в C++ shared/unique pointer'ы которым можно дать свой деструктор, не говоря уже о самом, что можно просто всё в структуру обернуть, и Rust будет следить за временем жизни сам. "Придётся писать юнит тесты", вау, а чего докладчик хотел? Волшебную пилюлю, которая за него будет правильный код писать?
80% заявлений про rust не совпадают с реальностью. Такое чувство, что человек лишь 2 часа на расте писал и решил, что всё знает.
Как же хорошо подходит фраза: If you torture the data long enough, it will confess to anything
Немного неверная инфа по сборщику мусора. В java используется алгоритм Дейкстры, а не счетчики ссылок. Это удаляет проблему циклических ссылок.
Стандартные библиотеки для си написанные на плюсах (4:18), это как?
спроси у джависта -- сколько тактов занимает доступ какому-нибудь члену объекта и по тишине поймешь многое
Ну теперь на все вопросы будет GPT 4
4ый момент не аргументирован совсем, никакого вывода или написание тестов на с++ отменяется?
Виртуальная машина для Java размером с пару гигабайт ?
Ну сказочник.))
Это про C# скорее, у Java поменьше, плюс доклад этот очень тролльчатиной пахнет, что собственно вот тут озвучивалось th-cam.com/video/LZflL44SVVY/w-d-xo.html
Conclusiones? Rust or C++? Which is faster?
Очень много фактических ошибок, например: в swift нет GC, а есть reference counters или говорить о том, что самый медленный язык Python сопоставим с Golang. Фортран - язык процедурный, а не функциональный.
Хотя сама идея доклада правильная.
выкусил, в Swift и obj-c нет сборщика
16:40 А если в Rust убрать pub у функции mutate и добавить
pub fn foo() -> [i32; 6] {
mutate(5)
}
то компилятор функцию mutate вообще выкинет, а вот C++ этого не делает. Что-то мне подсказывает, все эти сравнения вилами по воде писаны.
Не забывайте, что сравнивать надо одинаковые по смылсу функции. Если вы выкидываете pub у Rust, то добавляейте static к C++. Получите одинаковый код, middle end всё подсчитает на этапе компиляции: godbolt.org/z/FC3hNb
GraalVm и тепепь сравним что меньше весит
Пример кода 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
Лучше полагаться на "оптимизации компилятора", чем следовать установленный правилам языка, чтобы получилось то же самое и явное ?
Интересно, а что по этому поводу думает Python ?
"Каждый новомодный язык программирования норовит заявить о том, что он быстрее" где это заявлялось ? Каким местом это относится к RUST ? Я вроде бы во всех книгах и статьях видел основную цель - надежность и защиту памяти.
ПС: Вот это да! Как же у "Яндекс" и "Mail.ru" бомбануло, когда оказалось что в погоне за попсовым Go (и другими гугль-продуктами) и поднятия ЧСВ при помощи C++, они как-то разучились видеть действительно достойные вещи...
Перестаньте уже, никто в Mozilla вас не трогает и никто не заявлял, что C/C++ нафиг никому не нужны, читайте внимательно абзацы "Зачем это" и "Почему это". Живите счастливо со своими висячими указателями и надейтесь на компилятор %)
Доклад про другое ;) и изначально вообще был с запросом на конфе от оргов чтобы финальным докладом развеять тлен и безысходность
Говорят Rust может быть скомпилирован в dev режиме и в release. И во втором случае происходят все оптимизации. Соответственно, вопрос как именно компилировалось то, что на слайде. Ну, а то что может быть принято за оверхед Rust'a, так оно занимается выделение/освобождением памяти. Добавьте эту составляющую ручками в C++ и получите тоже самое.
Ну, а в целом предвзятый обзор от адепта С++. Так на скорую руку языки нельзя сравнивать. Например, писать десктопные приложения c GUI на С++ это вообще мазохизм.
Забавно слышать про сравнение c++ с go, учитывая, что как раз go был создан гуглом, как альтернатива плюсам и про чуть производительнее питона - это шутка?
Как замена плюсам для более простой разработки сетевых распределённых приложений ;)
@@HedgehogInTheCPP Самое забавное, что я решил учить c++, сейчас смешно свой же комментарий читать...
@@hikkarion жизнь течёт, всё меняется ^^
Тут подсказки дают, почему Rust молодец и делает именно так www.viva64.com/en/b/0733/
C++ быстрее и безопаснее Rust, Yandex сделала замеры: habr.com/ru/post/492410/