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