В этом ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
>>2490941 >>2491288 >Увидел новость, что в библиотеке, которую использует gpg нашли уязвимость из-за проблем работы с памятью >Хочешь скачать переписанную на раст библиотеку, ведь по заявлению разработчиков там не должно быть проблем подобного класса > Видишь пикрил и понимаешь, что даже без наличия проблем с памятью у тебя будет зонд.
>>2491291 >>2491298 Просто это дань моды, на самом деле всем похуй на Украину, большинство ее на карте не с первого раза найдет, до этого везде BLM был, на следующий год еще какая-нибудь хуйня. На функционал не влияет, ну и хуй с ними пусть лепят чего хотят
>>2491557 >На функционал не влияет, Прецеденты уже были.
>>2491557 >ну и хуй с ними пусть лепят чего хотят Не-не, пошли они нахуй. Зачем мне проект, которым управляют дегенераты, которые не имеют своего мнения и следуют любой повесточке?
>>2492712 >Не-не, пошли они нахуй. Зачем мне проект, которым управляют дегенераты, которые не имеют своего мнения и следуют любой повесточке? Ну и не пользуйся тогда или форкай пили своё, хули ты от опенсорса ждешь как от интерпрайза
>>2493051 >Аполитичных людей? >BLM >COVID >help ukraine >etc Ага, очень. Куда ветер дунет, туда они и аполитичны.
>>2493115 >Я ведь говорил что в тред придут душевнобольные Можешь самочтоятельно в этом убедиться. Открой гитхаб и отфильтруй по расту. Почти каждый проект имеет какую-то агитацию на своей страничке и написан транс-вертолетами.
>>2493578 А кто ебет? Там кроме обещаний и всратых анимаций ничего нет. Даже прогу не потрогать пока что на мыло им не напишешь. Алсо, nvim/emacs такой проблемы лишены.
>>2494623 > code together Типа это модно сейчас, жыдбрейнс такой же хуйней страдают, но все как обычно работают в гитлабе/гитхабе и ссут на код друг друга в комментариях
>>2490347 (OP) Какие подводные если позаимствую в свой пет проект кусочки кода из готового проекта ООО Рога и Копыта? Код закрытый не спрашивайте как он ко мне попал, но у них очень годные идеи и они придумали алгоритмы которые мне как раз и нужны. Есть опен сурс проекты на эту же тему, но там всё намного хуже и проще. Интересуют следующие кейсы: 1) Если мой проект будет использовать ограниченное кол-во людей и код не будет опубликован 2) Если мой проект будет использовать ограниченное кол-во людей и код будет опубликован Вы охуели, тред совсем утонул кое как нашёл.
>>2497706 >1) Если мой проект будет использовать ограниченное кол-во людей и код не будет опубликован
Теоретически никто не будет сравнивать ассемблер, особенно если пользоваться этим будет два землекопа. Главное версию с отладочными данными не публикуй. А вот если распространится дальше, да еще и у вас будут одинаковые баги, то тайное всегда может стать явным и тебя реально могут взять за жопу.
>>2497706 > и они придумали алгоритмы которые мне как раз и нужны. Уверен что это они придумали, может в основе лежит какая-то общая научная работа? Тогда хотя бы сможешь её прочитать и переписать под свой код.
Взял rocket посмотреть для веба, просто палкой потыкать. Там действительно что-ли надо для каждого ответа делать свою структуру? А если у меня хост как прокси и я вообще не ебу о содержимом?
>>2502193 >Там действительно что-ли надо для каждого ответа делать свою структуру? Не знаю как в рокете, но в том же фастапи так же, не? Отвечаешь структурами из pydantic-а
>>2502711 Если модуль в той же папке, то имя модуля совпадает с именем файла, если в дочерней, то с именем папки, а сам файл должен называться mod.rs. При этом ты можешь из любого файла написать crate::foo::bar::*; и всё найдется.
Можете накидать какой-то инфы о том чем именно раст лучше и что такое переполнение буфера, потокобезопасность, выход за пределы и выполнение произвольного кода?
>>2502193 >Там действительно что-ли надо для каждого ответа делать свою структуру? Не надо, читай доку, там можно вернуть любую хуйню https://rocket.rs/v0.5-rc/guide/responses/#responses Короче для продакшена полная залупа и лучше использовать actix. Сам фреймворк еще нормальный, но вот все либы для него сущий пиздец пре-альфа версии
>>2503568 Если бы кто-то сказал мне, что это удобный способ импорта по сравнению с другими языками, я бы выколол ему глаза и пальцы переломал. Лучше уж use crate:: юзать
>>2503401 Надеюсь тебе никто ничего не накидает, надоело уже жидкий стул завистников наблюдать.
Просто помни, если для тебя на первом месте при проектировании программы стоят скорость исполнения и корректность программы (причем первое также важно как и второе), то из мейнстримных языков это теперь раст.
Посмотрел пару видео, где объясняется, что такое переполнение стека на с примером программы на C, там везде объясняется что сейчас компиляторы по умолчанию компилируют с защитой от этого и чтобы получить уязвимость и возможность переполнить стек надо компилировать со специальными флагами. В чем суть холивара тогда?
>>2504689 Если кратко — потому что система типов, система владения, система лайфтаймов и куча статического анализа поверх этого на уровне языка, и всё это не позволяет тебе простреливать ноги.
Если подробно — смысла объяснять нет, потому что ты не зная банально что такое стек всё равно нихуя не поймёшь.
Заходишь такой почитать изменения https://blog.rust-lang.org/2022/11/03/Rust-1.65.0.html и видишь это >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. Это точно язык программирования, а не политическая партия?
>>2505820 Не-не-не, даже главный идеолог швабодки Штульман срет политотой у себя на личной страничке, а ресурсы проекта ГНУ(как и многих других проектов, например, openbsd, freebsd, llvm, ziglang, suckless, common lisp и т.д.) посвящены только самим проектам и всему, что с ними связано. А вот те пидорасы, которы срут политотой на главных ресурсах своих проектов это вообще не люди. Когда видишь такое, то сразу появляется чувство, что тебе втирают какую-то дичь. И всегда все по-классике, Х - хорошо, а вот У - плохо, просто верь нам. Какое дело это имеет к проекту? Хуй знает. Есть у меня одно опасение, которое я позже проверю, а именно посмотрю не спонсирует ли Раст Фоундейш один известный фонд, который по странному течению обстоятельств спонсирует оппозицию в России, Иране, Казахстане, Украине и Белоруссии.
>>2505838 Сам опенсорс политический, пчел, и всегда был. Пишут они или не пишут на какие-то другие политические темы, никакого значения не имеет — он уже сам по себе чисто политическое движение, за всё хорошее, против всего плохого, свобода, равенство и братство.
>>2505861 > Пишут они или не пишут на какие-то другие политические темы, никакого значения не имеет Попенсорс - это течение только в одной области, в области компухтерных технологий, поэтому рамки дозволенного всегда должны быть. Просто говорю, что есть адекватные люди, которые понимают почему важно соблюдать гигиену в профессиональной среде, а есть дегенераты, которые срут у себя дома. Раст, к сожалению, из вторых..
>>2505869 >Попенсорс - это течение только в одной области Это твоё мнение, не все его обязаны придерживаться. Как бы то ни было, это течение именно политическое.
>поэтому рамки дозволенного всегда должны быть Которые они сами для себя определяют. Свобода самопределения едва ли не важнейшая часть той политической свободы, за которую боролось и борется опенсорс движение.
>Просто говорю, что есть адекватные люди, которые понимают почему важно соблюдать гигиену в профессиональной среде, а есть дегенераты, которые срут у себя дома. Если тебе что-то не нравится, то в опенсорсе издревле достпен способ для тебя выразить это недовольство, при этом ничего не потеряв в этой точке времени — форк. Вон кому-то не нравилось название GIMP, потому считали его слишком политически некорректным, они сделали форк с другим.
>>2505882 >Вон кому-то не нравилось название GIMP, потому считали его слишком политически некорректным, они сделали форк с другим. Не так это было. Они сделали форк и на титульной странице выставили счет для пожертвований болдом. Через какое-то время удалили этот счет и написали что закрыли донейшны. Вопрос - что они добавили в опенсорс?
> 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
В GCC пофиксили, а в LLVM даже не обратили внимание на issue. Кстати, уже готов GCC rust бэкенд, который может собрать компилятор rust. Часто можно было наблюдать в этих тредах нытье что нет бэкенда GCC. Работа спонсируется.
У меня есть структура #[derive(Debug, Serialize)] struct A { ___field1: u32 ___ ????? } Как сделать чтоб было поле, в которое можно пропихнуть произвольную сериализуемую структуру? Или как это правильно делается? Чтоб можно было A {field1: 128, .... } А то как понял, нельзя сделать какую-то базовую структуру, от неё наследоваться, и потомка передать. Супертрейты помогут?
>>2507684 Структура, она на то структура, что всё гвоздями приколочено. Если тебе нужно записать куда-то кучу разных структур, то ты или подумай над тем, как сделать их не очень разными и привести к одной, или пропихивай в виде Vec<u8>, а в материнской пиши конкретный тип.
>>2507897 >Нахуя так синтаксис загромождать? В смысле? Это стандартный синтаксис, который разрешили в правую часть выражения писать. Стандартный синтакиси в любом случае нужен, то есть он всегда будет. А ты предлагаешь ещё к стандартному синтаксису лямбды придумать? Кто тогда синтаксис загромождает, ммм?
>>2510913 И помимо этого RealParent можешь сколько угодно таких насоздавать реализующих трейт Parent и их туды подставлять. Родитель1, Родитель2 и т.д. ;)
Для тех, кто думает изучать раст. Почитайте объективные независимые мнения программистов об этом языке, чтобы прочувствовать всю суть языка. Это также вам поможет понять, как к вам будут относиться другие программисты, после того, как вы начнёте изучать язык и программировать на нём. Предупреждён, значит вооружён!
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++... для кого эти новости? Письма мертвеца ей богу
>>2516640 Аноним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е часа. Все довольны. Ну кроме меня.
Поделюсь своими первыми впечатлениями о Rust (сам сижу на TypeScript / R / PHP). Язык неплохой, работает пипец быстро. Но! Три основных неприятных момента - общее ощущение кустарности, как будто его делали на коленке. Чтобы нормальную асинхронность получить, надо ставить сторонний crate, какие-то там futures, tokio, прописывать декораторы. Почему асинхронность нельзя было сразу в язык встроить - непонятно.
И второй - вычурный синтаксис. Смешанные чувства от Some(), Ok() - вроде идея неплохая, но на практике приходится писать if let Some(text) = do_some_action().await {} вместо того чтобы просто написать if (text) {} Из-за этого код превращается в огромную писанину, с необходимостью запоминать все макросы, методы и проч.
Третий минус - некоторые библиотеки и решения хрен найдёшь. Я джва часа потратил, чтобы заставить reqwest скачивать файлы параллельно.
Из плюсов - быстро работает, строгая типизация, к синтаксису привыкаешь со временем. Простая конпеляция, по сравнению с тем же C++. Удобный инструмент crate, есть всё что нужно. Консольные приложения писать одно удовольствие.
>>2516640 >>2516641 Сколько стоит мнение всех этих комментаторов по сравнению с мнением Херба Саттера? https://www.youtube.com/watch?v=ELeZAKCN4tY Перед просмотром рекомендую ознакомиться с синтаксисом и семантикой Rust, взять листочек и карандашик, и выписать всё что принято им из Rust.
Отдельно на полях ставить плюсики, когда он произносит слово safety.
>>2516905 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 утёнок…”
>>2516930 > при том что результирующий код уже на одном уровне по скорости с крестами > делает лишние копированию памяти > уже на одном уровне скорости
>>2516944 Есть вещи, которых в С++ не избежать. Например лишние mov инструкции ради сохранения обратной совместимости со старыми соглашениями вызова функций. Уже много раз постил этот пример. Гугли there are no zero cost abstractions чендлера каррута и смотри сам. Отсюда вывод >>2516947 что в Раст легаси нет, потому что есть редакции. А пример со ссылкой, которую ты запостил вообще относится только к отношениям раста с LLVM (это можно пофиксить не ломая API), тем более что на подходе GCC бэкенд.
>>2516956 Пчелик, я этот доклад в онлайне смотрел. Причем тут ABI? У юник птр (и у других абстракций) есть обязательный оверхед, даже если он не нужен. Решается это тем, что, внезапно, можно не использовать юник птр, а использовать голый указатель. Короче непонятно к чему ты это написал.
Никакой совместимости нет, у тебя плюсовый код, скомпилированный одной версией компилятора может не слинковаться с другой версией, потому что буквально даже манглинг меняется.
> А пример со ссылкой, которую ты запостил вообще относится только к отношениям раста с LLVM (это можно пофиксить не ломая API), тем более что на подходе GCC бэкенд Это проблема компилятора, а не отношения с llvm, gcc тут не поможет.
>>2516965 >Пчелик, я этот доклад в онлайне смотрел. Причем тут ABI? У юник птр (и у других абстракций) есть обязательный оверхед, даже если он не нужен. Решается это тем, что, внезапно, можно не использовать юник птр, а использовать голый указатель. И получить все прелести голого указателя, а не & из раста. Мало того что unique_ptr аллоцирует в хипе, так его еще и привести всеми noexcept'ами и rvalue-ref'ами к простой базовой конструкции раста нельзя без лишних mov по-памяти. Метка времени 21:14. >Короче непонятно к чему ты это написал. Пофиксить в крестах это нельзя из-за ABI легаси, он дальше об этом говорит. Даже больше, отсутствие полноценных редакций не позволяет гарантировать zero cost абстракции как в Раст.
>Это проблема компилятора, а не отношения с llvm, gcc тут не поможет. Получается еще проще для фикса. Непонятно к чему ты тогда тут баги компилятора постишь с криками вот весь ваш Раст.
Чтобы понять прелести раст, нужно прочувствовать боль от крестов.
Кресты это какая-то сводка из 1001 правила "не делай вот этого", и "делай так" вообще не относящимся к программированию, а только к особенностям самих крестов.
Где в расте ты получаешь замедление исполнения программы от непонимания базовых основ программирования, в крестах ты (помимо сказанного) хватаешь баги, которые проявляются вылетами программы в непонятных местах и корраптом данных с продолжением исполнения.
>>2516965 >Пчелик, я этот доклад в онлайне смотрел. Если настолько опытный программист что тебя заставляет хейтить раст, я не понимаю? Ты хотел чтобы сделали лучше, но не говоришь что конкретно, а только поливаешь помоями. Сделают лучше. Рано или поздно научат модели оптимизации под конкретные платформы, и ни кто уже не будет смотреть на кодогенерацию, просто потому что не поймут как обученные модели генерируют такой хороший код. Будут соревноваться в грамотном составлении высокоуровневых рекоммендаций для получения максимально близкого к их замыслу, результата.
>>2517000 Останутся сишные фрики, которые будут пытаться обоссать нейронку, и когда у них будет получаться результат будут скармиливать сети. А сеть будет экстраполировать их находки и становиться только лучше.
>>2516986 > И получить все прелести голого указателя, а не & из раста Ужас блин. Есть abseil::make_unique, absl::WrapUnique() и один из выводов был, что можно не использовать подобные конструкции. Да менять calling conventions для того, чтобы в этой конструкции можно было оптимизировать никто не будет. И ещё раз никакого легаси ABI нет. Разные версии компилятора имеют разные ABI
> Мало того что unique_ptr аллоцирует в хипе Нет, если ты указатель ему передашь в конструктор.
> Получается еще проще для фикса. Непонятно к чему ты тогда тут баги компилятора постишь с криками вот весь ваш Раст. Это было невинное замечание, а ты так триггернулся. Ты слишком чувствительный
Самое смешное, что даже из-за появления Rust-а необходимость обучению Си и Цпп никуда не пропадает. Во-первых, на расте нет работы(криптоскам не нужен) и чтобы она появилась в серьезном бизнесе должно пройти лет минимум 5-10. Но это решается просто ожиданием. Во-вторых, Си никуда не пропадет, а просто будет сосуществовать вместе с растом, поэтому нихуя не меняется кроме необходимости учить еще один язык.
>>2517000 >Рано или поздно научат модели оптимизации под конкретные платформы, и ни кто уже не будет смотреть на кодогенерацию, просто потому что не поймут как обученные модели генерируют такой хороший код. Бред, чтобы модель научилась писать такой код, она должна обладать разумом, осознавать свои действия и их последствия, а не просто срать готовыми паттернами. Ну а с появлением такого ИИ уже будет похуй на код, так как мир сильно изменится.
>>2517010 >Во-вторых, Си никуда не пропадет, а просто будет сосуществовать вместе с растом Будет ли существовать Си в краткосрочной перспективе, зависит только от того насколько удастся побороться со сложностью оптимизации абстракций. Пока этому ни что фундаментально не мешает. Это можно видеть на примере просачивания ФП конструкций в современные ЯП. Раст просто бугорок в этом последовательном тренде, потому такой хайп. Неосиляторов и утят в расчет не хочу брать.
>Бред, чтобы модель научилась писать такой код, она должна обладать разумом, осознавать свои действия и их последствия, а не просто срать готовыми паттернами. Это тоже тренд, пока ты можешь скормить сети запросы на "создай мне такой цикл", "сгенерируй такую картинку", "напиши текст на тему". Но прогресс идет, и если результаты работы все более становятся похожи на результат работы человека (их становится сложнее различить) то где же остановимся?
>>2517017 >ока этому ни что фундаментально не мешает. Лол, как раз мешает и это архитектура ЭВМ Пока что функциональная параша не будет выполняться на уровне железа, то об "Сишка все" даже заикаться не нужно.
>Это тоже тренд, пока ты можешь скормить сети запросы на "создай мне такой цикл", "сгенерируй такую картинку", "напиши текст на тему". Но прогресс идет, и если результаты работы все более становятся похожи на результат работы человека (их становится сложнее различить) то где же остановимся? Ты натянул и спроецировал сомнительный успех из одной области на другую, совсем другую. А помечтать и я могу. Только реальность от этого не изменится.
>>2517020 Large language models это та самая область. По какой причине ты думаешь что если сетка генерирует текст, неотличимый от написанного человеком на заданную тему, это нельзя применить к тексту компьютерной программы? Может на сегодняшний день она тебе и не сгеренирует компилирующийся текст, но ты увидишь и поймешь смысл её работы. Направление в котором следует копать. И сделает это исходя из окружающего, уже написанного тобой или предыдущей итерации её работы. На данный момент она берет из базы увиденного, и применяет к твоей ситуации. Это как загуглить вопрос, но получить ответ "почти точь в точь" под твой конкретный сценарий.
>>2517035 >По какой причине ты думаешь что если сетка генерирует текст, неотличимый от написанного человеком на заданную тему, это нельзя применить к тексту компьютерной программы? Потому что она работает только с некоторыми паттернами и учится на готовой базе. Нет базы - нет нейронки, когда человек может создать что-то новое самостоятельно. Нет никаких проблем научить нейронку стилю определенного автора и генерировать картины в этом стиле, но вот собственный стиль нейронка не придумает, понимаешь? В этом и вся проблема. Так же и с кодом. Всякие copilot от гитхаба даже формошлепов и кнопкокрасов не в силах заменить, а про более серьезную работу я вообще молчу. То, что ты пишешь - это фантастика на уровне полноценного ИИ, так как он должен понимать, что от него требуют, как ему это сделать исходя из текущей ситуации и ресурсов, должен осознавать свое состояние, а также прогнозировать возможные проблемы и их решения исходя из целей задачи, а это уже уровень человека. Да и с таким ИИ уже про код можно будет забыть, потому что эта херня будет находить ответ на любой поставленный вопрос.
>>2517051 > собственный стиль нейронка не придумает Рандом не сделает своё дело? Если тот же стаблдифужн взять, то вполне может по некоторым сочетаниям фраз родиться какой-то оригинальный стиль, дальше с ним и работай.
>>2516868 >Чтобы нормальную асинхронность получить, надо ставить сторонний 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 все распараллеливается. У меня сотни файлов разом качаются в парсере на продакшене. Я с ним помню ебался когда какие-то полубесплатные говнопрокси юзали
>>2517071 >doubt Ага, а первое произведение человеку, наверное, жидорептилоиды подогнали? Или рецепт хлеба.
>>2517062 >Рандом не сделает своё дело? "Оригинальный" паттерн, скорее всего, будет собран из других паттернов по частям, потому что при рандоме нейронка не будет знать, что нужно добавлять. Она не понимает, когда это оригинально, а когда нет. Это может оценить только человек и тот не каждый.
>>2517175 Решение хелло ворлдов для удивления хомячков - это не "решает хорошо описанную проблему уже сейчас". Это больше похоже на возвращаемую ракету от Илона Маска, когда все кричали, что будущее наступило, а в реальности оказалось, что дешевле сделать новую болванку, чем чинить старую. Еще раз повторяю, современные модели нейронок, которые пытаются развивать гугл и прочие корпорации - полный шлак даже на уровне теории. Они очень чувствительны к качеству датасета, у них очень хрупкая " память" и дорогая цена на переобучение(для новой задачи тебе нужно обучать нейронку с нуля). Это не тот ИИ о котором вы мечтаете и который вам навязала научная фантастика.
>>2517318 >Или рецепт хлеба. Это детект, что ты не подумал о чем пишешь.
>Решение хелло ворлдов для удивления хомячков - это не "решает хорошо описанную проблему уже сейчас". В этом-то и прикол, что решает. Возьми человека с улицы и попроси его написать то же самое. Сколько чел в метро из ста, решат тебе codeforces?
>Они очень чувствительны к качеству датасета Это полуправда, гораздо проще тренировать на хорошем дата сете, чем на говне. Как и человек не будет по кускам форумы читать, или браться за спецификацию (что может быть лучше спецификации? кратко, полно!) чтобы понять как прогать на сишечке, если раньше никогда не прогал. А сначала возьмется за кем-то аккуратно и выверенно написанный учебник.
>у них очень хрупкая " память" Поясни, что это должно значить?
>для новой задачи тебе нужно обучать нейронку с нуля Есть способы помочь нейронке забыть. Используется в fraud detection сетях, или сетях пытающихся угадать что покупатель захочет купить после этой покупки, чтобы предложить ему сразу. + еще one-shot learning
>>2516898 Ни хрена не рублю в С++, но просто поражаюсь кол-ву отличных спикеров в их коммьюнити - что Саттер, что Тёрнер, что тот-дядька-со-странной-причёской (Майерс, кажется), который рассуждал о том, почему Ваза затонула, а плюсы - нет. Частенько на планшете поздним вечером включаю эстетического удовольствия ради и здорового сна для.
Так, без срачей, чем Rust хорош для меня, как для C++-разраба? Пока только почитал как настроить его в VSCode и приятно удивило что есть cargo который сам всё вывозит, нету ахинеи с CMake и прочим говном тащем-то там тоже ничего сложного если изучить и когда учишься работать с Rust не избегаешь основных инструментов сборки а применяешь их сразу. Ну а так пока только написал классический Hello 2ch и отложил чтения этого вашего растбука на завтра. Думаю, надо ли оно мне. Все кричат о какой-то безопасности кода да вот только если ты не еблан то не то чтобы в крестах её нету, просто не надо провтыкивать. Что по скорости? Быстрее/медленнее крестов?
>>2524536 > если ты не еблан то не то чтобы в крестах её нету > просто пиши без ошибок > просто не будь ебланом
Ну а если по делу, то если ты не знаешь зачем тебе Раст, то наверное оно тебе не нужно Ну в общем и целом чем лучше: - лучше инструментарий как ты сам уже заметил - безопасность, но тут больше важно если ты всякие криптографические приколы хочешь делать - меньше семантик и они более проще и чаще всего в явном виде, то есть написать тебе структуры данных, итераторы даже с ансейфом будет намного легче чем в плюсах если ты конечно не листы решишься писать
>>2524675 Так ли нужен именно MVC? Мы sqlx+actix используем, удобства как в рельсах нет, но на микросервисы хватает вполне, фронт на реактах мы туда просто json выплевываем, база postgres sqlx хватает за глаза, иногда sea-orm используем чтобы руками поменьше писать. Вьюх нет это да, но я думаю и для этого говна уже что-то есть
>>2524561 >на уровне C >С++ вообще высер душевнобольного Всё с тобой понятно, дальше. >>2524699 >если ты не знаешь зачем тебе Раст, то наверное оно тебе не нужно Самый адекватный подход к любому языку. Зачем мне оно я в конце поста напишу. >лучше инструментарий как ты сам уже заметил Я бы не сказал что лучше, не хватает опыта, пока могу сказать только что удобнее и проще для новичка. А ещё нравится стандартизация, т.е., нету ничего кроме cargo. Я, конечно, люблю свободу выбора в таких вещах но в душе мечтаю что появится единая охуенная система сборки. >>2524712 А вот тут и пора отметить нахуй мне оно. Я вообще ДевжОпс. И что кресты что пидаРаст мне для себя. Кресты учить начал ещё со школы но тупил и забил, потом в унике, и вот уже там, когда дошло дело до ООП, я понял как работать с памятью, точнее, саму концепцию динамически выделяемой памяти, тогда-то мне что-то понравилось и я выучил его для себя. И с тех пор пишу всякие мелкие тулзы для себя, всё хочу попробовать написать что-то на C++/WinRT. Но вот среди того софта, где были кресты, начал появляться сабж для меня чуть ли не главным толчком стало отстранение shadowsocks-libev в пользу Rust и Go реализаций и я решил лично изучить, попользоваться и решить для себя, а чего же так все наяривают и что лучше/хуже. Т.е., мне не для работы, а для себя, и это снимает кучу проблем в виде вклада даунов в репозиторий.
>>2525019 Вот тут двачую, что-то я не припомню чтобы кто-то мог или пытался завести это на всяких мелкоархитектурах. Т.е. получается что словосочетания "системное программирование", "низкий уровень" и прочее применяются больше для маркетинга чтобы вебмакакии могли выебываться что они тоже типо как могут в лоулевел и они не тупые, а на практике оно вроде и может, но не применяется потому что есть C и С с инкрементом и Rust там скорее как челлендж ежели инструмент для выполнения работы.
>>2525159 > Не помню чтоб кто то пытался завести на мелкоарзитектурах В последнее время статей 5 на редите видел о том как кто то на каком то микроконтроллере что то на Раст пилит
Ну и эмбедивщина это только часть системщины и даже не большая ее часть
Вот конечно Гугл ебанаты, они что-ли не знают что на современных плюсах можно писать также безопасно как на расте??? Можно же просто не быть дебилом и не делать ошибок...
>>2529564 Ты ещё всех разрабов сторонних либ заставь писать без ошибок, и заебок. Только для этого нужен дядя с палкой, и не один. А в экосистеме раста эту роль выполняет конпелятор.
Аноны, хочу податься в гейм-девелопмент. Прицел - начать с простенького 2D для разминки, потом перейти в 3D. Что выбрать? fyrox (ex rg3d) - позиционируется, как почти аналог юнити с редактором уровней и кучей фич, разве что магазина ассетов нет. Но, почему-то, непопулярен. Склоняюсь к нему, но смущает непопулярность. Из популярных piston - батя, но игры на нём - 2D шлак вроде тетрисов amethyst - хз, тоже 2D, в-основном bevy - многообещаюч, но также прямо обещают ломать API в будущем
>>2537778 Язык это знаковая система. Формальный язык - это нотация, знаковая система над конечным множеством. Ни один язык, будь он естественным или искусственным, формальным или нет, компьютерным или нет. Не оладает такой характеристикой как скорость. Еще языки не обладают такими характеристиками как, например, громкость. Или мягкость.
>>2537784 Ну попробуй ответить себе на вопрос, какой скоростью обладает русский или английский язык. Или какова скорость математической нотации, например.
Когда ты попытаешься это сделать, то поймешь, что сказать, что язык - быстрый, все равно, что сказать - язык вкусный.
>>2537782 Управление памяти влияет на семантику языка. Ручное управление - язык быстрый, сборка мусора - чуть медленнее, распиздяйская система типов - ещё медленнее. Можно, конечно, крутить всякие jit и прочие приблуды, но они жручи в плане памяти. А ещё можно сказать, что сишечка быстрее, но она же говно небезопасное. Поэтому можно сказать так Раст - самый безопасный из быстрых языков и самый быстрый из безопасных.
>>2537788 >Ну попробуй ответить себе на вопрос, какой скоростью обладает русский или английский язык Средняя скорость речи образованного русского человека 100-120 слов/мин. Средний темп немецкой речи 130-150 слов/мин. Еще быстрее говорят англичане, их показатель – 160-180 слов/мин. Французская речь еще быстрее: 170-190 слов в минуту.
Прочитал статью https://keminglabs.com/blog/building-a-fast-electron-app-with-rust/ и не совсем понял, за счет чего достигается сакральный эффект быстродействия io операций над fs? Я могу понять, например, когда используются стримы NTFS для ускорения поиска по файлам, как в Everything. Но тут, по всей видимости, еще и контент проиндексирован. Так за счет чего такая скорость?
Подскажите пожалуйста, пытаюсь забилдить программу на винде из исходников для линукс, получаю такую ошибку: 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
зачем расту стандартная либа, если такой дроч на крейты и карго? нельзя было просто сделать набор оффициальных крейтов типа cc, которые бы каждый подтягивал по желанию? иговно типа Rust has a small standard library (and that's ok) не выглядело бы как копиум, типа если он такой охуеть модульный, нахуй вообще стд крейт вшит.
от таких вроде мелочей сильно подгорает почему-то. или нет стабильного abi и это типа заебись, хотя язык претендует на написание системного говна чисто на расте и придётся юзать сишный abi. ещё дроч на статическую линковку и полное отсутствие динамической, что опять таки очень странно для языка для запила осей. никогда такого не делал, но собираюсь сделать на расте
>>2539324 Динамическая линковка не отсутствует, у неё нет стабильного abi. То есть, тебе все библиотеки нужно приносить вместе с бинарником.
> нет стабильного abi и это типа заебись Есть возможность оптимизировать и допиливать компилятор. Сейчас это важнее стабильного abi. Чисто технически, всякие дебианы могут ввести свой стабильный abi используя набор параметров и версию компилятора. Но апгрейд компилятора означает что все пакаджи на расте придётся обновить.
В C++ стабильный abi много лет придумывался со всякими libstdc++.
>>2539037 За счёт того что в фоне индексируется fs и всё остальное. Скорость ему нужна в инкрементальном поиске по уже построенному индексу, что сколько-то там миллисекунд было время реакции.
>>2538157 Может. Как ты ни еби питон, сам язык не позволит писать быстрые числодробилки. Там даже пресловутый GIL нужен только потому что всё доступно отовсюду (как во всех скриптовых языках), нельзя иметь изолированный скоуп памяти, который позволит изолировать переменные в треды.
>>2539345 Спасибо за ответ. Да, я понимаю, что для быстрого поиска необходимо наличие индекса. А у раста из коробки как работают операции над fs? Есть абстракция над ОС-специфичными командами (чтение/запись и получение ивентов) или каким-то образом напрямую (через драйвер контроллера (например, SATA, IDE))?
>>2539365 Конечно есть. В этом весь смысл ОС, чтобы ни одна программа не заморачивалась с SATA/IDE/USB/networked storage/etc, а работала с абстрактной файловой системой. Раст Любой язык поставляется со стдлибой, дающей самые базовые системные вызовы, типа input/print/открыть файл. Всё остальное, включая замороченные фичи ОС, типа inotify для отслеживания изменений в файлах, обычно есть в пакетах/крейтах.
>>2539324 Я подумывал над такой хуйнёй: написать макрос-обёртку, который будет конпелять трейт в сишную .so-шку, а поверх реекспортировать функции этого трейта через ffi.
>>2539598 Если прога крешнется, ей нужен как минимум print. Ах да, флоаты сами по себе как раз могут вызвать креш при делении на ноль например. Так-то есть вроде бы элиминейшен всего что не использовано. Ну и если ты эмбеддед йоба кодер, то nostd, там вообще никакой стдлибы не будет, бинари в 100 байт и ничего лишнего, всё как ты хочешь.
>>2539628 Ну, ёпт, смари. Если ты хочешь в nostd, но тебе нужна какая-то функция, проще спиздить её из std. Тогда вопрос - нахуя делать это вручную? А насчёт print, то можно же паниковать без бектрейса.
Какой только хуйни не понапихают, а. https://doc.rust-lang.org/core/option/enum.Option.html#method.is_some_and вот есть обычный map, а мы ещё только для bool запилим. вот есть is_some_and для bool, а давайте ещё is_some_and_eq, is_some_and_gt, is_some_and_lt и проч для чисел запилим, а? Пиздец, ебанаты.
А есть толковые инструкции как правильно ошибки разруливать, все эти Result, ?, ok_or, итд. По отдельности вроде и понятно всё, а как собрать в кучу непонятно.
>>2540243 Result - это обычный Enum, в котором или данные ответа, или ошибка - делай с ним шо хошь. ok_or, map, map_err и т.д. - просто сахарок, чтобы не писать много if result.is_ok() {...} ? - если у тебя все ошибки Result<T, E> одного типа E или приводятся к одному типу и ты хочешь пробросить их наверх, т.е. немедленно вернуть эту ошибку вызывающему, чтобы там сами разбирались.
>>2540907 Возьми anyhow и не еби мозг, ему можно все что угодно пробросить при помощи ?. Редко когда нужно именно с самой ошибкой работать из сторонней либы, обычно просто пробрасываешь наверх и где надо обрабатываешь и anyhow тут самый раз
Парни, я питон бекенд макака, и нихуя не понимаю что значат всякие llvm, gcc и прочие вещи с билдом связанные. Расскажи абсолютно тупому человеку что это такое, зачем оно, и почему оно разное всякое.
>>2542515 > llvm, gcc Конкурирующие компиляторы. Как у тебя есть конкурирующие интерпретаторы: CPython, PyPy, Pyston, Jython, IronPython, MicroPython, etc.
> зачем оно Превращать исходный текст в бинарники, пригодные к выполнению процессором N + операционкой M.
> почему оно разное всякое Так сложилось. Gcc начинали ещё диды, чтобы были свободные компиляторы. Llvm это попытка переосмыслить построение компиляторов и переиспользовать готовые оптимизаторы для максимального количества языков/архитектур процессоров. На llvm намного проще создать компилятор нового языка, этим пользуются всякие видеодрайверы чтобы компилировать шейдеры. Добавить новый язык в gcc сложнее, но тоже можно, его тоже постепенно рефачат. Ещё они там не очень совместимы, вроде бы ядро линуха не собирается на llvm, потому что в ядре много gcc-специфичного кода.
>>2543582 >ядро Уже несколько лет как поддерживается сборка шлангом. Ну и несовместимость у них чуть больше чем просто в опциях, а еще и всяких расширениях и интринсиках.
>>2490347 (OP) Растеры, поясните за ваши итераторы тупому плюсовику Вот есть Iter: next() -> Option<T> То есть чтобы достать значние, я должен поверить не пустой ли option у меня Но и сам итератор, чтобы вернуть option должен проверить еще раз как то внутри себя, и затем вернуть option
Это что же получается, два раза проверка??? ОВЕРХЭД!?!?! или нет?
на самом деле, пытался что то похожее в плюсах реализовать, но как только начал, понял что что есть нюансик
>>2551306 next - это самый базовый метод итератора. Другие методы, такие как fold и try_fold (и соответственно через них сделанные for_each и try_for_each) оптимизированы насколько это возможно.
>>2552132 Ну если ты про цикл for, то в плюсах не так Ты из итератора можешь сразу значение получить, не нужно проверять, только что it != end А в расте у тебя получается внутри итератора проверяется, чтобы вернуть Some или None, а ты еще раз затем проверяешь, Some это или None
>>2552350 Включил оптимизацию, мне вообще цикл развернуло в линейный код с константами. Без оптимизаций next остаётся отдельным методом и честно вызывается, само собой, после вызова метода значение проверяется.
>>2552947 Скорее всего чья-то дурная привычка. Почти весь этот файл написал один человек.
>>2552350 >Ну если ты про цикл for, то в плюсах не так Я в общем. Если не -O3 или хотя бы -O2, то плюсы получются жирными и медленными. А с -O3 получается ляпота.
>>2552350 >А в расте у тебя получается внутри итератора проверяется, чтобы вернуть Some или None, а ты еще раз затем проверяешь, Some это или None Т.е. больше на одну проверку.
>>2553126 В смысле как это в asm-е выглядит? Я не уверен, зависит от многих факторов. Для статичных данных будет просто unroll цикла в повторение одних и тех же инструкций прямо в тексте программы.
>>2555134 Интерфейс в Жабе и шарпе передаётся только по ссылке и вызывается через виртуальную таблицу. Трейты - это всегда static dispatch и можно перемещать и передавать по значению. По мнению одного шиза с лора трейты работают также, но его нужно просто научиться распознавать и никак не взаимодействовать.
>>2555501 Некто Царь. Плюсовик, который, вроде как, в чем-то шарит, но не способен общаться без попыток всех хуесосить, использует для всего свои собственные определения, из-за чего его невозможно в чем-либо переспорить.
>>2555120 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.
В трейте можно и реализацию написать, не только сигнатуры методов.
>>2558072 Что сказать-то хотел? Пришёл, спизданул базворд вне контекста, теперь какие-то анальные манёвры в свою защиту. Ну блядь да, если выдернуть только слова питон и числодробилки, то есть разные костыли чтобы это делать, вот как будто мы не знали.
>>2529564 да везде нужно, только ты хуй поймешь, что именно из этого безопасно или нет, в расте можно просто сфокусировать свое внимание на unsafe в чужом коде, чтобы быстрее найти уязвимость, в плюсах априори ансейф везде и хуй поймешь, насколько безопасно там что либо. 99% кода пишется криворукими дебилами всегда и везде, зиродеи в линуксе это подтвердят.
Покажите мне, чем именно таким Rust безопасен? почему я в конце каждой его функции не вижу ручного удаления всех переменных? Значит, есть сборщик мусора? В чём блядь разница.
Почитал немного про раст. Какая-то ебанина с let mut, с передачей простых типов по ссылке (это такой простор нахуярить сайд-эффектов, что такое даже в JS не ввели), ну и лямбды выглядят не оч.
>>2561872 ну, если ты передашь в функцию &mut value, то сможешь поменять в ней value, и оно также поменяется во внешнем контексте? это я и назвал сайд-эффектом. (конечно, когда пишешь &mut, ты вроде как и ожидаешь, что функция поменяет этот аргумент) или я неправильно понял, в чём суть передачи по ссылке в расте?
> Почему я в конце каждой его функции не вижу ручного удаления всех переменных? В плюсах ты тоже этого не видишь, но RAII при этом существует В расте же ownership semantics в плюсах около аналоги начали появлятся, в core guidelines https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html
>>2561845 >Какая-то ебанина с let mut Обычный синтаксис, или ты про иммутабельность по дефолту? Это единственный способ сделать нормальную констатность данных, в плюсах вот по другому сделано, получилось не оч > передачей простых типов по ссылке ??? Хочешь по ссылке передавай, хочешь по значению, кто тебе запрещает то
> лямбды выглядят не оч Синтаксически? Ну может быть, но так или иначе, пох на синтаксис
>>2561897 Ну в случае простых типов, это просто более эффективный и простой способ передать значение в функцию, получить его и присвоить к той же переменной. Это не сайд эффект.
Объесните пожалуйста в чём смысл реализовывать трейт отдельно для Type и для &Type. И когда реализуешь для &Type и пишешь &self, то что это, типа ссылка на ссылку получится?
>>2555572 Пиздец. Сидел в неформальном раст-чятике в телеге. Там половина это плюсовики, которые пришли рассказать какое говно этот ваш раст, как им не бомбит, и как их треугольник на вулкане даёт 5000 фпс, а не 2000 на растовском вулкано. Идеальное место что абсолютно бесполезно провести время.
>>2561845 Мало прочитал. Про сайд-эффекты хуету написал. Что не так с лямбдами? .filter(|a| a > 4) пиздатые лямбды для типизированного языка.
>>2565417 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 наружу не вытекают, и не нужно для этого определять целую функцию.
>>2565358 Самый красивый язык - это джава, потому что код на джаве можно читать как книгу. Ведь код читают гораздо больше, чем пишут. Ну за исключением Го(вна), там высирают микросервис и даже не читают, просто выбрасывают потом. Вот представьте отрывок из книги: "Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему. Все смешалось в доме Облонских. Жена узнала, что муж был в связи с бывшею в их доме француженкою-гувернанткой, и объявила мужу, что не может жить с ним в одном доме." Легко читается, всё хорошо, но представим, что эту книгу писали бы на расте: "Вс счстл смьи пхж дрг на дрга, кждая несчстл смья несчстл псвму. Вс смшал в дме Облонских. Жена узнл, что муж был в свзи с бывш в их дме фр-гувернанткой, и std::io::stdout "что не может жить с ним в одном {}.", дме " Вроде оно конечно и короче, но смогли бы вы такое читать?
>>2565467 AbstractSingletonFactoryBeanAdapterDelegateProvider А всё потому что у жавы ограниченная выразительность. Приходится трахать паттерны вместо нормального программирования. Говорят, в последних версиях стало лучше.
>>2565467 Ты уже даже не вытекаешь из треда, тред просто проваливается под тобой. Настолько серьёзной шизы реально нигде не найдёшь, только в растотреде.
>>2565495 >AbstractSingletonFactoryBeanAdapterDelegateProvider Это еще не самое длинное название класса, бывает поинтереснее, мне нравятся стактрейсы в спринге ух бля разворачиваешь терминал на весь экран и читаешь
>>2565785 У меня такая реакция от синтаксиса раста. Он настолько засран спецсиволами, что наверно можно продавать растаман специальные клавы с износостойким шифтом.
>>2566347 Ну никаких новых не выходило. Что-то там напукли на расте в ядре линуха, говорят, со временем будут пукать больше. Если текущий тренд развития раста будет продолжаться, я вполне вижу постепенный переезд с C-codebase на раст, но пока раст еще сыроват для этого.
По поводу плюсов, тут тоже фифти-фифти, нужно посмотреть, к чему придут в 23 стандарте.
>>2566353 Ага, а потом гугл допилит свой карбон, сменит его агенду с "лвлап для протухших крестов" на "йоба системный язык нового поколения" и занесёт чемоданы бабла на пиар, так что про него будут из каждого утюга вещать как это происходило с го. И прости-прощай, раст, у смузихлебов новый тренд, мозилла или кто там раст делают такой конкуренции не потянут, да оно им и нахуй не надо.
>>2568118 Это разные вещи, грубо говоря карбон основных проблем плюсов не решит, а лишь позволит на нем писать без огромной жопоболи
но вот вытолкнет ли он по популярности раст ещё надо будет поглядеть, я смотрел недавно на состояние дел там, ну и вобщем если плюсовики раст смузихлебным называют, то там еще весело будет
>>2568126 В потенциале - ещё как решает, это сначала карбон будет просто освобождением от жопоболи крестов, а дальше у них чётко прописана цель: > 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.
Господа, работаю сейчас в основом на современном C++ и сетями, но очень интересует Rust, можно ли как-то плавно перекатиться, а то из вакансий попадающихся кроме блокчейна ничего нет.
>>2568538 Не совсем понял, что именно ты хочешь: вкатиться в раст самостоятельно и сменить проект или втащить раст на текущий проект?
Для первого варианта всё относительно просто: читаешь растбук/статейки/другие книги, пишешь простенькие 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 больше денег
>>2568953 > Вы там ебанутые были? Пиздец Ага, мне тимлид сначала то же самое сказал. Зато потом "переезд в кубер" оказался у него (и у многих других тимлидов) в KPI, плюсовики оценили добавление кроссплатформенности в либу в почти год (пушо там ехал mfc через atl на winapi) и не осилили winelib, а нагрузочное тестирование в пару месяцев показало, что в wine оно по стабильности сравнимо с дотнетной обёрткой на винде, и при этом быстрее и удобнее.
>>2569817 Без исходников. Если хорошо попросить (приложить логи, крашдампы, развернутое описание проблемы и кого-то из боссов в копию) - могли выслать .pdb с отладочными символами. Исходники вообще никому на моей памяти не давали. Хотя толку от них - помимо своей работы еще и ебаться с чужим говнокодом.
Имеет смысл начинать изучение раста с этого? https://google.github.io/comprehensive-rust/running-the-course/keyboard-shortcuts.html Веб макакапомидор, сидящая на тайпскрипте и ангуляре/реакте. В прошлом неплохой опыт шарпа, немного ноды и самообучения си с дрочем на системное. Не люблю много читать, предпочитаю выжимку с примерами. Цель - потестить концепцию боров-овнершип, миксины, да и в целом ооп заебал. Так же написать что то для терминала, тк tui понравился.
Нужно написать простенькую обобщенную функцию, которая нормально работает со всеми стандартными беззнаковыми типами. Работа подразумевает сдвиг влево, побитовое "и" и сравнение с нулём. Как?
>>2571358 ну самый простой способ делаешь для функции входной параметр реализующий трейт UnsignedNumber А потом 10 строчек: impl UnsignedNumber for u8 {} и тд
>>2571904 > Подумал, что без этого не будет работать и что нужно явное приведение Так и есть, это же сужающее преобразование. На первом пике показано, как, наверное, будет лучше.
> Ну и на 14 строке можно оператор сдвига укоротить. Не знаю, какое укорочение ты имел в виду, но то, которое попробовал сделать я, не получилось (пик 2).
>>2490347 (OP) >Rust — невероятно быстрый язык для того чтобы быстро кануть в аналы истории, поближе к лиспу очередная хуета хочет "нагнуть" ВЕЛИКИЙ Си и МОГУЧИЙ Си++ удачи, епта...
>>2572066 Анал — заднепроходное отверстие человека, то же, что анус.[источник?] Анал — язык тибето-бирманской ветви сино-тибетской языковой семьи. Анал. или аналит. — сокращение от аналитический, т.е. связанный с анализом (например, аналитическая геометрия)
блин, пиздец хочеться вкатиться в чё нить кондовое программерское, заебало формы шлепать. После с++ душевная травма. Я бы с радостью начал новую кодерскую жизнь с растом, но работы судя по всему немного и перекатиться непросто. Эх беда печаль.
>>2573298 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.
Объясните разницу между str и String. Что такое вообще этот str? Какие значения принадлежат этому типу? Насколько я понял, даже литералы имеют тип &str.
>>2573378 > str - простой массив байт То есть это что-то типа struct str(*const char, usize)? > для тупого JS-дауна Я из плюсов перекатываюсь и не понимаю некоторых деталей.
>>2573420 > и где ты видел ты видел, шоб так структуры определялись В расте. Зачем мне писать в треде одного языка на другом языке? > ну и нахуя тебе размер ? А как ещё? Если где-то есть указатель на область памяти, где-то должен храниться её размер.
>>2573426 >А как ещё? катись обратно в бэйсик, пиздабол да лан анончик, не обижайся, строка заканчивается 0 null-terminated, ее размер нигде не хранится и нахуй не нужен. еслиб ты вкатывался из плюсов, ты бы это знал
>>2573438 > строка заканчивается 0 null-terminated, ее размер нигде не хранится и нахуй не нужен В std::string плюсовом размер хранится, а null-terminated она только для совместимости в сишными строками. > еслиб ты вкатывался из плюсов, ты бы это знал Ещё я знаю, что есть pascal-style строки не уверен, что их кто-то так называет, просто запомнил, что паскаль этим и отличается от сей, в которых вообще нет 0 байта в конце, потому что размер хранится именно так, как я сказал. Впрочем, стоило просто зайти на https://doc.rust-lang.org/std/primitive.str.html и убедиться в том, что я прав.
Вот зачем говорить что-то, если нихуя не знаешь, и строить из себя умника?
>>2573442 >В std::string плюсовом размер хранится, а null-terminated она только ну хранится, да.. но ведь это и не простой тип, а объект класса. который может себе это позволить) > есть pascal-style строки были такие строки, на практике оказались нахуй не нужны. >и убедиться в том, что я прав. нихуя. в противном случае это будет уже не простой тип, а структура, причем несовместимая с системными вызовами, а раст это таки системный язык.
>>2573450 > но ведь это и не простой тип, а объект класса Сам понимаешь, что говоришь? Ну ладно, допустим, ты просто оговорился. > были такие строки, на практике оказались нахуй не нужны. Круто! Теперь внимательно читаешь первый пикрил. Rust by Example, если что. (Всё таки нужны, оказывается..?) > нихуя Я тебе уже официальную документацию принёс, а ты всё не веришь... > причем несовместимая с системными вызовами С какими системными вызовами? Как может быть структура данных совместима или не совместима с системными вызовами? Ну вот в линуксе, например, есть системный вызов write, который нужен для записи данных в файл по номеру дескриптора. Туда можно вывести массив байт. Допустим, этот массив байт является строкой. И чёт не особо нужно, чтобы эта строка была null-terminated, ведь там есть параметр count, отвечающий за то, сколько байт будет выведено. В WinAPI есть системный вызов WriteConsole, который предназначен для вывода строк в консоль, и ему тоже не нужны null-terminated строки, ведь он тоже имеет параметр count, да что ж такое?!
>>2573460 >Всё таки нужны, оказывается..? в очередной раз подверждается, что раст это конченное дерьмо. > вызов write, который нужен для записи данных в файл по номеру дескриптора ты еблан или притворяешься ? ты в файл ебашишь не строку, а буфер.. создай txt и любым редактором напиши туда "я еблан", открой его в HEX и поищи, где там размер указан.
тоже касается WriteConsole, там используется буфер, это идет еще с досовских времен, когда к текстовому буферу видеокарты можно было обратиться напрямую.
null terminated string используется при открытии файла, а не при записи в него. ты с какой ветки слез, анончик.
>>2573512 eblo_skufa db "Скуфи, заметь, эта строка заканчивается 0",0 title db "Возим пидо-растеров носом по их калу." push 0x40 push offset title push offset eblo_skufa push 0 call MessageBox
>>2573481 > создай txt и любым редактором напиши туда "я еблан", открой его в HEX и поищи, где там размер указан. То есть ты хочешь сказать, что размер файла нигде не хранится?
> null terminated string используется при открытии файла, а не при записи в него. Ладно, с этим небольшой обсёр. Во всяком случае, для этого есть отдельные типы CString и CStr.
>>2573484 > при этом в системных вызовах только эти строки и используются. Потому что основные ОСи были написаны во времена динозавров и теперь нельзя ничего менять, потому что всё сломается? Просто напоминаю, что если тебе в какой-то момент понадобится размер строки, тебе придётся пройтись по ней от начала до конца в поисках 0 байта. Причём не факт, что он там будет.
>>2573524 >размер файла нигде не хранится? причем здесь размер файла, мы про буфер говорили, который используется в системном вызове, для записи в этот файл.
>для этого есть отдельные типы CString и CStr. ну т.е. костыли, которые друг к другу еще кастить надо, с аллокацией памяти и копированием..
>Потому что основные ОСи были написаны во времена динозавров в том числе и поэтому, но так то ее еще выравнивать придется, по границе слова, короче дохуя памяти и гемора, а выигрыш околонулевой.
>в какой-то момент понадобится размер строки это не такая частая операция и на самом деле не такая дорогая, ибо строки, как правило, очень короткие. для длинных строк никто не запрещает использовать std::string да можешь хоть свой класс сделать, что мешает та
>>2573545 > причем здесь размер файла, мы про буфер говорили, который используется в системном вызове, для записи в этот файл. > создай txt и любым редактором напиши туда "я еблан", открой его в HEX и поищи, где там размер указан. Может ты просто сам не понимаешь, что хочешь сказать? > в том числе и поэтому, но так то ее еще выравнивать придется, по границе слова, короче дохуя памяти и гемора, а выигрыш околонулевой. Ты же дегенерат и хуйню какую-то несёшь. > это не такая частая операция и на самом деле не такая дорогая Я тебя понял.
> Рррряяяяя хранить размер строки дорого ррррррряяяяяяя > Пук срёньк находить размер строки O(n) норм
>>2573330 >Что такое вообще этот str? Какие значения принадлежат этому типу? Насколько я понял, даже литералы имеют тип &str. Сами литералы имеют тип str, но ты нигде не оперируешь самими литералами, а только ссылками на них.
>>2573330 String это структура фиксированного размера, смарт пойнтер на str, массив символов произвольного размера. Литералы никогда не владеют символами на которые ссылаются, к примеру они не могут дропнуть эту область памяти, поэтому там всегда &str.
Выражаясь иначе, String это единица аллокации, &str это указатель на слайс, подстрока внутри произвольного String. У каждого String может быть сколько угодно &str, но не наоборот.
>>2573330 String - это аналог std::string, &str - это аналог std::string_view (+гарантия валидного UTF-8). Конкретно тип str - это некий костыль d в виде безразмерного объекта, который позволяет в одном и том же типе Box хранить и единичный объект Box<Foo>, и массив Box<[Foo]> и строковый слайс Box<str> не городя ересь наподобие ArrayBox и StrBox.
>>2574453 Насколько я понял, для его реализации нужно просто реализовать PartialEq, но при этом мы должны гарантировать то, что будет выполняться рефлексивность, симметричность и транзитивность, которые не могут провериться компилятором. Разве не для этого unsafe нужен?
>>2574456 Нет. unsafe ограждает код, потенциально ломающий аллокации в памяти и потенциально содержащий undefined behaviour, таким образом, что какой бы ты safe код поверх него ни написал, ты не сломаешь аллокации и не вызовешь UB. Это не гарантия корректности кода, которую ты должен проверять тестированием.
Почти вся статья о том как борроу-чекер уничтожает продуктивность, особенно в прототипировании, и делает рефакторинг отдельной болью, так как mut везде протекает через абстракции. https://verdagon.dev/blog/when-to-use-memory-safe-part-2
>>2577039 >Почти вся статья о том как борроу-чекер уничтожает продуктивность У неосиляторов. Первое время может быть да, но сейчас уже год с растом работаю и редко когда вижу что компилятор посылает меня нахуй.
>особенно в прототипировании Для таких целей любой язык со строгой типизацией будет не быстрым, если не знаешь что будет в конце бери js или петухон и играйся сколько влезет.
>делает рефакторинг отдельной болью Наоборот cargo clippy и покажет тебе все где ты накосячил, рефакторить в разы удобнее чем в других языках.
> mut везде протекает через абстракции Лол нахуй так писать. Придут со своих джавашарпов и каждая вторая переменная мутабельная.
>>2577229 Каст к константному указателю того же типа. `_` - это wildcard, который можно использовать везде, где компилятор может самостоятельно вывести тип.
>>2580012 Представь, что каждая переменная защищена мютексом или RWLock'ом. Перед тем как изменить значение переменной ты обязан как бы захватить мьютекс, ты это делаешь через &mut. Это - mutable borrow. Он может быть только один, потому что иначе невозможно поддерживать некоторые инварианты. Если тебе нужно только прочитать значение, тебе достаточно захватить read-lock, ты это делаешь через &. Это обычный borrow, их может быть сколько угодно одновременно.
Отличие борроу-чекера от настоящих мьютексов в том, что он работает на этапе компиляции и там, где были бы гонки и дедлоки происходит просто ошибка компиляции.
Почему все говорят, что mut - это про мутабельность? Это же нихуя не так. Посмотрите на методы того же атомика - store принимает &self, а не &mut self. mut - это скорее про уникальность ссылки, из которой вытекает возможность модифицировать её состояние, но модифицировать состояние можно так же и у обычных шареных ссылок, как в примере с атомиком. Вы че, ебанутые? Назвали бы тогда не mut, а unique, или если по растерски, то uniq. А аналога const из C++ у вас совсем нету, получается. Я только начинаю перекатываться, но некоторые вещи мне не нравятся прям пиздец как сильно. Пока что от дропа меня отделяет только либа wgpu, которая, конечно, есть и для плюсов, но выглядит она на них как кал. Надеюсь что наитие меня ещё настигнет, но пока от вашего языка я в основном плююсь. Хотя есть и очень много положительных моментов, но я их перечислять не буду, вы их и так все уже знаете.
>>2580318 > А аналога const из C++ у вас совсем нету Что мешает мне сделать аналог атомика в плюсах, который будет иметь не константный метод store? Или а чем это не аналог?
>>2580318 >Посмотрите на методы того же атомика - store принимает &self, а не &mut self
Это interior mutability, которая нужна чуть чаще, чем mutable в плюсах, то есть мы лезем в залупу, то есть для примитивного изложения это лучше опустить.
>>2580012 Если прямо переводить, то это владение. Некий блок кода владеет объектом в переменной. При завершении этого блока нужно удалить объект, в том числе почистить все ассоциированные ресурсы (память, файлы, сокеты, итд).
По умолчанию когда ты вызываешь функцию без всяких &, ты передаёшь владение объектом, теперь это её, функции, головная боль вовремя удалить объект.
Не отдавая владение объектом его можно одолжить (borrow). >>2580258 вот тут нормально расписано как это работает.
Дальше идут нюансы, всякие трейты Copy, Clone, Drop, они насыщают этот механизм разнообразием поведений. К примеру трейт Copy позволяет каждый раз клонировать объект вместо передачи владения.
>>2580318 Mut это ещё гарантия единственной ссылки. Атомики нужны чтобы иметь много ссылок. Поэтому здесь немного упорото. В доках говорят что это копия atomic_ref из C++, оно и там тоже прикидывается что объект не меняется void store( ... ) const noexcept;
>>2583699 Речь не о множественном владении, которое Rc<T> или shared_ptr, а о ссылках. Для любой синхронизации нужно больше одной ссылки, между же тредами, не будешь же синхронизироваться сам с собой.
Можно ли учить раст как первый язык? Ну в плане хватит ли инфы для понимания человеку, который лишь косвенно связан с айти? Понятное дело я не говорю ни про какую там работу, меня моя работа вполне устраивает, просто мне вкатывает концепция низкоуровневых языков
>>2583869 Лучше не надо, будет всё казаться лишним и переусложнённым ПРОСТО ТАК, потому что нет никакого понимания, с какими ситуациями данные решения призваны бороться.
>>2580318 >mut - это скорее про уникальность ссылки Да, ты прав. Да, многие глубоко заползшие растеры согласны, что uniq был бы лучше. Но оно уже сделано как сделано, и мы просто привыкли что &uniq ссылки у нас называются &mut. Язык слишком хорош, чтобы его дропать из-за такой мелкой фигни.
Ну и при объявлении переменной "mut" всё же про мутабельность, так что не везде "mut" неправильно назван:
>>2583869 Не рекомендуется, но можно. Из минусов есть шанс получить неприязнь ко всем остальным языкам, потому что если ты первым языком учишь раст, при изучении следующего появляются мысли вроде такой: "бля, ну что за хуйня, вот в расте оно нормально сделано, а не через жопу".
>>2583869 Для углублённого понятия существующих проблем в современной низкоуровневой разработке нужно начинать с си.да и чуть ли не все современные языки в топ10 с си-подобным синтаксисом, это как плюс Только после ебли с сишкой можно переходить на раст и начинать вникать в то, что он предлагает и зачем. А там и понимание придёт и скилуха.
>>2577130 > Придут со своих джавашарпов Ну этот чел не такой простой как кажется. Он там свой язык напилил, Vale, с какими-то арена-аллокациями, я не до конца понял, но якобы аллокация происходит один раз для целого блока кода и отпадает необходимость следить за каждым объектом через всякие RC/GC. И его эти эссе об управлении памятью это попытка разобраться что уже придумано и где оно сосёт.
>>2584958 Про арены можешь подробнее почитать в пейперах про regionml, 90-ые годы (впрочем как и clean, в котором были реализованы линейные типы ("борроу-чекер" по-местному))
https://github.com/fish-shell/fish-shell/pull/9512 Один из двух активных контрибуторов fish shell свихнулся и решил всё переписать на расте. Второй чел охуел, говорит что не знает раст, что дистроделы будут яросте, много кому сломает процесс сборки.
>>2594099 Господи спасибо что я пользуюсь zsh, где в мейнтейнерах нет соевого дурачка с растошизой. Ну а fish можно помянуть, скоро разделится на два полудохлых форка.
>>2594099 Второй контриб много чего пояснил потом. Говорит что на самом деле для них это решение не было шоком. И что тот самый ridiculousfish, который сейчас начал толкать раст, на самом деле когда-то вытащил проект из забвения, и переписал его с си на си++.
>>2596230 Для начала запомни, что любая из книг Танненбаума - это говно из жопы. Очень много воды и совершенно нет полезной информации.
Если совсем не знаешь, как работает компьютер, можешь прочитать книгу «Код» Чарльза Петцольда. Она не серьезная, но в общих чертах описывает то, как работает типичная числодробилка. Если хочешь сразу серьезное - есть замечательная книга Харрис&Харрис. Если нужно что-то между, есть «Nand to tetris»
Далее читаешь книгу «OS 0 to 1». Перед ней лучше выучить Си, но это не сложно, ибо Си простой как палка.
Потом читаешь документацию интересующей операционной системы.
>>2596290 Спасибо, полистал "Код" и книгу Харрисов, решил на последнем остановиться. Код какой то слишком банальный. Танненбаума еще в шараге по сетям читал и половину не выкупал, лол. Алсо, есть какая нибудь литература про Си, где походу книги делаешь что то свое? Типа как в SICP интерпретатор на лиспе, или как движок на крестах, только на си?
Привет ржавым. Что думаете на счёт будущего для Rust? В своё время сделал ставку на Го и теперь ближайшие лет пять, можно будет лутать нихуёвые деньги с буржуев, решая задачки которые были отобраны у питонистов. А Раст что?
В последнее время начали его пихать везде. И круды вроде как стало легче пилить, а за счёт бороу чекера можно будет всю эту байду крутить в облаке за копейки.
Планирую, всё же окончательно, перекатиться в Раст, годиков так через пять. Когда волна хайпа поднимется уже среди кабанчиков.
>>2600229 Раст это для души, это если ты больной на голову перфекционист, которому нужна максимальная производительность выполнения за счёт человеческой продуктивности. Лутай бабос дальше на го и не парься. Некоторые даже на пхп продолжают лутать.
>>2603899 Мне нужно сделать приложение, которое будет принимать сигналы с измерительной хуеты (пример на пикриле) и обрабатывать в нужной мне математической форме. В институте уже есть программа какая-то древняя, которая может ловить сигнал. Но она работает на 98-ой винде, хотелось бы что-то своё да посвежее (на жму/пинус, макос, винде). Вопрос в том, как мне получать такие же сигналы как в той программе? Придётся драйверы заново писать для интерфейса?
>>2603973 >Вопрос в том, как мне получать такие же сигналы как в той программе? Придётся драйверы заново писать для интерфейса? >
Поищи ради прикола драйвер и API для современной винды, но там скорее всего какая-то проприетарная платка для PCI, которую тебе никто не даст. Если USB, то можно попробовать отреверсить пакеты, но нужно очень так глубоко лезть в протокол.
узнал, что в окамле есть алгебраические эффекты. почитал чуть про них в пейперах кока (язык такой). https://www.microsoft.com/en-us/research/publication/algebraic-effects-for-functional-programming/ тут примеры есть, где показывают, что можно так запилить асинк, итераторы, исключения, парсеры и тд. добавление асинков в раст до сих пор считается эпичным фейлом, думаю, что можно было добавить эффекты, тем более управление эффектами подходит по функциональную сущность раста. Что думаете? Эффекты, кстати, уже есть и в мейнстримных языках типа хаскелля и окамля. есть ещё язык тоже майковский: F с зав типами и эффектами, и его сабсет low для низкого уровня. язык имеет встроенный солвер z3
>>2609966 Характеристики ЯП — это многомерное пространство, и каждый занимает там некоторую нишу. Всякие зав типы и эффекты — это прекрасно, но это только одна из координат в этом многомерном пространстве, эдакая бескомпромиссная переиспользуемость кода. Есть ещё производительность выполнения, ментальная нагрузка разработчика. Последнюю можно разделить на множество независимых координат: лёгкость чтения, написания, поиска, предсказуемость, помощь утилит, доступность утилит и библиотек под каждую область, длина цикла модификация/запуск, итд.
Дальше берётся некоторая потребность. Наговнякать сайт по-быстрому, написать верифицированный код для медицинского устройства, создать игру без тормозов/с красивой графикой/для лоу-энд устройств, итд. Каждая из этих потребностей задаёт ограничения на выше обозначенном многомерном пространстве, и оптимальный выбор языка становится задачей выбора из 2-3 кандидатов, а то и меньше. И вот алгебраическими эффектами в таком выборе жертвовать легче всего. И без них всё делается достаточно качественно и быстро.
>>2610343 Если ты уже писал беки на чём-то - тебя ждут мелкие неприятные сюрпризы с экосистемой. То, что для джавашарпов и гопитонов есть в виде зрелых либ/фреймворков (и обычно с несколькими тоже вполне зрелыми альтернативами), в расте может быть в версии 0.1.1 и заброшено в 2020 году. Я имею в виду веб-фреймворк с какой-то аутентификацией и мидлварями, БД+ORM, очереди, кеш, логи+метрики+трейсы, всякие прочие примочки вроде сваггеров/удобных интеграционных тестов/etc. Для обычного крудобэка кода будет немного больше, чем на "популярных" стеках, но ничего смертельного. Всё сильно усложнится, если захочешь выжать из своего поделия какой-нибудь особой производительности.
Если беки ни на чём не писал - лучше выбери или другой стек, или задачку попроще, вот честно.
>>2610343 насколько я знаю раст для бэка используют вот прям в очень байтоёбских задачах, когда кабанчик мечтает о 100% аптайме и готов за это платить (те же банки)
>>2613194 Ты сам читал что принес? Очередной высер неосилятора джаваскриптизера который не разобрался.
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. И сам же ниже заметил нужно подружиться с дженериками тогда и будет счастье.
>>2616626 >Как тебе это удаётся? Не знаю, они сами в тред приходят и такие статьи пишут, тут полное бинго тупости в статье. Нахуя ты сам такое бинго в тред приносишь?
>>2616994 Просто ты токсичная чмоня и извергаешь яды по любому поводу. Человек-валидатор, которого всю жизнь за каждую пробу и ошибку ебали как сидорову козу.
>>2617356 Иди поплачь, еще в спортлото жалобу подай на меня. Если для тебя называние говном статьи состоящей на 99% из говна извергнание ядом, то я не знаю как ты живешь со столь утонченной натурой
>>2617459 Потому что для вкатунов там много "лишнего" от лайфтаймов, до бороучекера, плюс еще различный синтаксический сахар, иммутабельность и прочие штуки. Чтобы эти штуки понимать нужно хоть немного иметь коммерческого опыта. Человеку которому пару дней назад объяснили что переменная это коробочка в которую положили записочку мягко говоря будет сложно понять некоторые вещи. Но для тех кто любит трудности это наверное самый раз
>>2490347 (OP) Первые пару дней я был под впечатлением от раста.
Сегодня я сдался, мне каждый раз нужно лезть в гугл и ублажнять ебучий компилятор бороу чекингом и мув семантикой?
Да, в этом есть плюсы, но это лоу лвл программы, стабильные, которые будут поддерживаться лет 10 и компания будет инвестировать.
Для пет проектов. и прочего это говно нахуй не сдалось. Я каждый день сижу надрачиваю компилятору вместо того чтобы концентрироваться на более высокоуровневых вещах. Подумайте дважды, чем шагать сюда.
Да, можно выебываться перед коллегами словечками мономорфизация или мув семантика, ток это нахуй никому не надо.
Как только появится прод-готовый аналог laravel, django, rails, spring, nestjs на Rust, пизда вам, бекенды ебаные. Будут сметать всех, кто владеет базовым синтаксисом.
>>2621866 Да да да, расскажешь . Продуктивно. Раст нахуй никому не уперся.
>>2621676 Дадада, конечно. Кложур\хаскель\ерланг и прочая поебень - полная параша. Петроекты на то и петпроекты, что нужно сделать быстро и запустить попробовать.
Ебаться с ебанутыми парадигмами, как бы они не были хороши - нахуй не надо. У тебя есть время дрочить хуйню которая не принесет бабла? Дрочи
Мое время ценнее, нежели дрочить хаскель, Я за пару часов на го наклепал то, что сделал за пару дней на расте, это пиздец.
И мало того, что го лучше своим стд, на расте тебе придется обойти пару либ чтобы выбрать что то, а потом еще углубится в них и посмортеть что как работает, а потом ублажнить компилятор. Я хуею нахуй, язык для дрочеров, просто пиздец.
>>2622560 > Раст нахуй никому не уперся Это уже какая-то другая крайность. Упёрся, очень даже. Писать на нём дороже, но выжимать производительность и не отращивать десятый мозг чтобы предвидеть ub/баги с памятью — вполне годно. Геймдев, высокопроизводительные сервера (чаты, очереди, там где стейт не снаружи в бд, а в самом сервере), критичные userspace утилиты. Зависит короче какие у тебя там петы. У меня вполне успешный опыт написания пета на питоне, а потом переписывания на расте. То что считалось потенциально несколько недель, посчиталось за день.
>>2622516 Все что ты написал это хуяк хуяк и в продакшн сайт запилить, НО для этого нужны высокие абстракции без ебли с низкоуровневой залупой, которую раст предоставить не может. Если бы раст действительно занимал эту нишу, то на него бы давно переписали все микросервисы для которых таких фреймворков и не надо, но ничего такого нет и в помине.
Решил себе написать аналог OpenHardwareMonitor под Linux, взялся за rust + gtk-rs, для тех кто не в курсе, у glib/gtk своя система управления памятью и ооп, и оно просто нормально не налазит на rust, в gtk-rs базовые типы, классы еще облагородили, и то полно уродства, а если что то свое делаешь, то быстро понимаешь что с++ это настоящая база. В итоге сделал rm -r и написал за пару часов себе виджет на нормальном языке, который не становится препятствием если использовать неправильные библиотеки.
Хуя неосиляторы в треде. На Rust'е писать в разы проще, чем на голанге или плюсах. Вы ебанутые? Тут компилятор вас за ручку водит, а линтер не позволит написать хуёвый код. Лучший язык на свете
>>2623082 Толстый троль, которому поверят только зеленые.
Выше чел правильно все расписал. С растом нужно ебаться пару месяцев. Все зависит от бизнеса. Кто то же до сих пор пишет на хачкеле и платит за это деньги.
Бизнес любит быстро. А ты можешь предложить бизнесу быструю гошку. Да, компилятор хуевей чем в расте, но задачи будут клепаться, бизнес развиваться.
Это тоже самое как покупать мак или линукс. Хочешь дрочить с дыркой в кармане? Покупай линукс. Хочешь купить ноут и начать работать? Берешь мак. все просто.
>>2584958 Еще в 90-2000 обсуждали эти арены/зоны/контексты. Оказывается в программе не так много этих областей и кроме статики или области функции, тебе на вряд ли понадобиться более двух, трех областей, где ты мог бы "собраться".
Но в реальности, если тебе надо щупать бизнес логику проще взять язык с гц, а если надо пощупать железо, то древних си и плюсов хватает с головой. Поэтому раст и не выстрелил, несмотря на попытку натянуть его на глобус. Особенно забавно, когда пытаются его в веб пропихнуть.
>>2623665 >Бизнес любит быстро. А ты можешь предложить бизнесу быструю гошку. Спорно. Есть бизнес хуяк-хуяк и там рулит typescript, C#, java, python. А есть настоящее айти, где выравнивание структуры даёт прирост и экономию на железе
>>2623723 Какой-то пук ни о чём. В расте, если что, нет арен, ты конечно прямо об этом не заявил, но построение текста намекает.
Древних си и плюсов хватает ровно так же как и брейнфака, чисто технически можно всё на свете сделать, хватит с головой, вот это всё, по-человечески все любят cargo и весь джентльменский набор линтеров встроенный в компилятор.
Вот тут можно причаститься как раст не выстреливает в прямом эфире: https://lib.rs/stats
Насчёт веба ничего не скажу, не смотрел. Знаю только что фигма свой бэк с вебсокетами и мультиплеером на расте написала. Веб сегодня довольно разный.
>>2624140 > В расте, если что, нет арен, ты конечно прямо об этом не заявил Был бы твой мозг сложнее чем хлебушек, ты бы заметил что речь идет не про раст, а про vale и арены.
>Вот тут можно причаститься как раст не выстреливает в прямом эфире Если сейчас пойти в любой экзотический язык, особенно комьюнити, начнет складываться ложное впечатление, как-будто он активно развивается и вот вот станет очень популярным (если не уже, в их умах). На деле же, за столько лет (уже вроде больше 8?), раст мало чего путного достиг и топчится где-то внизу спроса, простреливая где-то благодаря хайпу и неокрепшим умам тех, кто его на работу протащил (от чего бизнес еще взвоет).
>>2624228 Дело даже не в том, что кто-то анализатор умудрился прикрутить к компилятору, большого ума не надо (хотя на деле концепция владения живет только для хеллоу ворда, а весь код у тебя из ссылок и костылей в виде Rc). А в том что раст накладывает на разработчика лишнюю нагрузку. Даже если ты себя надрессируешь, тебе все равно придется писать в рамках баран-чекера в тех местах, где он по сути и не нужен. Если в С++ есть все те же инструменты и они опциональны и восстребованы только когда реально нужны, то в расте ты всегда зажат в рамках узкой парадигмы, словно в каком-то трубопроводе.
И да пиарщики раста умудрились надрессировать комьюнити так, что ошибка с аллокацией памяти, стало прям главной проблемой тысячелетия в разработке ПО, но на деле же любой управляемый язык давно избавился от этой проблемы, но код безопаснее от этого не стал ниразу. там, кстати, свои пиарщики и возвели другую проблему в абсолют, проблему с наллами (null), но затирание буллшитов ровно такое же
>>2624233 Не завидую тебе, везде нужно бизнес какой-то из жопы вытаскивать и переписывать всё на с/с++ чтобы точно популярно стало. А то понапринесут своего пидорства новомодного, ууух суки.
>>2624236 С хуя ли Rc это костыль? Там где не надо борроучекер, там и используй Rc. Будет почти как в обычном gc-языке как в свифте. Даже крестолуддиты не чураются shared_ptr. Очередной пиздобол с общими фразами про хайп, неспособный разобраться в вопросе.
>>2624236 >Если в С++ есть все те же инструменты и они опциональны и восстребованы только когда реально нужны, то в расте ты всегда зажат в рамках узкой парадигмы, словно в каком-то трубопроводе. Да-да, большинство С++ программ крашатся первые 15 лет
>>2624236 >а весь код у тебя из ссылок и костылей в виде Rc У меня не состоит, сейчас ide открыта проект на 84 файла только в двух местах обернул в Arc<Mutex<>> и то из-за асинхронности, остальное всё контролируется бороу чекером. Другие проекты примерно также. Что я делаю не так? Как я по твоему должен писать на расте?
>Если в С++ есть все те же инструменты и они опциональны и восстребованы только когда реально нужны Шизик тебя с этим обоссали уже несколько тредов подряд, ты специально приходишь мочу пить?
>>2624400 >в двух местах...и то из-за асинхронности >Что я делаю не так? Устройся на работу и начни уже программировать. Кому ты нужен с пет проектами с асинхронностью в двух местах.
>>2624249 >Да-да, большинство С++ программ крашатся первые 15 лет Ну да, аллокация памяти сама главная проблема сейчас в разработке (а не говнобюджеты и вечные "херак и в продакшен"), вот в управляемых языках вообще багов нет, ведь там нет проблем с памятью.
> написал лабу > пойду ка я в расто тред рассуждать о судьбе программирования, что на самом деле нужно бизнесу и как нужно писать код Каждый тред всё одно и тоже
>>2624450 >там нет проблем с памятью может потому что они с памятью не работают?
Работая с ублюдошным C++ невозможно опознать ошибку на ранней стадии. Скомпилируется - не скомпилируется - надо ебаться с отладчиком на ранних стадиях.
Если запустился rust, то уже уверен в том, что 99% строчек кода работают как запланировал. Единственный конкурент у раста не C++, а golang
>>2624777 >Если запустился rust, то уже уверен в том, что 99% строчек кода работают как запланировал Да ну просто новая эпоха в программирование! Решили проблему с аллокацией через анал-карнавал, вроде как с гонкой что-то сделали (больше чем уверен, что тупо черед рид-онли) и на тебе супер-пупер язык с самой безопасной утечкой памяти.
Такое ощущение что ты глупый smm'щик, а не программист, ведь программист то должен знать об управляемых языках и вкурсе, что там чуда не произошло.
>>2624874 Вы можете предсказывать тенденции? Получается если мы сейчас вкатимся, то через пару лет будем как синьоры "духов" джунов на путь истинный направлять и тред будет наравне с плюсами по активности?
>>2624447 >с асинхронностью в двух местах Самый прикол что асинхронность везде, просто когда стучишь на те же сторонние апи и для остальной безнес-логики не нужно все оборачивать в Arc. Достаточно передать то что нужно при вызове внутри tokio::spawn тут либо теряешь владение, либо клонируешь, для мелких json не критично и потом получить результат вызвав futures::future::join_all, а так по сути у меня в Arc обернут только контекст где конекшен к БД и всякие прочие вещи которые нужны везде. А другое место с мьютексом там одна штука для бизнес-логики где асинхронно запись в структуру и нужна мутабельность и лочить. Всё, остальное как я выше описал передали -> получили ответ. То что ты говнокодишь у себя в плюсах используя везде не GC еще не значит что другие также делают.
>>2624971 что такое лабы? это когда препод даёт задачу по программированию? просто в моем инженерном институте мы на лабах со всякими установками возимся и измеряем на йобах 50-летней давности, а программы и прочее я сам дома делаю, даже лучше чем it студенты
>>2624861 Смешно, но я больше боялся, что везде обмажут гошкой и придется его есть. Про раст даже не говорим. Были пару додиков, которые до релиза фапали, а потом утихли. Возможно недостаточно хайпуете.
>>2625528 >везде обмажут гошкой и придется его есть Так так и произошло! Сейчас все крупные русские ит-компанию во всю пишут на нём бекенд и микросервисы
>>2626459 У нас нет, выкинули при первых тестах на производительность. Нереально тормозное говно, при всем своем минимализме (ну или фанбои не смогли нормально написать тест).
Сап, растач, помоги совладать с borrow checker'ом. Хочу написать функцию, которая добавляет lookup table к вектору (вектор неизменяемый). Ключом в этой lookup table должно быть поле из элемента вектора. Требования на пик 1. Если сделать ключ owned, а элементы вектора обмазать Rc, то все легко и просто (пик 2), но можно ли как-то избежать хотя бы одной доработки? Либо хотя бы без Rc (пик 3), либо хотя бы ключ - не owned (пик 4). Только unsafe обмазывать?
>>2626647 Либо разделять владение (хэшмапа хранит только хэши строк, значения — индексы), либо разбираться с self-referential structs. Ну либо обмазываться unsafe. Я бы переделал структуру этих данных, зачем там одновременно и Vec и HashMap?
https://habr.com/ru/company/badoo/blog/420407/comments/#comment_19013387 >Так вот судя по их словам, обогнать себя самого на VLIW-ассемблере либо нельзя, либо на считанные проценты, относительно того же грамотно написанного С-кода в связке с оптимизирующим компилятором. >С даёт результат чрезвычайно близкий к вручную написанным машинным кодам.
>>2627687 > программист на С и программист на машинных кодах выдадут исполняемый бинарник с совершенно минимальными отличиями Эээээээ > С даёт результат чрезвычайно близкий к вручную написанным машинным кодам. Более чем голословное заявление, есть крайние случаи которые си не может оптимизировать достаточно, есть где наоборот, си какую то супер крутую оптимизацию применит, о которой 99% прогеров способных ассемблер писать и не знают
хотя хзы, может эмбедед в каком то другом мире живет, где выше мной сказанное ложь
> Справедливо то же самое в отношении Rust? Неа, чтобы такое выполнялось нужно так называемые "зеро кост абстракшенс", собственно только в си можно более менее сказать что они есть
>>2627687 Rust это аналог плюсов, а не си. Си он максимально прозрачен, ты всё делаешь ручками. Как пример, у тебя нет такого, что при выходе из скоупа непрозрачно исполняется какой-то левый код деструкторов
>>2626829 Хайп ушел, а ты все фанбойничаешь. Языку лет 8, чуда не произошло, хватит эту дурость писать. Это просто еще один экзотический язык на дне рынка.
>>2627227 >хэшмапа хранит только хэши строк, значения — индексы Хорошая идея, спасибо. Вопрос только в обработке коллизий, но на моих объемах данных это не должно быть проблемой (на моих объемах вообще можно и без Rc обойтись, просто делать clone() везде, но тем не менее). >зачем там одновременно и Vec и HashMap? Мне нужно иметь возможность как выводить весь список элементов (они отсортированы по другому полю), так и быстро получать конкретный элемент по его id. На crates.io вроде есть ordered dictionaries, и их использование было бы наиболее правильным решением, но хочется реализовать без сторонних зависимостей.
>>2628151 на пик 1 сразу видна проблема. Ты не можешь просто так положить ссылку на стеке в структуру, т.к. ссылка может жить дольше объекта. или делай отдельный индекс ключей (заодно получишь сортировку по ключам), или клади туда по значению, String например.
>>2626647 >Только unsafe обмазывать? > Вместо ссылки на Item кладешь указатель и делаешь функцию типа get(&self, &str) -> &Item, в которой разыменовываешь. Это даже не unsafe, а так, на пол шишечки.
>>2628289 Ну это какой-то специальный предолинг, который я даже не понял как работает. Это_другое Это расширение от компилятора. Компилятор ещё дает возможность встроить код, который будет выполняться при входу в любую функцию
>>2629047 Это не другое, это расширение которое есть в gcc и clang, а развитие стандарта С это буквально постепенное включение в него расширений gnu. Большинство проектов GNU и Linux используют расширения, даже вставку asm нельзя сделать без расширения, они часть языка, но не часть переносимого стандарта, который нужен как для ПК так и для МК.
>>2626647 А нахуй тебе вообще вектор всрался? Почему бы просто не хранить овнед Item'ы в одном хэшмапе? А если нужны конкретные фичи вектора, которых нет в хэшмапе, типа ордеринга, юзай btreemap
>>2628208 Нужно только подождать Питон из дна вытащили ученые с МО и разводилы для хочух в айти и универы. Каким боком ты проводишь параллели со ржавчиной, мне не понятны. Тоже самое сказать, что за дирижаблями будущее, вон видите как самолеты стали популярны. Про популярность я бы тоже поспорил, язык безз многопоточности - игрушечный язык, а вебе он так популярен и не стал, пхп до сих пор долю занимает жирную
Сап, аноны. Такой вопрос возник, а кто такие системные программисты Rust? (Я умею пользоваться гуглом, просто определения и рабочие обязанности везде указаны разные, особенно заметны различия между русским и английским толкованием)
Увидел недавно вакансию "Джуниор системный программист Rust", но в описании вакансии из обязанностей указанно только: "Расширение функционала, документации и написание функциональных и модульных тестов на несколько проектов". Хотел бы попробовать свои силы, но не совсем понимаю какой уровень знаний необходим для кандидата.
Я учу Rust 2 месяц, есть несколько пэт-проектов, есть поверхностные знания Go, JS, NodeJs, Java. Очевидно, понимаю теорию алгоритмов (Introduction to Algorithms by Thomas H. Corman - замечательная книга). Ну и так, по мелочам. Знаю как это звучит, в свою защиту хочу сказать, что сам для себя учил, и экспертом себя назвать язык не повернется, но суть понимаю, поэтому считаю знания поверхностными.
Из пэт-проектов SQL база данных (пока на том уровне, где мне было бы стыдно прикрепить его к резюме). И менеджер буфера обмена, функционал работает, но выглядит как говно, тоже стараюсь развить до приемлемого уровня. Ну и вообще, дайте оценку, пожалуйста, насколько разумным будет включать эти проекты в резюме.
Подводя итоги, хотелось бы услышать ваши определения того, кто такой системный программист Rust, и что он должен знать. И если не сложно, подсказать что следовало бы учить, если у меня есть желание попробовать себя в этой роли
Привет, работаю разработчиком на Go, в вузе были C/C++ супер-ентри левела, хотелось бы попробовать Rust. Будет ли проблемой то что нет особо понимания плюсов? Стоит ли сначала учить C++?
>>2636717 > Будет ли проблемой то что нет особо понимания плюсов? Будут проблемы с пониманием того, зачем нужна та или иная фича, что плохо, а что хорошо. Важно не столько знание C++, сколько опыт программирования на оном
>>2636717 Я сейчас после питона плотно осваиваю раст, все довольно удобно и приятно. Главное - понять логику борроучекера. Правда до этого у меня были небольшие пет проекты на си и плюсах, но до раста я как то не сильно задумывался о UB, а тут компилятор не дает жопу отстрелить, что радует. Специально без ансейва UB сделать как то сложновато.
>>2641442 Вау, виндертон… это уёбище без хоть какого-нибудь подтверждённого опыта коммерческой разработки и вместе с тем откровенно помойным кодом на гитхабе по уровню не дотягивающим даже до уровня джуна.
>>2640384 Бизнес бы и макаку посадил за печатную машинку, если это было выгодно по обучению и затратам. Не нужно бизнесом мерить ценность языка. Именно из-за бизнеса сейчас и существует такой зоопарк языков, где каждый кустарь пилит одно и тоже, массово деградируя в ширь.
>>2490347 (OP) Как выглядит среднестатистический пользователь Rust? Только честно. Сложилось впечатление, что по уровню интеллекта это не очень умные люди. В остальном еще и ебанутые. Примерно как хозяин комнаты на пикче со Столяровым, та что в шапке треда. Ну или как Стив Клабник, такой типичный фрик-пидорок. Интересуюсь для того чтобы понять философию Раста.
>>2648231 Я кстати думал, что это рофл. Но я подписан на пару каналов по расту и там авторы реально чулки носят, ногти красят Не то, чтобы мне это принципиально было, просто забавно
Смотря на отсуствие некоторых вещей в Расте и потом если посмотреть, что пишут англоязычные кодеры, как аргументацию на счет тех или иных вещей, то сдается впечатление, будто растовчане - это поехавшие фанатики Это норма или просто попадаются клоуны?
>>2653804 Если бы ты указал, каких именно вещей нехватает, и кто и чем аргументирует (со ссылками) - мы могли бы это обсудить. Пока что я вижу только один тренд: повышение интереса растохейтеров к гомоебле и хуйцам, что не может не радовать.
>>2654110 > и мне было интересно покопаться и поискать причины таких решений Это не фича именно раста, просто функциональщикам нравится такой синтаксис
>>2653994 >тернарного оператора или возвращения значения из функции через return Но они же как раз вместе работают отлично. Вместо c = isActive ? 5 : 3; или вызова функции типа if (isActive) { return 5; } else { return 3; } можно сделать c = if isActive { 5 } else { 3 }; всего пара дополнительных символов относительно тернарника, зато никакого магического синтаксиса специально для этого случая. Всё обычно.
Антоны, я обычная питон макака, прошу не считать троллингом тупостью и набрасыванием на вентилятор. Но нахуя нужны эти ебаные скобочки вместо отступов? В любом случае все и всегда код форматируют под них, придерживаясь определенных правил. Да, есть моменты, когда в одну строку делаешь еботу и скобочки там нужны, ну сделали бы их опциональными.