Пользователи твоей либы сплошь гентушники? Зачем им компилировать её каждый день
А как ты под питон сделаешь дистр? Его нужно компилировать под каждый питон, или как минимум сделать прокладку, как в TensorFlow, которая дергает функции писанной на чужеродном языке либы.
Прямо даже не знаю, где найти массово используемые утюги, на которых бы не было компилятора Раст
Любой ARM без линя. В том числе армовая винда. Да и по поводу линя не всё так ясно, потому что лини тоже есть разные.
Единый репозиторий пакетов, единую систему сборки проекта и документации, единую систему тестирования
Давай я немного перефразирую то же: только один репозиторий пакетов, только одна система сборки и документации, только одна система тестирования. И всё это можно оправдать малой популярностью, и , следовательно, развитостью этих инструментов. Напоминаю, что C/C++ развивалось в то время, когда никаких интернетов еще не было. Как только у тебя возникает требование независимости сборки от третьих сторон, то у тебя тут же начинается некоторая фрагментация. А там еще и другие ЯП подключаются, и кастомное тестирование.
оптимизированный паттерн-матчинг, офигенные перечисления, единую систему типов, мощный вывод типов, гибкие типажи, благодаря которым можно с литералами обращаться, как в скриптухе - вызывая методы и вот это всё
Я это кратко упомянул. Это приятно, но у этого слишком большая цена, любители подобного сахарка чаще предпочитают какой-нибудь Go.
Я даже молчу про куда большие гарантии компилятора. Например, целочисленное переполнение или куда более строгое приведение типов. Сишники считают, что они за всем уследят, но человеческий фактор играет роль даже в значительно более автоматизированных системах
А вот это реальный плюс. Но вот беда: если ты работаешь с разделяемыми данными, то этот плюс множится на ноль директивой unsafe. Которая единственная позволяет работать с разделяемыми данными.
Ну и Раст тупо приятнее разумным сочетанием привычного всем Си-подобного синтаксиса и уместными заимствованиями из функциональных языков
Да, но этот фактор вообще никого не волнует. кроме архитекторов hello world-а.
«Когда говорят про С++, имеют ввиду код без предупреждений и код который не выдаёт ошибок под санитайзерами.»
Вот когда добьёшься, чтобы такого кода в C++ проекте было очень мало, при этом остальной код работал магическим образом без багов, тогда сумеешь.
Причём я даже подозреваю, что для С++ это сделать можно, просто пока ни у кого не получилось. Т.е. сделать подмножество Safe C++, в котором будет принципиально невозможно написать код с багами, и которого будет достаточно для написания 99% кода без потери производительности. И когда это сделают, когда это станет достаточно распространённым, тогда C++ сможет хотя бы в теории рассчитывать догнать Rust.
Тогда за дело взялся Rust и просто выкинул все исключения.
И? Не обработку же ошибок выкинул, а исключения?
Проблема плюсовиков в том, что они хотят С++ своей мечты. Но Раст не ЦПП,он концептуально сильно отличается. Отсюда разочарования по поводу исключений, иерархии наследования, и т. д.
Ок, убедил. Убедил в том, что своя малюсенькая ниша у ЦПП ещё есть. Правда, и это справедливо лишь в отношении legacy. Ну то есть учить сейчас C++ с нуля - это как учить Поскакаль. Поэтому непонятно, зачем его настойчиво пропагандировать.
Проблема плюсовиков в том, что они хотят С++ своей мечты. Но Раст не ЦПП,он концептуально сильно отличается. Отсюда разочарования по поводу исключений, иерархии наследования, и т. д.
Разве кто-то доказал, что такая концепция лучше? Если нет, то тут нельзя сказать, что C++ устарел и вместо него теперь Раст. Тогда это просто два разных инструмента на выбор разработчика (если есть выбор).
молотком вкрутить болт всё-таки будет проще, чем отвёрткой
Ход мыслей типичного менеджера в айти. Дальше следовало бы завести спор на тему того, стоит ли брать молоток или кувалду, после чего взять одну и ту же модель молотка и начать спорить, стоит ли его называть молотком или это уже кувалда.
Например, никогда нельзя быть уверенным, сгенерируется ли исключение при ошибке в использовании библиотечной функции. Надо читать подробности по каждой функции Вот таких мелочей много и потому ещё язык сложный
При чем тут язык? Так-то есть питон, в котором почти нет языка, но зато ограмная стандартная либа, которая будет посложнее крестовой.
Можно было бы почистить и получить D. Но D не удержался и зачем-то добавил сборщик мусора. Тогда за дело взялся Rust и просто выкинул все исключения. Зато напихал всякой новомодной ерунды. Swift туда же (возможно, ты на него намекал). Не могут просто почистить плюсы, всё время куда-то заносит
Ты назвал только самые популярные. Еще всякие там Zig, Ponylang, и прочие — десятки их. Я могу назвать ультимативный язык, который занесло не туда, и который старше крестов — это паскаль. Занесла не туда его вполне конкретная корпорация. Конечно, можно еще поспорить о том, что если бы не эта корпорация, то говноеды бы никогда и не узнали про паскаль.
Опять херню вещаем? В прошлой теме показали, что любую ошибку на С++ можно повторить на Rust. Как например разыменование нулевого указателя.
Враньё, конечно же. Rust для того и придумали, чтобы это было невозможно сделать
Да, это правда. И, в общем-то, почти ничего на нем нельзя написать. Даже hello world, для написания которого нужен unsafe буфер. А с unsafe там уже каждый стреляет себе в ногу как хочет.
В таком случае, вообще бессмысленно сравнивать ЯП. Джава - это тоже такой типа С++, но без указателей и компилируется в байт-код. Но вот почему-то за несколько лет хорошо так отъела от сектора С++.
У болта нет внутренней резьбы. У болта как правило шестигранная головка под ключ. Отвертка бесполезна. Я только об этом.
При чем тут язык?
Язык при том, что исключения есть, но не используются. Соответственно, даже неудобно как-то Расту предъявлять, что он их совсем убрал.
Ну можно ещё вспомнить про UB при использовании математических операторов. Это уже точно не библиотека.
Так-то есть питон, в котором почти нет языка
Если в Питоне языка нет, то что говорить о Расте? В Питоне и ООП с наследованием есть, и рефлексия, и нормальные исключения, лямбды и прочие списковые выражения. Да много чего. А что не прямо через синтаксис завезли, то через аннотации.
паскаль. Занесла не туда его вполне конкретная корпорация
Наследник Паскаля занимает 5-е место в TIOBE. Более десяти лет в лидерах по популярности. Правда внешне он больше на Си теперь похож. Так что с этой веткой всё нормально и пока корпорация всё верно делает.
И? Ты намекаешь, что там слоем ниже unsafe Asm? Так он там изолирован и к нему рядовых не допускают без разрешения от генерала. В отличие от условного Цпп, где кто как хочет жонглирует указателями и прочей цирковой эквилибристикой.
В таком случае, вообще бессмысленно сравнивать ЯП.
Если концепция или реализация чем-то лучше, то имеет смысл сравнивать.
Джава - это тоже такой типа С++
Было тут обсуждение с автором темы о C++ vs C#. Пришли к выводу, что для создания игр пока C++ лучше. Посмотрим, сможет ли Раст эту нишу отъесть. Пока вроде не особо стремится.
И всё это будет делать чел, который просто захотел потестить мой питоновый модуль. Я не спорю, что найдутся особо упертые, которые и аду установят, но в любом раскладе это сильно сложнее, чем pip install packagename.
Есть гарантии отсутствия несихронизированного доступа к разделяемым данным, то есть отсутствие data races
На самом деле их нет, потому что любой доступ к разделяемым данным — это unsafe операция, которая может быть выполнена как угодно, а потому ее корректность полностью зависит от кривизны unsafe-кода. И что это тогда за «гарантия» такая?
Гарантии отсутствия race conditions? А где они вообще есть?
Как написать например вектор? В итоге кто-то должен выделить указатель памяти, нужно как-то читать и писать по индексам, переписать новый вектор при увеличении буфера через memcpy. Эти операции будут unsafe
Так у раста, которым заменяют плюсы, и который, якобы, может заменить Си, с временем компиляции (и потреблением памяти) не лучше. А это же язык, который разрабатывали с нуля. И в таких случаях ожидается, что будет учтён опыт предыдущих архитекторов
Я уже вижу перед собой собрание манагеров-лезбух из мозилы, как они обсуждают будущее проекта и разрабатывают для него фичи. Мол: никто до сих пор не делал безопасный язык, мы станем первыми разработчиками абсолютно безопасного языка, это убойная фича для маркетинга, мы завоюем мир. И в итоге они фокусируются на идее безопасности, по пути упуская вообще всё остальное, проходя по всем возможным граблям, как то удобство реализации компилятора и его скорость, удобство работы самого программиста с программой, удобство отладки, реализации высокоуровневых алгоритмов (ну то есть в расте этого нету) — про всё это разрабы раста забыли, мол «потом как-нибудь само дорастет».
И самое абсурдное в этом всём то, что помешанность на безопасности привела к тому, что на языке тупо ничего нельзя написать - ни хрюкнуть, ни пукнуть. Примерно как в хаскеле помешанность на теоретической чистоте привела к тому, что на нем нельзя написать код, интенсивно работающий с побочными эффектами. В итоге эта «фича» выстреливает в обратную сторону, приводя к появлению костылей вроде unsafe раста или unboxed типов и ccall хаскеля, работать с которыми не проще и не безопаснее, чем писать на Си — и в итоге программа на расте если и надежнее крестовой, то незначительно.
сделать подмножество Safe C++, в котором будет принципиально невозможно написать код с багами, и которого будет достаточно для написания 99% кода без потери производительности
А ты и в расте этого не сможешь добиться. На каждый чих тебе нужны unsafe контейнеры, где тот же Arc штатно допускает дедлок — это считается «безопасным» поведением.
учить сейчас C++ с нуля - это как учить Поскакаль. Поэтому непонятно, зачем его настойчиво пропагандировать
Нет смысла учить кресты, если ты — бездарный индус. Которые некоторое время назад лезли изо всех щелей в нишу C++, поскольку железо того времени не позволяло писать гуй на электроне. Торвальдс даже оправдывал запрет на кресты в ядре тем, что может протечь плотина с крестовыми кодерами и затопит всё ядро. А нынче на электроне железо писать позволяет — индусы щиманулись на электрон и SPA. Правда, настолько же бессмысленно нынче продвигать Rust — ниша у таких языков очень узкая, мало кому нужна сверхбыстрая программа с малым потреблением памяти, для 95% заказчиков 2-5-кратное замедление и повышение жора памяти вполне оправданы, если при этом снижаются затраты на разработку и сроки реализации.
Изначально речь шла про сиху, мол «и без корпораций выживет». Я напомнил, что сиха была и есть на дотациях у корпораций. Как и питон, как и линукс. PHP пока что мне видится исключением, одним из немногих, как и GCC — вот они реально без корпораций поднялись. Правда, активно GCC скатывается в говно, и перспективы там туманны.
Лол, как мне всегда доставляют плюсовики, которые гордятся своими мазохистскими склонностями) Это что-то типа гопничков с окраин, которые хвастаются тем, как бычки о ягодицы тушат)
В таком случае, вообще бессмысленно сравнивать ЯП. Джава - это тоже такой типа С++, но без указателей и компилируется в байт-код. Но вот почему-то за несколько лет хорошо так отъела от сектора С++
Здесь более одного фактора, и я парой сообщений выше пояснил, что C++ в 90-х был в совершенно иной нише, нежели C++ и Rust в 2021. И к слову о «почему-то» — потому что Sun потратила несколько миллиардов долларов на маркетинг Java. В противоположность этому MS откусила кусок рынка не маркетингом, а качественной реализацией, и таким образом умудрилась войти в рынок, который уже, казалось бы, «захватила» Java. Захватила, да не смогла прожевать.
У болта нет внутренней резьбы. У болта как правило шестигранная головка под ключ. Отвертка бесполезна. Я только об этом
Отсутствие внутренней резьбы — это формальности, которые можно исправить. Наймем индусов с аутсорса, они нарежут где надо резьбу — не проблема, лишь бы можно было дальше пользоваться надежными и проверенными инструментами. И лишь бы на нас не перевели стрелки, что это из-за наших нововведений сломался техпроцесс.
Мы о разных вещах спорим. Внутри и у Си, и у Раст, и у Джавы, и даже у Питона совсем небезопасные системные вызовы. А вопрос, кому больше доверять - разработчикам libc, девелоперам rustc или создателям интерпретатора Питона - это уже больше из разряда религии. Но вот шанс выстрелить в ногу при использовании Раст сильно меньше, особенно если использовать его как задумано авторами:
Ты намекаешь, что там слоем ниже unsafe Asm? Так он там изолирован и к нему рядовых не допускают без разрешения от генерала. В отличие от условного Цпп, где кто как хочет жонглирует указателями и прочей цирковой эквилибристикой
Ты гениальную мысль подал: смысл Rust заключается в том, чтобы бить говнокодера по рукам компилятором и отыскивать хаки по ключевому слову unsafe. То есть, чтобы не сеньор сидел и просматривал код на предмет грязных хаков, написанных недобросоветсным индусом, а чтобы те же самые правила хорошего тона проверяла программа. Вроде линтера.
Ответственный кодер на крестах не будет жонглировать указателями. А безответственный будет и на расте гадить unsafe блоками где попало. Я еще видел эпичных ребят, которые каждую функцию оборачивали в try-catch.
То есть, по сути, Rust — это инструмент для организации индусопомойки. По крайней мере под таким соусом он «продавался» лезбухами из Mozilla своему начальству.
Было тут обсуждение с автором темы о C++ vs C#. Пришли к выводу, что для создания игр пока C++ лучше. Посмотрим, сможет ли Раст эту нишу отъесть
Сам же и писал, что каждый язык должен служить своей цели. Unity написан на C++, но скриптуется на C#. Особенно сейчас, когда уже кучу игр пишется на Java. Конечно, не на оригинальной от Sun, на которой писать GUI бессмысленно, а на андроидной модификации от гугла.