LINUX.ORG.RU

Ответ на: комментарий от gag

Так у раста, которым заменяют плюсы, и который, якобы, может заменить Си, с временем компиляции (и потреблением памяти) не лучше

Ну да, поэтому они выбрали не те языки для примера.

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

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

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

unsafe убери. Когда говорят про Rust, имеют в виду Safe Rust, а все unsafe-блоки, которых в нормальном коде будет очень мало, тщательно проверены.

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

unsafe убери. Когда говорят про Rust, имеют в виду Safe Rust, а все unsafe-блоки, которых в нормальном коде будет очень мало, тщательно проверены.

Я тоже так умею.

«Когда говорят про С++, имеют ввиду код без предупреждений и код который не выдаёт ошибок под санитайзерами.»

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

Пользователи твоей либы сплошь гентушники? Зачем им компилировать её каждый день

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

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

https://forge.rust-lang.org/infra/other-installation-methods.html#other-ways-...

Любой ARM без линя. В том числе армовая винда. Да и по поводу линя не всё так ясно, потому что лини тоже есть разные.

Единый репозиторий пакетов, единую систему сборки проекта и документации, единую систему тестирования

Давай я немного перефразирую то же: только один репозиторий пакетов, только одна система сборки и документации, только одна система тестирования. И всё это можно оправдать малой популярностью, и , следовательно, развитостью этих инструментов. Напоминаю, что C/C++ развивалось в то время, когда никаких интернетов еще не было. Как только у тебя возникает требование независимости сборки от третьих сторон, то у тебя тут же начинается некоторая фрагментация. А там еще и другие ЯП подключаются, и кастомное тестирование.

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

Я это кратко упомянул. Это приятно, но у этого слишком большая цена, любители подобного сахарка чаще предпочитают какой-нибудь Go.

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

А вот это реальный плюс. Но вот беда: если ты работаешь с разделяемыми данными, то этот плюс множится на ноль директивой unsafe. Которая единственная позволяет работать с разделяемыми данными.

Ну и Раст тупо приятнее разумным сочетанием привычного всем Си-подобного синтаксиса и уместными заимствованиями из функциональных языков

Да, но этот фактор вообще никого не волнует. кроме архитекторов hello world-а.

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

Только вот эти ниши создало сообщество. Это я к тому, что не корпорации всё решают

Недавно отвечал. Иронично, но обе эти ниши создал один и тот же Google.

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

Я тоже так умею.

Не умеешь.

«Когда говорят про С++, имеют ввиду код без предупреждений и код который не выдаёт ошибок под санитайзерами.»

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

Причём я даже подозреваю, что для С++ это сделать можно, просто пока ни у кого не получилось. Т.е. сделать подмножество Safe C++, в котором будет принципиально невозможно написать код с багами, и которого будет достаточно для написания 99% кода без потери производительности. И когда это сделают, когда это станет достаточно распространённым, тогда C++ сможет хотя бы в теории рассчитывать догнать Rust.

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

Тогда за дело взялся Rust и просто выкинул все исключения.

И? Не обработку же ошибок выкинул, а исключения?

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

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

Ок, убедил. Убедил в том, что своя малюсенькая ниша у ЦПП ещё есть. Правда, и это справедливо лишь в отношении legacy. Ну то есть учить сейчас C++ с нуля - это как учить Поскакаль. Поэтому непонятно, зачем его настойчиво пропагандировать.

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

Да, время сборки librsvg впечатлило после того, как его переписали.

Проверять сколько собирается mercurial с rust я даже боюсь.

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

Компиляции, но не только самого компилятора.

Ты пишешь на Rust? Потому что у меня сложилось впечатление, что ты просто не осилил rust-bin в свою генту сунуть.

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

Я тащу программы на расте, которые, к слову, прекрасны, за что я несколько благодарен создателям языка. Компилятор раста — лишь пример.

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

это как учить Поскакаль

Спасибо что напомнил про Паскаль. Зашёл на их сайт, а там:

20 мая новая версия вышла: «FPC version 3.2.2 has been released!»

Надо не полениться и написать новость на лор :)

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

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

Разве кто-то доказал, что такая концепция лучше? Если нет, то тут нельзя сказать, что C++ устарел и вместо него теперь Раст. Тогда это просто два разных инструмента на выбор разработчика (если есть выбор).

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

молотком вкрутить болт всё-таки будет проще, чем отвёрткой

Ход мыслей типичного менеджера в айти. Дальше следовало бы завести спор на тему того, стоит ли брать молоток или кувалду, после чего взять одну и ту же модель молотка и начать спорить, стоит ли его называть молотком или это уже кувалда.

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

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

Можно было бы почистить и получить D. Но D не удержался и зачем-то добавил сборщик мусора. Тогда за дело взялся Rust и просто выкинул все исключения. Зато напихал всякой новомодной ерунды. Swift туда же (возможно, ты на него намекал). Не могут просто почистить плюсы, всё время куда-то заносит

Ты назвал только самые популярные. Еще всякие там Zig, Ponylang, и прочие — десятки их. Я могу назвать ультимативный язык, который занесло не туда, и который старше крестов — это паскаль. Занесла не туда его вполне конкретная корпорация. Конечно, можно еще поспорить о том, что если бы не эта корпорация, то говноеды бы никогда и не узнали про паскаль.

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

Опять херню вещаем? В прошлой теме показали, что любую ошибку на С++ можно повторить на Rust. Как например разыменование нулевого указателя.

Враньё, конечно же. Rust для того и придумали, чтобы это было невозможно сделать

Да, это правда. И, в общем-то, почти ничего на нем нельзя написать. Даже hello world, для написания которого нужен unsafe буфер. А с unsafe там уже каждый стреляет себе в ногу как хочет.

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

Даже hello world, для написания которого нужен unsafe буфер

Какой ещё unsafe буфер? Даже если писать без stdlib единственным unsafe’ом в хелловорлде будут вызовы ядра или libc.

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

Угу, ну ты уловил мысль.

Хотя у Джавы ещё есть шансы на новые проекты.

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

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

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

Ход мыслей типичного менеджера в айти.

У болта нет внутренней резьбы. У болта как правило шестигранная головка под ключ. Отвертка бесполезна. Я только об этом.

При чем тут язык?

Язык при том, что исключения есть, но не используются. Соответственно, даже неудобно как-то Расту предъявлять, что он их совсем убрал. Ну можно ещё вспомнить про UB при использовании математических операторов. Это уже точно не библиотека.

Так-то есть питон, в котором почти нет языка

Если в Питоне языка нет, то что говорить о Расте? В Питоне и ООП с наследованием есть, и рефлексия, и нормальные исключения, лямбды и прочие списковые выражения. Да много чего. А что не прямо через синтаксис завезли, то через аннотации.

паскаль. Занесла не туда его вполне конкретная корпорация

Наследник Паскаля занимает 5-е место в TIOBE. Более десяти лет в лидерах по популярности. Правда внешне он больше на Си теперь похож. Так что с этой веткой всё нормально и пока корпорация всё верно делает.

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

И? Ты намекаешь, что там слоем ниже unsafe Asm? Так он там изолирован и к нему рядовых не допускают без разрешения от генерала. В отличие от условного Цпп, где кто как хочет жонглирует указателями и прочей цирковой эквилибристикой.

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

В таком случае, вообще бессмысленно сравнивать ЯП.

Если концепция или реализация чем-то лучше, то имеет смысл сравнивать.

Джава - это тоже такой типа С++

Было тут обсуждение с автором темы о C++ vs C#. Пришли к выводу, что для создания игр пока C++ лучше. Посмотрим, сможет ли Раст эту нишу отъесть. Пока вроде не особо стремится.

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

Серьёзно? Откуда такой пафос? Иногда достаточно sudo apt install cargo. Если нужна свежая версия, то взять инсталятор из https://forge.rust-lang.org/infra/other-installation-methods.html#standalone-... или установить онлайн

И всё это будет делать чел, который просто захотел потестить мой питоновый модуль. Я не спорю, что найдутся особо упертые, которые и аду установят, но в любом раскладе это сильно сложнее, чем pip install packagename.

Есть гарантии отсутствия несихронизированного доступа к разделяемым данным, то есть отсутствие data races

На самом деле их нет, потому что любой доступ к разделяемым данным — это unsafe операция, которая может быть выполнена как угодно, а потому ее корректность полностью зависит от кривизны unsafe-кода. И что это тогда за «гарантия» такая?

Гарантии отсутствия race conditions? А где они вообще есть?

Clojure.

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

Пришли к выводу, что для создания игр пока C++ лучше.

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

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

Как написать например вектор? В итоге кто-то должен выделить указатель памяти, нужно как-то читать и писать по индексам, переписать новый вектор при увеличении буфера через memcpy. Эти операции будут unsafe

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

Так у раста, которым заменяют плюсы, и который, якобы, может заменить Си, с временем компиляции (и потреблением памяти) не лучше. А это же язык, который разрабатывали с нуля. И в таких случаях ожидается, что будет учтён опыт предыдущих архитекторов

Я уже вижу перед собой собрание манагеров-лезбух из мозилы, как они обсуждают будущее проекта и разрабатывают для него фичи. Мол: никто до сих пор не делал безопасный язык, мы станем первыми разработчиками абсолютно безопасного языка, это убойная фича для маркетинга, мы завоюем мир. И в итоге они фокусируются на идее безопасности, по пути упуская вообще всё остальное, проходя по всем возможным граблям, как то удобство реализации компилятора и его скорость, удобство работы самого программиста с программой, удобство отладки, реализации высокоуровневых алгоритмов (ну то есть в расте этого нету) — про всё это разрабы раста забыли, мол «потом как-нибудь само дорастет».

И самое абсурдное в этом всём то, что помешанность на безопасности привела к тому, что на языке тупо ничего нельзя написать - ни хрюкнуть, ни пукнуть. Примерно как в хаскеле помешанность на теоретической чистоте привела к тому, что на нем нельзя написать код, интенсивно работающий с побочными эффектами. В итоге эта «фича» выстреливает в обратную сторону, приводя к появлению костылей вроде unsafe раста или unboxed типов и ccall хаскеля, работать с которыми не проще и не безопаснее, чем писать на Си — и в итоге программа на расте если и надежнее крестовой, то незначительно.

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

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

Так все крестовики так и делают. Проблема в том, что для достаточно большого проекта даже 50 ядер не спасают.

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

сделать подмножество Safe C++, в котором будет принципиально невозможно написать код с багами, и которого будет достаточно для написания 99% кода без потери производительности

А ты и в расте этого не сможешь добиться. На каждый чих тебе нужны unsafe контейнеры, где тот же Arc штатно допускает дедлок — это считается «безопасным» поведением.

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

учить сейчас C++ с нуля - это как учить Поскакаль. Поэтому непонятно, зачем его настойчиво пропагандировать

Нет смысла учить кресты, если ты — бездарный индус. Которые некоторое время назад лезли изо всех щелей в нишу C++, поскольку железо того времени не позволяло писать гуй на электроне. Торвальдс даже оправдывал запрет на кресты в ядре тем, что может протечь плотина с крестовыми кодерами и затопит всё ядро. А нынче на электроне железо писать позволяет — индусы щиманулись на электрон и SPA. Правда, настолько же бессмысленно нынче продвигать Rust — ниша у таких языков очень узкая, мало кому нужна сверхбыстрая программа с малым потреблением памяти, для 95% заказчиков 2-5-кратное замедление и повышение жора памяти вполне оправданы, если при этом снижаются затраты на разработку и сроки реализации.

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

Изначально речь шла про сиху, мол «и без корпораций выживет». Я напомнил, что сиха была и есть на дотациях у корпораций. Как и питон, как и линукс. PHP пока что мне видится исключением, одним из немногих, как и GCC — вот они реально без корпораций поднялись. Правда, активно GCC скатывается в говно, и перспективы там туманны.

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

Лол, как мне всегда доставляют плюсовики, которые гордятся своими мазохистскими склонностями) Это что-то типа гопничков с окраин, которые хвастаются тем, как бычки о ягодицы тушат)

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

Держи hello world на Rust без unsafe

println! магией реализовывается?

https://doc.rust-lang.org/src/std/io/stdio.rs.html

pub fn stdout() -> Stdout {
    static INSTANCE: SyncOnceCell<ReentrantMutex<RefCell<LineWriter<StdoutRaw>>>> =
        SyncOnceCell::new();
    ...
    Stdout {
        inner: Pin::static_ref(&INSTANCE).get_or_init_pin(
            || unsafe {
                let _ = sys_common::at_exit(cleanup);
                ReentrantMutex::new(RefCell::new(LineWriter::new(stdout_raw())))
            },
            |mutex| unsafe { mutex.init() },
        ),
    }
}

И это даже мы еще не дошли до системных вызовов, которые написаны на проклятом Си — это только стандартная либа раста.

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

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

Здесь более одного фактора, и я парой сообщений выше пояснил, что C++ в 90-х был в совершенно иной нише, нежели C++ и Rust в 2021. И к слову о «почему-то» — потому что Sun потратила несколько миллиардов долларов на маркетинг Java. В противоположность этому MS откусила кусок рынка не маркетингом, а качественной реализацией, и таким образом умудрилась войти в рынок, который уже, казалось бы, «захватила» Java. Захватила, да не смогла прожевать.

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

У болта нет внутренней резьбы. У болта как правило шестигранная головка под ключ. Отвертка бесполезна. Я только об этом

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

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

Мы о разных вещах спорим. Внутри и у Си, и у Раст, и у Джавы, и даже у Питона совсем небезопасные системные вызовы. А вопрос, кому больше доверять - разработчикам libc, девелоперам rustc или создателям интерпретатора Питона - это уже больше из разряда религии. Но вот шанс выстрелить в ногу при использовании Раст сильно меньше, особенно если использовать его как задумано авторами:

let a = unsafe { unsafe_func() };

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

Ты намекаешь, что там слоем ниже unsafe Asm? Так он там изолирован и к нему рядовых не допускают без разрешения от генерала. В отличие от условного Цпп, где кто как хочет жонглирует указателями и прочей цирковой эквилибристикой

Ты гениальную мысль подал: смысл Rust заключается в том, чтобы бить говнокодера по рукам компилятором и отыскивать хаки по ключевому слову unsafe. То есть, чтобы не сеньор сидел и просматривал код на предмет грязных хаков, написанных недобросоветсным индусом, а чтобы те же самые правила хорошего тона проверяла программа. Вроде линтера.

Ответственный кодер на крестах не будет жонглировать указателями. А безответственный будет и на расте гадить unsafe блоками где попало. Я еще видел эпичных ребят, которые каждую функцию оборачивали в try-catch.

То есть, по сути, Rust — это инструмент для организации индусопомойки. По крайней мере под таким соусом он «продавался» лезбухами из Mozilla своему начальству.

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

Было тут обсуждение с автором темы о C++ vs C#. Пришли к выводу, что для создания игр пока C++ лучше. Посмотрим, сможет ли Раст эту нишу отъесть

Сам же и писал, что каждый язык должен служить своей цели. Unity написан на C++, но скриптуется на C#. Особенно сейчас, когда уже кучу игр пишется на Java. Конечно, не на оригинальной от Sun, на которой писать GUI бессмысленно, а на андроидной модификации от гугла.

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