LINUX.ORG.RU

Правильно ли я пишу на Rust?

 , ,


1

7

Часто мелькает Rust и в новостях, и в темах. Решил попробовать переписать один тест с С на Rust. Для сравнения написал вариант и на C++. На Rust получилось в 4+ раза медленнее, чем на С и в 2+ раза медленнее, чем на C++. Есть подозрение, что я делаю что-то неправильно, но не знаю что. Помогите, пожалуйста, разобраться.

UPD. Мои цифры:

$ gcc c_v1.c -Ofast -march=native
$ ./a.out 3000
16.439091
-287.250083
$ g++ cpp_v2.cpp -Ofast -march=native
$ ./a.out 3000
31.3826
-287.25
$ rustc rust_v1.rs -C opt-level=3 -C target-cpu=native
$ ./rust_v1 3000
71.570172703s
-287.2500833333321
★★★

Последнее исправление: andalevor (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Для этого случая у яйцеголовых есть отличный аргумент - обьявить unsafe не Rust. Только ты делаешь unsafe, все бонусы зачисляются автоматически в лагерь С++. Естественно это манипуляция, но главное громко орать.

vertexua ★★★★★
()
Ответ на: комментарий от anonymous

Нет, не «врети», а указываю на манипуляцию. Мнение одного инженера, если написано в виде ссылки в интернетах, автоматически считается доводом альфа и омега тотальной ненужности Rust.

Но нет. У него аргументы норм, отлично, учтем. От этого польза от Rust в других случаях не становится меньше.

vertexua ★★★★★
()
Ответ на: комментарий от red75prim

Смысл в том, что раст дает в том числе и 100% гарантию. Но только при выполнении определенных условий. Если эти условия не соблюдаются, раст в плане безопасности ничем не безопаснее С++. Это я к тому, что хайпа много вокруг раста, а когда доходит до деталей то сектанты сливаются. Раст это хороший инструмент для решения ряда задач, а не серебрянная пуля на все случаи жизни.

yetanother ★★
()
Ответ на: комментарий от anonymous

Вот когда IDEA перестанет тормозить, тогда и поговорим. (с)

RazrFalcon ★★★★★
()
Ответ на: комментарий от red75prim

Вот почему история с динозавром («Или встречу, или нет, значит 50%») - это анекдот, а «гарантия не 100%, значит никаких гарантий нет» - нет?

Потому что у технарей между 0 и 100 есть еще некоторые величины.

anonymous
()
Ответ на: комментарий от yetanother

Смысл в том, что раст дает в том числе и 100% гарантию.

Нет.

Если эти условия не соблюдаются, раст в плане безопасности ничем не безопаснее С++.

И снова мимо.

когда доходит до деталей то сектанты сливаются

Ага. Очень интересно слушать 100 раз пережёванные городские легенды.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Суть в чётком разделении Safe Rust и Unsafe Rust.

Не нужно уходить от ответа. Я речь веду о том, что Раст, наряду с гарантиями безопасности, которых действительно нет в других языках, имеет большие сложности с созданием циклического графа с неоднородными узлами. Еще раз повторяю - за все нужно платить. И на данный момент это делает Раст больше нишевым языком, чем языком общего назначения. В Расте слишком много принесено в угоду фактически одной фичи.

yetanother ★★
()
Ответ на: комментарий от vertexua

Боже мой, да сколько можно тыкать одной единственной статьей, одного единственного инженера-истерички из 2016го года.

Вот действительно, три года прошло, что же мы тут обсуждаем? Наверное уже появилась возможность создавать эти самые несчастные циклические графы с неоднородными узлами?

yetanother ★★
()
Ответ на: комментарий от yetanother

Создание циклического графа - это очень нишевая задача. И на языках без GC её всё равно нормально не реализовать.

В Расте слишком много принесено в угоду фактически одной фичи.

слишком много

Полегче с субъективностью.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от yetanother

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

Только условия безопасности в Rust соблюдаются в 95% случаев, а в С++ только в 5% случаев идеально провереного всеми возможными анализаторами кода и половиной забаненых фич. Ваш аргумент «в Rust можно прицелиться и выстрелить в ногу. Следовательно это будут делать всегда, а значит это равно С++».

Раст это хороший инструмент для решения ряда задач, а не серебрянная пуля на все случаи жизни.

Но аргумент борцунов как раз в том чтобы затоптать Rust полностью и не дать ему преуспеть. Просто потому что боятся что лет через 10 прийдется слезать со своих плюсов на работке и в целом duck syndrome. Они то научились есть стекло на С++, значит молодняк тоже обязан. И методика заключается в тотальном отрицании любой пользы, в любых случаях, на любых задачах для любых людей.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от RazrFalcon

Да все там реализовать 300 раз. Уже даже в том же Rust нагородили. Концептуально - всем владеет специализированый Map. Ноды ссылаются по индексам. И есть API чтобы не накосячить и не ссылаться в небо.

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Ссылку на раст-либу можно? Ибо я был автором одной из них.

RazrFalcon ★★★★★
()
Ответ на: комментарий от vertexua

Только условия безопасности в Rust соблюдаются в 95% случаев, а в С++ только в 5% случаев идеально провереного всеми возможными анализаторами кода и половиной забаненых фич.

Ну так а я про что говорю? В отдельных случаях Раст имеет преимущество над С++. В других случаях - наоборот. Просто есть разные инструменты и каждый лучше подходит для определенного круга задач.

Ваш аргумент «в Rust можно прицелиться и выстрелить в ногу. Следовательно это будут делать всегда, а значит это равно С++».

Зачем вы передергиваете?

Но аргумент борцунов как раз в том чтобы затоптать Rust полностью и не дать ему преуспеть.

Зачем вы бросаетесь в крайности? Лично я не отрицаю что Раст уже оказал большое влияние на индустрию. Другое дело, что инженер по определению должен быть технически подкован и понимать, где действительно польза от инструмента, а где хайп голимой воды.

yetanother ★★
()
Ответ на: комментарий от RazrFalcon

Создание циклического графа - это очень нишевая задача. И на языках без GC её всё равно нормально не реализовать.

Ну зачем ерунду-то городить, если не разбираетесь? Циклический граф это неотъемлемая часть многих, если не всех, GUI. Это раз. И, вы не поверите, но на плюсах (а там нет GC, на всякий случай) есть даже несколько GUI. Это два.

yetanother ★★
()
Ответ на: комментарий от yetanother

Ну тут пол-ЛОРа имеет не очень взвешеный подход, и просто бесятся с того чего не понимают.

В целом это такой настрой у людей, не пытаться достать с чего-то выгоду, а потешить ЧСВ тем что они такие умные и нашли как что-то сломать.

Надеюсь они в жизни не так себя ведут. А то увидели автомобиль - сразу залили взрывчатки в бак или начали дышать с выхлопной трубы, заливаясь гомерическим хохотом, как они всех перехитрили. Так же и с графами и Rust, вместо того чтобы ездить

vertexua ★★★★★
()
Ответ на: комментарий от RazrFalcon

/0

Так с тех пор ничего кардинально и не изменилось — сектанты по-прежнему 90% времени заняты написанием биндингов к биндингам для биндингов к сишным библиотекам, а остальные 10% уходят на вялые форумные попытки вознести до небес язычок «не такой как все».

А по факту имеем Раст, которому уже почти 10 лет, а реальных законченных проектов на нём — как не было, так и нет. За это время на C, или том же C++ было переписано полмира. Просто Mozilla не учла, что после промывки мозгов у сектантов теряется и способность к программированию. Отсюда и засилье хелловорлдов на Расте, как свидетельство надвигающейся интеллектуальной импотенции религиозного культа.

anonymous
()
Ответ на: комментарий от yetanother

И, вы не поверите, но на плюсах (а там нет GC, на всякий случай) есть даже несколько GUI.

Ага, и у вас конечно же есть огромный опыт использование Qt чтобы делать такие заявления. Спойлер: Qt фактически не проверяет корректность графа виджетов. Всё на плечах программиста.

RazrFalcon ★★★★★
()
Ответ на: комментарий от anonymous

в этом соревновании очень большое значение имела корректность респонсов, которой было очень непросто добиться, и оптимизация под конкретные тестовые данные. 4 место Go и в целом большие разрывы по времени как бы намекают.

anonymous
()
Ответ на: комментарий от anonymous

которому уже почти 10 лет

Городская легенда №1

За это время на C, или том же C++ было переписано полмира

Городская легенда №2

написанием биндингов к биндингам для биндингов к сишным библиотекам

Городская легенда №3

Скучно.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ага, и у вас конечно же есть огромный опыт использование Qt чтобы делать такие заявления. Спойлер: Qt фактически не проверяет корректность графа виджетов. Всё на плечах программиста.

А я и не утверждал, что Qt проверяет корректность графа виджетов. Вы в очередной раз передергиваете. Я всего лишь утверждал, что на С++ вы можете легко и просто создать циклический граф с неоднородными узлами. А на Расте вы этого не можете. И вы это не отрицаете, но пытаетесь отвлечь внимание уводя дискуссию в сторону.

yetanother ★★
()

Все адекватные люди уже взглянули правде в глаза — был бы Раст таким хорошим языком, «убийцей» C или C++, то на нем бы уже написали качественные аналоги Qt или GTK, на C++ ведь смогли люди написать, даже на C смогли, но то ведь не промытые сектанты, а ТЕХНАРИ.

Своим неудачам на софтверном поприще Раст на 50% обязан бездарности представителей культа («нет, значит, не нужно!», «вы всё врете!» и т.п.), и на 50% — собственной неадекватности.

anonymous
()
Ответ на: комментарий от RazrFalcon

Такие же убогие как в C++? Могу конечно.

«Бегом побежал показывать.» ©

anonymous
()
Ответ на: комментарий от RazrFalcon

За 4-е года? Нда…

Что и требовалось доказать, секта «не шмогла», лучше в 316-ый раз переписать, недописать и снова переписать очередной клон coreutils.

anonymous
()
Ответ на: комментарий от anonymous

Все адекватные люди уже взглянули правде в глаза — был бы Раст таким хорошим языком, «убийцей» C или C++, то на нем бы уже написали качественные аналоги Qt или GTK

Уже сто раз обсудили.

то на нем бы уже написали качественные аналоги Qt или GTK

Нет, вывод не верен. Не написали бы, потому что сейчас тулкиты для десктопа никто не пишет вообще.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Нет, вывод не верен. Не написали бы, потому что сейчас тулкиты для десктопа никто не пишет вообще.

Я этот твой ответ предугадал, и в своём посте прекрасно осветил:

Своим неудачам на софтверном поприще Раст на 50% обязан бездарности представителей культа («нет, значит, не нужно!», «вы всё врете!» и т.п.)

anonymous
()
Ответ на: комментарий от anonymous

Проблема раста в том, что в него идут те, которые ниосилили писать на %lang_name% не как на школьном паскале и полезли в «новый модный молодежный» раст в надежде на то, что он им чудесным образом руки поправит.

Вполне вероятно, что в мозиле есть люди способные что-то выдать, но им неинтересно ничего кроме академических игрулек. А тем (которые выше) хоть раст дай, хоть раст++, родить они смогут только перепасту с готовых идей/либ.

anonymous
()
Ответ на: комментарий от anonymous

Проблема раста в том, что в него идут те, которые ниосилили писать на %lang_name% не как на школьном паскале и полезли в «новый модный молодежный» раст в надежде на то, что он им чудесным образом руки поправит.

Да, все эти новорожденные расто-программисты так и не поняли одной простой вещи — знания определенной предметной области являются краеугольным камнем в программировании, а язык хоть и накладывает определенные ограничения, всё же является вторичным.

И сколько ты не расхваливай новый, блестящий молоток с розовой ручкой, создатели которого обещают, что с ним ты будешь меньше попадать себе по пальцам, без умения забивать гвозди ты так и будешь яростно молотить воздух, строя разве что воздушные замки, при этом разочарованно разглядывая цветастые агитки в перерывах.

anonymous
()
Ответ на: комментарий от anonymous

Вполне вероятно, что в мозиле есть люди способные что-то выдать,

И именно изза этих акадэмихоф фаерлисом пользоваться стало невозможно. Тормозное неотзывчевое говно стало, да

anonymous
()

Если верить аналитике этого сайта https://www.openhub.net/p/firefox/analyses/latest/languages_summary, то в Firefox'е кода на Rust'е по-прежнему меньше, чем даже на C, не говоря уже про C++ (6.5% vs 12.9% vs 28.0%). То есть, «убийца C++» не смог дотянуться своими хиленькими ручонками до самого C++, обосравшись уже при встрече с C.

https://netmarketshare.com/

Chrome	          66.93%
Firefox	           9.28%
Internet Explorer  8.29%

И пока эти гении переписывают свою вечно перспективную детину на новомодном язычке, Хром (на православном C++) успешно продолжает опускать их практически до уровня долей процентов (они скоро обгонят Internet Explorer в своем стремлении ко дну).

anonymous
()
Ответ на: комментарий от RazrFalcon

Пишут. Просто тот-же Qt содержит пару миллионов строк кода. За вечер это не напишешь.

Qt целая платформа, если оставить только виджеты, да и те самые необходимые, то останется относительно немного кода.

anonymous
()
Ответ на: комментарий от anonymous

очень спорное утверждение. Плюс это надо не просто написать, но еще и долго поддерживать. Кто будет этим заниматься при наличии готовых GTK и Qt? Правильно, никто.

Вообще не понимаю такие претензии. С одной стороны требования переписать все на rust (один тут вообще возмущается «а чо это они используют LLVM вместо того чтобы написать свой компилятор с нуля»), с другой - рассказы про NIH-синдром. «Вы или трусы оденьте, или крестик снимите».

ЧСХ тут никто не назвал слишком быстрое эволюционирование как настоящую причину, по которой от rust отказываются чаще всего, по крайней мере крупные компании. Это много говорит о квалификации комментаторов.

anonymous
()
Ответ на: комментарий от anonymous

Вот, собственно, как работает пропаганда. Казалось бы - ладно раст-адепты - это бездарный биомусор по определению, который я уже множество раз валял в говне и теперь бежит рыдать к мамке как только завидит меня, но я не об этом.

Что мы тут видим. Мы видим, как пропаганда для сектантов сделала ссылку, что-бы эти плебеи везде с нею бегали и показывали. Но казалось бы - зачем, если любой адекватный человек может пойти и посмотреть?

Но проблема в том, что никто не смотрит. Дак мало того, что не смотрит - он даже не может осознать, что «html/js/css» и прочее дерьмо в язык - это уже смешно. Ничего этого нету в броузере - это всё гуйня, либо обеспечение самого жабаскрипта. Там есть жс-движок, а там есть тесты. Вообщем, всё это неважно.

Важно то, что никакого говнораста в говнофоксе нет. Его попытки туда впилить закончились так и не начавшись. Тут даже ненужно что-то знать - достаточно понимать, что такое говнораст и его бездарные адепты и то, что ничего они родить не могут.

В конечном итоге - что мы имеем? Мы имеем то, что пропаганда попросту засунула в репозиторий с говнофоксом исходники всех раст-говнолиб, которые существуют в природе. Засунула огрызки мёртвого серво, который никаким образом не используется в говнофоксе.

В конечном итоге - все эти проценты фейковые - их там нет. В этом говне есть ксс парсер говна(хелворд уровня начальной школы) и композитор слоёв, который такой же хелворд и состоит из ffi с говнеко(С/С++) на 95%.

С таким же успехом можно взять любой говнопроект на жабаскрипте, залить туда какой-нибудь v8, ноду, и ещё пару лямов строк сишных либ. Вот тебе и пару лямов строк на си в очередном роутере. Схема рабочая - пользуйтесь.

anonymous
()
Ответ на: комментарий от anonymous

Анонимы такие анонимы…

> tokei gui widgets platformsupport
-------------------------------------------------------------------------------
 Language            Files        Lines         Code     Comments       Blanks
-------------------------------------------------------------------------------
 Assembly                4         3343         2947            0          396
 Autoconf                2          212          162           14           36
 C                       1         2005         1315          300          390
 C Header              700       243289       171571        35017        36701
 CMake                   1           68           23           37            8
 C++                   741       565561       332223       149644        83694
 CSS                     1          909          550          180          179
 JSON                    6         2769         2769            0            0
 Objective-C++          12         4474         2822          963          689
 Prolog                 59          752          604            0          148
 SVG                     2          156          156            0            0
 Plain Text              4          121          121            0            0
 XML                     6         5412         5269           90           53
-------------------------------------------------------------------------------
 Total                1539       829071       520532       186245       122294
-------------------------------------------------------------------------------

Всего-то пол ляма. За выходные управимся.

RazrFalcon ★★★★★
()
Ответ на: комментарий от anonymous

слишком быстрое эволюционирование

Даже разрабы C++ и java поняли, что сейчас нужно как можно быстрее клепать новые фичи.

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Всего-то пол ляма. За выходные управимся.

В этих пол-лямах всякого разного куда больше чем в других тулкитах, в том числе даже устаревшего и неиспользуемого. Ты уже сократил объем в четыре раза, там спокойно можно срезать еще столько же. Но за выходные вы, конечно, не управитесь, да и за пару лет тоже, вам же еще посты про крутость rust надо успеть написать.

anonymous
()
Ответ на: комментарий от RazrFalcon

Анонимы с ЛОР-а не считают их тупыми.

anonymous
()
Ответ на: комментарий от anonymous

Qt целая платформа

Хорошо сказано.

anonymous
()
Ответ на: комментарий от RazrFalcon

Всего-то пол ляма. За выходные управимся.

Клоун - там эти пол ляма - это легаси и прочая дристня. У тебя же топ язычок - должно быть не пол, а сотня тысяч.

К тому же, клоун, говнрасту 10 лет. За 10 лет эти пол ляма строк уже 10 раз переписали бы.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.