Это копия, сохраненная 3 мая 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.
Ссылка на официальный сайт: https://www.rust-lang.org/
В этом ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
IDE для Rust: https://areweideyet.com/
GUI для Rust: http://www.areweguiyet.com/
Web для Rust: https://www.arewewebyet.org/
GayDev для Rust: https://arewegameyet.rs/
Что еще есть для Rust?
- Посмотри сам: https://wiki.mozilla.org/Areweyet
Основная литература:
Rust Book(версия на русском языке): https://doc.rust-lang.ru/book/
Rust Book: https://doc.rust-lang.org/book/
Rust by Example: https://doc.rust-lang.org/rust-by-example/
The Rustonomicon(для продвинутых анонов): https://doc.rust-lang.org/nomicon/
Programming Rust: https://www.oreilly.com/library/view/programming-rust/9781491927274/
Ресурсы на русском:
https://rust-lang.ru/
Отдельное спасибо автору этого гитхаба(старому ОПу). Здесь вы сможете найти много полезной информации: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41
Предыдущий: >>2430103 (OP)
http://arhivach.ng/thread/833033/
Пожалуйста, не надо
Эти жалкие попытки реанимировать тред. Готовы даже струю мочи получить, лишь бы движуха хоть какая-то была
Как осилить писать на СИ?
Хочешь с концами в трапование deep dive тк скзть?
>>491288
>Увидел новость, что в библиотеке, которую использует gpg нашли уязвимость из-за проблем работы с памятью
>Хочешь скачать переписанную на раст библиотеку, ведь по заявлению разработчиков там не должно быть проблем подобного класса
> Видишь пикрил и понимаешь, что даже без наличия проблем с памятью у тебя будет зонд.
Ленточки ленточками, но мне не нравится, что на многих раст проектах такая херня. Не язык, а политическая партия, блядь.
>Не-не, пошли они нахуй. Зачем мне проект, которым управляют дегенераты, которые не имеют своего мнения и следуют любой повесточке?
Ну и не пользуйся тогда или форкай пили своё, хули ты от опенсорса ждешь как от интерпрайза
Так я и не пользуюсь, лол. Просто говорю, что по каким-то причинам среди растоманов таких долбоебов больше.
>Аполитичных людей?
>BLM
>COVID
>help ukraine
>etc
Ага, очень. Куда ветер дунет, туда они и аполитичны.
>>493115
>Я ведь говорил что в тред придут душевнобольные
Можешь самочтоятельно в этом убедиться. Открой гитхаб и отфильтруй по расту. Почти каждый проект имеет какую-то агитацию на своей страничке и написан транс-вертолетами.
https://zed.dev/
Шизик🐽, спок. Тебе в палату.
А кто ебет? Там кроме обещаний и всратых анимаций ничего нет. Даже прогу не потрогать пока что на мыло им не напишешь.
Алсо, nvim/emacs такой проблемы лишены.
> but sometimes you just want to code together
А как? Зачем? В чём вообще прикол? Какой профит?
> code together
Типа это модно сейчас, жыдбрейнс такой же хуйней страдают, но все как обычно работают в гитлабе/гитхабе и ссут на код друг друга в комментариях
Какие подводные если позаимствую в свой пет проект кусочки кода из готового проекта ООО Рога и Копыта? Код закрытый не спрашивайте как он ко мне попал, но у них очень годные идеи и они придумали алгоритмы которые мне как раз и нужны. Есть опен сурс проекты на эту же тему, но там всё намного хуже и проще. Интересуют следующие кейсы:
1) Если мой проект будет использовать ограниченное кол-во людей и код не будет опубликован
2) Если мой проект будет использовать ограниченное кол-во людей и код будет опубликован
Вы охуели, тред совсем утонул кое как нашёл.
Но, но, но, я вас попрошу не забывать.
С апреля этого года еще и обертка над GCC тоже! Может rustc бутстрапнуть.
Тот даун думает, что в расте динамическая типизация.
>1) Если мой проект будет использовать ограниченное кол-во людей и код не будет опубликован
Теоретически никто не будет сравнивать ассемблер, особенно если пользоваться этим будет два землекопа. Главное версию с отладочными данными не публикуй. А вот если распространится дальше, да еще и у вас будут одинаковые баги, то тайное всегда может стать явным и тебя реально могут взять за жопу.
> и они придумали алгоритмы которые мне как раз и нужны.
Уверен что это они придумали, может в основе лежит какая-то общая научная работа? Тогда хотя бы сможешь её прочитать и переписать под свой код.
>Там действительно что-ли надо для каждого ответа делать свою структуру?
Не знаю как в рокете, но в том же фастапи так же, не? Отвечаешь структурами из pydantic-а
>fastapi
Там ты на входе модели делаешь. На выход голый словарь можешь отдать, который внутри фастапи сделается сериализованным
Что-то документация с веткой не совпадает
Если модуль в той же папке, то имя модуля совпадает с именем файла, если в дочерней, то с именем папки, а сам файл должен называться mod.rs. При этом ты можешь из любого файла написать crate::foo::bar::*; и всё найдется.
Discord
>Там действительно что-ли надо для каждого ответа делать свою структуру?
Не надо, читай доку, там можно вернуть любую хуйню https://rocket.rs/v0.5-rc/guide/responses/#responses
Короче для продакшена полная залупа и лучше использовать actix. Сам фреймворк еще нормальный, но вот все либы для него сущий пиздец пре-альфа версии
Если бы кто-то сказал мне, что это удобный способ импорта по сравнению с другими языками, я бы выколол ему глаза и пальцы переломал.
Лучше уж use crate:: юзать
Надеюсь тебе никто ничего не накидает, надоело уже жидкий стул завистников наблюдать.
Просто помни, если для тебя на первом месте при проектировании программы стоят скорость исполнения и корректность программы (причем первое также важно как и второе), то из мейнстримных языков это теперь раст.
Так я не провокатор, я правда хочу разобраться в этом.
Но ведь это чистая правда
Или эт секта такая?
В чем суть холивара тогда?
То что С и С++ небезопасный и нужно срочно переходить на раст.
Тебя от переполнения стека вообще ни один язык не спасёт, о ц/++ небезопасные не из-за него.
Если кратко — потому что система типов, система владения, система лайфтаймов и куча статического анализа поверх этого на уровне языка, и всё это не позволяет тебе простреливать ноги.
Если подробно — смысла объяснять нет, потому что ты не зная банально что такое стек всё равно нихуя не поймёшь.
>Я попросил материалов, где объяснят это. Мне никто нихуя не скинул.
Ну вот тебе статейки с +- подробным описанием, но без закапывания в детали:
https://tiemoko.com/blog/blue-team-rust/
https://blog.getreu.net/projects/embedded-system-security-with-Rust/
Можешь почитать про приколы плюсов, например, чтобы понимать что не так конкретно с ними:
https://en.cppreference.com/w/cpp/language/ub
https://habr.com/ru/company/otus/blog/594557/
https://habr.com/ru/post/216189/
>Before going into the details of the new Rust release, we'd like to draw attention to the tragic death of Mahsa Amini and the death and violent suppression of many others, by the religious morality police of Iran. See https://en.wikipedia.org/wiki/Mahsa_Amini_protests for more details. We stand in solidarity with the people in Iran struggling for human rights.
Это точно язык программирования, а не политическая партия?
>Это точно язык программирования, а не политическая партия?
Опенсорс всегда был политическим движением, с добрым утром.
Не-не-не, даже главный идеолог швабодки Штульман срет политотой у себя на личной страничке, а ресурсы проекта ГНУ(как и многих других проектов, например, openbsd, freebsd, llvm, ziglang, suckless, common lisp и т.д.) посвящены только самим проектам и всему, что с ними связано. А вот те пидорасы, которы срут политотой на главных ресурсах своих проектов это вообще не люди. Когда видишь такое, то сразу появляется чувство, что тебе втирают какую-то дичь. И всегда все по-классике, Х - хорошо, а вот У - плохо, просто верь нам. Какое дело это имеет к проекту? Хуй знает. Есть у меня одно опасение, которое я позже проверю, а именно посмотрю не спонсирует ли Раст Фоундейш один известный фонд, который по странному течению обстоятельств спонсирует оппозицию в России, Иране, Казахстане, Украине и Белоруссии.
Сам опенсорс политический, пчел, и всегда был. Пишут они или не пишут на какие-то другие политические темы, никакого значения не имеет — он уже сам по себе чисто политическое движение, за всё хорошее, против всего плохого, свобода, равенство и братство.
Это не для тебя написано, а для белых людей. Удивительно, что ты вообще это прочитать смог.
> Пишут они или не пишут на какие-то другие политические темы, никакого значения не имеет
Попенсорс - это течение только в одной области, в области компухтерных технологий, поэтому рамки дозволенного всегда должны быть. Просто говорю, что есть адекватные люди, которые понимают почему важно соблюдать гигиену в профессиональной среде, а есть дегенераты, которые срут у себя дома. Раст, к сожалению, из вторых..
>>505863
Причина подрыва?
>Попенсорс - это течение только в одной области
Это твоё мнение, не все его обязаны придерживаться. Как бы то ни было, это течение именно политическое.
>поэтому рамки дозволенного всегда должны быть
Которые они сами для себя определяют. Свобода самопределения едва ли не важнейшая часть той политической свободы, за которую боролось и борется опенсорс движение.
>Просто говорю, что есть адекватные люди, которые понимают почему важно соблюдать гигиену в профессиональной среде, а есть дегенераты, которые срут у себя дома.
Если тебе что-то не нравится, то в опенсорсе издревле достпен способ для тебя выразить это недовольство, при этом ничего не потеряв в этой точке времени — форк.
Вон кому-то не нравилось название GIMP, потому считали его слишком политически некорректным, они сделали форк с другим.
>Вон кому-то не нравилось название GIMP, потому считали его слишком политически некорректным, они сделали форк с другим.
Не так это было. Они сделали форк и на титульной странице выставили счет для пожертвований болдом. Через какое-то время удалили этот счет и написали что закрыли донейшны.
Вопрос - что они добавили в опенсорс?
Основной причины чего? И в чём она?
Вышла статья с обоссыванием выпука Столярова и его протыков.
скорее всего раст не может генерировать вкусные хинты для llvm которые могут позволить не делать например баундчеков
Это ограничение бэкендов GCC и LLVM https://github.com/rust-lang/rust/issues/71997
> alex commented on Apr 8, 2021
>Converted to C++ (turned out basically identical to @joshtriplett's) and filed as an llvm optimizer bug: https://bugs.llvm.org/show_bug.cgi?id=49885
> jrmuizel commented on Apr 8, 2021
>I filed a gcc bug for fun too: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99966
В GCC пофиксили, а в LLVM даже не обратили внимание на issue. Кстати, уже готов GCC rust бэкенд, который может собрать компилятор rust. Часто можно было наблюдать в этих тредах нытье что нет бэкенда GCC. Работа спонсируется.
#[derive(Debug, Serialize)]
struct A {
___field1: u32
___ ?????
}
Как сделать чтоб было поле, в которое можно пропихнуть произвольную сериализуемую структуру? Или как это правильно делается?
Чтоб можно было A {field1: 128, .... }
А то как понял, нельзя сделать какую-то базовую структуру, от неё наследоваться, и потомка передать.
Супертрейты помогут?
Есть какой-то пример, где вот это вот оправдано?
Структура, она на то структура, что всё гвоздями приколочено.
Если тебе нужно записать куда-то кучу разных структур, то ты или подумай над тем, как сделать их не очень разными и привести к одной, или пропихивай в виде Vec<u8>, а в материнской пиши конкретный тип.
>Нахуя так синтаксис загромождать?
В смысле? Это стандартный синтаксис, который разрешили в правую часть выражения писать. Стандартный синтакиси в любом случае нужен, то есть он всегда будет. А ты предлагаешь ещё к стандартному синтаксису лямбды придумать? Кто тогда синтаксис загромождает, ммм?
Я про break с возвратом значения.
Например, на лямбдах оно бы выглядело как-то так
let result = (|| {
return 1;
})();
немного кучеряво, но хотя бы единообразно. А тут на каждый чих синтаксический сахарок, скоро только для синтаксиса отдельная книжка понадобится.
А, тогда не знаю. Скорее всего подсказка компилятору, чтобы убрать вызов функции.
>скоро только для синтаксиса отдельная книжка понадобится
k&r весь о синтаксисе
Если у тебя блок 'blockInner находится внутри 'blockOuter и ты хочешь по-быстрому выйти из 'blockOuter.
#[derive(Debug)]
struct RealParent {
id: u32
}
impl Parent for RealParent {
fn id(&self) -> u32 {
self.id
}
fn foo(&self) {
println!("bar");
}
}
impl Serialize for RealParent {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer
{
let mut s = serializer.serialize_struct("RealParent", 1)?;
s.serialize_field("id", &self.id())?;
s.end()
}
}
trait Parent: Serialize {
fn id(&self) -> u32;
fn foo(&self);
}
#[derive(Debug, Serialize)]
struct Child<P: Parent> {
id: u32,
parent: P
}
#[test]
fn test_shitty_inheritance() {
let parent = RealParent { id: 123 };
let child: Child<RealParent> = Child { id: 228, parent };
println!("Child: {}", serde_json::to_string(&child).unwrap());
// выводит Child: {"id":228,"parent":{"id":123}}
}
Вот тебе идея
#[derive(Debug)]
struct RealParent {
id: u32
}
impl Parent for RealParent {
fn id(&self) -> u32 {
self.id
}
fn foo(&self) {
println!("bar");
}
}
impl Serialize for RealParent {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer
{
let mut s = serializer.serialize_struct("RealParent", 1)?;
s.serialize_field("id", &self.id())?;
s.end()
}
}
trait Parent: Serialize {
fn id(&self) -> u32;
fn foo(&self);
}
#[derive(Debug, Serialize)]
struct Child<P: Parent> {
id: u32,
parent: P
}
#[test]
fn test_shitty_inheritance() {
let parent = RealParent { id: 123 };
let child: Child<RealParent> = Child { id: 228, parent };
println!("Child: {}", serde_json::to_string(&child).unwrap());
// выводит Child: {"id":228,"parent":{"id":123}}
}
Вот тебе идея
Блоо, тут пробелы съедаются. В общем, вставишь в редактор кода
И помимо этого RealParent можешь сколько угодно таких насоздавать реализующих трейт Parent и их туды подставлять. Родитель1, Родитель2 и т.д. ;)
Вот в виде скрина пусть ещё будет. Ну и ещё одну деталь незначительную поменял
Ну и до кучи ещё более лаконичный вариант
Вот это норм кстати вариант
https://habr.com/ru/news/t/699142/
Ебало белых натуралов пишущих на крестах представили?
Для тех, кто думает изучать раст. Почитайте объективные независимые мнения программистов об этом языке, чтобы прочувствовать всю суть языка. Это также вам поможет понять, как к вам будут относиться другие программисты, после того, как вы начнёте изучать язык и программировать на нём. Предупреждён, значит вооружён!
Baiker (rsdn.ru):
Что предлагает Раст? Во-первых, НИЧЕГО, что повысило бы работоспособность/удобство написания программ вообще и во-вторых, "танцы на льду на роликовых ходулях" в качестве управления памятью. Какой дурачок на это купится?? Растаманы сейчас — это что-то сродни "свидетелей Иеговы", только их(растаманов) сейчас не сразу закидывают говном. Но закидывают. Ибо достали совать свою ржу и в рот, и в другие отверстия.
velkin (rsdn.ru):
в идеале любые проекты нужно начинать на C/C++, вот моё мнение. Более того, раньше раздавались робкие голоса в пользу C/C++, потому что самые крутые проекты сделаны на них.
B0FEE664 (rsdn.ru):
Язык, в котором нельзя наследовать данные не нужен.
Новый язык в котором переменные не константы по умолчанию не нужен.
Язык в котором есть println нужен исключительно для обучения.
Новый язык в котором нет автоматического распараллеливания выполнения не нужен.
kaa.python (rsdn.ru):
Язык программирования в котором разработчик выполняет работу компилятора по доказанию клрректности времени жизни объектов — это нонсенс.
Kolesiki (rsdn.ru):
Разве "Раст" — это не такая же тухлая тема, как МММ? ДАВНО уже стало ясно (ещё с первых недель появления ржавчины в Тырнетах), что язык — полное гогно. Вернее, его изящно закамуфлированная "мозго_й_опка с памятью", которую разрабы аккуратно вывалили на бедного погромизда.
...
И поняв, что это гогно "никак не взлетает", по форумам стали запускать "Лёней Голубковых", которые враньём/агитацией макают всех в свои ржавые помои. Собственно, даже обсуждение "какое это гогно" — косвенная агитация и излишний хайп/цитируемость к этому дерьму. (вот почему минус) Может, хорош уже насиловать стюардессу?! Один раз закопали — И ХВАТИТ!
http://rustmustdie.com/ :
Этот язык пропитан ложью: он пытается быть низкоуровневым, несмотря на невероятно высокоуровневую природу; пока он претендует, что не включает в себя сборщики мусора, его сообщество активно их использует; он забывает о последовательных программах в погоне за параллельными, и в итоге весь код становится писать сложней; он заявляет о том, что даcт прекрасные макросы, а на деле подсовывает лишь неудобное подобие, при этом существенно замедляющее время компиляции всех программ. Это язык-монстр, но ещё страшней его сообщество.
...
Особо стоит подчеркнуть, что сборщик мусора встроен в стандартную библиотеку, которая неотделима от самого языка, а потому заявления, что Rust — это якобы язык без сборки мусора, — лживы.
...
гениальные разработчики этого языка встроили асинхронную версию сборщика мусора, с тем подвохом, что его содержимое должно быть неизменяемым. Итого в Rust уже даже не один, а два сборщика мусора!
Аноним (opennet.ru):
Да его больше пиарят, чем пилят. Эту новшество во все щели пихают, не останавливаясь не перед чем, и стараясь полить говном все остальные языки. Уже в ядро Linux пытаются подсунуть, лишь бы обратить на него внимание. Эти дебильноватые маркетологи похоже просто не понимают,что таким образом внушает отвращение к этому, и без того муторному, языку.
Аноним (opennet.ru):
Rust как презерватив, вроде безопасно, а дети все равно появляются
Аноним (opennet.ru):
Смотришь его синтаксис и будто наматываешься на колючую проволоку.
Аноним (opennet.ru):
Раньше я думал, что C++ уродливый, закостыленный язык. Но потом я познакомился с Rust
Аноним (opennet.ru):
Безопасные языки программирования нужны тем, кто программировать не умеет.
Аноним (opennet.ru):
Настоящим программистам проверки компилятора не нужны, а тем кто программировать не может никакой rust не поможет, наоборот, они будут уверены что пишут безопасный код без ошибок под действием синдрома Даннинга Крюгера и только всё испортят.
Аноним (opennet.ru):
Отличный язык для прототипирования! Низкоквалифицированные люди пишут черновики функционала, которые квалифицированные инженеры смогут переписать на Си быстрее чем с нуля разрабатывать
Старый аноним (opennet.ru):
Rust — еще и очень полезный язык. Так как он вызывает у программистов рвотный рефлекс, что не дает программистам набрать лишний вес, а значит — продляет жизнь программиста.
истина в последней инстанции (opennet.ru):
Ни одного стоящего проекта, ни одной стоящей IDE.
Так забавно смотреть как трепыхаются в бессилии хрюши неосиляторы нормальных языков и элементарных указателей. Тратьте и дальше свою жизнь на ущербное мертвораждённое.
Аноним (opennet.ru):
когда нельзя создать программистов, пишущих более качественный код, приходится создавать язык, более толерантный к качествам программистов.
Аноним (opennet.ru):
Rust, вне зависимости от его технических характеристик, это просто средство продвижения SJW специфических людей.
Гнать в шею ребят.
Сергей (opennet.ru):
Я не скажу что Rust *авно, но мне кажется, что его появление отразило нынешний уровень извилин и квалификации имеющихся кодеров, чем он будет ниже, тем будет больше фреймворков и языков, ориентированных на этот уровень...
Аноним (opennet.ru):
Да и в целом, раст — это синоним слову безопасность. Ну и память — с памятью работать стало безопаснее. Потому что используется безопасный раст. Безопасность достигается при помощи безопасных конструкций безопасного языка и безопасной работы с безопасной памятью, чтобы безопасные программы были еще безопаснее.
Аноним (opennet.ru):
Кодинг на rust это зашквар и показатель профнепригодности. По своей убогости rust уже давно догнал java.
Настоящие программисты это только те, кто пишут на ANSI C и ASM, кодеры на скриптухе программистами считаться не могут по определению.
szt1980 (opennet.ru):
Смузи-поделка с невменяемым синтаксисом — очередное ненужно. Неосиляторы C/C++ с завидным упорством пытаются изобрести велосипед, но выходит он у них с квадратными колесами и без седла. Корпорации неосиляторам дали Checked C — юзай ptr<T>, array_ptr<T>, nt_array_ptr<T> — не, не хочу, хочу жрать ржавую лажу. И это разработчики?
Андрей (opennet.ru):
Почему код раста читается хуже сообщений об ошибках компилятора С...
Да даже ошибки компилятора С++, просто Господи, выглядят структурней кода на расте.
Аноним (opennet.ru):
Нормальный человек таким синтаксисом пользоваться не будет. Остаются только те кто не уважают сами себя. А так как они не уважают себя они не уважают и окружающих.
wyry (opennet.ru):
Только и Basic и C и Pascal сами по себе во всём лучше Rust. Вот кстати если бы Pascal вышел бы СЕЙЧАС, он бы запросто реально мог претендовать на место безопасного и простого языка для работяг. В нём в отличие от лицемерного Rust даже UB нет by design.
wyry (opennet.ru):
Они создали Rust чтобы люди сильнее полюбили C++ и ценили то что имеют
wyry (opennet.ru):
Язык умер так и не родившись... сейчас любой стартап пишется на Go с последующим переездом на C++... для кого эти новости? Письма мертвеца ей богу
Для тех, кто думает изучать раст. Почитайте объективные независимые мнения программистов об этом языке, чтобы прочувствовать всю суть языка. Это также вам поможет понять, как к вам будут относиться другие программисты, после того, как вы начнёте изучать язык и программировать на нём. Предупреждён, значит вооружён!
Baiker (rsdn.ru):
Что предлагает Раст? Во-первых, НИЧЕГО, что повысило бы работоспособность/удобство написания программ вообще и во-вторых, "танцы на льду на роликовых ходулях" в качестве управления памятью. Какой дурачок на это купится?? Растаманы сейчас — это что-то сродни "свидетелей Иеговы", только их(растаманов) сейчас не сразу закидывают говном. Но закидывают. Ибо достали совать свою ржу и в рот, и в другие отверстия.
velkin (rsdn.ru):
в идеале любые проекты нужно начинать на C/C++, вот моё мнение. Более того, раньше раздавались робкие голоса в пользу C/C++, потому что самые крутые проекты сделаны на них.
B0FEE664 (rsdn.ru):
Язык, в котором нельзя наследовать данные не нужен.
Новый язык в котором переменные не константы по умолчанию не нужен.
Язык в котором есть println нужен исключительно для обучения.
Новый язык в котором нет автоматического распараллеливания выполнения не нужен.
kaa.python (rsdn.ru):
Язык программирования в котором разработчик выполняет работу компилятора по доказанию клрректности времени жизни объектов — это нонсенс.
Kolesiki (rsdn.ru):
Разве "Раст" — это не такая же тухлая тема, как МММ? ДАВНО уже стало ясно (ещё с первых недель появления ржавчины в Тырнетах), что язык — полное гогно. Вернее, его изящно закамуфлированная "мозго_й_опка с памятью", которую разрабы аккуратно вывалили на бедного погромизда.
...
И поняв, что это гогно "никак не взлетает", по форумам стали запускать "Лёней Голубковых", которые враньём/агитацией макают всех в свои ржавые помои. Собственно, даже обсуждение "какое это гогно" — косвенная агитация и излишний хайп/цитируемость к этому дерьму. (вот почему минус) Может, хорош уже насиловать стюардессу?! Один раз закопали — И ХВАТИТ!
http://rustmustdie.com/ :
Этот язык пропитан ложью: он пытается быть низкоуровневым, несмотря на невероятно высокоуровневую природу; пока он претендует, что не включает в себя сборщики мусора, его сообщество активно их использует; он забывает о последовательных программах в погоне за параллельными, и в итоге весь код становится писать сложней; он заявляет о том, что даcт прекрасные макросы, а на деле подсовывает лишь неудобное подобие, при этом существенно замедляющее время компиляции всех программ. Это язык-монстр, но ещё страшней его сообщество.
...
Особо стоит подчеркнуть, что сборщик мусора встроен в стандартную библиотеку, которая неотделима от самого языка, а потому заявления, что Rust — это якобы язык без сборки мусора, — лживы.
...
гениальные разработчики этого языка встроили асинхронную версию сборщика мусора, с тем подвохом, что его содержимое должно быть неизменяемым. Итого в Rust уже даже не один, а два сборщика мусора!
Аноним (opennet.ru):
Да его больше пиарят, чем пилят. Эту новшество во все щели пихают, не останавливаясь не перед чем, и стараясь полить говном все остальные языки. Уже в ядро Linux пытаются подсунуть, лишь бы обратить на него внимание. Эти дебильноватые маркетологи похоже просто не понимают,что таким образом внушает отвращение к этому, и без того муторному, языку.
Аноним (opennet.ru):
Rust как презерватив, вроде безопасно, а дети все равно появляются
Аноним (opennet.ru):
Смотришь его синтаксис и будто наматываешься на колючую проволоку.
Аноним (opennet.ru):
Раньше я думал, что C++ уродливый, закостыленный язык. Но потом я познакомился с Rust
Аноним (opennet.ru):
Безопасные языки программирования нужны тем, кто программировать не умеет.
Аноним (opennet.ru):
Настоящим программистам проверки компилятора не нужны, а тем кто программировать не может никакой rust не поможет, наоборот, они будут уверены что пишут безопасный код без ошибок под действием синдрома Даннинга Крюгера и только всё испортят.
Аноним (opennet.ru):
Отличный язык для прототипирования! Низкоквалифицированные люди пишут черновики функционала, которые квалифицированные инженеры смогут переписать на Си быстрее чем с нуля разрабатывать
Старый аноним (opennet.ru):
Rust — еще и очень полезный язык. Так как он вызывает у программистов рвотный рефлекс, что не дает программистам набрать лишний вес, а значит — продляет жизнь программиста.
истина в последней инстанции (opennet.ru):
Ни одного стоящего проекта, ни одной стоящей IDE.
Так забавно смотреть как трепыхаются в бессилии хрюши неосиляторы нормальных языков и элементарных указателей. Тратьте и дальше свою жизнь на ущербное мертвораждённое.
Аноним (opennet.ru):
когда нельзя создать программистов, пишущих более качественный код, приходится создавать язык, более толерантный к качествам программистов.
Аноним (opennet.ru):
Rust, вне зависимости от его технических характеристик, это просто средство продвижения SJW специфических людей.
Гнать в шею ребят.
Сергей (opennet.ru):
Я не скажу что Rust *авно, но мне кажется, что его появление отразило нынешний уровень извилин и квалификации имеющихся кодеров, чем он будет ниже, тем будет больше фреймворков и языков, ориентированных на этот уровень...
Аноним (opennet.ru):
Да и в целом, раст — это синоним слову безопасность. Ну и память — с памятью работать стало безопаснее. Потому что используется безопасный раст. Безопасность достигается при помощи безопасных конструкций безопасного языка и безопасной работы с безопасной памятью, чтобы безопасные программы были еще безопаснее.
Аноним (opennet.ru):
Кодинг на rust это зашквар и показатель профнепригодности. По своей убогости rust уже давно догнал java.
Настоящие программисты это только те, кто пишут на ANSI C и ASM, кодеры на скриптухе программистами считаться не могут по определению.
szt1980 (opennet.ru):
Смузи-поделка с невменяемым синтаксисом — очередное ненужно. Неосиляторы C/C++ с завидным упорством пытаются изобрести велосипед, но выходит он у них с квадратными колесами и без седла. Корпорации неосиляторам дали Checked C — юзай ptr<T>, array_ptr<T>, nt_array_ptr<T> — не, не хочу, хочу жрать ржавую лажу. И это разработчики?
Андрей (opennet.ru):
Почему код раста читается хуже сообщений об ошибках компилятора С...
Да даже ошибки компилятора С++, просто Господи, выглядят структурней кода на расте.
Аноним (opennet.ru):
Нормальный человек таким синтаксисом пользоваться не будет. Остаются только те кто не уважают сами себя. А так как они не уважают себя они не уважают и окружающих.
wyry (opennet.ru):
Только и Basic и C и Pascal сами по себе во всём лучше Rust. Вот кстати если бы Pascal вышел бы СЕЙЧАС, он бы запросто реально мог претендовать на место безопасного и простого языка для работяг. В нём в отличие от лицемерного Rust даже UB нет by design.
wyry (opennet.ru):
Они создали Rust чтобы люди сильнее полюбили C++ и ценили то что имеют
wyry (opennet.ru):
Язык умер так и не родившись... сейчас любой стартап пишется на Go с последующим переездом на C++... для кого эти новости? Письма мертвеца ей богу
Аноним12345 (opennet.ru):
Язык для хипстеров
Порог вхождения довольно высок
Синтаксис невменяемый
Область применения ограниченная
Kuku (opennet.ru):
Раст — это ложный пиар, призванный отвлечь силы конкурентов на тупиковую технологию.
Хан (opennet.ru):
Без ООП это лучший язык для хэллоуворлдов
acroobat (opennet.ru):
Язык написан на c++. Вместо компилятора, llvm-приблуда. Ориентирован на студентов, ими же и продвигается. Имхо не взлетит.
Урри (opennet.ru):
В раст приходят совсем молодые программисты, которым лень осилить нормальный язык — это прекрасно показывает рейтинг "любимый язык стековефлововцев".
Ну и еще приходит позор нашей профессии — те, кто не смог нормально осилить полноценный инструмент, только по недоразумению называющие себя "программистами".
Аноним (opennet.ru):
Раст создаёт иллюзию безопасности, поэтому растогориллы пишут как получится
Хан (opennet.ru):
пока растоманы кричат какой ржавый отполированный и блестящий, чуваки на Go просто пишут софт
Аноним (opennet.ru):
Какой смысл писать на языке, на котором тебе придётся всё изобретать самому? Хотя, конечно, зависит от задач, где-то и можно впихнуть. Но скорее на расте всё равно придётся реализовывать только какую-то часть логики. Ну вот вроде сложные и опасные задачи сложения строк или перебора массивов, на остальное как видится раст не способен.
Аноним (opennet.ru):
А что там с осью на расте — не взлетела?
...
Ничего. Оно сжирает всю память и падает. Но это другое. Это безопасно.
Прорыв_запарты_фелиал (opennet.ru):
Раз раст не может в конкурентный доступ, то любое его наличие требует unsafe, хотя unsafe к расту не имеет никакого отношения, потому как имеет как минимум другую модель памяти, даже базовые примитивы иные. Потому как это просто обёртка поверх llvm-ir и сишного интеропа с llvm.
Аноним (opennet.ru):
А если раст еще раз переписать на раст он станет безопаснее?
...
Да, Раст гарантирует безопастность. Тогда будет двойная безопасность.
...
тогда надо будет писать
unsafe unsafe
Аноним (opennet.ru):
Разработка аналогичного кода на rust занимает куда больше времени чем на C/C++ а его сопровождение учитывая постоянные изменения в языке превратиться в ад.
Аноним (opennet.ru):
Взяли бы и написали на расте свой растинукс, с непротекающкй памятью и безопасными утилитами.
...
Пытались, потекло...
Аноним (opennet.ru):
Безалкогольное пиво — вроде выпил а толку ноль
Резиновые девушки — вроде потыкал а толку тоже ноль
Так и rust, вроде язык есть, а толку и софта — ноль.
Аноним (opennet.ru):
Язык, на котором невозможно реализовать ряд алгоритмов, не может считаться полноценным.
...
Растаманам нужен только один алгоритм: алгоритм получения бабла в новосозданный фонд.
Аноним (opennet.ru):
Rust — моральное разложение; коррупция, продажность; вредное влияние безделья, бездеятельности. Очень точное название выбрали.
Сишник (opennet.ru):
Люблю раст за неиссякаемый источник лулзов. Жду новостей вроде "Rust Foundation потратила 50% донатов на содержание совета директоров и 50% на продвижение транс нигга лесбиянок в опенсорс раст проекты"
Аноним (opennet.ru):
Хуже Раста только Го. Не могу смотреть на эти язычки. Живое омерзение, живая подлость! А firefox жаль. Ощущение что браузер спецом хоронят
Аноним (opennet.ru):
Сидит программист, чуток расслабился. Подходит чувак с палкой и хрясь его по спине, приговаривая: "Сиди с ровной спиной".
Этот чувак с палкой — компилятор языка Раст.
Аноним (opennet.ru):
зачем издеваться над трупом? даже мозилла уже от него отказалась
deeaitch (opennet.ru):
У приверженцев Rust всё время проблема с C/C++. То у них с памятью всё плохо, то ещё что непонятное и сложное. То они вечно себе в ногу стреляют.
Зачем вы стреляете себе в ногу? Мазохисты? Вспоминается сразу две вещи:
1) Доктор, когда я делаю вот так, мне больно. А вы так не делайте.
2) Старая добрая игра Fallaut 2: "Вы стреляли в златоящеря и попали в себя, вы потеряли 20 пунктов жизни"
Этакие люди неудачники.
...
Вот честно, очень токсичное общество любителей Rust. У них все плохие, кругом дыры. Одни они умные. Всех надо обосрать.
Приведешь им два аналогичных кода, с аналогичным поведением (вылетанием проги) на C++ и на Rust — Плюсовеки молчат, потому что понимают.
Что слышно от любителей раста? — "Ты де.....л, ты ничего не понимаешь, ваш C++ от....ой." А поведение то одинаковое.
Мне интересно. Откуда столько желчи и РЖАВЧИНЫ у приверженцев Rust.
СССР (opennet.ru):
"Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями" — что бы ваши ети передвигались на инвалидных креслах. Я исключительно ради заботы, ведь передвигаясь на ногах можно споткнуться , забить лоб и умиреть! поэтому пусть передвигаются на инвалидных кресах от проктэр&гэмбэл с автоматизированной головкой!
Аноним (opennet.ru):
Можете, назвать меня неосилятором, но. Приходит директор и говорит. Вот тебе железка на rs485. Сделай утилиту для её конфигурации и настройки. Срок три дня. Беру я такой раст... И через два месяца меня увольняют. Берут парня, который на делфи зафигачил все за 4е часа. Все довольны. Ну кроме меня.
Аноним12345 (opennet.ru):
Язык для хипстеров
Порог вхождения довольно высок
Синтаксис невменяемый
Область применения ограниченная
Kuku (opennet.ru):
Раст — это ложный пиар, призванный отвлечь силы конкурентов на тупиковую технологию.
Хан (opennet.ru):
Без ООП это лучший язык для хэллоуворлдов
acroobat (opennet.ru):
Язык написан на c++. Вместо компилятора, llvm-приблуда. Ориентирован на студентов, ими же и продвигается. Имхо не взлетит.
Урри (opennet.ru):
В раст приходят совсем молодые программисты, которым лень осилить нормальный язык — это прекрасно показывает рейтинг "любимый язык стековефлововцев".
Ну и еще приходит позор нашей профессии — те, кто не смог нормально осилить полноценный инструмент, только по недоразумению называющие себя "программистами".
Аноним (opennet.ru):
Раст создаёт иллюзию безопасности, поэтому растогориллы пишут как получится
Хан (opennet.ru):
пока растоманы кричат какой ржавый отполированный и блестящий, чуваки на Go просто пишут софт
Аноним (opennet.ru):
Какой смысл писать на языке, на котором тебе придётся всё изобретать самому? Хотя, конечно, зависит от задач, где-то и можно впихнуть. Но скорее на расте всё равно придётся реализовывать только какую-то часть логики. Ну вот вроде сложные и опасные задачи сложения строк или перебора массивов, на остальное как видится раст не способен.
Аноним (opennet.ru):
А что там с осью на расте — не взлетела?
...
Ничего. Оно сжирает всю память и падает. Но это другое. Это безопасно.
Прорыв_запарты_фелиал (opennet.ru):
Раз раст не может в конкурентный доступ, то любое его наличие требует unsafe, хотя unsafe к расту не имеет никакого отношения, потому как имеет как минимум другую модель памяти, даже базовые примитивы иные. Потому как это просто обёртка поверх llvm-ir и сишного интеропа с llvm.
Аноним (opennet.ru):
А если раст еще раз переписать на раст он станет безопаснее?
...
Да, Раст гарантирует безопастность. Тогда будет двойная безопасность.
...
тогда надо будет писать
unsafe unsafe
Аноним (opennet.ru):
Разработка аналогичного кода на rust занимает куда больше времени чем на C/C++ а его сопровождение учитывая постоянные изменения в языке превратиться в ад.
Аноним (opennet.ru):
Взяли бы и написали на расте свой растинукс, с непротекающкй памятью и безопасными утилитами.
...
Пытались, потекло...
Аноним (opennet.ru):
Безалкогольное пиво — вроде выпил а толку ноль
Резиновые девушки — вроде потыкал а толку тоже ноль
Так и rust, вроде язык есть, а толку и софта — ноль.
Аноним (opennet.ru):
Язык, на котором невозможно реализовать ряд алгоритмов, не может считаться полноценным.
...
Растаманам нужен только один алгоритм: алгоритм получения бабла в новосозданный фонд.
Аноним (opennet.ru):
Rust — моральное разложение; коррупция, продажность; вредное влияние безделья, бездеятельности. Очень точное название выбрали.
Сишник (opennet.ru):
Люблю раст за неиссякаемый источник лулзов. Жду новостей вроде "Rust Foundation потратила 50% донатов на содержание совета директоров и 50% на продвижение транс нигга лесбиянок в опенсорс раст проекты"
Аноним (opennet.ru):
Хуже Раста только Го. Не могу смотреть на эти язычки. Живое омерзение, живая подлость! А firefox жаль. Ощущение что браузер спецом хоронят
Аноним (opennet.ru):
Сидит программист, чуток расслабился. Подходит чувак с палкой и хрясь его по спине, приговаривая: "Сиди с ровной спиной".
Этот чувак с палкой — компилятор языка Раст.
Аноним (opennet.ru):
зачем издеваться над трупом? даже мозилла уже от него отказалась
deeaitch (opennet.ru):
У приверженцев Rust всё время проблема с C/C++. То у них с памятью всё плохо, то ещё что непонятное и сложное. То они вечно себе в ногу стреляют.
Зачем вы стреляете себе в ногу? Мазохисты? Вспоминается сразу две вещи:
1) Доктор, когда я делаю вот так, мне больно. А вы так не делайте.
2) Старая добрая игра Fallaut 2: "Вы стреляли в златоящеря и попали в себя, вы потеряли 20 пунктов жизни"
Этакие люди неудачники.
...
Вот честно, очень токсичное общество любителей Rust. У них все плохие, кругом дыры. Одни они умные. Всех надо обосрать.
Приведешь им два аналогичных кода, с аналогичным поведением (вылетанием проги) на C++ и на Rust — Плюсовеки молчат, потому что понимают.
Что слышно от любителей раста? — "Ты де.....л, ты ничего не понимаешь, ваш C++ от....ой." А поведение то одинаковое.
Мне интересно. Откуда столько желчи и РЖАВЧИНЫ у приверженцев Rust.
СССР (opennet.ru):
"Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями" — что бы ваши ети передвигались на инвалидных креслах. Я исключительно ради заботы, ведь передвигаясь на ногах можно споткнуться , забить лоб и умиреть! поэтому пусть передвигаются на инвалидных кресах от проктэр&гэмбэл с автоматизированной головкой!
Аноним (opennet.ru):
Можете, назвать меня неосилятором, но. Приходит директор и говорит. Вот тебе железка на rs485. Сделай утилиту для её конфигурации и настройки. Срок три дня. Беру я такой раст... И через два месяца меня увольняют. Берут парня, который на делфи зафигачил все за 4е часа. Все довольны. Ну кроме меня.
И второй - вычурный синтаксис. Смешанные чувства от Some(), Ok() - вроде идея неплохая, но на практике приходится писать if let Some(text) = do_some_action().await {} вместо того чтобы просто написать if (text) {} Из-за этого код превращается в огромную писанину, с необходимостью запоминать все макросы, методы и проч.
Третий минус - некоторые библиотеки и решения хрен найдёшь. Я джва часа потратил, чтобы заставить reqwest скачивать файлы параллельно.
Из плюсов - быстро работает, строгая типизация, к синтаксису привыкаешь со временем. Простая конпеляция, по сравнению с тем же C++. Удобный инструмент crate, есть всё что нужно. Консольные приложения писать одно удовольствие.
Короче, у меня пока смешанные чувства.
>>516641
Сколько стоит мнение всех этих комментаторов по сравнению с мнением Херба Саттера?
https://www.youtube.com/watch?v=ELeZAKCN4tY
Перед просмотром рекомендую ознакомиться с синтаксисом и семантикой Rust, взять листочек и карандашик, и выписать всё что принято им из Rust.
Отдельно на полях ставить плюсики, когда он произносит слово safety.
Особенно часть про профессора-утенка, ругающего своего студента что он на ассемблере свою лабу накатал, а не на общепринятых в то время, опкодах.
Там буквально написано, пчел. Раст делает лишние копирования со стэка на кучу, вместо создания объекта сразу на куче
Именно так, есть еще места для непротиворечивой оптимизации LLVM, при том что результирующий код уже на одном уровне по скорости с крестами.
Если кресты не отбросят обратную совместимость по ABI, у них нет шансов на будущее.
31:22 “The most dangerous thought that you can have as a creative person is to think that you know what you’re doing.
Because once you think you know what you’re doing, you stop looking around for other ways of doing things and you stop being able to see other ways of doing things, you become утёнок…”
> при том что результирующий код уже на одном уровне по скорости с крестами
> делает лишние копированию памяти
> уже на одном уровне скорости
>Мои ожидания фейла раста :)
>Рилворлд бенчмарки :(
Ну, подумай еще. Что же это может значить?
В плюсах и так разные ABI в зависимости от версии компилятора. Поэтому и есть extern c
Бенчмарки показывают не больше, чем то, как они задизайнены. От того, что есть какой-то бенчмарк оверхед по копированию памяти не исчезает
Есть вещи, которых в С++ не избежать. Например лишние mov инструкции ради сохранения обратной совместимости со старыми соглашениями вызова функций. Уже много раз постил этот пример. Гугли there are no zero cost abstractions чендлера каррута и смотри сам.
Отсюда вывод >>516947 что в Раст легаси нет, потому что есть редакции. А пример со ссылкой, которую ты запостил вообще относится только к отношениям раста с LLVM (это можно пофиксить не ломая API), тем более что на подходе GCC бэкенд.
Пчелик, я этот доклад в онлайне смотрел. Причем тут ABI? У юник птр (и у других абстракций) есть обязательный оверхед, даже если он не нужен. Решается это тем, что, внезапно, можно не использовать юник птр, а использовать голый указатель. Короче непонятно к чему ты это написал.
Никакой совместимости нет, у тебя плюсовый код, скомпилированный одной версией компилятора может не слинковаться с другой версией, потому что буквально даже манглинг меняется.
> А пример со ссылкой, которую ты запостил вообще относится только к отношениям раста с LLVM (это можно пофиксить не ломая API), тем более что на подходе GCC бэкенд
Это проблема компилятора, а не отношения с llvm, gcc тут не поможет.
Скорее всего, это NeoVim
>Пчелик, я этот доклад в онлайне смотрел. Причем тут ABI? У юник птр (и у других абстракций) есть обязательный оверхед, даже если он не нужен. Решается это тем, что, внезапно, можно не использовать юник птр, а использовать голый указатель.
И получить все прелести голого указателя, а не & из раста. Мало того что unique_ptr аллоцирует в хипе, так его еще и привести всеми noexcept'ами и rvalue-ref'ами к простой базовой конструкции раста нельзя без лишних mov по-памяти.
Метка времени 21:14.
>Короче непонятно к чему ты это написал.
Пофиксить в крестах это нельзя из-за ABI легаси, он дальше об этом говорит. Даже больше, отсутствие полноценных редакций не позволяет гарантировать zero cost абстракции как в Раст.
>Это проблема компилятора, а не отношения с llvm, gcc тут не поможет.
Получается еще проще для фикса. Непонятно к чему ты тогда тут баги компилятора постишь с криками вот весь ваш Раст.
У языка практически нет тотал ньюби вкатунов.
Кресты это какая-то сводка из 1001 правила "не делай вот этого", и "делай так" вообще не относящимся к программированию, а только к особенностям самих крестов.
>Пчелик, я этот доклад в онлайне смотрел.
Если настолько опытный программист что тебя заставляет хейтить раст, я не понимаю? Ты хотел чтобы сделали лучше, но не говоришь что конкретно, а только поливаешь помоями. Сделают лучше. Рано или поздно научат модели оптимизации под конкретные платформы, и ни кто уже не будет смотреть на кодогенерацию, просто потому что не поймут как обученные модели генерируют такой хороший код. Будут соревноваться в грамотном составлении высокоуровневых рекоммендаций для получения максимально близкого к их замыслу, результата.
Останутся сишные фрики, которые будут пытаться обоссать нейронку, и когда у них будет получаться результат будут скармиливать сети. А сеть будет экстраполировать их находки и становиться только лучше.
> И получить все прелести голого указателя, а не & из раста
Ужас блин. Есть abseil::make_unique, absl::WrapUnique() и один из выводов был, что можно не использовать подобные конструкции. Да менять calling conventions для того, чтобы в этой конструкции можно было оптимизировать никто не будет.
И ещё раз никакого легаси ABI нет. Разные версии компилятора имеют разные ABI
> Мало того что unique_ptr аллоцирует в хипе
Нет, если ты указатель ему передашь в конструктор.
> Получается еще проще для фикса. Непонятно к чему ты тогда тут баги компилятора постишь с криками вот весь ваш Раст.
Это было невинное замечание, а ты так триггернулся. Ты слишком чувствительный
>>517000
>Рано или поздно научат модели оптимизации под конкретные платформы, и ни кто уже не будет смотреть на кодогенерацию, просто потому что не поймут как обученные модели генерируют такой хороший код.
Бред, чтобы модель научилась писать такой код, она должна обладать разумом, осознавать свои действия и их последствия, а не просто срать готовыми паттернами. Ну а с появлением такого ИИ уже будет похуй на код, так как мир сильно изменится.
>Во-вторых, Си никуда не пропадет, а просто будет сосуществовать вместе с растом
Будет ли существовать Си в краткосрочной перспективе, зависит только от того насколько удастся побороться со сложностью оптимизации абстракций. Пока этому ни что фундаментально не мешает. Это можно видеть на примере просачивания ФП конструкций в современные ЯП. Раст просто бугорок в этом последовательном тренде, потому такой хайп. Неосиляторов и утят в расчет не хочу брать.
>Бред, чтобы модель научилась писать такой код, она должна обладать разумом, осознавать свои действия и их последствия, а не просто срать готовыми паттернами.
Это тоже тренд, пока ты можешь скормить сети запросы на "создай мне такой цикл", "сгенерируй такую картинку", "напиши текст на тему". Но прогресс идет, и если результаты работы все более становятся похожи на результат работы человека (их становится сложнее различить) то где же остановимся?
>ока этому ни что фундаментально не мешает.
Лол, как раз мешает и это архитектура ЭВМ Пока что функциональная параша не будет выполняться на уровне железа, то об "Сишка все" даже заикаться не нужно.
>Это тоже тренд, пока ты можешь скормить сети запросы на "создай мне такой цикл", "сгенерируй такую картинку", "напиши текст на тему". Но прогресс идет, и если результаты работы все более становятся похожи на результат работы человека (их становится сложнее различить) то где же остановимся?
Ты натянул и спроецировал сомнительный успех из одной области на другую, совсем другую. А помечтать и я могу. Только реальность от этого не изменится.
Large language models это та самая область. По какой причине ты думаешь что если сетка генерирует текст, неотличимый от написанного человеком на заданную тему, это нельзя применить к тексту компьютерной программы? Может на сегодняшний день она тебе и не сгеренирует компилирующийся текст, но ты увидишь и поймешь смысл её работы. Направление в котором следует копать. И сделает это исходя из окружающего, уже написанного тобой или предыдущей итерации её работы. На данный момент она берет из базы увиденного, и применяет к твоей ситуации. Это как загуглить вопрос, но получить ответ "почти точь в точь" под твой конкретный сценарий.
https://old.reddit.com/r/MachineLearning/comments/xtd8kc/p_stablediffusioninfinity_outpainting_with_stable/
https://old.reddit.com/r/GIMP/comments/xk7ft2/inpainting_is_coming_very_soon_to_the_gimp_stable/
Мы живем в сингулярности, просто люди этого не замечают. Посмотри что было 2к лет назад. Что такое 2к лет для планеты или вселенной?
тайм-код 7:45
>По какой причине ты думаешь что если сетка генерирует текст, неотличимый от написанного человеком на заданную тему, это нельзя применить к тексту компьютерной программы?
Потому что она работает только с некоторыми паттернами и учится на готовой базе. Нет базы - нет нейронки, когда человек может создать что-то новое самостоятельно. Нет никаких проблем научить нейронку стилю определенного автора и генерировать картины в этом стиле, но вот собственный стиль нейронка не придумает, понимаешь? В этом и вся проблема. Так же и с кодом. Всякие copilot от гитхаба даже формошлепов и кнопкокрасов не в силах заменить, а про более серьезную работу я вообще молчу. То, что ты пишешь - это фантастика на уровне полноценного ИИ, так как он должен понимать, что от него требуют, как ему это сделать исходя из текущей ситуации и ресурсов, должен осознавать свое состояние, а также прогнозировать возможные проблемы и их решения исходя из целей задачи, а это уже уровень человека. Да и с таким ИИ уже про код можно будет забыть, потому что эта херня будет находить ответ на любой поставленный вопрос.
> собственный стиль нейронка не придумает
Рандом не сделает своё дело? Если тот же стаблдифужн взять, то вполне может по некоторым сочетаниям фраз родиться какой-то оригинальный стиль, дальше с ним и работай.
>Чтобы нормальную асинхронность получить, надо ставить сторонний crate, какие-то там futures, tokio
tokio де факто стандарт для асинхронности, в язык она встроена поскольку ты пользуешься теми же async/await в стандартной библиотеке для этого есть трет Future, tokio просто одна из реализаций. futures сейчас не требуется, можно подключить, вот пример:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=034d1b01d1208023a86f2a379fd154f4
зависимости, надеюсь макаба не сожрет:
[dependencies]
tokio = { version = "1.21.2", features = ["full"] }
> прописывать декораторы.
Это аннотации, они используются в компайлтайме и генерируют код, например когда у структур пишешь аннотации для serde генерируется код для серализации/десереализации, поскольку в расте нет как такового рантайма в котором это все генерировалось. Это издержки языка низкого уровня. Допустим из моего кода генерируется при компиляции такой код https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=703394caa0fd8e643c74e059fdf50dd6
>Смешанные чувства от Some(), Ok() - вроде идея неплохая, но на практике приходится писать if let Some(text) = do_some_action().await {} вместо того чтобы просто написать if (text) {}
Во первых тут if (text) {} будет работать только с булевыми выражениями, в плане приведения типов здесь все маниакально, а во вторых ты в таких выражениях можешь обработать всякие разные штуки, например из Result<Option<Zalupa>> получить Zalupa если он есть и обработался без ошибок
if let Ok(Some(zalupka)) = do_some_action().await {}
А еще тут можно обработать всякие enum'ы коими являются Option и Result, короче можно в некоторых случаях в одну строчку записать вместо вложенных if и match
> Я джва часа потратил, чтобы заставить reqwest скачивать файлы параллельно.
С reqwest тоже не знаю чего ты ебался через tokio все распараллеливается. У меня сотни файлов разом качаются в парсере на продакшене. Я с ним помню ебался когда какие-то полубесплатные говнопрокси юзали
>Чтобы нормальную асинхронность получить, надо ставить сторонний crate, какие-то там futures, tokio
tokio де факто стандарт для асинхронности, в язык она встроена поскольку ты пользуешься теми же async/await в стандартной библиотеке для этого есть трет Future, tokio просто одна из реализаций. futures сейчас не требуется, можно подключить, вот пример:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=034d1b01d1208023a86f2a379fd154f4
зависимости, надеюсь макаба не сожрет:
[dependencies]
tokio = { version = "1.21.2", features = ["full"] }
> прописывать декораторы.
Это аннотации, они используются в компайлтайме и генерируют код, например когда у структур пишешь аннотации для serde генерируется код для серализации/десереализации, поскольку в расте нет как такового рантайма в котором это все генерировалось. Это издержки языка низкого уровня. Допустим из моего кода генерируется при компиляции такой код https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=703394caa0fd8e643c74e059fdf50dd6
>Смешанные чувства от Some(), Ok() - вроде идея неплохая, но на практике приходится писать if let Some(text) = do_some_action().await {} вместо того чтобы просто написать if (text) {}
Во первых тут if (text) {} будет работать только с булевыми выражениями, в плане приведения типов здесь все маниакально, а во вторых ты в таких выражениях можешь обработать всякие разные штуки, например из Result<Option<Zalupa>> получить Zalupa если он есть и обработался без ошибок
if let Ok(Some(zalupka)) = do_some_action().await {}
А еще тут можно обработать всякие enum'ы коими являются Option и Result, короче можно в некоторых случаях в одну строчку записать вместо вложенных if и match
> Я джва часа потратил, чтобы заставить reqwest скачивать файлы параллельно.
С reqwest тоже не знаю чего ты ебался через tokio все распараллеливается. У меня сотни файлов разом качаются в парсере на продакшене. Я с ним помню ебался когда какие-то полубесплатные говнопрокси юзали
Кого волнует стиль, если она решает хорошо описанную проблему уже сейчас.
17:00 https://www.youtube.com/watch?v=t3Yh56efKGI
там и примеры решенных задач есть.
>doubt
Ага, а первое произведение человеку, наверное, жидорептилоиды подогнали? Или рецепт хлеба.
>>517062
>Рандом не сделает своё дело?
"Оригинальный" паттерн, скорее всего, будет собран из других паттернов по частям, потому что при рандоме нейронка не будет знать, что нужно добавлять. Она не понимает, когда это оригинально, а когда нет. Это может оценить только человек и тот не каждый.
>>517175
Решение хелло ворлдов для удивления хомячков - это не "решает хорошо описанную проблему уже сейчас". Это больше похоже на возвращаемую ракету от Илона Маска, когда все кричали, что будущее наступило, а в реальности оказалось, что дешевле сделать новую болванку, чем чинить старую.
Еще раз повторяю, современные модели нейронок, которые пытаются развивать гугл и прочие корпорации - полный шлак даже на уровне теории. Они очень чувствительны к качеству датасета, у них очень хрупкая " память" и дорогая цена на переобучение(для новой задачи тебе нужно обучать нейронку с нуля). Это не тот ИИ о котором вы мечтаете и который вам навязала научная фантастика.
>Или рецепт хлеба.
Это детект, что ты не подумал о чем пишешь.
>Решение хелло ворлдов для удивления хомячков - это не "решает хорошо описанную проблему уже сейчас".
В этом-то и прикол, что решает. Возьми человека с улицы и попроси его написать то же самое. Сколько чел в метро из ста, решат тебе codeforces?
>Они очень чувствительны к качеству датасета
Это полуправда, гораздо проще тренировать на хорошем дата сете, чем на говне. Как и человек не будет по кускам форумы читать, или браться за спецификацию (что может быть лучше спецификации? кратко, полно!) чтобы понять как прогать на сишечке, если раньше никогда не прогал. А сначала возьмется за кем-то аккуратно и выверенно написанный учебник.
>у них очень хрупкая " память"
Поясни, что это должно значить?
>и дорогая цена на переобучение(для новой задачи тебе нужно обучать нейронку с нуля)
Мультитаскинг https://en.wikipedia.org/wiki/AlphaZero
>для новой задачи тебе нужно обучать нейронку с нуля
Есть способы помочь нейронке забыть. Используется в fraud detection сетях, или сетях пытающихся угадать что покупатель захочет купить после этой покупки, чтобы предложить ему сразу.
+ еще one-shot learning
Ни хрена не рублю в С++, но просто поражаюсь кол-ву отличных спикеров в их коммьюнити - что Саттер, что Тёрнер, что тот-дядька-со-странной-причёской (Майерс, кажется), который рассуждал о том, почему Ваза затонула, а плюсы - нет. Частенько на планшете поздним вечером включаю эстетического удовольствия ради и здорового сна для.
>приходится писать if let Some(text) = do_some_action().await {} вместо того чтобы просто написать if (text) {}
умри, ёбаная макака.
>Что по скорости? Быстрее/медленнее крестов?
Быстрее, на уровне C.
С++ вообще высер душевнобольного
главный аргумент против раста это отсутствие MVC фреймворка.
Как только его выпустят, вот тогда RUST заметят.
> если ты не еблан то не то чтобы в крестах её нету
> просто пиши без ошибок
> просто не будь ебланом
Ну а если по делу, то если ты не знаешь зачем тебе Раст, то наверное оно тебе не нужно
Ну в общем и целом чем лучше:
- лучше инструментарий как ты сам уже заметил
- безопасность, но тут больше важно если ты всякие криптографические приколы хочешь делать
- меньше семантик и они более проще и чаще всего в явном виде, то есть написать тебе структуры данных, итераторы даже с ансейфом будет намного легче чем в плюсах если ты конечно не листы решишься писать
>если ты не еблан
Ты-то нет, а вот джуны, которые пишут в тот же репозиторий, что и ты - вот они ебланы.
Забыл главную килерфичу: макросы
Так ли нужен именно MVC? Мы sqlx+actix используем, удобства как в рельсах нет, но на микросервисы хватает вполне, фронт на реактах мы туда просто json выплевываем, база postgres sqlx хватает за глаза, иногда sea-orm используем чтобы руками поменьше писать. Вьюх нет это да, но я думаю и для этого говна уже что-то есть
>удобства как в рельсах нет
Ну вот когда будет как в рельсах, тогда все разом пойдут ставить себе cargo
Потому что это нормальный фреймворк для веба, rocket вроде хорош, но он для бета-тестеров, а остальное нам как-то не подошло
>на уровне C
>С++ вообще высер душевнобольного
Всё с тобой понятно, дальше.
>>524699
>если ты не знаешь зачем тебе Раст, то наверное оно тебе не нужно
Самый адекватный подход к любому языку. Зачем мне оно я в конце поста напишу.
>лучше инструментарий как ты сам уже заметил
Я бы не сказал что лучше, не хватает опыта, пока могу сказать только что удобнее и проще для новичка. А ещё нравится стандартизация, т.е., нету ничего кроме cargo. Я, конечно, люблю свободу выбора в таких вещах но в душе мечтаю что появится единая охуенная система сборки.
>>524712
А вот тут и пора отметить нахуй мне оно. Я вообще ДевжОпс. И что кресты что пидаРаст мне для себя. Кресты учить начал ещё со школы но тупил и забил, потом в унике, и вот уже там, когда дошло дело до ООП, я понял как работать с памятью, точнее, саму концепцию динамически выделяемой памяти, тогда-то мне что-то понравилось и я выучил его для себя. И с тех пор пишу всякие мелкие тулзы для себя, всё хочу попробовать написать что-то на C++/WinRT. Но вот среди того софта, где были кресты, начал появляться сабж для меня чуть ли не главным толчком стало отстранение shadowsocks-libev в пользу Rust и Go реализаций и я решил лично изучить, попользоваться и решить для себя, а чего же так все наяривают и что лучше/хуже. Т.е., мне не для работы, а для себя, и это снимает кучу проблем в виде вклада даунов в репозиторий.
А в чём принципиальное отличие рандом бекенда и некой системщины?
О каких "фишках для системщины" идет речь?
Вот тут двачую, что-то я не припомню чтобы кто-то мог или пытался завести это на всяких мелкоархитектурах. Т.е. получается что словосочетания "системное программирование", "низкий уровень" и прочее применяются больше для маркетинга чтобы вебмакакии могли выебываться что они тоже типо как могут в лоулевел и они не тупые, а на практике оно вроде и может, но не применяется потому что есть C и С с инкрементом и Rust там скорее как челлендж ежели инструмент для выполнения работы.
> Не помню чтоб кто то пытался завести на мелкоарзитектурах
В последнее время статей 5 на редите видел о том как кто то на каком то микроконтроллере что то на Раст пилит
Ну и эмбедивщина это только часть системщины и даже не большая ее часть
axum ещё есть, warp (этот уже постарше, конечно). Их как-то оценивали, или только между актиксом и рокетом выбирали?
Я уже не помню что конкретно смотрели, но в продакшене попробовали только actix и rocket, потом переписали всё окончательно на actix
Ты ещё всех разрабов сторонних либ заставь писать без ошибок, и заебок. Только для этого нужен дядя с палкой, и не один. А в экосистеме раста эту роль выполняет конпелятор.
fyrox (ex rg3d) - позиционируется, как почти аналог юнити с редактором уровней и кучей фич, разве что магазина ассетов нет. Но, почему-то, непопулярен. Склоняюсь к нему, но смущает непопулярность.
Из популярных
piston - батя, но игры на нём - 2D шлак вроде тетрисов
amethyst - хз, тоже 2D, в-основном
bevy - многообещаюч, но также прямо обещают ломать API в будущем
Мне бы мою пет игрушку использовать в будущем аки бойлерплейт. А тут всё сломают - учи заново.
Пограммируем. Не все же лясы точить.
>Rust — невероятно быстрый язык
У языков нет такого свойства, как скорость.
Как всерьез можно сидеть в треде с такой шапкой.
У раста есть 25 кадр с лгбт-пропагандой, так что на кадр быстрее.
Язык это знаковая система. Формальный язык - это нотация, знаковая система над конечным множеством. Ни один язык, будь он естественным или искусственным, формальным или нет, компьютерным или нет. Не оладает такой характеристикой как скорость. Еще языки не обладают такими характеристиками как, например, громкость. Или мягкость.
Ну попробуй ответить себе на вопрос, какой скоростью обладает русский или английский язык. Или какова скорость математической нотации, например.
Когда ты попытаешься это сделать, то поймешь, что сказать, что язык - быстрый, все равно, что сказать - язык вкусный.
Ясное дело вкусный. Говяжий заливной ням ням
Управление памяти влияет на семантику языка. Ручное управление - язык быстрый, сборка мусора - чуть медленнее, распиздяйская система типов - ещё медленнее. Можно, конечно, крутить всякие jit и прочие приблуды, но они жручи в плане памяти. А ещё можно сказать, что сишечка быстрее, но она же говно небезопасное.
Поэтому можно сказать так
Раст - самый безопасный из быстрых языков и самый быстрый из безопасных.
Всем и так ясно что подразумевается не только сам язык, но и вся сопутствующая хуйня, но только не тебе.
>Ну попробуй ответить себе на вопрос, какой скоростью обладает русский или английский язык
Средняя скорость речи образованного русского человека 100-120 слов/мин. Средний темп немецкой речи 130-150 слов/мин. Еще быстрее говорят англичане, их показатель – 160-180 слов/мин. Французская речь еще быстрее: 170-190 слов в минуту.
Самым красивым в мире, как украинский.
Подскажите пожалуйста, пытаюсь забилдить программу на винде из исходников для линукс, получаю такую ошибку:
note: x86_64-w64-mingw32-gcc: error: unrecognized command line option '-fuse-ld=lld'; did you mean '-fuse-ld=bfd'?
error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
пробовал запускать эту команду
rustup toolchain install stable-x86_64-pc-windows-gnu
Чтобы каждый писал свой std в каждом пакете? Так-то есть nostd, сиди ебись если надо.
Динамическая линковка не отсутствует, у неё нет стабильного abi. То есть, тебе все библиотеки нужно приносить вместе с бинарником.
> нет стабильного abi и это типа заебись
Есть возможность оптимизировать и допиливать компилятор. Сейчас это важнее стабильного abi. Чисто технически, всякие дебианы могут ввести свой стабильный abi используя набор параметров и версию компилятора. Но апгрейд компилятора означает что все пакаджи на расте придётся обновить.
В C++ стабильный abi много лет придумывался со всякими libstdc++.
> очень странно для языка для запила осей
Ты скозал? https://www.redox-os.org/
За счёт того что в фоне индексируется fs и всё остальное. Скорость ему нужна в инкрементальном поиске по уже построенному индексу, что сколько-то там миллисекунд было время реакции.
Может. Как ты ни еби питон, сам язык не позволит писать быстрые числодробилки. Там даже пресловутый GIL нужен только потому что всё доступно отовсюду (как во всех скриптовых языках), нельзя иметь изолированный скоуп памяти, который позволит изолировать переменные в треды.
Спасибо за ответ. Да, я понимаю, что для быстрого поиска необходимо наличие индекса. А у раста из коробки как работают операции над fs? Есть абстракция над ОС-специфичными командами (чтение/запись и получение ивентов) или каким-то образом напрямую (через драйвер контроллера (например, SATA, IDE))?
Конечно есть. В этом весь смысл ОС, чтобы ни одна программа не заморачивалась с SATA/IDE/USB/networked storage/etc, а работала с абстрактной файловой системой. Раст Любой язык поставляется со стдлибой, дающей самые базовые системные вызовы, типа input/print/открыть файл. Всё остальное, включая замороченные фичи ОС, типа inotify для отслеживания изменений в файлах, обычно есть в пакетах/крейтах.
Я подумывал над такой хуйнёй: написать макрос-обёртку, который будет конпелять трейт в сишную .so-шку, а поверх реекспортировать функции этого трейта через ffi.
Короче, Please ни хуя не помог, всё равно на main() обрубает.
А нельзя пересобирать только нужное из стдлибы? Типа, нужна тебе только одна функция, f64::floor, например, нахуя всю либу тащить?
Если прога крешнется, ей нужен как минимум print. Ах да, флоаты сами по себе как раз могут вызвать креш при делении на ноль например. Так-то есть вроде бы элиминейшен всего что не использовано. Ну и если ты эмбеддед йоба кодер, то nostd, там вообще никакой стдлибы не будет, бинари в 100 байт и ничего лишнего, всё как ты хочешь.
Ну, ёпт, смари. Если ты хочешь в nostd, но тебе нужна какая-то функция, проще спиздить её из std. Тогда вопрос - нахуя делать это вручную?
А насчёт print, то можно же паниковать без бектрейса.
> проще спиздить
Зависимости не дадут.
> проще
Проще не ебать себе голову и использовать std.
https://github.com/johnthagen/min-sized-rust
Вот здесь посмотри, чел вырезает из бинари всё что может.
вот есть обычный map, а мы ещё только для bool запилим.
вот есть is_some_and для bool, а давайте ещё is_some_and_eq, is_some_and_gt, is_some_and_lt и проч для чисел запилим, а?
Пиздец, ебанаты.
Ты ещё на методы строк посмотри, там чего только нет.
Но что ты имеешь против сахара? Будет спрос — запилят.
Нет, блядь, велик нужно ставить в красный сарай, а не синий. Ты нихуя не шаришь. inb4: 400+ постов обсуждения
Потестили, не понравилось, теперь убирают
https://github.com/crumblingstatue/hexerator/pull/41
Для этого nightly и нужен.
Result - это обычный Enum, в котором или данные ответа, или ошибка - делай с ним шо хошь.
ok_or, map, map_err и т.д. - просто сахарок, чтобы не писать много if result.is_ok() {...}
? - если у тебя все ошибки Result<T, E> одного типа E или приводятся к одному типу и ты хочешь пробросить их наверх, т.е. немедленно вернуть эту ошибку вызывающему, чтобы там сами разбирались.
> одного типа E или приводятся к одному типу
Если Е/? из разных либ в одной в функции, то надо делать свой енум?
Ага, или свой тип для Error и приводить к нему.
Есть макросы, которые упрощают задачу, например, делают енум за тебя https://docs.rs/custom_error/latest/custom_error/macro.custom_error.html#limitations - после этого
Возьми anyhow и не еби мозг, ему можно все что угодно пробросить при помощи ?. Редко когда нужно именно с самой ошибкой работать из сторонней либы, обычно просто пробрасываешь наверх и где надо обрабатываешь и anyhow тут самый раз
540x960, 0:11
В чём это проявляется?
> llvm, gcc
Конкурирующие компиляторы. Как у тебя есть конкурирующие интерпретаторы: CPython, PyPy, Pyston, Jython, IronPython, MicroPython, etc.
> зачем оно
Превращать исходный текст в бинарники, пригодные к выполнению процессором N + операционкой M.
> почему оно разное всякое
Так сложилось. Gcc начинали ещё диды, чтобы были свободные компиляторы. Llvm это попытка переосмыслить построение компиляторов и переиспользовать готовые оптимизаторы для максимального количества языков/архитектур процессоров. На llvm намного проще создать компилятор нового языка, этим пользуются всякие видеодрайверы чтобы компилировать шейдеры. Добавить новый язык в gcc сложнее, но тоже можно, его тоже постепенно рефачат. Ещё они там не очень совместимы, вроде бы ядро линуха не собирается на llvm, потому что в ядре много gcc-специфичного кода.
>ядро
Уже несколько лет как поддерживается сборка шлангом. Ну и несовместимость у них чуть больше чем просто в опциях, а еще и всяких расширениях и интринсиках.
Растеры, поясните за ваши итераторы тупому плюсовику
Вот есть Iter: next() -> Option<T>
То есть чтобы достать значние, я должен поверить не пустой ли option у меня
Но и сам итератор, чтобы вернуть option должен проверить еще раз как то внутри себя, и затем вернуть option
Это что же получается, два раза проверка??? ОВЕРХЭД!?!?! или нет?
на самом деле, пытался что то похожее в плюсах реализовать, но как только начал, понял что что есть нюансик
Ну так там и чекал
У меня получилось что в целом оверхед есть, но иногда раст соптимизировать может
next - это самый базовый метод итератора. Другие методы, такие как fold и try_fold (и соответственно через них сделанные for_each и try_for_each) оптимизированы насколько это возможно.
Ну если ты про цикл for, то в плюсах не так
Ты из итератора можешь сразу значение получить, не нужно проверять, только что it != end
А в расте у тебя получается внутри итератора проверяется, чтобы вернуть Some или None, а ты еще раз затем проверяешь, Some это или None
Вот, например
https://github.com/rust-lang/rust/blob/346804452164befcc44e1531803b73d01b2864cd/library/alloc/src/collections/btree/navigate.rs#L73
И я не первый раз вижу, но не врубаюсь, зачем это
Скрывают конкретную ошибку, может?
>Ну если ты про цикл for, то в плюсах не так
Я в общем. Если не -O3 или хотя бы -O2, то плюсы получются жирными и медленными. А с -O3 получается ляпота.
>А в расте у тебя получается внутри итератора проверяется, чтобы вернуть Some или None, а ты еще раз затем проверяешь, Some это или None
Т.е. больше на одну проверку.
В смысле как это в asm-е выглядит? Я не уверен, зависит от многих факторов. Для статичных данных будет просто unroll цикла в повторение одних и тех же инструкций прямо в тексте программы.
потому что для структуры NodeRef, которую возвращает функция next_kv, не реализован типаж Debug, который требуется для анврапа
Хотел вкатиться в раст из цпп, залез в этот тред и ты, анон, меня уберег. Такие люди адекватными быть не могут по определению
Это шутка? Его перевели несколько лет назад.
Где почитать про impl? Не понимаю смысл этой конструкции.
https://doc.rust-lang.org/std/keyword.impl.html
Это всего лишь блок, где ты навешиваешь методы типу (классу), в том числе реализации трейтов (интерфейсов).
А иначе что, голову им отрежешь? Могут себе позволить. Не во всех странах обсуждение происходящей хуйни стоит тебе жизни и свободы.
В чём разница между трейтом и интерфейсом в значении? Не могли просто случайно одно или другое выбрать, если они одно и то же значат?
Потому что это не совсем интерфейс, хоть и похоже
Интерфейс в Жабе и шарпе передаётся только по ссылке и вызывается через виртуальную таблицу. Трейты - это всегда static dispatch и можно перемещать и передавать по значению. По мнению одного шиза с лора трейты работают также, но его нужно просто научиться распознавать и никак не взаимодействовать.
Некто Царь. Плюсовик, который, вроде как, в чем-то шарит, но не способен общаться без попыток всех хуесосить, использует для всего свои собственные определения, из-за чего его невозможно в чем-либо переспорить.
Спасибо.
Traits combine aspects of protocols (interfaces) and mixins. Like an interface, a trait defines one or more method signatures, of which implementing classes must provide implementations. Like a mixin, a trait provides additional behavior for the implementing class.
В трейте можно и реализацию написать, не только сигнатуры методов.
Ну ок. Напиши на numpy поиск чисел Фибоначчи. Раздроби числа.
Что сказать-то хотел? Пришёл, спизданул базворд вне контекста, теперь какие-то анальные манёвры в свою защиту. Ну блядь да, если выдернуть только слова питон и числодробилки, то есть разные костыли чтобы это делать, вот как будто мы не знали.
Давай, пиши фибоначчи, пиздобол безмозглый.
ну типа ты из питона запускаешь вообще другую программу, это же не то же самое, что посчитать на питоне
Какая разница что ты вызываешь, главное что где
Хоть ассемблерные вставки вызывай, какая разница
В том и разница, прочитай с чего разговор начался. Поэтому и вынесли сами расчеты из питона в сишку.
И вызываются они из питона
И пишешь ты число дробилки, на питоне, вызывая сишечку
ты реально тупой такой?
Вызываются из питона, но написаны не на питоне. Что еще тебе надо то?
Знали кстати что на си невозможно ОС написать, только на асме
парни, ну вы реально тупицы, литерали 0iq
>царь
Ни в чем этот петух не шарит, псевдоилитарий-говноед-вниманиеблядь, не надо его упоминать где либо.
да везде нужно, только ты хуй поймешь, что именно из этого безопасно или нет, в расте можно просто сфокусировать свое внимание на unsafe в чужом коде, чтобы быстрее найти уязвимость, в плюсах априори ансейф везде и хуй поймешь, насколько безопасно там что либо. 99% кода пишется криворукими дебилами всегда и везде, зиродеи в линуксе это подтвердят.
Проиграл. Такое ощущение, как будто пердокрысам из запарты принесли потрогать раст и они не осилил БЧ.
почему я в конце каждой его функции не вижу ручного удаления всех переменных? Значит, есть сборщик мусора? В чём блядь разница.
>я в конце каждой его функции не вижу ручного удаления всех переменных? Значит, есть сборщик мусора
Нет, не значит даже для сипэпэ
ну, если ты передашь в функцию &mut value, то сможешь поменять в ней value, и оно также поменяется во внешнем контексте?
это я и назвал сайд-эффектом.
(конечно, когда пишешь &mut, ты вроде как и ожидаешь, что функция поменяет этот аргумент)
или я неправильно понял, в чём суть передачи по ссылке в расте?
>(конечно, когда пишешь &mut, ты вроде как и ожидаешь, что функция поменяет этот аргумент)
Именно. Иначе зачем функции такая сигнатура?
>Покажите мне, чем именно таким Rust безопасен?
https://stackoverflow.com/questions/36136201/how-does-rust-guarantee-memory-safety-and-prevent-segfaults
Если что то конкретное непонятно, спрашивай
есть еще трюк с переполнением численных переменных, а также выход за массив, говорят в криптографии челам оч понравилось
> Почему я в конце каждой его функции не вижу ручного удаления всех переменных?
В плюсах ты тоже этого не видишь, но RAII при этом существует
В расте же ownership semantics в плюсах около аналоги начали появлятся, в core guidelines
https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html
>>561845
>Какая-то ебанина с let mut
Обычный синтаксис, или ты про иммутабельность по дефолту?
Это единственный способ сделать нормальную констатность данных, в плюсах вот по другому сделано, получилось не оч
> передачей простых типов по ссылке
???
Хочешь по ссылке передавай, хочешь по значению, кто тебе запрещает то
> лямбды выглядят не оч
Синтаксически? Ну может быть, но так или иначе, пох на синтаксис
Ну в случае простых типов, это просто более эффективный и простой способ передать значение в функцию, получить его и присвоить к той же переменной. Это не сайд эффект.
Аноны что за шок контент на 4 пике?
> не осилить синтаксис
> какой то пук про ЛГБТ и трансов
Для бинго не хватает про смузи написать
кто этих нпсей клепает?
Видимо там нет автоматического дереференса и это реально два разных типа. Если убрать impl for &Type, то перестаёт собираться на строке &&c.
Пиздец. Сидел в неформальном раст-чятике в телеге. Там половина это плюсовики, которые пришли рассказать какое говно этот ваш раст, как им не бомбит, и как их треугольник на вулкане даёт 5000 фпс, а не 2000 на растовском вулкано. Идеальное место что абсолютно бесполезно провести время.
>>561845
Мало прочитал. Про сайд-эффекты хуету написал. Что не так с лямбдами? .filter(|a| a > 4) пиздатые лямбды для типизированного языка.
begin end begin end begin end
namespace public static class public static void Main
И это красиво? Какая-то дедовская эстетика уровня писать номера линий в бейсике. Я считаю расту можно дохера чего простить за одни только блочные выражения. Только в луа есть что-то похожее в do блоках, но в расте красивее.
let x = {
let a = ...
let b = ...
a + b
};
a, b наружу не вытекают, и не нужно для этого определять целую функцию.
Всё хорошее придумано до вас
Самый красивый язык - это джава, потому что код на джаве можно читать как книгу. Ведь код читают гораздо больше, чем пишут. Ну за исключением Го(вна), там высирают микросервис и даже не читают, просто выбрасывают потом. Вот представьте отрывок из книги:
"Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему.
Все смешалось в доме Облонских. Жена узнала, что муж был в связи с бывшею в их доме француженкою-гувернанткой, и объявила мужу, что не может жить с ним в одном доме."
Легко читается, всё хорошо, но представим, что эту книгу писали бы на расте:
"Вс счстл смьи пхж дрг на дрга, кждая несчстл смья несчстл псвму.
Вс смшал в дме Облонских. Жена узнл, что муж был в свзи с бывш в их дме фр-гувернанткой, и std::io::stdout "что не может жить с ним в одном {}.", дме "
Вроде оно конечно и короче, но смогли бы вы такое читать?
AbstractSingletonFactoryBeanAdapterDelegateProvider
А всё потому что у жавы ограниченная выразительность. Приходится трахать паттерны вместо нормального программирования. Говорят, в последних версиях стало лучше.
Ты уже даже не вытекаешь из треда, тред просто проваливается под тобой. Настолько серьёзной шизы реально нигде не найдёшь, только в растотреде.
Пиздец
>AbstractSingletonFactoryBeanAdapterDelegateProvider
Это еще не самое длинное название класса, бывает поинтереснее, мне нравятся стактрейсы в спринге ух бля разворачиваешь терминал на весь экран и читаешь
Просто пиздец, я ожидал чего угодно, кроме жабы.
Ш - шизофрения.
Шизофрени́я (от др.-греч. σχίζω «расщеплять», «раскалывать»[2] + φρήν «ум, мышление, мысль»[3]), ранее — деме́нция пре́кокс (от лат. dēmentia praecox — «раннее слабоумие»)[4], или схизофрени́я[5], — эндогенное полиморфное психическое расстройство (или группа психических расстройств)[6], характеризующееся распадом процессов мышления.
Окромя шуток обж-си реально как-то так и сделан.
У меня такая реакция от синтаксиса раста. Он настолько засран спецсиволами, что наверно можно продавать растаман специальные клавы с износостойким шифтом.
Ну никаких новых не выходило. Что-то там напукли на расте в ядре линуха, говорят, со временем будут пукать больше. Если текущий тренд развития раста будет продолжаться, я вполне вижу постепенный переезд с C-codebase на раст, но пока раст еще сыроват для этого.
По поводу плюсов, тут тоже фифти-фифти, нужно посмотреть, к чему придут в 23 стандарте.
Ага, а потом гугл допилит свой карбон, сменит его агенду с "лвлап для протухших крестов" на "йоба системный язык нового поколения" и занесёт чемоданы бабла на пиар, так что про него будут из каждого утюга вещать как это происходило с го. И прости-прощай, раст, у смузихлебов новый тренд, мозилла или кто там раст делают такой конкуренции не потянут, да оно им и нахуй не надо.
Это разные вещи, грубо говоря карбон основных проблем плюсов не решит, а лишь позволит на нем писать без огромной жопоболи
но вот вытолкнет ли он по популярности раст ещё надо будет поглядеть, я смотрел недавно на состояние дел там, ну и вобщем если плюсовики раст смузихлебным называют, то там еще весело будет
В потенциале - ещё как решает, это сначала карбон будет просто освобождением от жопоболи крестов, а дальше у них чётко прописана цель:
> Once we can migrate code into Carbon, we will have a simplified language with room in the design space to add any necessary annotations or features, and infrastructure like generics to support safer design patterns. Longer term, we will build on this to introduce a safe Carbon subset. This will be a large and complex undertaking, and won't be in the 0.1 design. Meanwhile, we are closely watching and learning from efforts to add memory safe semantics onto C++ such as Rust-inspired lifetime annotations.
Ну то есть они потом объявят весь карбон unsafe и поверх него прикрутят safe подмножество, которое и будет самым прямым конкурентом раста. хотя они и так будут конкуренты и до safe carbon, ниша-то олна Кто выиграет из двух - я ставлю на гугл, при условии, что они не положат хуй на проект, как это было сделано с. Dart.
Ну я прочитал их же собственный говнофак и сделал так, как они сказали первым же предложением по теме Rust'а. И в чём я не прав?
Мб кто-то совмещал в проектах плюсы и раст?
Не совсем понял, что именно ты хочешь: вкатиться в раст самостоятельно и сменить проект или втащить раст на текущий проект?
Для первого варианта всё относительно просто: читаешь растбук/статейки/другие книги, пишешь простенькие cli-тулзы/сервисы/либы/обвязки вокруг си/плюсовых либ на расте, пишешь что-то более сложное, и ты готов к интервью. Есть опыт в предметной области и плюсах хороший - можно апплаиться и на более синьорские позиции. Блокчейн вакух действительно подавляющее большинство, но есть и сетевые/геймдевные/системные. Можешь полистать в телеге канал с вакансиями на расте по тегу #nobc чтоб примерно представлять, что хотят. Опять же, в блокчейн-проектах нужен не только блокчейн - бекенды на микросервисах сами себя не напишут.
Для второго варианта тебе понадобится изобретательность, хорошие софт-скилы, какой-то авторитет в команде и удача. И отсутствие в команде шизика, вроде того что срёт в этом треде. Бери какой-то кусок функциональности и пили на расте, интегрируй его в существующий код всякими bindgen/cbindgen/cc/cxx и тд. Ну и останется его "продать" команде и менеджменту - для некоторых это самое сложное.
Кулстори:
На прошлой работе (трейдинг, но не блокчейн) я был в дотнетной команде, которая интенсивно использовала плюсовую сетевую либу с ключевой для бизноса функциональностью. Либу делала отдельная команда плюсовиков (лет 15). Либа была только виндовая (dll + пачка .hpp файлов), обильно текла по памяти и иногда крашилась. Но ещё больше было головняка с дотнетными (и jvm'ными и питоньими и goшными) обвязками для этой либы из-за сраных ограничений по многопоточности - вот это можно вызывать только в одном потоке иначе краш, а вот это только в другом, и данные отданные из одного потока нельзя передать в методы вызванные в другом, пушо они аллоцированы из разных куч, и тд. и т.п. И потому что либа была виндовая, приложения с ней нельзя было нормально контейнеризовать (windows containers - то ещё говно).
Я поддерживал .net-обвязку вокруг этой либы и сильно заебался. Написал на расте grpc-сервис, который внутре дёргал методы либы и наружу выставлял в виде удобного АПИ. Благодаря send/sync/!send/!sync удалось избежать большинства проблем с многопоточностью, copy/clone и лайфтаймы избавили от основного головняка с памятью. Ну и это добро уже запускалось в linux под wine - можно было легко докеризовать. В моей команде сначала сильно сопротивлялись, но т.к. более хорошего способа затащить проект в кубер не было, рискнули. Когда я увольнялся чтоб не попасть на утренник, сервисом уже пользовались джависты и питонисты, а гошники собирались переезжать.
После увольнения прошел несколько собесов на растовакансии и получил пару офферов (один тоже в трединговую контору, но не блокчейн, второй вообще не связан с трейдингом). Но принял оффер на позицию на старом стеке пушо на $2k/mo больше денег
Не совсем понял, что именно ты хочешь: вкатиться в раст самостоятельно и сменить проект или втащить раст на текущий проект?
Для первого варианта всё относительно просто: читаешь растбук/статейки/другие книги, пишешь простенькие cli-тулзы/сервисы/либы/обвязки вокруг си/плюсовых либ на расте, пишешь что-то более сложное, и ты готов к интервью. Есть опыт в предметной области и плюсах хороший - можно апплаиться и на более синьорские позиции. Блокчейн вакух действительно подавляющее большинство, но есть и сетевые/геймдевные/системные. Можешь полистать в телеге канал с вакансиями на расте по тегу #nobc чтоб примерно представлять, что хотят. Опять же, в блокчейн-проектах нужен не только блокчейн - бекенды на микросервисах сами себя не напишут.
Для второго варианта тебе понадобится изобретательность, хорошие софт-скилы, какой-то авторитет в команде и удача. И отсутствие в команде шизика, вроде того что срёт в этом треде. Бери какой-то кусок функциональности и пили на расте, интегрируй его в существующий код всякими bindgen/cbindgen/cc/cxx и тд. Ну и останется его "продать" команде и менеджменту - для некоторых это самое сложное.
Кулстори:
На прошлой работе (трейдинг, но не блокчейн) я был в дотнетной команде, которая интенсивно использовала плюсовую сетевую либу с ключевой для бизноса функциональностью. Либу делала отдельная команда плюсовиков (лет 15). Либа была только виндовая (dll + пачка .hpp файлов), обильно текла по памяти и иногда крашилась. Но ещё больше было головняка с дотнетными (и jvm'ными и питоньими и goшными) обвязками для этой либы из-за сраных ограничений по многопоточности - вот это можно вызывать только в одном потоке иначе краш, а вот это только в другом, и данные отданные из одного потока нельзя передать в методы вызванные в другом, пушо они аллоцированы из разных куч, и тд. и т.п. И потому что либа была виндовая, приложения с ней нельзя было нормально контейнеризовать (windows containers - то ещё говно).
Я поддерживал .net-обвязку вокруг этой либы и сильно заебался. Написал на расте grpc-сервис, который внутре дёргал методы либы и наружу выставлял в виде удобного АПИ. Благодаря send/sync/!send/!sync удалось избежать большинства проблем с многопоточностью, copy/clone и лайфтаймы избавили от основного головняка с памятью. Ну и это добро уже запускалось в linux под wine - можно было легко докеризовать. В моей команде сначала сильно сопротивлялись, но т.к. более хорошего способа затащить проект в кубер не было, рискнули. Когда я увольнялся чтоб не попасть на утренник, сервисом уже пользовались джависты и питонисты, а гошники собирались переезжать.
После увольнения прошел несколько собесов на растовакансии и получил пару офферов (один тоже в трединговую контору, но не блокчейн, второй вообще не связан с трейдингом). Но принял оффер на позицию на старом стеке пушо на $2k/mo больше денег
> Ну и это добро уже запускалось в linux под wine - можно было легко докеризовать
Вы там ебанутые были? Пиздец
> Вы там ебанутые были? Пиздец
Ага, мне тимлид сначала то же самое сказал.
Зато потом "переезд в кубер" оказался у него (и у многих других тимлидов) в KPI, плюсовики оценили добавление кроссплатформенности в либу в почти год (пушо там ехал mfc через atl на winapi) и не осилили winelib, а нагрузочное тестирование в пару месяцев показало, что в wine оно по стабильности сравнимо с дотнетной обёрткой на винде, и при этом быстрее и удобнее.
Без исходников. Если хорошо попросить (приложить логи, крашдампы, развернутое описание проблемы и кого-то из боссов в копию) - могли выслать .pdb с отладочными символами. Исходники вообще никому на моей памяти не давали. Хотя толку от них - помимо своей работы еще и ебаться с чужим говнокодом.
Веб макакапомидор, сидящая на тайпскрипте и ангуляре/реакте. В прошлом неплохой опыт шарпа, немного ноды и самообучения си с дрочем на системное. Не люблю много читать, предпочитаю выжимку с примерами.
Цель - потестить концепцию боров-овнершип, миксины, да и в целом ооп заебал. Так же написать что то для терминала, тк tui понравился.
Просто берёшь и начинаешь, хоть с чего.
ну так чего же ты сидишь? показывай!
Работа подразумевает сдвиг влево, побитовое "и" и сравнение с нулём.
Как?
ну самый простой способ делаешь для функции входной параметр реализующий трейт UnsignedNumber
А потом 10 строчек:
impl UnsignedNumber for u8 {} и тд
мбы в стд уже есть такой трейт
Уже сделал как-то вот так https://pastebin.com/szL11Wc3
Так и должен выглядеть чистый код на Расте?
Чяднт, исправьте, пожалуйста
А зачем пишешь ты пишешь as u8, если тип и так слева указан? Ещё, что значит Output = T? В Растбуке ничего не нашёл про это.
Ну и на 14 строке можно оператор сдвига укоротить.
> А зачем пишешь ты пишешь as u8, если тип и так слева указан
Подумал, что без этого не будет работать и что нужно явное приведение
> Ещё, что значит Output = T
В std::ops::Shl::<Output = T> то, что результатом
let x: T = ...
let y: T = ...
x << y
будет значение типа T.
Не знаю, я сам растбук почти не читал. Он как-то душно написан, всё желание зубрить его пропадает.
> Подумал, что без этого не будет работать и что нужно явное приведение
Так и есть, это же сужающее преобразование. На первом пике показано, как, наверное, будет лучше.
> Ну и на 14 строке можно оператор сдвига укоротить.
Не знаю, какое укорочение ты имел в виду, но то, которое попробовал сделать я, не получилось (пик 2).
>Rust — невероятно быстрый язык для
того чтобы быстро кануть в аналы истории, поближе к лиспу
очередная хуета хочет "нагнуть" ВЕЛИКИЙ Си и МОГУЧИЙ Си++
удачи, епта...
Молодец, садись, пять
Анал — заднепроходное отверстие человека, то же, что анус.[источник?]
Анал — язык тибето-бирманской ветви сино-тибетской языковой семьи.
Анал. или аналит. — сокращение от аналитический, т.е. связанный с анализом (например, аналитическая геометрия)
>Анал. или аналит. — сокращение от аналитический
те самые программисты анальники в треде.
у степановой стрим закончился шоль
пидо-растер, ты заебал пиздеть
Rust’s memory safety guarantees make it difficult, but not impossible, to accidentally create memory that is never cleaned up (known as a memory leak). Preventing memory leaks entirely is not one of Rust’s guarantees, meaning memory leaks are memory safe in Rust. We can see that Rust allows memory leaks by using Rc<T> and RefCell<T>: it’s possible to create references where items refer to each other in a cycle. This creates memory leaks because the reference count of each item in the cycle will never reach 0, and the values will never be dropped.
Что конкретно тебе непонятно? Опасны для памяти use-after-free и double-free, это ни та ни другая.
Что такое вообще этот str? Какие значения принадлежат этому типу? Насколько я понял, даже литералы имеют тип &str.
str - простой массив байт, ну т.е. просто набор буков, который ничем не управляет, для тупого JS-дауна: нельзя сложить str+str
string - объект
> str - простой массив байт
То есть это что-то типа struct str(*const char, usize)?
> для тупого JS-дауна
Я из плюсов перекатываюсь и не понимаю некоторых деталей.
Кстати тут есть каст массива к указателю?
Структура хранящая адрес первого чара и их количество.
По-моему под определение "простой массив байт" весьма подходит.
и где ты видел ты видел, шоб так структуры определялись
ты наверно имел в виду это:
struct
{
LPCTSTR lpszText;
unsigned int dwSz;
};
ну и нахуя тебе размер ?
> и где ты видел ты видел, шоб так структуры определялись
В расте. Зачем мне писать в треде одного языка на другом языке?
> ну и нахуя тебе размер ?
А как ещё? Если где-то есть указатель на область памяти, где-то должен храниться её размер.
>А как ещё?
катись обратно в бэйсик, пиздабол
да лан анончик, не обижайся, строка заканчивается 0 null-terminated, ее размер нигде не хранится и нахуй не нужен.
еслиб ты вкатывался из плюсов, ты бы это знал
> строка заканчивается 0 null-terminated, ее размер нигде не хранится и нахуй не нужен
В std::string плюсовом размер хранится, а null-terminated она только для совместимости в сишными строками.
> еслиб ты вкатывался из плюсов, ты бы это знал
Ещё я знаю, что есть pascal-style строки не уверен, что их кто-то так называет, просто запомнил, что паскаль этим и отличается от сей, в которых вообще нет 0 байта в конце, потому что размер хранится именно так, как я сказал.
Впрочем, стоило просто зайти на https://doc.rust-lang.org/std/primitive.str.html и убедиться в том, что я прав.
Вот зачем говорить что-то, если нихуя не знаешь, и строить из себя умника?
>В std::string плюсовом размер хранится, а null-terminated она только
ну хранится, да..
но ведь это и не простой тип, а объект класса.
который может себе это позволить)
> есть pascal-style строки
были такие строки, на практике оказались нахуй не нужны.
>и убедиться в том, что я прав.
нихуя. в противном случае это будет уже не простой тип, а структура, причем несовместимая с системными вызовами, а раст это таки системный язык.
>println!("Sum is: {}", result1);
> но ведь это и не простой тип, а объект класса
Сам понимаешь, что говоришь? Ну ладно, допустим, ты просто оговорился.
> были такие строки, на практике оказались нахуй не нужны.
Круто! Теперь внимательно читаешь первый пикрил. Rust by Example, если что. (Всё таки нужны, оказывается..?)
> нихуя
Я тебе уже официальную документацию принёс, а ты всё не веришь...
> причем несовместимая с системными вызовами
С какими системными вызовами? Как может быть структура данных совместима или не совместима с системными вызовами?
Ну вот в линуксе, например, есть системный вызов write, который нужен для записи данных в файл по номеру дескриптора. Туда можно вывести массив байт. Допустим, этот массив байт является строкой. И чёт не особо нужно, чтобы эта строка была null-terminated, ведь там есть параметр count, отвечающий за то, сколько байт будет выведено.
В WinAPI есть системный вызов WriteConsole, который предназначен для вывода строк в консоль, и ему тоже не нужны null-terminated строки, ведь он тоже имеет параметр count, да что ж такое?!
Может я просто жирный троллинг не понимаю?
>Всё таки нужны, оказывается..?
в очередной раз подверждается, что раст это конченное дерьмо.
> вызов write, который нужен для записи данных в файл по номеру дескриптора
ты еблан или притворяешься ?
ты в файл ебашишь не строку, а буфер..
создай txt и любым редактором напиши туда "я еблан", открой его в HEX и поищи, где там размер указан.
тоже касается WriteConsole, там используется буфер, это идет еще с досовских времен, когда к текстовому буферу видеокарты можно было обратиться напрямую.
null terminated string используется при открытии файла, а не при записи в него.
ты с какой ветки слез, анончик.
Не слушай шиза выше, вот если кратко
https://stackoverflow.com/questions/24158114/what-are-the-differences-between-rusts-string-and-str
а вобще не советовал бы в этом треде что то спрашивать, тут околопоехавшие студентики и шизы деды
>Си строки все в рот ебали
при этом в системных вызовах только эти строки и используются.
,а rust - это системный язык (с)
аахахаа пидо-растеры, не устану макать вас еблом в ваше же дерьмо
добоеб, println принтит простою строку,
а println! - это т.н. выразительный принт, он принтит строку на красном фоне
eblo_skufa db "Скуфи, заметь, эта строка заканчивается 0",0
title db "Возим пидо-растеров носом по их калу."
push 0x40
push offset title
push offset eblo_skufa
push 0
call MessageBox
> создай txt и любым редактором напиши туда "я еблан", открой его в HEX и поищи, где там размер указан.
То есть ты хочешь сказать, что размер файла нигде не хранится?
> null terminated string используется при открытии файла, а не при записи в него.
Ладно, с этим небольшой обсёр. Во всяком случае, для этого есть отдельные типы CString и CStr.
>>573484
> при этом в системных вызовах только эти строки и используются.
Потому что основные ОСи были написаны во времена динозавров и теперь нельзя ничего менять, потому что всё сломается?
Просто напоминаю, что если тебе в какой-то момент понадобится размер строки, тебе придётся пройтись по ней от начала до конца в поисках 0 байта. Причём не факт, что он там будет.
>размер файла нигде не хранится?
причем здесь размер файла, мы про буфер говорили, который используется в системном вызове, для записи в этот файл.
>для этого есть отдельные типы CString и CStr.
ну т.е. костыли, которые друг к другу еще кастить надо, с аллокацией памяти и копированием..
>Потому что основные ОСи были написаны во времена динозавров
в том числе и поэтому, но так то ее еще выравнивать придется, по границе слова, короче дохуя памяти и гемора, а выигрыш околонулевой.
>в какой-то момент понадобится размер строки
это не такая частая операция и на самом деле не такая дорогая, ибо строки, как правило, очень короткие.
для длинных строк никто не запрещает использовать std::string
да можешь хоть свой класс сделать, что мешает та
> причем здесь размер файла, мы про буфер говорили, который используется в системном вызове, для записи в этот файл.
> создай txt и любым редактором напиши туда "я еблан", открой его в HEX и поищи, где там размер указан.
Может ты просто сам не понимаешь, что хочешь сказать?
> в том числе и поэтому, но так то ее еще выравнивать придется, по границе слова, короче дохуя памяти и гемора, а выигрыш околонулевой.
Ты же дегенерат и хуйню какую-то несёшь.
> это не такая частая операция и на самом деле не такая дорогая
Я тебя понял.
> Рррряяяяя хранить размер строки дорого ррррррряяяяяяя
> Пук срёньк находить размер строки O(n) норм
>Что такое вообще этот str? Какие значения принадлежат этому типу? Насколько я понял, даже литералы имеют тип &str.
Сами литералы имеют тип str, но ты нигде не оперируешь самими литералами, а только ссылками на них.
String это структура фиксированного размера, смарт пойнтер на str, массив символов произвольного размера. Литералы никогда не владеют символами на которые ссылаются, к примеру они не могут дропнуть эту область памяти, поэтому там всегда &str.
Выражаясь иначе, String это единица аллокации, &str это указатель на слайс, подстрока внутри произвольного String. У каждого String может быть сколько угодно &str, но не наоборот.
Явное обозначение макроса. Нравки ебаться с внезапными define?
String - это аналог std::string, &str - это аналог std::string_view (+гарантия валидного UTF-8). Конкретно тип str - это некий костыль d в виде безразмерного объекта, который позволяет в одном и том же типе Box хранить и единичный объект Box<Foo>, и массив Box<[Foo]> и строковый слайс Box<str> не городя ересь наподобие ArrayBox и StrBox.
String - это вектор вида Vec<u8> гарантирующий валидную UTF-8 последовательность и не null-terminated.
Почему он должен быть unsafe? Вполне тривиально для большинства типов реализуется с помощью safe методов.
Насколько я понял, для его реализации нужно просто реализовать PartialEq, но при этом мы должны гарантировать то, что будет выполняться рефлексивность, симметричность и транзитивность, которые не могут провериться компилятором.
Разве не для этого unsafe нужен?
Нет. unsafe ограждает код, потенциально ломающий аллокации в памяти и потенциально содержащий undefined behaviour, таким образом, что какой бы ты safe код поверх него ни написал, ты не сломаешь аллокации и не вызовешь UB. Это не гарантия корректности кода, которую ты должен проверять тестированием.
https://verdagon.dev/blog/when-to-use-memory-safe-part-2
>Почти вся статья о том как борроу-чекер уничтожает продуктивность
У неосиляторов. Первое время может быть да, но сейчас уже год с растом работаю и редко когда вижу что компилятор посылает меня нахуй.
>особенно в прототипировании
Для таких целей любой язык со строгой типизацией будет не быстрым, если не знаешь что будет в конце бери js или петухон и играйся сколько влезет.
>делает рефакторинг отдельной болью
Наоборот cargo clippy и покажет тебе все где ты накосячил, рефакторить в разы удобнее чем в других языках.
> mut везде протекает через абстракции
Лол нахуй так писать. Придут со своих джавашарпов и каждая вторая переменная мутабельная.
Каст к константному указателю того же типа. `_` - это wildcard, который можно использовать везде, где компилятор может самостоятельно вывести тип.
Допустим я пишу свой век
Могу я при переполнении переносить данные просто memmove? Не надо же каждую структуру в цикле присваивать?
просто в плюсах такое UB вроде, вот хзы как в расте
Можешь копировать. Присваивание неинициализированной памяти - наоборот UB.
в доках непонятно написано, чувствую что можно легче объяснить
когда мне объяснят, я с удовольствием и тебе поясню
Представь, что каждая переменная защищена мютексом или RWLock'ом. Перед тем как изменить значение переменной ты обязан как бы захватить мьютекс, ты это делаешь через &mut. Это - mutable borrow. Он может быть только один, потому что иначе невозможно поддерживать некоторые инварианты. Если тебе нужно только прочитать значение, тебе достаточно захватить read-lock, ты это делаешь через &. Это обычный borrow, их может быть сколько угодно одновременно.
Отличие борроу-чекера от настоящих мьютексов в том, что он работает на этапе компиляции и там, где были бы гонки и дедлоки происходит просто ошибка компиляции.
Вы че, ебанутые? Назвали бы тогда не mut, а unique, или если по растерски, то uniq. А аналога const из C++ у вас совсем нету, получается. Я только начинаю перекатываться, но некоторые вещи мне не нравятся прям пиздец как сильно. Пока что от дропа меня отделяет только либа wgpu, которая, конечно, есть и для плюсов, но выглядит она на них как кал. Надеюсь что наитие меня ещё настигнет, но пока от вашего языка я в основном плююсь. Хотя есть и очень много положительных моментов, но я их перечислять не буду, вы их и так все уже знаете.
> А аналога const из C++ у вас совсем нету
Что мешает мне сделать аналог атомика в плюсах, который будет иметь не константный метод store?
Или а чем это не аналог?
Всё правильно. Просто нах атомики иначе нужны, если их по мут ссылке передавать?
>Посмотрите на методы того же атомика - store принимает &self, а не &mut self
Это interior mutability, которая нужна чуть чаще, чем mutable в плюсах, то есть мы лезем в залупу, то есть для примитивного изложения это лучше опустить.
Пришлось бы объяснять что за такая уникальная ссылка и зачем и как, а с mut и волки сыты, и овцы целы.
Если прямо переводить, то это владение. Некий блок кода владеет объектом в переменной. При завершении этого блока нужно удалить объект, в том числе почистить все ассоциированные ресурсы (память, файлы, сокеты, итд).
По умолчанию когда ты вызываешь функцию без всяких &, ты передаёшь владение объектом, теперь это её, функции, головная боль вовремя удалить объект.
Не отдавая владение объектом его можно одолжить (borrow). >>580258 вот тут нормально расписано как это работает.
Дальше идут нюансы, всякие трейты Copy, Clone, Drop, они насыщают этот механизм разнообразием поведений. К примеру трейт Copy позволяет каждый раз клонировать объект вместо передачи владения.
Mut это ещё гарантия единственной ссылки. Атомики нужны чтобы иметь много ссылок. Поэтому здесь немного упорото. В доках говорят что это копия atomic_ref из C++, оно и там тоже прикидывается что объект не меняется void store( ... ) const noexcept;
Множественное владение же только через аналог shared_ptr делается. Атомики это про модель памяти и гарантии синхронизации между тредами
Речь не о множественном владении, которое Rc<T> или shared_ptr, а о ссылках. Для любой синхронизации нужно больше одной ссылки, между же тредами, не будешь же синхронизироваться сам с собой.
Лучше не надо, будет всё казаться лишним и переусложнённым ПРОСТО ТАК, потому что нет никакого понимания, с какими ситуациями данные решения призваны бороться.
Как первый я бы не рекомендовал слишком сложно будет
>mut - это скорее про уникальность ссылки
Да, ты прав. Да, многие глубоко заползшие растеры согласны, что uniq был бы лучше. Но оно уже сделано как сделано, и мы просто привыкли что &uniq ссылки у нас называются &mut. Язык слишком хорош, чтобы его дропать из-за такой мелкой фигни.
Ну и при объявлении переменной "mut" всё же про мутабельность, так что не везде "mut" неправильно назван:
let mut a = 0;
Не рекомендуется, но можно. Из минусов есть шанс получить неприязнь ко всем остальным языкам, потому что если ты первым языком учишь раст, при изучении следующего появляются мысли вроде такой: "бля, ну что за хуйня, вот в расте оно нормально сделано, а не через жопу".
Для углублённого понятия существующих проблем в современной низкоуровневой разработке нужно начинать с си.да и чуть ли не все современные языки в топ10 с си-подобным синтаксисом, это как плюс Только после ебли с сишкой можно переходить на раст и начинать вникать в то, что он предлагает и зачем. А там и понимание придёт и скилуха.
Ну или как советует этот анон >>584401
А вдруг это только бывалым сложно и непривычно? Справляются же как-то спецы по БД с shared lock/exclusive lock.
Можно ещё с zig вместо си. Это как си, только более явный и читаемый.
> Придут со своих джавашарпов
Ну этот чел не такой простой как кажется. Он там свой язык напилил, Vale, с какими-то арена-аллокациями, я не до конца понял, но якобы аллокация происходит один раз для целого блока кода и отпадает необходимость следить за каждым объектом через всякие RC/GC. И его эти эссе об управлении памятью это попытка разобраться что уже придумано и где оно сосёт.
Про арены можешь подробнее почитать в пейперах про regionml, 90-ые годы (впрочем как и clean, в котором были реализованы линейные типы ("борроу-чекер" по-местному))
мимо
Когда создавал лучший язык.
error: toolchain 'stable-x86_64-pc-windows-gnu' does not contain component 'rust-lldb' for target 'x86_64-pc-windows-gnu'; did you mean 'rust-std'?
Как фиксить? lldb установлен
> Как фиксить?
Ставить ОС пригодную для разработки
https://github.com/rust-lang/rustup/issues/2838
Один из двух активных контрибуторов fish shell свихнулся и решил всё переписать на расте. Второй чел охуел, говорит что не знает раст, что дистроделы будут яросте, много кому сломает процесс сборки.
Чо не форкануть просто
Господи спасибо что я пользуюсь zsh, где в мейнтейнерах нет соевого дурачка с растошизой. Ну а fish можно помянуть, скоро разделится на два полудохлых форка.
*soundness
Второй контриб много чего пояснил потом. Говорит что на самом деле для них это решение не было шоком. И что тот самый ridiculousfish, который сейчас начал толкать раст, на самом деле когда-то вытащил проект из забвения, и переписал его с си на си++.
https://github.com/fish-shell/fish-shell/pull/9512#issuecomment-1410820102
Можно успокоиться и отставить истерику.
С чего начать вкат в системное программирование, если я бэкэнд макака?
Что то про ОСи почитать может, или вообще про железки?
Для начала запомни, что любая из книг Танненбаума - это говно из жопы. Очень много воды и совершенно нет полезной информации.
Если совсем не знаешь, как работает компьютер, можешь прочитать книгу «Код» Чарльза Петцольда. Она не серьезная, но в общих чертах описывает то, как работает типичная числодробилка. Если хочешь сразу серьезное - есть замечательная книга Харрис&Харрис. Если нужно что-то между, есть «Nand to tetris»
Далее читаешь книгу «OS 0 to 1». Перед ней лучше выучить Си, но это не сложно, ибо Си простой как палка.
Потом читаешь документацию интересующей операционной системы.
Спасибо, полистал "Код" и книгу Харрисов, решил на последнем остановиться. Код какой то слишком банальный.
Танненбаума еще в шараге по сетям читал и половину не выкупал, лол.
Алсо, есть какая нибудь литература про Си, где походу книги делаешь что то свое? Типа как в SICP интерпретатор на лиспе, или как движок на крестах, только на си?
В последнее время начали его пихать везде. И круды вроде как стало легче пилить, а за счёт бороу чекера можно будет всю эту байду крутить в облаке за копейки.
Планирую, всё же окончательно, перекатиться в Раст, годиков так через пять. Когда волна хайпа поднимется уже среди кабанчиков.
Какие подводные?
Раст это для души, это если ты больной на голову перфекционист, которому нужна максимальная производительность выполнения за счёт человеческой продуктивности. Лутай бабос дальше на го и не парься. Некоторые даже на пхп продолжают лутать.
Мне нужно сделать приложение, которое будет принимать сигналы с измерительной хуеты (пример на пикриле) и обрабатывать в нужной мне математической форме. В институте уже есть программа какая-то древняя, которая может ловить сигнал. Но она работает на 98-ой винде, хотелось бы что-то своё да посвежее (на жму/пинус, макос, винде).
Вопрос в том, как мне получать такие же сигналы как в той программе? Придётся драйверы заново писать для интерфейса?
бакалавр заборостроительного, третий курс
>Мне нужно сделать приложение, которое будет принимать сигналы с измерительной хуеты
Руководство по эксплуатации от хуеты в студию или иди на хуй.
>Вопрос в том, как мне получать такие же сигналы как в той программе? Придётся драйверы заново писать для интерфейса?
>
Поищи ради прикола драйвер и API для современной винды, но там скорее всего какая-то проприетарная платка для PCI, которую тебе никто не даст. Если USB, то можно попробовать отреверсить пакеты, но нужно очень так глубоко лезть в протокол.
https://www.hackster.io/news/read-data-from-an-old-agilent-54621a-oscilloscope-via-rs232-port-e6a453053fc2
Все уже написано до тебя, тупой идиот, не умеющий пользоваться гуглом.
Но ты еще и настолько тупой идиот, что не сможешь скачать и скомпилировать готовый проект, да, идиот?
>Поищи ради прикола драйвер и API для современной винды
О, еще один тупой прикольный идиот.
У вас тут гнездо, идиоты?
>О, еще один тупой прикольный идиот.
>У вас тут гнездо, идиоты?
Ну нет у меня привычки рассматривать шакальные фотографии, что же теперь. :3
>Ну нет у меня привычки рассматривать шакальные фотографии, что же теперь.
Тогда вырабатывай в скебе привычку сосать хуй.
терминал warning высирает и всё(
Поисковый движок на расте написан :)
Ошибку в студию, пожалуйста, все телепаты в отпуске.
Эффекты, кстати, уже есть и в мейнстримных языках типа хаскелля и окамля. есть ещё язык тоже майковский: F с зав типами и эффектами, и его сабсет low для низкого уровня. язык имеет встроенный солвер z3
Что-то заинтересовался этим языком.
Подводные?
Оверкил скорее всего, но если интересно, то почему бы и нет.
Характеристики ЯП — это многомерное пространство, и каждый занимает там некоторую нишу. Всякие зав типы и эффекты — это прекрасно, но это только одна из координат в этом многомерном пространстве, эдакая бескомпромиссная переиспользуемость кода. Есть ещё производительность выполнения, ментальная нагрузка разработчика. Последнюю можно разделить на множество независимых координат: лёгкость чтения, написания, поиска, предсказуемость, помощь утилит, доступность утилит и библиотек под каждую область, длина цикла модификация/запуск, итд.
Дальше берётся некоторая потребность. Наговнякать сайт по-быстрому, написать верифицированный код для медицинского устройства, создать игру без тормозов/с красивой графикой/для лоу-энд устройств, итд. Каждая из этих потребностей задаёт ограничения на выше обозначенном многомерном пространстве, и оптимальный выбор языка становится задачей выбора из 2-3 кандидатов, а то и меньше. И вот алгебраическими эффектами в таком выборе жертвовать легче всего. И без них всё делается достаточно качественно и быстро.
Если ты уже писал беки на чём-то - тебя ждут мелкие неприятные сюрпризы с экосистемой. То, что для джавашарпов и гопитонов есть в виде зрелых либ/фреймворков (и обычно с несколькими тоже вполне зрелыми альтернативами), в расте может быть в версии 0.1.1 и заброшено в 2020 году. Я имею в виду веб-фреймворк с какой-то аутентификацией и мидлварями, БД+ORM, очереди, кеш, логи+метрики+трейсы, всякие прочие примочки вроде сваггеров/удобных интеграционных тестов/etc.
Для обычного крудобэка кода будет немного больше, чем на "популярных" стеках, но ничего смертельного. Всё сильно усложнится, если захочешь выжать из своего поделия какой-нибудь особой производительности.
Если беки ни на чём не писал - лучше выбери или другой стек, или задачку попроще, вот честно.
расто-неофит из >>568801
Когда раст делает больно. Борроучекер не даёт легко объединять повторения в коде.
насколько я знаю раст для бэка используют вот прям в очень байтоёбских задачах, когда кабанчик мечтает о 100% аптайме и готов за это платить (те же банки)
Ты сам читал что принес?
Очередной высер неосилятора джаваскриптизера который не разобрался.
let s = "a very long string".to_string();
let x = f(s);
let y = g(s);
Это на первых страницах растбука расжёвано, когда передали s в вызове f, то теперь мы дальше не владеем это переменной, если хочешь владеть пользуйся ссылкой.
let f = MyType::from;
let x = f(b"bytes");
let y = f("string");
Потому что добавление b превращает строку в байты, вот пример:
assert_eq!(b"bytes", "bytes".as_bytes());
Будет равно, это просто синтаксический сахар который вызывает метод as_bytes. Теперь объявленная f при компиляции после первого выражения принимает тип fn(&[u8]) -> MyType и в следующем вызове ждет байты, но ему дают строку. Опять же воспользовался синтаксическим сахаром который позволяет не указывать типы, если бы указал типы при объявлении переменной или пользовался ide не обосрался бы. Раст очень строго подходит к типам, ты даже u8 и u16 не сложишь без явного приведения к одному типу, именно поэтому не дает передать строку без явного приведения к вектору u8. И сам же ниже заметил нужно подружиться с дженериками тогда и будет счастье.
self.state = match self.state {
Ping(s) => { self.inc(); Pong(s) } // ← compile error
Pong(s) => { self.inc(); Ping(s) } // ← compile error
}
Как бы если у enum записывать в self.x не скомпилируется ))) я попытался залезть в голову автору воспроизвел это https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=ee3a36d7d30fd732957854dbf81dfbf5
И оно работает, бывает иногда проблемы с мутабельностью и бороу чекером, но они у меня перестали возникать через месяц-два после написания на расте, спустя год такое возникает вообще редко.
Дальше не читал, уноси
Ты сам читал что принес?
Очередной высер неосилятора джаваскриптизера который не разобрался.
let s = "a very long string".to_string();
let x = f(s);
let y = g(s);
Это на первых страницах растбука расжёвано, когда передали s в вызове f, то теперь мы дальше не владеем это переменной, если хочешь владеть пользуйся ссылкой.
let f = MyType::from;
let x = f(b"bytes");
let y = f("string");
Потому что добавление b превращает строку в байты, вот пример:
assert_eq!(b"bytes", "bytes".as_bytes());
Будет равно, это просто синтаксический сахар который вызывает метод as_bytes. Теперь объявленная f при компиляции после первого выражения принимает тип fn(&[u8]) -> MyType и в следующем вызове ждет байты, но ему дают строку. Опять же воспользовался синтаксическим сахаром который позволяет не указывать типы, если бы указал типы при объявлении переменной или пользовался ide не обосрался бы. Раст очень строго подходит к типам, ты даже u8 и u16 не сложишь без явного приведения к одному типу, именно поэтому не дает передать строку без явного приведения к вектору u8. И сам же ниже заметил нужно подружиться с дженериками тогда и будет счастье.
self.state = match self.state {
Ping(s) => { self.inc(); Pong(s) } // ← compile error
Pong(s) => { self.inc(); Ping(s) } // ← compile error
}
Как бы если у enum записывать в self.x не скомпилируется ))) я попытался залезть в голову автору воспроизвел это https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=ee3a36d7d30fd732957854dbf81dfbf5
И оно работает, бывает иногда проблемы с мутабельностью и бороу чекером, но они у меня перестали возникать через месяц-два после написания на расте, спустя год такое возникает вообще редко.
Дальше не читал, уноси
> неосилятор
> джаваскрипт макаки
> дальшенечитал
> в мануале всё разжёвано
> врёти у меня всё нормально через два месяца
Бинго за один пост! Как тебе это удаётся?
да не трясись ты
>Как тебе это удаётся?
Не знаю, они сами в тред приходят и такие статьи пишут, тут полное бинго тупости в статье. Нахуя ты сам такое бинго в тред приносишь?
Раст нужен энтузиастам борщехлебам
Просто ты токсичная чмоня и извергаешь яды по любому поводу. Человек-валидатор, которого всю жизнь за каждую пробу и ошибку ебали как сидорову козу.
Иди поплачь, еще в спортлото жалобу подай на меня. Если для тебя называние говном статьи состоящей на 99% из говна извергнание ядом, то я не знаю как ты живешь со столь утонченной натурой
Почему не нужен? Раст это же замена си, то есть базового языка для обучения и вката.
Потому что для вкатунов там много "лишнего" от лайфтаймов, до бороучекера, плюс еще различный синтаксический сахар, иммутабельность и прочие штуки. Чтобы эти штуки понимать нужно хоть немного иметь коммерческого опыта. Человеку которому пару дней назад объяснили что переменная это коробочка в которую положили записочку мягко говоря будет сложно понять некоторые вещи. Но для тех кто любит трудности это наверное самый раз
> с
> базовый язык для вката
Ебала аналитиков данных, тестеровщиков и фронтендеров представили?
Нет, замена си это Zig. А раст это замена C++. Для обучения и вката достаточно Go.
Два чая. Это база
Первые пару дней я был под впечатлением от раста.
Сегодня я сдался, мне каждый раз нужно лезть в гугл и ублажнять ебучий компилятор бороу чекингом и мув семантикой?
Да, в этом есть плюсы, но это лоу лвл программы, стабильные, которые будут поддерживаться лет 10 и компания будет инвестировать.
Для пет проектов. и прочего это говно нахуй не сдалось. Я каждый день сижу надрачиваю компилятору вместо того чтобы концентрироваться на более высокоуровневых вещах. Подумайте дважды, чем шагать сюда.
Да, можно выебываться перед коллегами словечками мономорфизация или мув семантика, ток это нахуй никому не надо.
Пойду писать свои проекты на питоне\го.
Что выбрать для вката в микроконтроллеры?
Прошивать программатором ничего не хочу, хочу прошивать через USB и одну команду.
Достаточно ли дешёвого набор Arduino UNO SMD и датчиков, чтобы осуществить любые хотелки?
Подскажите что за плагин, который пишет ошибку сразу в строчке с кодом?
Лошара, для петпроектов есть кложур\хаскель. А раст - это низкоуровневый язык, да.
Ну вон выше говорят что после двух месяцев совсем не пахнет и можно писать так же продуктивно.
Нашёл. Это Error lens, охуенный плагин.
Эх если бы
Да да да, расскажешь . Продуктивно. Раст нахуй никому не уперся.
>>621676
Дадада, конечно. Кложур\хаскель\ерланг и прочая поебень - полная параша. Петроекты на то и петпроекты, что нужно сделать быстро и запустить попробовать.
Ебаться с ебанутыми парадигмами, как бы они не были хороши - нахуй не надо. У тебя есть время дрочить хуйню которая не принесет бабла? Дрочи
Мое время ценнее, нежели дрочить хаскель, Я за пару часов на го наклепал то, что сделал за пару дней на расте, это пиздец.
И мало того, что го лучше своим стд, на расте тебе придется обойти пару либ чтобы выбрать что то, а потом еще углубится в них и посмортеть что как работает, а потом ублажнить компилятор. Я хуею нахуй, язык для дрочеров, просто пиздец.
Я все сказал. Ушел.
до завтра!
> Раст нахуй никому не уперся
Это уже какая-то другая крайность. Упёрся, очень даже. Писать на нём дороже, но выжимать производительность и не отращивать десятый мозг чтобы предвидеть ub/баги с памятью — вполне годно. Геймдев, высокопроизводительные сервера (чаты, очереди, там где стейт не снаружи в бд, а в самом сервере), критичные userspace утилиты. Зависит короче какие у тебя там петы. У меня вполне успешный опыт написания пета на питоне, а потом переписывания на расте. То что считалось потенциально несколько недель, посчиталось за день.
Все что ты написал это хуяк хуяк и в продакшн сайт запилить, НО для этого нужны высокие абстракции без ебли с низкоуровневой залупой, которую раст предоставить не может. Если бы раст действительно занимал эту нишу, то на него бы давно переписали все микросервисы для которых таких фреймворков и не надо, но ничего такого нет и в помине.
> успешный опыт написания пета на питоне, а потом переписывания на расте
О, не хочешь portage переписать?
Не, я даже на питоне в него изменения внести не смог, очень уж сложный. Ну и я немного переболел гентой и на убунту укатился.
Ну и вишенкой переизобретение классов в отдельной взятой библиотеке, на макросах, https://gtk-rs.org/gtk4-rs/stable/latest/book/g_object_subclassing.html
На Rust'е писать в разы проще, чем на голанге или плюсах. Вы ебанутые? Тут компилятор вас за ручку водит, а линтер не позволит написать хуёвый код. Лучший язык на свете
бля, первое предложение это не вопрос. что за осцилографы за 3-4к?
Толстый троль, которому поверят только зеленые.
Выше чел правильно все расписал. С растом нужно ебаться пару месяцев. Все зависит от бизнеса. Кто то же до сих пор пишет на хачкеле и платит за это деньги.
Бизнес любит быстро. А ты можешь предложить бизнесу быструю гошку. Да, компилятор хуевей чем в расте, но задачи будут клепаться, бизнес развиваться.
Это тоже самое как покупать мак или линукс. Хочешь дрочить с дыркой в кармане? Покупай линукс. Хочешь купить ноут и начать работать? Берешь мак. все просто.
На самом деле пугающая херня, которая заставляет задуматься. Для обычного принта используется магия макросов.
Еще в 90-2000 обсуждали эти арены/зоны/контексты.
Оказывается в программе не так много этих областей и кроме статики или области функции, тебе на вряд ли понадобиться более двух, трех областей, где ты мог бы "собраться".
Но в реальности, если тебе надо щупать бизнес логику проще взять язык с гц, а если надо пощупать железо, то древних си и плюсов хватает с головой. Поэтому раст и не выстрелил, несмотря на попытку натянуть его на глобус. Особенно забавно, когда пытаются его в веб пропихнуть.
навряд ли
>Бизнес любит быстро. А ты можешь предложить бизнесу быструю гошку.
Спорно.
Есть бизнес хуяк-хуяк и там рулит typescript, C#, java, python.
А есть настоящее айти, где выравнивание структуры даёт прирост и экономию на железе
Гавноед здесь только ты, потому что можно написать
println!("Sum is: {result1}");
И почти уже твой любимый JavaScript
Какой-то пук ни о чём. В расте, если что, нет арен, ты конечно прямо об этом не заявил, но построение текста намекает.
Древних си и плюсов хватает ровно так же как и брейнфака, чисто технически можно всё на свете сделать, хватит с головой, вот это всё, по-человечески все любят cargo и весь джентльменский набор линтеров встроенный в компилятор.
Вот тут можно причаститься как раст не выстреливает в прямом эфире: https://lib.rs/stats
Насчёт веба ничего не скажу, не смотрел. Знаю только что фигма свой бэк с вебсокетами и мультиплеером на расте написала. Веб сегодня довольно разный.
В Расте всё наоборот - компилятор выступает как дрессировщик, а юзер как загнанный зверь поначалу.
Какая идеалогия вам ближе всего?
> В расте, если что, нет арен, ты конечно прямо об этом не заявил
Был бы твой мозг сложнее чем хлебушек, ты бы заметил что речь идет не про раст, а про vale и арены.
>Вот тут можно причаститься как раст не выстреливает в прямом эфире
Если сейчас пойти в любой экзотический язык, особенно комьюнити, начнет складываться ложное впечатление, как-будто он активно развивается и вот вот станет очень популярным (если не уже, в их умах). На деле же, за столько лет (уже вроде больше 8?), раст мало чего путного достиг и топчится где-то внизу спроса, простреливая где-то благодаря хайпу и неокрепшим умам тех, кто его на работу протащил (от чего бизнес еще взвоет).
Дело даже не в том, что кто-то анализатор умудрился прикрутить к компилятору, большого ума не надо (хотя на деле концепция владения живет только для хеллоу ворда, а весь код у тебя из ссылок и костылей в виде Rc). А в том что раст накладывает на разработчика лишнюю нагрузку. Даже если ты себя надрессируешь, тебе все равно придется писать в рамках баран-чекера в тех местах, где он по сути и не нужен.
Если в С++ есть все те же инструменты и они опциональны и восстребованы только когда реально нужны, то в расте ты всегда зажат в рамках узкой парадигмы, словно в каком-то трубопроводе.
И да пиарщики раста умудрились надрессировать комьюнити так, что ошибка с аллокацией памяти, стало прям главной проблемой тысячелетия в разработке ПО, но на деле же любой управляемый язык давно избавился от этой проблемы, но код безопаснее от этого не стал ниразу. там, кстати, свои пиарщики и возвели другую проблему в абсолют, проблему с наллами (null), но затирание буллшитов ровно такое же
Не завидую тебе, везде нужно бизнес какой-то из жопы вытаскивать и переписывать всё на с/с++ чтобы точно популярно стало. А то понапринесут своего пидорства новомодного, ууух суки.
>>624236
С хуя ли Rc это костыль? Там где не надо борроучекер, там и используй Rc. Будет почти как в обычном gc-языке как в свифте. Даже крестолуддиты не чураются shared_ptr. Очередной пиздобол с общими фразами про хайп, неспособный разобраться в вопросе.
>Если в С++ есть все те же инструменты и они опциональны и восстребованы только когда реально нужны, то в расте ты всегда зажат в рамках узкой парадигмы, словно в каком-то трубопроводе.
Да-да, большинство С++ программ крашатся первые 15 лет
>а весь код у тебя из ссылок и костылей в виде Rc
У меня не состоит, сейчас ide открыта проект на 84 файла только в двух местах обернул в Arc<Mutex<>> и то из-за асинхронности, остальное всё контролируется бороу чекером. Другие проекты примерно также. Что я делаю не так? Как я по твоему должен писать на расте?
>Если в С++ есть все те же инструменты и они опциональны и восстребованы только когда реально нужны
Шизик тебя с этим обоссали уже несколько тредов подряд, ты специально приходишь мочу пить?
Очередной дауненок который не может в отличие Rc и ARC, если бы ты знал, как работает свифт, не писал бы хуйни.
Кстати, раз затронули язык. После ?? и анврапных конструкций раст выглядит ублюдущно. Имхо.
>в двух местах...и то из-за асинхронности
>Что я делаю не так?
Устройся на работу и начни уже программировать. Кому ты нужен с пет проектами с асинхронностью в двух местах.
>Да-да, большинство С++ программ крашатся первые 15 лет
Ну да, аллокация памяти сама главная проблема сейчас в разработке (а не говнобюджеты и вечные "херак и в продакшен"), вот в управляемых языках вообще багов нет, ведь там нет проблем с памятью.
> написал лабу
> пойду ка я в расто тред рассуждать о судьбе программирования, что на самом деле нужно бизнесу и как нужно писать код
Каждый тред всё одно и тоже
>>624450
>там нет проблем с памятью
может потому что они с памятью не работают?
Если запустился rust, то уже уверен в том, что 99% строчек кода работают как запланировал. Единственный конкурент у раста не C++, а golang
Унизили за пет проект, о котором сам проговорился. Теперь кругом у него студенты. Лучше бы молчал.
>Если запустился rust, то уже уверен в том, что 99% строчек кода работают как запланировал
Да ну просто новая эпоха в программирование! Решили проблему с аллокацией через анал-карнавал, вроде как с гонкой что-то сделали (больше чем уверен, что тупо черед рид-онли) и на тебе супер-пупер язык с самой безопасной утечкой памяти.
Такое ощущение что ты глупый smm'щик, а не программист, ведь программист то должен знать об управляемых языках и вкурсе, что там чуда не произошло.
Ты просто боишься потерять работу, ведь скоро тебя заменят раст-кодерами
Вы можете предсказывать тенденции? Получается если мы сейчас вкатимся, то через пару лет будем как синьоры "духов" джунов на путь истинный направлять и тред будет наравне с плюсами по активности?
>с асинхронностью в двух местах
Самый прикол что асинхронность везде, просто когда стучишь на те же сторонние апи и для остальной безнес-логики не нужно все оборачивать в Arc. Достаточно передать то что нужно при вызове внутри tokio::spawn тут либо теряешь владение, либо клонируешь, для мелких json не критично и потом получить результат вызвав futures::future::join_all, а так по сути у меня в Arc обернут только контекст где конекшен к БД и всякие прочие вещи которые нужны везде. А другое место с мьютексом там одна штука для бизнес-логики где асинхронно запись в структуру и нужна мутабельность и лочить. Всё, остальное как я выше описал передали -> получили ответ.
То что ты говнокодишь у себя в плюсах используя везде не GC еще не значит что другие также делают.
что такое лабы? это когда препод даёт задачу по программированию? просто в моем инженерном институте мы на лабах со всякими установками возимся и измеряем на йобах 50-летней давности, а программы и прочее я сам дома делаю, даже лучше чем it студенты
Жопоскриптеров скоро заменит иишечка.
Ирония судьбы, натираешь свой питон, а он же тебя потом и задушил.
Смешно, но я больше боялся, что везде обмажут гошкой и придется его есть. Про раст даже не говорим. Были пару додиков, которые до релиза фапали, а потом утихли. Возможно недостаточно хайпуете.
>везде обмажут гошкой и придется его есть
Так так и произошло! Сейчас все крупные русские ит-компанию во всю пишут на нём бекенд и микросервисы
У нас нет, выкинули при первых тестах на производительность. Нереально тормозное говно, при всем своем минимализме (ну или фанбои не смогли нормально написать тест).
Какие к этому предпосылки?
Либо разделять владение (хэшмапа хранит только хэши строк, значения — индексы), либо разбираться с self-referential structs. Ну либо обмазываться unsafe. Я бы переделал структуру этих данных, зачем там одновременно и Vec и HashMap?
>Проще говоря, программист на С и программист на машинных кодах выдадут исполняемый бинарник с совершенно минимальными отличиями.
https://habr.com/ru/company/badoo/blog/420407/comments/#comment_19013387
>Так вот судя по их словам, обогнать себя самого на VLIW-ассемблере либо нельзя, либо на считанные проценты, относительно того же грамотно написанного С-кода в связке с оптимизирующим компилятором.
>С даёт результат чрезвычайно близкий к вручную написанным машинным кодам.
Справедливо то же самое в отношении Rust?
> программист на С и программист на машинных кодах выдадут исполняемый бинарник с совершенно минимальными отличиями
Эээээээ
> С даёт результат чрезвычайно близкий к вручную написанным машинным кодам.
Более чем голословное заявление, есть крайние случаи которые си не может оптимизировать достаточно, есть где наоборот, си какую то супер крутую оптимизацию применит, о которой 99% прогеров способных ассемблер писать и не знают
хотя хзы, может эмбедед в каком то другом мире живет, где выше мной сказанное ложь
> Справедливо то же самое в отношении Rust?
Неа, чтобы такое выполнялось нужно так называемые "зеро кост абстракшенс", собственно только в си можно более менее сказать что они есть
Не значит
Rust это аналог плюсов, а не си. Си он максимально прозрачен, ты всё делаешь ручками. Как пример, у тебя нет такого, что при выходе из скоупа непрозрачно исполняется какой-то левый код деструкторов
>Как пример, у тебя нет такого, что при выходе из скоупа непрозрачно исполняется какой-то левый код деструкторов
)))
https://github.com/systemd/systemd/blob/main/src/libsystemd/sd-bus/test-bus-cleanup.c#L14
Плюсы это же прокаченный си
>Справедливо то же самое в отношении Rust?
Код пишут не только для машины, но и для человека. В этом главное непонимание гавнаря с хабра
Хайп ушел, а ты все фанбойничаешь.
Языку лет 8, чуда не произошло, хватит эту дурость писать. Это просто еще один экзотический язык на дне рынка.
>хэшмапа хранит только хэши строк, значения — индексы
Хорошая идея, спасибо. Вопрос только в обработке коллизий, но на моих объемах данных это не должно быть проблемой (на моих объемах вообще можно и без Rc обойтись, просто делать clone() везде, но тем не менее).
>зачем там одновременно и Vec и HashMap?
Мне нужно иметь возможность как выводить весь список элементов (они отсортированы по другому полю), так и быстро получать конкретный элемент по его id. На crates.io вроде есть ordered dictionaries, и их использование было бы наиболее правильным решением, но хочется реализовать без сторонних зависимостей.
>Языку лет 8
Напомни, сколько лет прошло перед тем, как Python стал популярным и ВСЕ компании мира начали на нём писать?
на пик 1 сразу видна проблема. Ты не можешь просто так положить ссылку на стеке в структуру, т.к. ссылка может жить дольше объекта.
или делай отдельный индекс ключей (заодно получишь сортировку по ключам), или клади туда по значению, String например.
>Только unsafe обмазывать?
>
Вместо ссылки на Item кладешь указатель и делаешь функцию типа get(&self, &str) -> &Item, в которой разыменовываешь. Это даже не unsafe, а так, на пол шишечки.
ансейф явно виден и легко локализируется, в отличие от аналоговнет
Ну это какой-то специальный предолинг, который я даже не понял как работает. Это_другое
Это расширение от компилятора. Компилятор ещё дает возможность встроить код, который будет выполняться при входу в любую функцию
Мы сложили unsafe внутрь safe, чтобы ты мог писать safe и не переживать про unsafe.
Это не другое, это расширение которое есть в gcc и clang, а развитие стандарта С это буквально постепенное включение в него расширений gnu. Большинство проектов GNU и Linux используют расширения, даже вставку asm нельзя сделать без расширения, они часть языка, но не часть переносимого стандарта, который нужен как для ПК так и для МК.
Помимо этого есть еще интересная фича а иногда баг https://godbolt.org/z/Y7qfjaMaf
>>629108
https://echorand.me/site/notes/articles/c_cleanup/cleanup_attribute_c.html
А нахуй тебе вообще вектор всрался? Почему бы просто не хранить овнед Item'ы в одном хэшмапе? А если нужны конкретные фичи вектора, которых нет в хэшмапе, типа ордеринга, юзай btreemap
Нужно только подождать
Питон из дна вытащили ученые с МО и разводилы для хочух в айти и универы. Каким боком ты проводишь параллели со ржавчиной, мне не понятны. Тоже самое сказать, что за дирижаблями будущее, вон видите как самолеты стали популярны.
Про популярность я бы тоже поспорил, язык безз многопоточности - игрушечный язык, а вебе он так популярен и не стал, пхп до сих пор долю занимает жирную
Элементы отсортированы не по ключу (id), а по другому полю. Чем тут поможет btreemap?
Твои комментарии обо всем говорят
(Я умею пользоваться гуглом, просто определения и рабочие обязанности везде указаны разные, особенно заметны различия между русским и английским толкованием)
Увидел недавно вакансию "Джуниор системный программист Rust", но в описании вакансии из обязанностей указанно только: "Расширение функционала, документации и написание функциональных и модульных тестов на несколько проектов". Хотел бы попробовать свои силы, но не совсем понимаю какой уровень знаний необходим для кандидата.
Я учу Rust 2 месяц, есть несколько пэт-проектов, есть поверхностные знания Go, JS, NodeJs, Java. Очевидно, понимаю теорию алгоритмов (Introduction to Algorithms by Thomas H. Corman - замечательная книга). Ну и так, по мелочам. Знаю как это звучит, в свою защиту хочу сказать, что сам для себя учил, и экспертом себя назвать язык не повернется, но суть понимаю, поэтому считаю знания поверхностными.
Из пэт-проектов SQL база данных (пока на том уровне, где мне было бы стыдно прикрепить его к резюме).
И менеджер буфера обмена, функционал работает, но выглядит как говно, тоже стараюсь развить до приемлемого уровня. Ну и вообще, дайте оценку, пожалуйста, насколько разумным будет включать эти проекты в резюме.
Подводя итоги, хотелось бы услышать ваши определения того, кто такой системный программист Rust, и что он должен знать. И если не сложно, подсказать что следовало бы учить, если у меня есть желание попробовать себя в этой роли
По гайду, ну и свои доработки. Держи, анон. Материалов три штуки, довольно понятным языком. На английском, на русском не учусь.
https://adambcomer.com/blog/simple-database/motivation-design/
>>632886
Дополню, вспомнил что в закладках есть ещё один гайд не плохой. Тоже на английском
https://munksgaard.me/pdb/lets-build-a-database.html
>Package: libstd-rust-dev
>Size: 150.846 MB
>Package: rust-src
>Size: 112.247 MB
> Будет ли проблемой то что нет особо понимания плюсов?
Будут проблемы с пониманием того, зачем нужна та или иная фича, что плохо, а что хорошо.
Важно не столько знание C++, сколько опыт программирования на оном
Я сейчас после питона плотно осваиваю раст, все довольно удобно и приятно. Главное - понять логику борроучекера.
Правда до этого у меня были небольшие пет проекты на си и плюсах, но до раста я как то не сильно задумывался о UB, а тут компилятор не дает жопу отстрелить, что радует. Специально без ансейва UB сделать как то сложновато.
Однако сложно отрицать тот факт что питухон приносит денежки многим конторам которые в рот давали мнимым определениям "игрушечного языка".
лол, Winderton тоже раст изучает
Одноклассник твой?
Вау, виндертон… это уёбище без хоть какого-нибудь подтверждённого опыта коммерческой разработки и вместе с тем откровенно помойным кодом на гитхабе по уровню не дотягивающим даже до уровня джуна.
Ага
Странно что в комментариях его хвалят.
На гите его собственного кода я не увидел, одни форки.
Не знаешь он выучил с++ за полгода?
Бизнес бы и макаку посадил за печатную машинку, если это было выгодно по обучению и затратам. Не нужно бизнесом мерить ценность языка. Именно из-за бизнеса сейчас и существует такой зоопарк языков, где каждый кустарь пилит одно и тоже, массово деградируя в ширь.
Отладчик в CLion
Как выглядит среднестатистический пользователь Rust? Только честно. Сложилось впечатление, что по уровню интеллекта это не очень умные люди. В остальном еще и ебанутые. Примерно как хозяин комнаты на пикче со Столяровым, та что в шапке треда. Ну или как Стив Клабник, такой типичный фрик-пидорок. Интересуюсь для того чтобы понять философию Раста.
Ты имеешь ввиду опыт работы с низкоуровневыми API ОС или что?
Почему так? Бля, у них еще и старухи феминистки в кор тиме. Это пиздец.
Я кстати думал, что это рофл. Но я подписан на пару каналов по расту и там авторы реально чулки носят, ногти красят
Не то, чтобы мне это принципиально было, просто забавно
Все время слышу "мне все равно", "пофиг". Но в реальности речь идет о технически сложном продукте. Меня это правда настораживает.
мимо так и не закатился в раст, ибо как-то получается он мне
ненужон
Это норма или просто попадаются клоуны?
Если бы ты указал, каких именно вещей нехватает, и кто и чем аргументирует (со ссылками) - мы могли бы это обсудить.
Пока что я вижу только один тренд: повышение интереса растохейтеров к гомоебле и хуйцам, что не может не радовать.
ну типа возьмем к примеру базовые вещи типа
тернарного оператора или возвращения значения из функции через return
Просто попадаются клоуны.
>возвращения значения из функции через return
А что с ним не так?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=4ba7e8ebf7c613ad460d3fbef942555f
не, ничего. Просто правило хорошего тона условно вместо
fn some() -> i32 {
return 5;
}
писать без return и ;
fn some() -> i32 {
5
}
и мне было интересно покопаться и поискать причины таких решений и прочее, но попуптно встречаемые ответы от коммьюнити порой поражают
> и мне было интересно покопаться и поискать причины таких решений
Это не фича именно раста, просто функциональщикам нравится такой синтаксис
>тернарного оператора или возвращения значения из функции через return
Но они же как раз вместе работают отлично. Вместо
c = isActive ? 5 : 3;
или вызова функции типа
if (isActive) {
return 5;
} else {
return 3;
}
можно сделать
c = if isActive { 5 } else { 3 };
всего пара дополнительных символов относительно тернарника, зато никакого магического синтаксиса специально для этого случая. Всё обычно.
Но нахуя нужны эти ебаные скобочки вместо отступов? В любом случае все и всегда код форматируют под них, придерживаясь определенных правил.
Да, есть моменты, когда в одну строку делаешь еботу и скобочки там нужны, ну сделали бы их опциональными.
Чтобы не сидеть, не выгадывать форматирование, а чтобы ты нажал одну кнопку, и инструмент отформатировал за тебя.
Мы оба знаем, насколько это приукрашивание правды, а не настоящая ситация.
Это копия, сохраненная 3 мая 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.