В этом ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
>>2133382 Да очевидно это рассчитано на тупой маркетинг, кто семейные деревья в бок рисует с хронологией? Приписка что это семейное дерево лишь чтобы такие как ты вовремя пукнули и поправили, а ассоциация ровно ложится как и задумал автор. Некрасиво и низко.
Логический правильный вариант (си же не слился в с++, а вышел с него). Да и другие языки могут дать еще потомства, хера скукожили. после такого говна и манипулированием даже не хочется раст трогать
>>2133388 Первая вакансия. Первый флагманский проект - утилита grep. Был принят в мазилу, а когда выпинут - не указали на самом деле авторы тупые и могли упомянуть создание фондейшена раста Написания браузера на мазиле (написали же??)
>>2133390 > что уже достижение. На самом деле нет. С появлением ллвм каждый второй студент придумывает свой ЯП и пишет к нему компилятор в ир-код, который скармливает ллвм. Вот когда они интегрируют Cranelift как бэкенд хотя бы для debug-билдов на х86_64 (а такие планы у них были), тогда и можно сказать, что на расте полностью написан компилятор.
В прошлом треде анон упомянул язык bosque от MS, я о нём ничего не слышал, так что нагуглил видосик, через непонимание английского пытался вникнуть в послание мне постараться проанализировать и сделать выводы для себя) (как комнатный Рембо, крч). И сходу душа запела, потому что функционалочки во все поля. Лупов больше нет, они заменены функциями, мутабеольности нет вообще, ибо опасна и не нужна. Хотет Верону в таком же ключе.
>>2133582 Но вы же освободили память, но в память по указателю до сих пор пишутся данные! А ещё у вас состояние гонки теперь. Ех, непорядок. Растодебилы опять обосрались.
>>2133364 График на два года устарел, Rust уже шесть лет подряд most loved.
>>2133365 Эту таблицу рисовал какой-то конченный долбоёб. В расте нет динамическиго тайпчека, только статический, а в плюсах есть auto. А если мы говорим про dyn Trait, то это и в плюсах есть.
>>2133747 Ну, очевидно, что эту таблицу писал человек, который нихуя не знает про кресты, а ещё думает, что всё знает про раст, примерно как ты. Во-первых, dyn Trait — это не динамическая типизация, твой тип всё ещё должен имплементить некий трейт, чтобы ты мог получить dyn Trait. Во-вторых, в крестах есть точно такая же хуета, когда ты используешь классы с vtable вместо определённого типа, но почему-то в таблице я не вижу static/dynamic у крестов. В-третьих, если мы говорим про dyn Any и даункасты, такую же хуету можно получить просто кастом указателей.
>>2133754 > а ещё думает, что всё знает про раст, примерно как ты Спасибо за такую высокую оценку моей уверенности в себе.
>Во-первых, dyn Trait — это не динамическая типизация, твой тип всё ещё должен имплементить некий трейт, чтобы ты мог получить dyn Trait. Да, но тут же дело в том, что он умеет проверять это в рантайме. Разве не в этом суть динамики?
>>2133761 >он умеет проверять это в рантайме Нет, он проверяет соответствие типов в компайл-тайме. Точно так же, как кресты или сишка.
>Это проверяет тип? Нет, но dyn Any тоже не проверяет тип, он проверяет хеш, и в теории эти хеши могут совпасть у двух совершенно разных типов. Так что в теории отличия тут нет, а на практике ты и в сишке можешь свои типы хешить в компайл-тайме макросами.
>и в теории эти хеши могут совпасть у двух совершенно разных типов. Так что в теории отличия тут нет Ловко ты словами сыграл. В теории могут совпасть, значит в теории отличий нет. В теории, я могу привести неоспоримые доказательства своей правоты, значит в теории я победил. До свидания.
>>2133773 >В книжке написано в рантайме Там написано, что он ресолвит методы в рантайме, а не типы (точно так же, как работает ресолвинг методов на классы в крестах; ты всё ещё не показал разницу между dyn Trait в расте и dynamic dispatch классов в крестах). Типы ресолвятся в компайл тайме всегда.
>Ловко ты словами сыграл Я не играл словами, я тебе рассказал как dyn Any внутри работает, и что даункастинг в расте ничем не отличается от каста указателей, абсолютно ничем.
Но если ты говоришь что ты победил, то ты победил, офк, удачи.
>>2133638 Некоторые решения у них сомнительные там, но это же MSR, там ни раз направят на путь истинный.
В целом, мне думается, это будет такой "котлин" для С#, ну на самом деле не замена, а просто модный и молодежный язык для дотнета (вероятно и как замена тайпскрипта, раз так похож).
>>2134145 Жалко не дотянули до котлиновских лямбд (без необходимости скобой и с "it"). Хотя вариант без "стрелок" мне нравится (не знаю как другим, но вечно бесили эти -> и =>, у меня даже какой-то мышечный "затык" был во время написания).
>>2134256 Если в С++ ты сам собираешь урожай со своих грядок. То в расте ты находишься в рабстве у черного властелина Борроу Чекера, с веления которого ты собираешь урожай как ему захочется.
>>2134256 >>2134273 И в расте и в плюсах очистка делается автоматом при помощи raii. Впрочем в расте можно и заранее вызвать деструктор при помощи функции drop.
Можно использовать и аллокаторы, но тогда придётся ебстись с ансейфом.
>>2134282 Борроу чекер работает только для обычных ссылок. Умные указатели живут сами по себе и обычно с борроу чекером вообще не взаимодействуют, потому что передаются по значению.
>>2134273 >>2134283 Понял. Забавно у вас, конечно. А что интересного или примечательного (на ваш взгляд) вы можете рассказать о своём языке? Есть какие нибудь мастхэв фреймворки или для чего в общей массе используют раст, что там по вакансиям и т.п.?
Не понятен статус кока, вроде и исследовательский проект, но тут и сайт запилили, и в чатике няшатся, и версия уже за 2.х.х, и даже есть один вопрос на SO (лол). Кто что слышал за проект, расскажите.
>>2134880 Шел 2021 год, люди до сих пор мерятся языками по скомпрометированному сайту, по скомпрометированному коду и футуристическими тестами коня в вакууме списке.
Почему язык, который создали 20 лет назад, имеет защиту от очень неприятной и редкой плавающей ошибки (затенения переменной) встречающиеся в очень большом коде, а в новом, ультробезопасном языке есть возможность даже переиспользовать имя переменной под другим типом?
Можете не отвечать. Откуда творческим личностям знать об редких ошибках.
Безопасность не для вас молодой человек написана, это только для памяти.
>>2135199 Потому что у нас статическая типизация, и если ты не бомж, который не может себе позволить запустить rust-analyzer, то ты всегда знаешь тип переменной и всегда можешь прыгнуть к её объявлению.
>>2135199 Имеет, просто выключена по-умолчанию, потому что в функциональных яп шадоуинг - это норма. Можно запритить в линтере, даже есть несколько уровней запрещения, вот эта строка запрещает любой шадоуинг: #![deny(clippy::shadow_unrelated, clippy::shadow_same, clippy::shadow_reuse)]
Устроился фронтом - оказалось взяли на бекенд писать Раст + WebGPU. В принципе доволен, давно хотел перекатиться и есть опыт работы с функциональными языками и бекендом. Довольно большая компания и нишевый продукт.
Пока всё нравится, борроу чекер конечно обсирает часто, но понемногу въезжаю.
Дочитываю книжку из ОП-поста. Есть ли какие-то рекомендации от местных анонов что читать дальше? Алсо, может кто-то опытный, порекомендуйте что-то по компьютерной графике webgl/webgpu/основы шейдеров, текстур и рендеринга.
Как же я ненавижу этот компилятор, ебаный в рот этого бороу чекера НУ НИХУЯ Я НЕ БОРОВЛЮ ПСИНА ТУПАЯ У меня всё что только можно один лайф тайм имеет Как я вобще могу бороувить что то вызовом функции, если после её завершения мутабельного референса на лексер вобще больше не существует
Так еще и если токен не возвращать неожиданно множественный бороувинг пропадает и всё какого то хуя компилиться 4 скрин
Так еще и если всё это сделать просто из мейна, создавая и вызывая лексер напрямую всё работает
вместо кода полтора часа сижу не понимаю что от меня компилятор хочет и что ему не нравится
>>2137752 Ну если хочешь совсем подробно как работает, то вот: https://github.com/rust-lang/rfcs/blob/master/text/3058-try-trait-v2.md Именно так оно работает внутри, но сам трейт ещё нестабилен, а значит для своих типов его имплементировать нельзя - знак вопроса работает только для Result или Option (но одно в другое преобразовывать не может).
>>2138051 Если говорить о расте как о функциональном языке, то эксепшны считаются нечистыми. Если говорить о расте как о языке с небольшим рантаймом, то эксепшны могут влиять на производительность. Последнее более логично.
>>2138063 > Куда уж нам до до сих пор не унифицированного манглинга... Ну, в расте его тоже нет. Это кстати, было одной из причин почему сложные структуры не стабилизировали в константных генериках - не знали как их закодировать в названии типа: https://github.com/rust-lang/rust/issues/61486
>>2138051 Мне думается, что современные кустарные разработчики не могут осилить это в рантайме и начинают придумывать всякий бред, заставляя программиста, по сути, руками пробрасывать ошибки.
>>2138124 Могут, паники как бы так и работают и их даже отлавливать можно. Просто специально сделали, чтобы их использование для ловли ошибок было как можно более сложным (а так вообще можно делать, правда ловиться будут только растовские паники). https://doc.rust-lang.org/std/panic/fn.catch_unwind.html
>>2138168 >Просто специально сделали, чтобы их использование для ловли ошибок было как можно более сложным Нужно еще чтобы перед написанием кода программисты били себя плетью. Какая реальная причина и почему в С++ есть эксепшены? Я не эксперт, но вероятно это требует больше усилий для написания компилятора и рантайма?
>>2138185 Весь рантайм уже имеется. Реальная причина в том, что выбрали возвращение эксепшенов одновременно с результатом в качестве основного способа работы с ошибками. Всё.
>>2138186 Новые языки нынче выглядят как халтура (го, раст, вроде свифт). Если раньше люди старались сделать жизнь программиста лучше, то сейчас делают пару фич для демонстрации, а на остальное кладут болт (точнее выпускают статью, почему это тебе "ненужно").
>>2138192 Checked exceptions были ещё в жяве. Плюс в расте ничего не мешает использовать Box<dyn Error> если лень пердолиться с конкретными типами ошибок.
>>2138194 Не люблю чекед ошибки/"ошибки это значения" (хотя я раньше был сторонником их в джаве), вообще ошибки считаю как отдельная ветвь программы (исключительная, и по большей части не для текущей ветки исполнения). Ну, типа, есть нормальная работа и редко не нормальная, на которой не хотелось бы максимально заострять внимание (а лучше пробросить до нужного контроля, и мне тут не мешала). В общем, дело вкуса.
>>2138202 Ну оператор "?" и Box<dyn Error> как раз и убирают всю исключительную часть кода под капот (правда ценой боксинга ошибок). Есть даже макросы, которые добавляют ещё больше сахарку: https://github.com/withoutboats/fehler
>>2138231 Я не понимаю тебя. Я говорил про Box<dyn Error>, который по сути аналог Throwable из жавы. Преобразование любой ошибки со стека в Box<dyn Error> состоит в аллокации памяти и перемещении со стека в кучу. Преобразование из Box<dyn Error> в Box<dyn Error> - noop.
>>2138235 бля, я листнул вверх и увидел ваш полный срач про исключения, а думал, шт затираешь про бесповоротный box ошибки при ? операторе, соре, уёбываю
хотя, постойте
кто там хотел исключения? ловите: panic::catch_unwind() panic::set_hook(Box<FnMut(&PanicInfo)>) всё без асинха, хоть обмазывайся Runtime::block_on'ом при каждой обработке, ёба
им подают нормальную концепцию разделения потока исполнения проги в случае ошибки - нет, не хочу, хочу исключать говно
Почему так нахуй? Я хочу просто прочитать число из stdin, почему во всех остальных языках я могу это сделать, а в расте вот это: https://programming-idioms.org/idiom/120/read-integer-from-stdin/1906/rust Ни один из этих способов и близко не похож на простой, который можно легко вспомнить при желании, что за пиздец И чем дальше я смотрю, тем больше такого пиздеца наблюдаю Даже с++ не кажется теперь таким оверинжиниринг куском говна
Во всех этих языках это 1-2 строчки вместе с объявлением и мне даже не пришлось гуглить, этот код безумно легко читатется\осознается\запоминается Конечно, раст еще показывает все места, в котором код может свалиться, но между трейсбеком в рантайме, на написание которого я потратил 0 секунд и .expect("Failed") я выберу трейсбек
>>2138361 Какая разница просто или нет, если мне для такой простой операции, как чтение числа из stdin пришлось написать кучу неочевидного борлерплейта? Я был уверен, что язык в 2021 должен помогать программисту абстрагироваться от кода и больше думать о том ЧТО написать, а выходит, что 99% времени я должен думать о таких простых вещах как каст прочитанной строки из stdin в число
>>2138508 Потому что I/O — это ебаная пизда, и раст от тебя это не скрывает. Ты получаешь ебаные байты, а с ебаными байтами всё что угодно может пойти не так. Из очевидных проблем: у тебя может отвалиться пайп, у тебя могут пойти на вход байты, которые не являются валидным utf8, у тебя может на вход попасть строка, которую нельзя распарсить в нужный тип. Всё что угодно в ебаном I/O может пойти не так.
>>2138523 Ты ещё забыл про то, что IO пиздец какой медленный. Куча языков делают скрытую буферизацию, чтобы хоть как-то обойти это. А в расте нихуя нет, из-за чего он иногда в десятки раз медленней в бенчмарках, где активно используется вывод в консольку без вручную добавленного буфера.
>>2138508 ты малость не туда зашёл с хотелками чтоб язык делал всё за тебя
раст это СИСТЕМНЫЙ язык, который должен предоставлять разработчику максимальную инфу о возможных точках отказа, а для этого они должны быть ВИДНЫ в коде, чтоб глаз мог за них зацепиться, и чтоб потом не бегать потом с ошпаренной жопой из-за прилетевшего в sentry трейсбэка на проде
>>2138534 Что если я гипотетически не могу использовать крейты?
>>2138523 Еще раз, остальные языки развалятся в рантайме со стектрейсом из которого я пойму, что произошло, без дополнительных телодвижений. В расте же я на каждую ошибку предварительно должен написать .expect("Random error") - такая ошибка ничуть не лучше трейса (может даже хуже)
>>2138626 Как .expect("Random error") решает проблему прилетевшего в sentry трейсбека?
>>2138754 >Еще раз, остальные языки развалятся в рантайме >Как .expect("Random error") решает проблему прилетевшего в sentry трейсбека?
я тебе открою страшную тайну, но раст сделан ровно для того, чтобы не разваливаться в рантайме, поэтому unwrap и expect это больше дебажные штуки, ибо паника - это действительно ненормальное поведение проги, а в проде юзают нормальные обработчики ошибок наподобие:
fn get_input() -> String { let mut buffer = String::new(); match std::io::stdin().read_line(&mut buffer) { Ok(_) => () // можно опустить количество прочитанных байт, Err(e) => { делаешь с e что угодно, хоть паникуешь, хоть в жопу суёшь, если похуй } } buffer }
как вариант, ошибку можно пробросить выше по стеку, изменив при этом возвращаемое значение:
fn get_input() -> Result<String, io::Error> { // сразу ВИДНО, что функция может сфейлить, и разработчик ОБЯЗАН обработать ошибку хотя бы через unwrap(), потому что никак иначе ему до возвращённого значения, которое обёрнуто в Result, не добраться. // как мне в питоне понять, что абстрактное int(input()) может бросить исключение, и его нужно обработать? ... std::io::stdin().read_line(&mut buffer)?; // ? - достать значение из Result в случае успеха или вернуть из функции ошибку buffer }
если короче: Result<T, E> - обработка ожидаемых ошибок, паника возникает при неожиданных (если в проекте нет unwrap()/expect()/panic!()) и требует такого громоздкого синтаксиса, шоб им не хлоупотребляли
>>2138871 > ибо паника - это действительно ненормальное поведение проги Кстати, злоупотребление паниками в коде аллокатора в стандартной библиотеке стало одним из препятствий для включения раста в ядро линукс. Пришлось добавлять версии функций с возвращаемой ошибкой https://github.com/rust-lang/rust/issues/86942 и пердолить способы опцией запретить вызывать паникующие версии функций: https://github.com/rust-lang/rfcs/pull/3140
>>2138912 Поддержку линукса пердолят не команда компилятора, а отдельные люди на зарплате. А кор тим там недавно ГАТы из экспериментальных фич вывели. Возможно скоро стабилизируют. TAIT тоже разделили на минимальную версию (с ограничениями - TAIT'ы не могут быть аргументами функций и полями структур), в которой компилятор раста точно может вывести типы и тоже возможно скоро стабилизируют.
Есть какой-нибудь roadmap для изучения именно системного программирования на Rust? Я неплохо обращаюсь с языком, но не знаю с чего начать продолжение. Меня интересует именно системное программирование под Windows.
Приветствую Аноны, хочу ПОПЫТАТЬСЯ вкатиться к вам - сейчас занимаюсь db, plssql и так далее. Такой что да, очередной зеленый вкатун. Есть ли предпосылки, чтобы я НЕ стал пробовать? Живу в Гейропке и тут вроде есть пара сотен вакансий. Спасибо за помощь
>>2145581 >Ну ноги и руки тебе никто не переломает если начнёшь пробовать раст Это ты просто на комментаторов опеннете не виде. Будь их воля, у тебя бы сифилис начинался от одной мысли о расте.
>>2145611 > Это ты просто на комментаторов опеннете не виде. Кстати да, там прям какое-то сборище любителей си, которые на си никогда не программировали. Я иногда захожу в новости с очередной уязвимостью и в первую очередь ищу коммент с упоминанием раста, а если его нет сам делаю такой.
>>2138771 Не имея паник в языке (или хотя бы process::exit) ты не можешь вернуть Box<dyn Error>, потому что аллокация боксы может зафейлиться. Что ты будешь делать в этом случае?
>>2146087 В no_std в расте это реализуется специальной функцией (помеченной как #[panic_handler]), которая никогда не должна завершаться. Например в bare-metal можно либо принудительно перезагружать процессор, либо вызывать зависание бесконечным циклом.
Господа байтоебы, нужна помощь, взорвал мозг и не могу спать пиздец.... Проблема с кодом типа пикрил, присваивание в метче подсасывает тип первого бранча и компилятор пиздит что второе присваивание нелегитимное, хотя по сути оба опшена это инстансы того же дженерик объекта..
Мне нужно как-то указать ебучему компилятору что у sort_govna тип GovnoGeneric<impl Govno> а не GovnoGeneric<S1>
Для бекграунда — я пытался по аналогии с тайпскриптом реализовать фектори которая взависимости от входных параметров инстанциирует тот или иной обработчик, но у всех обработчиков общий интерфейс. Может в расте подобные вещи решаются иначе?
Единственный недостаток, что Box<dyn T> медленнее чем импл. Есть другие варианты, например с енумами, но там нужно уже ебстить вручную. Есть крейты для распространённых трейтов (например чаще всего нужен итератор): https://github.com/taiki-e/auto_enums но в общем они не подойдут.
>>2146664 > GovnoHolder бля пока че ето я паходу..
Сделал на dyn (еще понадобилось пердолиться с Clone для моего трейта), вроде вкурил, но странно что нельзя захинтить __любой__ тип с полями дженерика и реализацией трейта....
>>2146909 Если писал многопоточные программы на си, то "бля, охуенный компилятор". Если писал драйверы под экзотическое железо или только однопоточные программы, то "бля, да почему нельзя-то".
>>2146916 Хм. Знаешь, если я перестану сражаться с AddressSanitizer'ом и утечками и останется компилятор, это будет хорошо. >>2146980 И то, и другое писал и пишу, только размениваюсь на современный стек потихоньку. Потыкался в него, понравилось.
>>2146603 В итоге я чуть ли не дословно спиздил пример отсюда — https://github.com/lpxxn/rust-design-pattern/blob/master/creational/factory.rs и немного затвикал т.к у меня бокс является только частью объекта из метча. Но я все еще не пойму почему при использовании енума или инстанциировании в лоб через дерево ифов компилятор выкупает что объект совместим с функцией, а в моем оригинальном варике не.. надо покурить доки...
А есть способ при вызове цепочкой аля пикрил получить резалт в блоке? или надо явно сначала объявлять/юзать метч? вызывать логику в ветках метча это не антипаттерн?
Есть ли какой-то более-менее общепринятый способ прикрутить валидацию при изменении значения поля структуры? Подходят ли для этого сеттеры, как в Java, или в Rust это антипаттерн?
>>2147614 Проблема в том, что в расте нет эксепшонов, а потому простые сеттеры там не сделаешь (сахарка для геттеров/сеттеров вообще нет, как и в жяве надо вручную пердолить функции). Т.е. функция set_smth(...) должна будет возвращать Result<(), Error> - пустой результат, содержащий только ошибку (которую вызывающий код должен будет проверить). А вот как работать с ошибками - уже совсем другой вопрос. Тут можно либо заморочиться с описанием каждой ошибки, если в этом есть необходимость (рекомендую thiserror для сахарка, чтобы писать меньше кода), либо просто оборачивать строку в ошибку и возвращать её (тут рекомендую anyhow). Либо использовать всё вместе.
>>2147615 Я так и не ответил на вопрос. В расте сеттеры - это норма, потому что по сигнатуре функции сразу видно, что во-первых он изменяет структуру (потому что в качестве первого агрумента принимает &mut self), а во-вторых может возвратить ошибку.
>>2147585 >Мне кажется на пикриле тебе нужен if let. If let позволяет достать Result::Ok и выполнить действие для успешного кейса, но если вызов зафейлился, в else ветке я не могу достать Result::Err чтобы из него дернуть значение ошибки, выкинуть ее в стдаут и выйти из функции... Пока отдыхал понял что вроде могу сделать match по мемберам Result, если метч можно юзать не только для присваивания
Плюс, у меня идет несколько вызовов потенциально фейлящихся методов подряд и чтобы не городить большую вложенность ифов я решил сделать guard clause'ы, тобишь проверять результат на ошибочность и выходить из функции.. Для этого приходится сначала записать его в переменную и только потом чекнуть is_err()
Сорямба если путано объясняю, я вкатился из веб хуйни где говнить можно любым способом, и в силу квалификации никогда не возникало потребности формулировать то че я хочу сделать в технических терминах
>>2147916 > тобишь проверять результат на ошибочность и выходить из функции Я ж тебе специально ссылку дал на документацию оператора "?". Ты пишешь на расте трёх-четырёх летней давности и изобретаешь велосипеды. Сейчас уже с ошибками работать в разы проще.
>>2147923 Ага в принципе согласен. А есть какой-то общепринятый подход к обработке ошибок.. мб либка? У меня это могут быть меседжами из модулей, а могут быть написанные вручную, я к каждому месседжу добавляю произвольный текст и форматирую как джейсон чтобы другая софтина спалила стдаут и чето сделала... Если с ? дать всему всплыть то получится месс в main, поэтому я и решил каждую ошибку обрабатывать в месте возникновения
>>2148242 >А есть какой-то общепринятый подход к обработке ошибок Пробрасывают до самого мейна() вопросиками, и там обрабатывают.
>то получится месс в main В чём он состоит? Мейн вызывает функции, и проверяет, была ли ошибка, и прямо там же написано, что он делает, если была. Если нет, то продолжает.
> поэтому я и решил каждую ошибку обрабатывать в месте возникновения Ага, то есть у тебя программа может прервать выполнение в любом из файлов, чтобы посложнее искать было? Это не говоря о том, что всякие стеки не анвиндит, а просто сдаётся и оставляет всё очищать ос, а какие-нибудь коннекты к дб или сокетам вообще оставляет висеть в воздухе.
>>2148342 Ну например к ошибке из модуля я хочу прилепить какой-то юзерфрендли текст, к самопиской ошибке сериализировать параметры че ее вызвали итд, что в свою очередь требует смотреть на ошибку в месте где она всплыла. В теории можно все реализовать в мейне или спрятать в отдельный метод, но обрабатывать на месте требует минимума телодвижений, особенно если хочешь просунуть в обработчик ошибки данные
>Ага, то есть у тебя программа может прервать выполнение в любом из файлов, чтобы посложнее искать было? ну я руководствовался подходом типа "если функция сделала ерли ретерн то чето пошло не так но реагировать уже не надо". По поводу стека и памяти тут я банально нихуя не знаю, но разве память занятая штуковинами инстанциированными в функции не очистится при ретерне?
>>2148462 Я не очень понимаю, что ты хочешь. Напиши на знакомом тебе языке (если знаешь много, то на си), что ты хочешь получить, потому что для меня выглядит, что ты две разных вещи смешиваешь.
>>2148506 Ну вот например, псевдокод. В прототипе логика свалена в одну функцию, как на пике, где разные действия требуют разной реакции на ошибку, но даже если разбить точку входа на функции с single responsibility, обработчик каждой конкретной ошибки не поменяется и имо удобнее делать это на месте
>>2148526 Ты снова описал своими словами в комментария, только потратил время на придумывание названий. Напиши на каком-нибудь языке, который ты знаешь, что ты хочешь.
Если хочешь просто скипнуть результат какой-то другой функции, никак её не обрабатывая, то делаешь либо .unwrap(), если ты знаешь, что она не может зафейлиться; либо if let, если тебе нужен только хороший результат; либо let _ = may_fail(), если тебе вообще всё равно.
Можешь возвращать что угодно из функции с ?, надо только обернуть в результат. То есть либо Ok(()), либо Err(()). И обновить сигнатуру функции, добавив -> Result<_,_>
>>2148342 > Это не говоря о том, что всякие стеки не анвиндит Может анвиндить, правда не изкаробки. Но есть библиотеки, которые автоматом записывают в нужные типы ошибок стек при их возникновении. >>2148242 > мб либка? Я выше давал две либы: >>2147615 anyhow - по сути представляет собой парадигму строка - это ошибка. Можно ошибки комбинировать, добавляя к ним новые строки. thiserror - уже позволяет удобно создавать свои типы ошибок.
Если нужно просто вывести ошибку и пофигу не её тип, то используй anyhow, если нужно различать разные типы ошибок и в зависимости от разновидности ошибки меняется логика программы, то тут нужен thiserror.
>>2148526 так блядь goвнарь ссаный я ща тебя выибу а потом выибу
во-1): где юзается '?' - там можно вернуть Result<(), Error>, просто бляд ебошиь fn huj() -> Result<(), Error> { maybe_error()?; ... Ok(()) }
вовторых) пошоо нахой гуглить доки к anyhow и захват контекста ошибки с помощью anyhow::Context
в-тетьих - ещё раз нахуй ой то есть гуглить нормальную блядь растованную обработку ошибок типа if let Err(e) = maybe_error() { println!("пошёл нахуй по причине {}", e); }
>>2148582 > типа Ну это не очень нормальная обработка ошибок. Если ошибка фатальна и функция дальше работать не сможет, то обычно ошибка возвращается наверх при помощи оператора ? (предварительно либо засовывается в другую ошибку, либо отправляется как есть). Если ошибка не фатальна, то либо используется матч let res = match maybe_error { Ok(val) => val, Err(e) => { ... default_val } }; либо готовая функция из Result, например https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap_or_else let res = maybe_error.unwrap_or_else(|e| { ... default_val });
Заебало писать костыли на powershell, хотел укатить куда-нибудь. Приглянулся раст. Но гугл по запросу "работа со строками" выдает дичь, так и есть? В чем цимус — периодически пишу прикладные скрипты, которые забирают некоторые данные из SQL и по всякому их вертят. С первым проблем нет у раст вроде, а вот дальнейшая обработка данных вызывает вопросы. Много геммороя там с выделением подстрок и прочим конкатом текста, получением текста из файлов? Или ну его нахуй и лучше какой-нибудь GO
>>2150601 Питон не компилируемый, а надо очень чтобы было. Ну и скрипты, они пока скрипты, это тоже одна из причин ухода с ПШ, дабы полновесные приложения писать с миллиардом свистелок набором применений, а не как в философии Unix.
>>2150598 Вся сложность строк в расте - это наличие кучи типов у каждого из которых своя изюминка: 1) str - массив байтов неизвестного размера, которые обязательно представляют из себя валидный utf-8. Сам по себе тип почти не используется (во многом из-за того что раст не имеет стабильного способа работы с типами неизвестного размера на стеке или внутри структур) и вместо него используются умные указатели с ним. Чаще всего это толстый указатель (fat pointer) на него - &str, который притворяется обычной ссылкой но на самом деле помимо обычной ссылки на массив вмещает ещё внутри количество символов в строке, а потому размер у него больше чем у обычной ссылки. Так же используются и другие умные указатели - Cow<'_, str>, Box<str> и прочее (остальное совсем редко). 2) String - по сути Vec с гарантиями, что содержимое является валидным utf-8.
Мой совет - используй везде где возможно String (потому что в отличии от &str для него не нужно пердолить борроу чекер, да и в целом проще и понятней работать), а другие типы уже используй для оптимизации кода.
>>2150624 > Cow<'_, str> Хотя это не совсем умный указатель, а скорее гибрид ужа с ежом - String и &str в одном типе. Нужен для всяких оптимизаций, чтобы в функцию передавать оба типа без использования генериков.
>>2151072 Хорошо, видимо, я выразился косноязычно. Попробую объяснить, что имел в виду. Я пишу небольшой сайт на расте и мне нужно во время его работы прочитать в строку один файл. Как я могу это сделать? Файл расположен на сервере
>>2151698 Так он же про дату, а не дату+время. С датой+временем там пиздец полный будет, особенно если идёт учёт часовых поясов и летнего/зимнего времени.
>>2151782 На самом деле, объясни зачем тебе нужно добавлять месяцы? В теории можно добавить какой нибудь add_month_saturating_days, который добавит n месяцев и попытается сохранить день каким он и был, но в случае если номер дня больше максимальных дней в месяце, то ставится максимальный.
>>2151797 бизнес логика, я дайджестю записи с датами, зачастую известны только год и месяц/квартал, иногда нахожу от этих дат производные в будущем, и группирую с точностью до месяца/квартала и как всем очевидно, в таком случае меня не интересует результирующее число месяца или упаси господи таймстамп. В итоге и пришлось пердолить утилиту чтобы корректно переносить и не падать в 14 месяц, просто странно что такой простой хуйни нет в пекедже
>>2151788 Даже в ноубрейновом пистоне ты можешь прибавлять к дате максимум недели, потому что дальше ты уже не можешь сказать сколько секунд содержит величина.
>>2151936 >Почему последнее, а не 28? пушто утилита посмотрела что находится в феврале и что год обычный, следовательно надо пойти в ласт день марта >Если к 27 февраля месяц прибавить, то какое число будет? 27 февраля, всем очевидно
>>2151899 > только год и месяц/квартал, иногда нахожу от этих дат производные в будущем, и группирую с точностью до месяца/квартала и как всем очевидно, в таком случае меня не интересует результирующее число месяца Раз дни хранить не нужно, мне кажется тут свой велосипед в виде отдельной структуры будет подходить лучше всего.
>>2153274 unused `Map` that must be used означает, что в какой-то момент появляется некая `Map` с которой ты должен что-то сделать. Присвоить в переменную, передать в функцию, распечатать. А ты не делаешь с ней ничего, поэтому она просто дропается.
>>2153285 Может ему на работе за количество строк платят. В таком случае подобные варнинги действительно вредны, потому что уменьшают продуктивность. Слава богу их можно глобально отключить. Просто добавь #![allow(unused_must_use)] в самый верх с файл с мейном.
>>2148875 Чем лучше актикса? Поверхностно глянул, вроде зависимостей чуть меньше и все? Мимо заебавшийся от количества зависимостей и времени их компиляции в актиксе
Объясните мне какой смысл писать на этой хуйне со странным синтаксисом, если в С++ уже давно можно писать так же безопасно как в расте с помощья умных указателей?
>>2153582 Нет, твой вопрос поставлен не верно, С++ дефакто стандарт, на нем написана куча библиотек и куча софта, к тому же С++ постоянно развивается, добавляя новые пиздатые фитчи и вот скажи мне, что такого есть в расте, чтобы разработчики которые пишут по 10-15 лет на плюсах и все компании которые пишут свой софт на с++ стали переходить на раст?
>>2153586 C - да, особенно у некоторых разработчиков библиотек. Но си, согласен небезопасное, говно на котором заебешься прогать что-то сложное, но оно и не надо. Нормальные люди даже библиотеки уже давно пишут на С++. Но речь именно про Rust vs C++. Так вот давай переубеди меня человека который 13 лет пишет на С++ перейти на твой пориджеский раст.
>>2153591 >Так вот давай переубеди меня человека который 13 лет пишет на С++ перейти А кто ты такой, чтобы тебя переубеждать перейти? Что-то полезное хоть написал за 13 лет?
>>2153599 С хуяли я тебе показывать свой гит должен? Тем более я работаю на реальной работе и пишу закрытые коммерческие приложения. Ладно, я уже раскусил тебя по твоим высерам, ты вряд ли вообще когда-то работал в ИТ, твой максимум - хелоуворлды выкладывать на гитхаб.
>>2153600 И что? И это плюс. Есть ABI, и они должны иметь несовместимость версий.
>>2153613 >С хуяли я тебе показывать свой гит должен? Так ты же пришёл рассказывать, какой ты невероятный разработчик, и как тебя должны переубеждать. А оказалось, что ты ничего и не сделал за 13 лет.
>Тем более я работаю на реальной работе и пишу закрытые коммерческие приложения. И зачем тогда тебя переубеждать, если ты на кабанчике скачешь? На чём тебе скажут, на том писать и будешь. Даже жабаскриптеры полезнее тебя.
>>2153616 Если бы ты просто ничего не ответил на мой пост, то это бы выглядело намного менее жалко и позорно, чем то, что ты сейчас высрал от обиды, выдавая желаемое за действительное.
Слабо, слабо... даже адепты питона были намного более убедительны во вчерашней полемике со мной, чем "это".
>>2153625 Ты троллишь тупостью или как? Во-первых, ты пытаешься перевести изначальную тему беседы, прося у меня гитхаб и т.д. то, что к делу никакого отношения не имеет. Во-вторых, ты кто такой чтобы требовать у меня гитхаб? Мент что ли? А если я на улице подойду к тебе и скажу давай сука сюда свой телефон, мне позвонить надо, как гопники из нулевых ты мне отдашь? В-третьих, жопой вертишь тут только ты, макака безмозглая, воды дохуя сути нихуя в твоих высказываниях.
>>2153632 >оправданиями Лол, это даже не похоже на оправдания.
И это все, что ты смог высрать? Жалкий тут только ты. Тебя наверное унижали в школе и макали головой в унитаз, давно не встречал более жалкого, мягкотелого, амебного, омежъего упыря на двачах. Ты там еще не заплакал? Ну иди чулочки надень, вставь пробку и садить писать очередной хелоу вордик на своем любимом расте.
>>2153627 > Это еще почему Потому что если библиотека будет собрана одной версией компилятора, а программа, её использующая - другой, то она может тупо не работать. А может и работать. Даже тут ебучее UB, везде сопровождающее этот ублюдский язык.
> При чем здесь Си если я про С++ vs rust говорю? > C - да, особенно у некоторых разработчиков библиотек. Но си, согласен небезопасное, говно на котором заебешься прогать что-то сложное, но оно и не надо. Нормальные люди даже библиотеки уже давно пишут на С++.
>>2153640 >убеждайте меня переходить на раст >зачем? >я программист 13 лет! >показывай, что ты за 13 лет напрограммировал? >рииииииии, ничего не должен вам показывать! зато почитайте мои гомофантазии! Лол.
>>2153642 >П-п-п-отому что если б-б-б-иблиотека будет собрана одной версией компи-и-и-и-лятора, а программа, её использующая - д-д-д-ругой, то она может т-т-т-упо не ра-а-а-а-ботать. А м-м-м-ожет и раб-б-б-отать. Даже тут ебучее UB, везде сопровождающее этот уб-б-б-блюдский яз-з-ык. Лол, какое-то школьное оправдание заикающегося девственника.
Еблан, там есть совместимость ABI между различными компиляторами. И во-вторых, она даже не скомпилируется, т.к. линковка провалится.
>>2153652 > школьное > Школьник Это видимо последний оставшийся аргумент нашего погромиста на С++ с 13 летним стажем без единой строчки написанного кода.
>>2153659 >>2153661 Школьники порвались. Вы все просто заикающиеся девственники, а я альфа-самец, программирую на самом лучшем языке мира - С++. Найдите себе баб лучше, неудачники.
>>2153659 >РЯЯЯ Я НЕ ДЕБИЛ МАМ СКАЖИ ИМ Так я то сотни аргументов привёл, это ты как выебанная в жопу шлюха начала истерить. А начал ты истерить потому что не способен на мои аргументы привести свои какие-либо контраргументы. Типичная реакция животного, я даже тебя не виню, в том, что ты такой. Это все природа и защитные реакции, лол
>>2153671 > Так я то сотни аргументов привёл "Ты девственник/школьник/шлюха" - это не аргумент. Ты просто засираешь тред своими визгами. Если твоя задача всех победить в "жаркой полемике" как каких-то там питоновцев (видимо предыдущих жертв твоих доводов), то можешь считать себя победителем и уёбывать отсюда с высоко поднятой головой.
>>2153674 Так ты перевёл этот разговор в такое русло, я начал нормально спрашивать чем раст лучше с++ и зачем мне и другим крестовикам переходить на него, если в крестах все отлично. Ты начал давай сюда свой гитхаб щас заценим, начал вопить ВРЕЕТИ и т.д. А теперь ты меня обвиняешь в том, что я тебя оскорбляю, когда сам же и вынудил обращаться к тебе в таком ключе. Ебать ты даже причинно-следственную связь не можешь отследить в разговоре, куда тебе говорить о более сложных вещах
>>2153686 Успокойся, победитель. Можешь записывать "растовчан" в свой список побеждённых шлюх/девственников/школьников рядом с питонистами и уёбывать отсюда. Твой высер даже читать не буду.
>>2153568 > Чем лучше актикса? Наличием "стабильной" (насколько версию 0.X можно назвать стабильной лол) версии с токио 1. Актикс 4 (в котором тоже токио 1) уже дохуя времени в разработке, а релиза всё не видать. Плюс ублюдское разбитие самого проекта актикса на отдельные пакеты со собственным версионированием, что при обновлении бета-версии с вероятностью 90% что-то сломается.
Дежурно напоминаю, что плюсомакаки заменяются на раз и получают гроши, просто никто не хочет связываться с этим говном в реальных приложениях. Вы сейчас имеете дело с Computer Vision макакой, которая другого ничего не писала и не имеет представления о том, как все работает в других отраслях.
>>2153703 Лол я полагаю ты про меня? На самом деле нормальные плюсобояре получают намного больше всех остальных, а то что показывают ваши графики зарплат по языку - бред собачий. Ясен хуй поридж не осилит плюсы на нормальном уровне чтобы получать хорошую зп, вот от сюда и эти графики. На счёт того что я работал только в CV это опять выдаивание желаемого да действительное, я писал и сервера и hft и близкие к железу вещи, и в 3д работал, и вот щас в cv. Но судя по ощущениям на этой борде таких как в 1-3 человека максимум, остальные - это макаки на галерах максимум, либо хелоу вордщики студенты/вкатыши.
>>2153717 >а то что показывают ваши графики зарплат по языку - бред собачий. ВРЕТИИИИИИИИИИИ ВАШИ ВАКАНСИИ НЕ ВАКАНСИИИИИ ЗАРПЛАТА ЭТО ТО ЧТО Я СКОЗАЛ!11!1111!111
>>2153722 >Average Ты ведь вкурсе как считается average? Получается так из-за того, что порог входа в С++ очень высокий, чтобы получить хотя бы звание среднего разработчика. Поэтому график зарплат/skills выглядит не как линейная функция, а как экспоненциальная. И соответственно, нормальные ребята ( коих намного меньше чем всех остальных вкатышей ), а под нормальными я имею ввиду людей имеющих хороший бекграунд в CS, получаются хорошие зарплаты. А обезьяны которые на гикбреинс купили двухнедельный курс по с++, получают низкооплачиваемую работу по поддержке легасиговнища, где их творческий максимум будет равняться работе по исправлению багов от наследия си подобных говнопрограмм которые могут дереференсить нуль поинтеры и обращаться к неинициализированной памяти. Так что если твоя цель это быть average разработчиком, то я тебя поздравляю, ты ни на каком языке не будешь получать хорошую зарплату, а разница в колебании средних зарплат между различными языками это всего лишь шум, это копейки на которые вообще не стоит обращаться внимания, потому что хорошие разрабы уровня сеньор+ получают намного больше средних зарплат.
>>2153829 Уважаемый плюсопетух, вакансии находятся в открытом доступе, зарплата прекрасно считается по перцентилям. Ваши диванные размышления о экспоненциальных зарплатах разбиваются о суровую реальность. Причем речь идет о ссаном питоне, а не о расте. Вы можете сколько угодно заниматься коупингом, но от этого плюсомакаки не перестанут быть плюсомакаками, где даже топ 25% зарплат меньше чем у динамикодрисни.
>>2153844 Погоди, а при чем тут питон? Мы находимся в треде по системным языкам программирования.
>Причем речь идет о ссаном питоне, Так на питоне работает много уважаемых дата саенс господ, многие из которых PhD и Dr. Ясен хуй у них будут огромные зарплаты. Но средняя веб макака на питоне даже близко не будет нюхать такие зарплаты, да даже топовая веб макака не будет получать так. А вот хороший инженер с степенями в CS, пишущий на С++ будет.
Т ы, глупая мартышка видимо полагаешь, что уровень зарплаты напрямую зависит от языка, но это не так, уровень зарплаты зависит от прикладной деятельности, а прикладная сфера уже определяет минимальные и максимальные границы входа и роста.
Ты пойми, что чтобы стать хорошим вебмакакеном, чтобы тебя взяли на галеру, не нужно получать ученые степени в CS и не нужно быть никаким гением, просто нужно выучить нужный фреймворк и запомнить последовательность копипаста кода. А вот чтоб стать хорошим инженером умеющим создавать, сложные системы, тут уже так просто не получится, тут и бекграунд в CS и опыт и много чего еще нужно, поэтому таких людей очень мало, в сравнение с океаном безмозглых обезьян выбирающих язык исходя из уровня средней зарплаты на нем.
>>2153849 >Так на питоне работает много уважаемых дата саенс господ, многие из которых PhD и Dr Только 2% питоноразработчиков имеют PhD, а на нем 25% зарплат все так же больше чем у плюсомакак, при том, что это явный бекенд девелопер.
>Т ы, глупая мартышка видимо полагаешь, что уровень зарплаты напрямую зависит от языка, но это не так, уровень зарплаты зависит от прикладной деятельности, а прикладная сфера уже определяет минимальные и максимальные границы входа и роста. Тогда тебе стоит вкатится в проституцию и завести аккаунт на онлифанс
>Ты пойми, что чтобы стать хорошим вебмакакеном, чтобы тебя взяли на галеру, не нужно получать ученые степени в CS и не нужно быть никаким гением, просто нужно выучить нужный фреймворк и запомнить последовательность копипаста кода. Плюсомакака зачем-то начала все мерять СНГ рынком и не в курсе, что у швятых до недавнего времени практически обязательно было иметь вышку и с помоечными курсами особо не брали и в посту выше видно, что нищие плюсомакаки вовсе не вкатывальщики, а имеют минимум бакалавра при этом оставаясь низшим звеном пищевой цепочки.
>>2153857 Ты нахуя опять мне этими апроксимирующими графиками срешь? Я даже твои посты читаю через строку, ибо твои маня-прогнозы на основе маняпроксимаций меня мало волнуют.
Я работаю в реальной сфере и знаю какие зарплаты кто получает. Суть в том, что ты наивный манятеоретик жизни не нюхавший, иди выучи питон или раст и попробуй найти работу где тебе будут столько платить. Можешь не пытаться, у тебя не получится, ибо ты живешь в мире иллюзий и все твои доводы строятся на очень неточной статистике. Работодатель не дурак и не будет платить много денег за легкую работу доступную для любого вкатыша.
Я не знаю, за что ты ненавидишь так С++, видимо потому что не можешь его осилить, а как известно человек боится\ненавидит то, чего не знает. Но суть в том, что я и любой другой сеньор пишущий на С++, досконально знает всю архитектуру пк, алгоритмы и структуры данных, матан и всю все необходимое из CS, чтобы за пару недель\месяцев перейти на другой стек технологий если потребуется. А вот вкатыши, фанбои, хейтеры, ну или такой школьник как ты, который под влиянием маркетинга прошел недельный курс на гикбреин по любому новомодному языку, вряд ли даже отличит баблсорт от квиксорта, и уже тем более не сможет сменить язык\стек технологий так же как "плюсомакака", хотя я не знаю почему ты считаешь что на плюсах макаки, ведь чтобы уметь хоть как-то писать на плюсах просто макакой уже не получится быть.
Вот я же не хейчу раст, ок раст, как технология с виду кажется интересным, но как замена с++, вряд ли пока что может заинтересовать тех кто уже пишет на с++ и эти люди могу сопоставить все за и против, детально разбирая каждый аспект сравнения двух языков, а местные фанбои окончившие пту вчера работавшие кассирами в пятерочке, начинают с пеной у рта срать на весь тред хуйней абсолютно не по теме. Даже твои наивные рассуждения о зарплатах уже многое говорит о тебе, ты безмозглый фанбой, ты флюгер который показывает туда куда дует ветер, у тебя нет никаких знаний в CS, ты просто пустозвон, ты никогда не будешь нормальным программистом получающим нормальную зп ( я даже не говорю о хорошей ). Так что самое лучше что ты можешь сделать сейчас, это согласиться со мной, очистить историю посещений, и навсегда забыть об этом разделе, а потом вернуться в реальную жизнь, где ты пойдешь работать на стройку за 20к рублей, а не будешь тут фантазировать об огромных зарплатах питономакак. По существу изначальной темы не было ни одного вразумительного аргумента в пользу того или иного языка. И не будет, потому что 98% тех кто тут сидит такие же безмозглые вкатыши, с нулевым опытом в айти как и ты
>>2153885 >Суть в том, что ты наивный манятеоретик жизни не нюхавший, иди выучи питон или раст и попробуй найти работу где тебе будут столько платить. Можешь не пытаться, у тебя не получится, ибо ты живешь в мире иллюзий и все твои доводы строятся на очень неточной статистике.
Парни, какой язык лучше выучить C++ или Rust? Мне не для работы, я и так веб макака, вот душа лежит выучить что-нибудь из этих двух, но не могу выбрать. В перспективе хочу чисто ради фана программирование - это же пиздец весело пописать 2Д игрушки какие, не используя какие-нибудь мега энжины типа unreal.
>>2156588 Твой вопрос какой-то нелогичный. Ты говоришь, я собираюсь учить один из этих языков, чтобы писать игрушки, но писать игрушки буду не ради игрушек, а ради языка. Зачем ты тогда вообще игрушки упоминаешь, если этот факт по сути на выбор не влияет. Да еще и приходишь в растотред и спрашиваешь, что выбрать, раст или другой язык. И какой ответ ты хочешь? Конечно же не раст.
>>2156600 я хочу учить один из этих языков, по ходу дела буду пилить игрушки по фану. Т е приоритет учить язык, второе писать игрушки, ясли я не выполняю первый пункт, мне и второй нахуй не нужен. > Зачем ты тогда вообще игрушки упоминаешь >Да еще и приходишь в растотред и спрашиваешь, что выбрать, раст или другой язык. И какой ответ ты хочешь? Конечно же не раст. потому что на данном этапе мне похуй что учить из этих 2х, для меня что-то что это. упоминаю чтобы ты понял примерно для чего я буду язык использовать. Может ваш раст годен только там хз, для крипты, и еще какого-нибудь ультра безопасного ПО для банковмое стереотипное мнение. А игры на нем только ебланы будут делать.
>>2156637 спс, братик, так у меня тайловый графоний будет, без выебонов
>>2156686 Так ты потом тридэ хочешь. Тридэ в расте твой рот выебет, всё равно на биндингах писать будешь.
Но для общего развития раст намного лучше крестов. Когда у тебя свой borrowck в голове появится, ты и в других языках начнёшь понимать, почему твои программы — дерьмо.
>>2156770 > Тридэ в расте твой рот выебет Триде на любом языке рот выебет, в одиночку писать движок такая себе затея. Да и компиляция раста в шейдеры пока что оффициально не поддерживается, так что там использоваться свой С/С++ подобный язык без вариантов.
>>2156770 ну я вот пока тоже склоняюсь к плюсам. то честно говоря я даже не очень понимаю насколько сильна проблема, которую решает раст, я про борроу чекер и про всякое описание жизни ссылок, на мой неопытный глаз проблема преувеличена, чтобы так надрачивать компилятору. Мб когда попишу на плюсах что-то сложнее универских лаб, тогда пойму зачем запилили раст.
>>2157131 Ты же понимаешь, что независимо от языка программирования шейдеры ты один хуй будешь писать на GLSL если мы говорим про OpenGL Какая тогда разница? Лучше бы сказал про то, что нет нормальной библиотеки, чтобы не писать свои велосипеды.
>>2157154 Но вся математика в графике сегодня. Генерация это здорово, но можно спокойно 2n алгоритмы применять, и никто этого не заметит, потому что делается это только один раз в самом начале.
>>2157149 >Расскажи про известных математиков-авторов игр? Речь не про "известных математиков", речь про базовые знания, до которых тебе как до Луны. За языки он тут пришел трепаться, неуч сраный.
>>2157141 > GLSL Вообще есть ещё SPIR-V, который работает в том числе и в опенгл (относительно новых версий) и позволяет использовать любой язык, который умеет в него компилироваться.
>>2157145 >>2157162 >>Расскажи про известных математиков-авторов игр? >Речь не про "известных математиков", речь про базовые знания, до которых тебе как до Луны. За языки он тут пришел трепаться, неуч сраный. эт другой анон спросил, не агрись плиз на него, спрашиваю за языки я. кстати да, нахер мне математика чтобы написать пару-тройку паршивых 2д платформеров, которые увидят только я и мб твоя мама?
>>2157498 ебани сервер на ноде, если на расте не делал нихуя то заебешься, нодой пиши формдату в файл и просовывай через spawn/exec в забилженный бинарник своей раст проги
>>2157300 > n! алгоритмы Ты от балды сказал или реально исследовал тему? Я сам в теме не разбирался, но мне очень не верится, что математик бы позволил себе использовать O(n!) алгоритм, если есть возможность использовать алгоритм быстрее.
>>2157786 Шарпы заебюатый язык, до сих пор пишу на нём всякую консольную хуету, уровня реализаций логики кубика рубика и алгоротмив сортировки ,многопоточность, написал недавно свой неофетч на шарпе, заебатый язык на самом деле, ещё синтаксис очень просто, особых знаний не нужно что бы его понимать, они ещё сильнее упростили язык в sdk6 и десятой версий шарпа
Но почему я сьебал с него на время? да потому что компилер моно что на лине может только в седьмую версию шарпа, ещё он не может в граф приложения, а это пиздец, даже графчиесткую хуйню с логикой и кубами сделать не могу, ну пиздец, лучше бы тогда учил плюсы ей богу блядьъ
а раст, раст для школьничков смузихлёбов - мне на опеннет так сказали, ну я решил попробувать, и пока он мне не особо нравиться в сравнений с шарпом, ещё этот ебанный компилер сука, пока только сегодня чить начал, думаю написать калькулятор, сделать много скриншготов и выложить в r/unixporn свою хуйню, и можно будет возращаться к шарпам
>>2157809 > думаю написать калькулятор, сделать много скриншготов и выложить в r/unixporn свою хуйню, и можно будет возращаться к шарпам > Уроки сделал? порфтель собрал? Ну не позорься, чел
>>2157816 похоже ты не слыхал про арчешкольников-смузишлёбов? жаль, возможно бы ты понял что я имею ввиду, но похуй уже, последуй нахуй, в свой загон /s
>>2157817 маняфатназий и хуйня какаята, редко встречал в шарпах ошибки которую нельзя разобраться, да и где там ошибки делать? синтаксис в языке просто1
>>2157819 Тебе же английским языком написано function is never used. Догадайся, что сделать надо? Тем более это не error, а warning, тебе даже в конце написало, что сборка завершена успешно. Возвращайся на шарп лучше сразу.
>>2157823 я про это знаю бля, но почему тогда не вывело что мне нужно? да и где использовать функцыю если она выполняет определённый код? иле компилер хочет что бы я записах another_funtion в main()?
>>2157828 > иле компилер хочет что бы я записах another_funtion в main()? Как ты умудрился заставить функцию выполнять определённый код, не засунув её в main()?
>>2157915 Потому что смешнее будет если он дропнет раст из-за строк (и количества их разновидностей) и борроу-чекера, чем от невозможности заглушить варнинги.
пчел, нах мне работать на этом языке, я же не школьничег смузихлёб, лол, для работы есть пыха и прочея вебпараша, раст, кресы, пёрл и прочие подобные языки это для школьников которым нехуй делать на каникулахэнтузиастов, понимаешь? так же как и линукс
маняфатазий местынх школьников, сам делал заказы на пыхе на фрилансе, и да сука, платили копейки, зато за месяц работы обновил пеку и купил сиси ди на 480 с алика, балею щас, но не суть, у меня друг работает на пыхе+лара и получает свой 1500 баксов поживая в хохляндий, пыха хароша тем что можно легко вкатиться, и заказов много, работы много, вообще never die
Появилась идея создать торрент трекер, где игры можно играть прямо из браузера на webassembly. Просто заходишь в аккаунт на рутрекере допустим, и можешь прямо оттуда играть в игры. Только осталось реализовать. Можно ли такое сделать одному?
>>2158572 Если задаешь такие вопросы, то нет, нельзя. Да и без тебя уже справились: новые игры перевести в вебассембли без шансов, а для ретро (дос, консоли) архив.орг.
>>2158983 Протыкл артём семёнович, это имя твоего гулаговского деда. Которого воры попротыкали туберкулёзными хуями за отказ брать на себя норму паханов.
Гайсы, начинаю писать калькулятор, вроде более менее в базе освойлся, думаю за пол часа смогу настрепать, пожелайте удачи блять, очень уж надо, с учётом что язык начал учить три дня назад
Вот по этим ставил, с 4 раза, первый раз проебался с разметокой, потом 2 и 3 раз проебался с загузчиком но в итоге за два с лишним часа накатил свой арч линупс
>>2138871 хэй! мимокрокодил, почитал немного тред, но невнимательно и нифига не понял, какие интересные фичи у языка есть. знаю плюсы, учу хаскель, что раст их них позаимствовал, чего не хватает?
Учу раст по растбуку и "Программирование на языке Rust" Дж Бленди Дж Орендорф. Пытался смотреть курс Computer Science Center А. А. Кладова, но 80% не понимаю. Вообще ощущение, что непонятно абсолютно всё. Как будто я вне какого-то контекста, будто есть база знаний, необходимая для того, чтобы просто начать изучать программирование, а у меня этой базы нет. Чуда ведь не произойдёт и я так и продолжу заучивать примеры и определения без видимого результата?
Сап, крабач, хочу сделать программу, суть токова...
1. Программа по сути является неким кэширующим прокси-сервером. 2. Если в кэше нет нужной записи, то сервер блокирует поток, идет за оригинальным ресурсом и отдает его клиенту. 3. Если в кэше есть нужная запись, но она устарела (например старше 60 секунд), то сервер отдает ее клиенту сразу и обновляет кэш в фоне. 4. Если почти одновременно на сервер пришли за одной и той же записью сразу два клиента, то за оригинальным ресурсом должен отправляться только один запрос. Например если записи нет в кэше, то для первого клиента отправляется запрос на оригинальный ресурс, а второй клиент дожидается его результатов вместе с первым. Если запись к кэше устарела, то после отправки первого запроса в фоне, новые запросы за теми же данными отправляться не должны (до его завершения).
Я все никак не могу взять в толк, как же правильно это сделать. Набросал пока пикрелейтед, но здесь не выполняется пункт 4 (да и по остальным пунктам вопросы, например стр. 32). Пока единственная идея - завести HashMap<String, Mutex<bool>>, где String будет неким идентификатором данных, а флаг будет говорить о состоянии запроса (идет запрос в данный момент или нет). Проблема в том, что (на мой взгляд) тут проще простого словить PoisonError и наебнуть весь сервер целиком. Подскажите, в каком направлении копать?
>>2160123 Ты если английский не знаешь, то хотя бы переводчиком пользуйся Ты два раза берешь мутабельную ссылку на переменную, в расте так нельзя Можно много иммутабельных и лишь один мутабельный референс на переменную
>>2160135 Я в анлюсике нормально освоислся, как монимум видосы на ютубе с сабами могу смотреть и балдеть, но беда в новых языках сложна, ибо новые слова и приходиться много гуглить, но думаю это времиенно, пока только вкатываюсь, у меня же меньше недели с начала вкатывания, потому думаю со временем привыкну, да и я уже далеко не с каждой самой мелкой проблемой сюда бегу, только если что то долго не получаеться решить
>>2160143 Я только несколько дней вкатываюсь в язык, по метаниту и докам, раньше писал жиес и шарпе, потому не привык к синтаксису и логике работы подобных языков,но это временно, я быстро обучаюсь, через неделю две уже такой хуйни скорее всего не будет
>>2160147 > > но ведь это так, на линуксах и маке куда удобней писать на расте, ещё с учётом вима, и ладно бы похуй на вим, не ради вима на линухе идут, но это же охуенно быстрая и удобноая система, а писать на расте из под винды какой то крайне костыльный метод, проще на линуксах
>>2153885 >Я работаю в реальной сфере и знаю какие зарплаты кто получает. >Суть в том, что ты наивный манятеоретик жизни не нюхавший Смотрю ты нанюхался нафталина и смотришь на мир через свою призму. Может еще и на оборонном заводе работаешь, производя ненужные штуки за 25 в месяц
>недельный курс на гикбреин по любому новомодному языку Очнись, дедуль, тот же питон уже давно не новомодный, даже на Go не первый год уже пишут, плюс за неделю ты максимум хэлоуворды напишешь, а чтобы взяли на работу нужно еще дохуя всего знать помимо языка.
>Я не знаю, за что ты ненавидишь так С++, видимо потому что не можешь его осилить, а как известно человек боится\ненавидит то, чего не знает. А ты агаришься потому что не можешь осилить тот самый простой бэкенд для вэбмакак и так и работаешь в своем подзаллупном НИИ за копецки и даже в rust походу не осилил
>вряд ли даже отличит баблсорт от квиксорта Это не нужно знать в вебе, вот прям совсем, если дело дошло до того что нужно оптимизировать сортировку и погружаться в алгоритмы, то это либо хайлоад типа яндекса, либо ты что-то делаешь не так. Даже не знаю почему этими алгоритмами некоторые дрочат на собесах. Вообще этот твой высер выглядит как-будто автослесарь доебывает дальнобойщика что тот не может отличить разные типы топливных форсунок. Писать код на плюсах под железки и писать для вэба на питоне это разные сферы как стоматолог и гинеколог. Любой вкатун бэкендер будет знать лучше тебя что происходит с момента нажатия кнопки "отправить" на дваче до появления на мониторе отправленного поста.
>>2160614 >тот же питон уже давно не новомодный Питон старше жабы и жса, так-то.
>>2160614 >даже на Go не первый год уже пишут Да толком ничего и не пишут. Есть какие-то места вроде озона и вайлдбериса, где есть агрессивные пиарщики ГОвна, но дальше он так никуда и не проник. Думаю, через несколько лет он станет чем-то вроде ruby по популярности и тенденциям в развитии.
>>2160605 Ну как вариант напиши типобезопасный MapReduce поверх Tokio. В качестве кандидатской пойдет оптимизатор его DAG с выносом маленьких ступеней (что влезают в RAM квоты) в локальные очаги вычислений. В качестве докторской подтянешь на машобчике более эффективный shuffle, оценку skew данных при join и размазывание ступеней по нодам исходя из предсказанных IOPS. А потом продашься с потрохами за пару миллионов какому-нибудь стартапу-переростку в долину. Если не нравится идея, спрашивай еще, у меня таких миллион.
>>2160646 >Да толком ничего и не пишут. Микросервисы и много где, особенно в банках и финтехе полюбили его даже в некоторых случаях монолиты с жабы на микросервисы на го переписывают У нас на работе даже прошивки для кое-каких коробочек пишут и плюс работат на бэкенде где потоки с видео/аудио. Остальное все на рельсах.
>места вроде озона и вайлдбериса Микросервисы с хайлоадом и множеством всяких вычислений, собственно под это в гугле его и разрабатывали.
>ruby по популярности и тенденциям в развитии. Да, да умирает и не развивается поинтересовался бы для приличия прежде чем что-то писать
>>2159696 Какой блядь пойсон эррор, просто возьми AtomicBool. А если у тебя будет тип, который не влезает в атомик, то берёшь parking_lot::Mutex, там пойсонов нет (потому что они не нужны, если ты не пишешь ансейф). А если ты таки хочешь стандартный мутекс, то просто берёшь и не паникуешь на пойсоне, разворачивая ошибку в данные, там специальная функция into_inner() есть как раз для этого.
Чет себя таким тупым ощущаю. Читаю растбук, дошел до пакетов и вот что-то прям хуево понимается, уже раз 6 перечитываю. До этого все было просто, и владения и перечисления, хотя немного на перечислениях потупил, когда в них значения передавать можно было и как их извлекать.
>>2162099 >>2162109 Растовский enum это datatype из ml, т.е. конструктор ADT ML: datatype 'a option = None | Some of 'a Rust: enum Option<T> { None, Some(T) }
>>2162155 И сишку. Т.е. с сишкой и млем не будет проблем ни с перечислениями, ни с пакетами. Алсо, в растбуке предпологается, что ты не зелёный в программировании, т.е. теорию о типах, архитектуре, сетях и т.д. знаешь.
>>2133349 (OP) На одном расте можно работать? Чтобы без всяких плюсов.
Вообще подумываю так слегка из бекграунда ios и android, по 2 года в каждом. Ржавый похож сильно на свифт, синтаксически. Приятно думаю вам писать на нем.
Гейзы, я как погляжу дела у вас тут прямто таки хуёво, не изменилось нихуя за это время, а я в это время на генту перешёл, хотя на втором диске всё ровно устоновил федору, ибо раст будет компилиться часов 4-5
>>2164494 Да это допизды просто , я раза с 4 только осилил устоновку, и то пиздец, у меня скринфетч компилиться 1 час с лишним, ну его нахуй, ещё драва и граб в прршлые разы сломал, пиздец,я в линуксах на самом деле не долго, месяца 4 назад начал вкат, но генту для меня это всё же лишним времязатрано и долго, я и так три дня компилил и пересобирал систему, ибо пизбей сколько ошибок, потому ну нахуй, пидора/рач остаються мейн-дистрами для разработки
>>2164539 >я в линуксах на самом деле не долго, месяца 4 назад начал вкат >генту Ты долбоеб? Ставь убунту, ну или федору для начала. Генту совсем для красноглазых и бородатых
>>2164612 Не пизди. Я первые пару месяцев линукса дистрохопился между колясками типа убунты, федоры и дебиана, потом резко полез на арч, а потом сразу на генту. Ничего сложного для красноглазобородатых там нет, достаточно уметь читать хотя бы по русски. Проблемы могут возникнуть разве что на каком-нибудь экзотическом железе, но они возникнут вообще на любом линуксе.
>>2164629 всё так, разве что заебёшься компилить на каждый пук по 20 минут, а так заебись, ещё рач и пидора норм, но что бы пидора была вполне юзабельно нужно много её напердолить
> Ставь убунту, ну или федору для начала.
неосилятор плез, я до этого сидел на раче, а щас на пидоре, нахуя мне эти вечноломающийся сами себя коляски?
Раньше работал, делал заказы заказы на фрилансе, сайтики клипал, но как я заработал себе на пеку и прочию отрибутику, забросил потмоу что слишком заёбисто, занимает много времени и сил, ничего кроме как править кривой сайт в жизни не занимаюсь в этом время, да и кодинг мне мало интересес, хочу вкатиться в сисьОдмены пока могу, ведь это мне куда интересней
>Ты понимаешь что все это хуйня?
Это охуенно интересно и сложно, рили, и даёт глубококе понимаеи как работает система, немало опыта, идёт как проверка на прочность, я немало узнал и понял, ещё я очень быстро учусь, потому мне такое нравиться
>>2164802 >Пока ты ебешься с этим, нормальные люди делают деньги. Представил с каким ЕБАЛОМ и ПРИДЫХАНИЕМ ты сказал "деньги" и проиграл. Деньги как смысл жизни так себе затея. Но зато ты НОРМАЛЬНЫЙ, так что не бери в голову. Ты молодец! Удачи!
Дарова, пацаны. Кароче есть либа clap я хочу перевести либу со второй версии на третью, и прекол в том что у меня всё к хуям ломается. Даже после моих блядь исправлений, не хуй соси. Поэтому прошу помощи у двача, пожалуйста, помогите перевести это на clap v3. Вот код с опциями. https://pastebin.com/Q2cuUKZ5 https://github.com/clap-rs/clap
>>2161183 Нет, ты не понял, зачем мне атомик? Мне нужно, чтобы остальные треды засыпали, пока первый не закончит работу. Впрочем я уже понял, что мне нужен Condvar (которому один хуй требуется Mutex).
>>2160123 >>2159345 >>2159315 > И прочие посты этого долбоеба Какой же охуенный компилятор, прям мордой ткнет. Тыкаюсь в Rust пару дней, вроде ничего так, хочу бэкенд попробовать поскольку сам рельсовик, апишки на чем обычно пишут? По ссылкам в шапке нашел actix и rocket, что из них лучше потыкать?
прив мертвый тред! как напердолить итератор для двух разных структур, если они обе поддерживают итератор? я пытался сделать свою кастомную, которая держит оригинальную и имплементнуть для нее итератор, тобишь функцию next в которой я метчился по оригинальному типу и возвращал next или одного итератора или другого, но там какие-то разные имплементации, и я чет пососал....
Есть идея создать просмоторщик картинок. Вообще есть ли на расте какой-нибудь всеядный дестктоп image viewer, способный обрабатывать и фотошоп форматы и svg по типу picasa? Мб кто-нибудь уде пробовал
собирает многопоточно, перелинковка (тупо добавил пробел и собрал) заняла 10 сек на моём 2665 (8/[email protected]) До этого было что-то в районе 1.5 минут по зависимостям у меня так cargo tree|wc -l 985
>>2173744 Ау, растаны, чего заглохли? ОП, добавь mold в шапейку нексттреда, для тех, кто заебался ждать переконпеляции (на самом деле перелинковки) после правки пары строк.
>>2174385 хуй знает, какая-то слишком сложная хуйня для мя... но попутно вопрос, за то время что я писал на расте я видел дохуя инструментов заявляющих что они "самые быстрые в классе" и бля, они действительно самые быстрые если ты осилил непонятный синтаксис. В чем подводные, как достигается ебовейшая скорость?
>>2174536 >какая-то слишком сложная хуйня для мя... Ебать, а я-то думал, что я на расте самый тру-смузи-хипстер. Там всё тупо: по инструкции собираешь, потом /path/to/mold -run cargo build.
Что касается скорости софта на расте, то на нём легко и приятно писать многопоточные приложения, также есть удобные обёртки над SIMD. Что каcается mold, то он не на расте написал, просто оче быстрый линкер. Ещё lld можно попробовать.
Сап, растаманы. Ищу microORM для домашнего проекта. Требования следующие:
- Нормальный СИНХРОННЫЙ интерфейс. Асинки и авайты идут в задницу, не вписываясь в архитектуру абсолютно.
- Простота. Мне не нужны миграции, васяноутилиты управления проектом, getting started длинной в "Войну и Мир" и прочая шляпа (привет, diesel, и пока), просто хочу подключить библиотеку, шлепнуть #[derive(VotEtoOtobrazi)] на структуры и юзать.
- Отсутствие необходимости постоянно писать SQL-запросы вручную (нет, мне не трудно совсем, но нахера тогда ORM, если все вручную делать?).
- Поддержка хотя бы основных СУБД (SQLite / MySQL / Postgres).
>>2189023 Охуеть ты комбайн себе хочешь, конечно. Смирись с тем, что все комбайны давно пересели на асинк и научись вызывать его из синхронного кода с помощью block_on.
>>2189120 Мне как раз комбайн не нужен, мне нужна маленькая и простенькая библиотека, которая умела бы в прозрачный CRUD над POD, только и всего. И чтобы она до кучи была синхронной. Все.
Тот же Massive, ссылку на который я дал выше - по сути один файл исходного кода и несколько адаптеров для конкретных СУБД. (При этом он еще и в асинк умеет для тех, кому нужно.) Неужели в современном мире стильно-модно-молодежной разработки такого больше не делают?
> Смирись с тем, что все комбайны давно пересели на асинк и научись вызывать его из синхронного кода с помощью block_on.
Это дикие и корявые костыли, которые придется по всему коду расставлять или писать макрос, втыкающий эти костыли за меня... Хуевый вариант
>>2189023 Ты хочешь слишком много для бедного раста.
С учётом того, каким говном являются макросы в расте, если ты хочешь не писать SQL руками, то тебе остаются только пляски а-ля дизель с отдельными файлами описания схемы и т.п.
>>2189470 Просто у них даже хелловорлд начинается с какой-то энтерпрайзной херни с миграциями + установкой своего консольного инструментария. У меня три таблицы с четырьмя колонками каждая, зачем мне все это?
>>2189566 > энтерпрайзной херни с миграциями + установкой своего консольного инструментария Скипаешь, сразу делаешь свои структы и пользуешься только орм.