Программирование

Ответить в тред Ответить в тред
Check this out!
Rust #16 /rust/ /rust/ Аноним 02/05/21 Вск 23:49:59 20170171
image.png 85Кб, 732x467
732x467
image.png 1754Кб, 1200x859
1200x859
Аноним 02/05/21 Вск 23:53:48 20170232
Собственно, вопрос по сабжу, норм ли вакансии в расте по крипте или нет?
Аноним 03/05/21 Пнд 03:45:59 20171473
Научите понимать синтаксис? Нихуя не понимаю

Мимо крестоёб
Аноним 03/05/21 Пнд 03:46:52 20171484
>>2017023
Все вакансии по крипте это кабанчиковый раж на максималках. Проработаешь максимум полгода пока кабанчик не разорится, но скорее всего заебут ещё на этапе собесов.
Аноним 03/05/21 Пнд 07:36:20 20171685
Аноним 03/05/21 Пнд 08:29:04 20171876
Аноним 03/05/21 Пнд 09:08:43 20172077
>>2017147
Абсолютно та же ситуация, вроде интересный язык, а читать трудно ну вообще. Может только поначалу так, хз
Аноним 03/05/21 Пнд 16:30:55 20176368
>>2017148
хм, ну я вообще в мобилках варюсь последние 3 года. Посмотрел на раст, синтаксически похож на swift, только импрувнутый. Покопаю его и посмотрю по собесам. Хочется кабанчиком в норм блокчейн устроится, в near\ckb какой нибудь.
Аноним 03/05/21 Пнд 23:19:58 20181919
Аноны, извиняюсь, что не поблагодарил в прошлый раз за ответы про дак тайпинг. Спасибо! В итоге понял, что общие интерфейсы к разным крейтам по-человечески сделать не получится, и лучше не выёбываться и писать для них trait/impl trait адаптеры в самом приложении.

Теперь более общий вопрос: а как у нас вообще принято проектировать приложения?

В плюсах я писал от общего к частному: есть корневой класс, создаваемый main-ом и живущий до самого выхода, в нём были классы на отдельные подсистемы, каждый из них имел обратную ссылку на объект корневого класса. Допустим, если методу гуя надо написать в лог, он через эту ссылку идёт и вызывает логгер. То есть, все зависимости вложенных классов хранятся в родительском.

В ржавом же получается, что я так сделать не могу? Если я положу в struct ссылку &mut на объект то пока она есть, никто другой им пользоваться не сможет. Что тогда делать - передавать все зависимости в аргументах методов? Склоняюсь к созданию временного дублирующего struct-a, в котором только нужные зависимости: методы пишутся к нему, а исходный объект передается по ссылке в методы. Но я как бы собой не очень горд за это - получилось не как хотелось, а как получилось.
Аноним 03/05/21 Пнд 23:29:04 201820110
>>2018191
Извиняюсь, затупил. Не важно, куда писать методы, главный вопрос - зависимости каждому методу придется передавать заново?
Аноним 04/05/21 Втр 14:27:33 201894611
Аноны можно ли вкатится в раст не зная плюсов ? То есть это будет вкат сверху вниз из жса. Опасаюсь, что на расте книг хуй да нихуя, и это просто знакомство с синтаксисом для опытных прогеров на плюсах и джаве. Как раст с нуля идет ?
Аноним 04/05/21 Втр 14:59:08 201898212
>>2018946
нет, не надо. Вкатись лучше в плюсы, и если тебе не будет хватать их(или заебёт) тогда изучай раст. Ты если из ЖСа пойдешь в раст ты не поймешь фичей раста
Аноним 04/05/21 Втр 15:33:55 201905713
>>2018946
Вкатиться можно, но 1) это системный язык, придется изучать байтоёбство и 2) чтобы не вляпаться в ошибки плюсов, он заставляет сразу писать строгий и корректный код, поэтому после хуяк-хуяк будет культурный шок и жалобы. В принципе, плюсы тоже не нужны - их учить больше года, и если хочешь именно системное программирование, учи сишечку. Там уже решишь, стоит дальше развивать эту тему или нет.
Аноним 04/05/21 Втр 23:34:09 201968914
>>2018982
>>2019057
Раст хотел взять "на вырост", т.к. в жс щас все усложняется, появился webassembly и хуй пойми что будет через 3-5 лет. Поэтому думаю пердолить параллельно, что бы потом жидко не обосраться.
Аноним 05/05/21 Срд 00:55:31 201977515
>>2019689
Не нужно учить на будущее. когда нужно будет - пригодиться.
Раст сейчас стоит учить ради работки на крипте. Остальное предоставь низшим по развитию людям, имхо.

Лучше найди себе хобби, чем учить то, что находится за рамками твоей рабочей специальности (фронта)
Аноним 05/05/21 Срд 00:56:01 201977616
>>2019775
> когда нужно будет - пригодиться.
когда нужно будет - выучишь. фикс
Аноним 06/05/21 Чтв 01:17:41 202105517
Кто-нибудь на Rust'е модули для пайтона писал? Какие подводные? Какие байндинги юзали?
06/05/21 Чтв 09:24:55 202115218
>>2019689
> Раст хотел взять "на вырост"
Кек.
Аноним 07/05/21 Птн 12:12:11 202276919
Чёт не гуглится обфускатор растового кода. Такое есть вообще?
Аноним 07/05/21 Птн 13:38:12 202290020
Аноним 07/05/21 Птн 14:19:25 202293921
Аноним 07/05/21 Птн 17:42:00 202322022
>>2018201
>Если я положу в struct ссылку &mut на объект то пока она есть, никто другой им пользоваться не сможет. Что тогда делать - передавать все зависимости в аргументах методов?

Приведи пример. Пока что звучит все странно. Если это разделяемый объект то очевидно, нельзя мутабельную ссылку раздавать всем подряд. То, что в C++ можно - это не значит, что это правильно или так надо.
Аноним 08/05/21 Суб 17:26:56 202436423
>>2019689
> появился webassembly
В Расте как раз first-class интеграция с WASM'ом
Аноним 08/05/21 Суб 17:28:45 202436724
Аноним 09/05/21 Вск 22:03:21 202613625
>>2017017 (OP)
Ржавые, я вот реально не понимаю вот это, объясните мне
> позволяющий каждому создавать надёжное программное обеспечение
С какого хуя избавившись от ошибок работы с памятью должна хоть сколько-нибудь вырасти надёжность конечного результата?
Первый пример. Берём огромный список проектов на гитхабе - awesome-rust. Начинаем открывать все подряд. И наблюдаем странную "надёжность" - в issue десятки активных багов. Примерно как в проектах с таким же количеством звёзд на крестах.
Или личный опыт. Берём рандомную либу с малым количеством звёзд или заброшенную больше года назад и получаем дикий пердолинг уровня крестов. Результат такой, что пиздец.
Я вот сразу вижу первый пиздеж:
> позволяющий каждому
Это наглый пиздёж. Фактически я вижу "надёжное программное обеспечение" только от реально прошаренных кодеров. Из-за высокой сложности языка получаем от "каждого" пиздец уровня крестов или даже хуже.
Возникают вопросы. Зачем это говно нужно? Работать? Так работу не найдёшь. Для себя? Опенсорс в жопе с кучей неподдерживаемого кода с 2018-1019 года, высокая сложность изучения, вечные баги от "каждых". Сомнительное удовольствие. Единственный профит видится для кучки прошаренных кодеров, чтоб остатки багов от дырявой памяти прикрыть.
Так вот объясните мне что за религия вокруг ржавой "надёжности", если по факту для вкатывальщика с какого-нибудь go получаем только сплошную боль и пердолинг, мало отличающийся от подобного в крестах, при этом имея надежность хуже самого go? Да даже с сишки на линуксе не вижу профитов перекатываться в раст.
Аноним 09/05/21 Вск 22:39:58 202617126
>>2026136
> объясните мне
Пашел нахуй
Аноним 09/05/21 Вск 22:50:15 202618027
>>2026136
>Да даже с сишки на линуксе
Поговорим когда в сишке и плюсах пакетный менеджер завезут.
Аноним 09/05/21 Вск 23:00:00 202619828
Аноним 09/05/21 Вск 23:54:21 202622129
>>2026136
На расте блокчейн говно сейчас во всю пилят. Только ради этого и стоит выучить это говно.
А так ну хз, имхо новые языки не сильно нужны, потому что кроме как синтаксическим сахаром они ничем толком не отличаются от проверенных годами инструментов
Аноним 10/05/21 Пнд 09:57:46 202634830
>>2026221
>блокчейн
Блокчеин рынок вообще жив еще ? какие перспективы у этого дерьма в ближайшие 5 лет ? Смотрел вакансии, в рф полторы штуки, остальные за бугром.
Аноним 10/05/21 Пнд 14:59:39 202652031
Аноним 10/05/21 Пнд 19:11:46 202678732
>>2018191
> В итоге понял, что общие интерфейсы к разным крейтам по-человечески сделать не получится
Пока не завезут GAT [1] и TAIT [2] использовать трейты как аналог интерфейсов например из той же жавы будет очень хуёво.
> Если я положу в struct ссылку &mut на объект то пока она есть, никто другой им пользоваться не сможет.
Если приложение однопоточное, то для этого используется RefCell [2] или UnsafeCell [3], если многопоточное то мютекс. В таком случае можно передавать простую ссылку в дочерние классы и преобразовывать её для записи при необходимости.
> Допустим, если методу гуя надо написать в лог
В расте для этого используются синглтоны. Либо глобальный, либо в TLS (thread local storage): [4]. Запихивать в каждый класс свой логгер (как делают в некоторых яп) нет необходимости, потому что благодаря мощным макросам логгеру сразу передаётся в каком модуле/файле (и даже на какой строке) был вызван лог.

[1]: https://github.com/rust-lang/rust/issues/44265
[2]: https://github.com/rust-lang/rust/issues/63063
[2]: https://doc.rust-lang.org/std/cell/struct.RefCell.html
[3]: https://doc.rust-lang.org/std/cell/struct.UnsafeCell.html
[4]: https://docs.rs/tracing/0.1.26/tracing/#in-executables
Аноним 10/05/21 Пнд 19:12:36 202679233
>>2026787
Проебался с нумерацией ссылок, лол.
Боль Аноним 10/05/21 Пнд 21:53:02 202701034
Дарова, аноны. Я хочу чтобы моя программа писала в файл,
хеш-сумма и потом имя файла. На данный момент пишет имя файла и затем хеш-сумма.
Код https://pastebin.com/VmecKmkS
Аноним 11/05/21 Втр 09:00:59 202729335
>>2027010
Нихера не вижу в каком месте ты что-то куда-то пишешь, (кроме ошибок симлинка), так что ты тупо не тот код скинул. Очевидно, что смотреть надо в том месте, в котором ты пишешь что-то в файл, а не алгоритмы твои ебаные.
Аноним 11/05/21 Втр 09:02:49 202729436
>>2026520
Обфускатор на раст не нужен. Если ты знаешь раст, то тебе поебать на обфускатор, а если ты не знаешь раст, то ты в жизни не распарсишь какой-нибудь

unsafe fn bar<'a, 'b: 'a, T: 'a, U: 'b>(t: T) -> U { transmute(t) }
Аноним 11/05/21 Втр 11:08:56 202735437
>>2017017 (OP)
Почему растом так активно увлекаются геи и трапы?
Аноним 11/05/21 Втр 17:27:37 202770138
>>2027293
ок, ебать а чё требуется тебе тогда? фулл соурс??
Аноним 11/05/21 Втр 18:27:57 202774939
>>2027701
Может программирования не для тебя? Ты жалуешься на то, что строки в файл записываются в неправильном порядке. Но при этом даёшь код, который считывает файл и заполняет хэш-мапы. По идее ошибка будет в в коде, который непосредственно записывает в файл.
Аноним 12/05/21 Срд 21:06:41 202892540
>>2024367
Знаю про pyo3, плюс есть ещё rust-cpython, которые, вроде как, параллельно пилят.
Было интересно, писал ли модули для пайтона кто-нибудь.
Аноним 13/05/21 Чтв 15:06:22 202956041
Аноним 13/05/21 Чтв 22:55:14 202997142
Недавно вкатился в растобляди по работе. Мой сервис в main.rs разросся до того состояния, что пора его дробить на сорцы поменьше. Но как? Папочка с mod.rs и требухой? Или как? В растбуке эта тема как-то объяснена уклончиво "ну у нас есть модели, можешь навертеть как душе угодно". А со вложенностью непонятно. Посмотрел разные проекты, везде всё по разному, не понятно, как лучше и правильнее.

мимо пишу на питохоне в основном
Аноним 13/05/21 Чтв 23:27:43 202998343
Аноним 13/05/21 Чтв 23:29:34 202998544
.png 218Кб, 2180x1452
2180x1452
>>2029971
В расте (речь про 2018+ эдишн) есть два способа создать модули.

Первый - создать файл рядом с main.rs, например module1.rs. Теперь этот файл и будет модулем module1. В мейне ты его объявляешь как модуль, т.е. пишешь mod module1; а затем импортируешь оттуда что надо use module1::*;

Второй - создать каталог module1 и там внутри создать mod.rs, который и будет модулем с названием каталога. Как и в первом случае теперь в мейне надо объявить новый модуль mod module1; и можно оттуда импортировать что надо.

Вложенные модули делаются точно так же. Только есть один ньюанс - можно сам модуль объявлять как приватный (по-умолчанию) либо как публичный - pub mod inner_module; В случае публичного объявления тогда все кто используют внешний модуль будут иметь доступ и ко внутреннему.

Какой способ использовать - первый или второй решай сам. Некоторые считают, что первый способ более идиоматичный, но на самом деле это вкусовщина. Только не использую оба способа в одном проекте (выбери один) и всё будет нормально. Вот пикрил как пример. Модули с суффиксом _a созданы первым способом, с суффиксом _b - вторым.
Аноним 13/05/21 Чтв 23:53:10 202999545
>>2029985
Возьму первый способ, он проще выглядит на мой взгляд.
Если использовать первый вариант для вложенных модулей, то в случае если у меня такая структура:

- module1
-- module2
--- utils2.rs
-- utils.rs
- main.rs

То импорты вложенного будут такими:

mod module1;

use module1::module2;
use module1::utils;

?
Аноним 13/05/21 Чтв 23:59:21 202999746
>>2029985
В любом случае, спасибо, хорошо объяснил
Аноним 13/05/21 Чтв 23:59:39 202999847
>>2029995
Да. Только не забывай создавать сами файлы модулей module1.rs и module2.rs и там объявлять вложенные модули. Раст ориентируется по объявлениям модулей внутри файлов, а не по структуре файлов в проекте в отличии от других яп.
Аноним 14/05/21 Птн 20:49:39 203090848
>>2017147
Так же херня. Сначало хелоу ворлд и все минималистично. А потом пиздец начинается какой то.
Аноним 14/05/21 Птн 21:45:34 203094849
>>2027354
про геев не знаю, но про трапов действительно смешно, нигде такой концентрации нет
Аноним 15/05/21 Суб 20:49:38 203166050
Хочу вкатиться в Rust, как первый ЯП. Нужно ли чё то знать чтобы писать?
Аноним 15/05/21 Суб 21:21:40 203169351
Аноним 15/05/21 Суб 21:25:31 203169652
какие языки /rust/ будет изучать, когда выпилится достаточное количество мейтейнеров, чтобы разработка языка встала? итт хочу потыкать nim
Аноним 15/05/21 Суб 21:49:25 203170653
>>2031660
Лучше вкатись в Си сначала.
Аноним 15/05/21 Суб 21:56:47 203171354
>>2031706
два цикория, не стал бы с раста начинать. если хочется делать что-то реальное почти сразу, можно голанг попробовать. но так си действительно поможет какие-то фундаментальные вещи ухватить.

>>2031660
но если всё же решишь ржаветь@траповать — как можно быстрее заканчивай раст бук и ебашь реальные штуки®, пусть для себя, но чтобы ты понимал что тебе нужно и как это хотя бы примерно работает. из учебников такого рода в целом можно научиться примерно ничему. поэтому если интересует какая-то теория, лучше изучай алгоритмы всякие, а язык вообще значения не имеет, на любом сможешь в короткое время начать писать.

да, о знаниях. научись пользоваться линупсовой консолью, хотя бы в том же wsl если ты виндоёб. без этого будет плохо и страшно.
Аноним 15/05/21 Суб 22:07:20 203172255
>>2031713
Я уже Линуксоид, так что привык уже.
Аноним 17/05/21 Пнд 16:26:30 203348656
Пару дней назад расту стукнуло 6 лет с момента выхода первой стабильной версии. Пока что на расте мало важного написано. Почему же так долго хайп держится?
Аноним 17/05/21 Пнд 17:02:23 203353257
>>2033486
Потому что язык охуенный, очевидно. Ну и анализ алиасинга на уровне языка — слишком крутая киллер фича.
Аноним 17/05/21 Пнд 19:37:35 203374658
bump
Аноним 18/05/21 Втр 10:38:34 203417659
Почему я бросил раст? Год назад начал его изучать, но столкнулся с проблемой отсутствия документации благодаря её слишком быстрому устареванию. Натыкаешься на какую-нибудь статью или ответ на стаковерфлоу, а примеры оттуда уже не работают. Думаю, расту нужно ещё лет 10 на стабилизацию, чтобы проблем с документацией не было.
Аноним 18/05/21 Втр 11:07:10 203420360
>>2034176
Это да, даже не сколько у фреймворков, а у самого языка.
Аноним 18/05/21 Втр 15:10:17 203454761
>>2034176
Bruh
Какое отношение стаковерфлоу и статейки имеет к документации?
Аноним 18/05/21 Втр 15:29:19 203459262
>>2034176
Раст был бы збс, если бы не балдёжно-молодежная организация, которая его писала.
Аноним 18/05/21 Втр 16:31:11 203470063
>>2034176
документация действительно пиздец говна, особенно какие-нибудь крейты, где чтобы получить ответ приходится идти в их гиттер или матрикс или, чё там ещё, дискорд какой-нибудь.

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

>>2034592
>язык пишется большой корпорацией FAANG типа
>на выходе хуйня
>язык пишется прогрессивными ФОСС женщинами (male)
>на выходе хуйня

есть ли выход?
Аноним 20/05/21 Чтв 16:28:29 203670164
Аноним 20/05/21 Чтв 16:29:17 203670265
>>2036701
error[E0432]: unresolved import `error_chain`
--> src/main.rs:1:5
|
1 | use error_chain::error_chain;
| ^^^^^^^^^^^ use of undeclared crate or module `error_chain`

error: cannot determine resolution for the macro `error_chain`
--> src/main.rs:4:1
|
4 | error_chain! {
| ^^^^^^^^^^^
|
= note: import resolution is stuck, try simplifying macro imports

error[E0433]: failed to resolve: could not find `blocking` in `reqwest`
--> src/main.rs:12:28
|
12 | let mut res = reqwest::blocking::get("http://httpbin.org/get")?;
| ^^^^^^^^ could not find `blocking` in `reqwest`

error[E0107]: this enum takes 2 type arguments but only 1 type argument was supplied
--> src/main.rs:11:14
|
11 | fn main() -> Result<()> {
| ^^^^^^ -- supplied 1 type argument
| |
| expected 2 type arguments
|
note: enum defined here, with 2 type parameters: `T`, `E`
help: add missing type argument
|
11 | fn main() -> Result<(), E> {
| ^^^

error: aborting due to 4 previous errors

Some errors have detailed explanations: E0107, E0432, E0433.
For more information about an error, try `rustc --explain E0107`.
error: could not compile `test`

To learn more, run the command again with --verbose.
Аноним 20/05/21 Чтв 16:32:28 203670866
Аноним 20/05/21 Чтв 17:47:20 203685067
>>2036701
>>2036708
> код копипасть
> мозг не включай
> ошибки не читай
Аноним 21/05/21 Птн 01:43:27 203713768
>>2036708
У меня все работает. Что я делаю не так?
Аноним 21/05/21 Птн 15:40:43 203760769
>>2037137
Мозг включаешь, очевидно, в отличие от стонущей макаки.
Аноним 22/05/21 Суб 13:46:53 203847070
Можно ли на Rust делать графические приложения, а не только консольные или сетевые?
Аноним 22/05/21 Суб 18:57:45 203895071
>>2038470
Чел...
Графические приложения можно делать на любом языке при наличии соответствующих библиотек.
https://www.areweguiyet.com/
Аноним 22/05/21 Суб 19:12:38 203896672
image.png 14Кб, 490x150
490x150
Аноны, ну шо за нах?
Аноним 22/05/21 Суб 21:37:47 203911773
(Как же ржавенький спасают макросы, а! Напишите «Спасибо Дэйв Херман» в этот тред и вас возьмут на ржавую галеру уже завтра)

>>2038966
Код-то покажи.

Аноним 22/05/21 Суб 21:42:08 203912474
>>2039117
> Как же ржавенький спасают макросы, а!
Ну так процедурные макросы по сути это кодогенерация, встроенная в язык. Можно даже писать вместо растокода с++ код и компилировать его внутри макросов. https://github.com/mystor/rust-cpp
Аноним 22/05/21 Суб 23:10:18 203920175
image.png 18Кб, 390x155
390x155
>>2039117
Что показать? Вот же, ide мне в одном и том же хинте пишет, что тип не задан, и тут же ниже показывает выведенный тип.
Конкретно тут, res выведен правильно из возвращаемого типа функции, в конце я его как Ok(res) отдаю.

Ещё бывает наоборот, как на этом пике: анализатор пиздит на Moved Value, но всё прекрасно конпелируется.
Аноним 23/05/21 Вск 07:11:40 203937876
>>2036708
>НАХУЯ делать примеры, если это говно не может скомпилироваться?
Оттуда примеры и не будут компилироваться, это же не golang. В 90% примеры даже из readme на гитхабе не работают. Я хз зачем так делают, возможно потому что раста-кодеры заднеприводные извращенцы, а может по другой какой-то причине.
Аноним 23/05/21 Вск 08:58:31 203940777
>>2039406
Плюс токсичное русскоязычное комьюнити.
Аноним 23/05/21 Вск 09:07:19 203940878
>>2038950
Так мне и в треде по Go говорили, но по факту ни одна из этих библиотек не работала. А без написания современных графических приложений, никто не будет воспринимать язык всерьёз.
Аноним 23/05/21 Вск 11:49:22 203954679
>>2039408
Напиши библиотеку, напиши ось. Ты ещё и в плюсотреде срёшь?
Аноним 23/05/21 Вск 13:15:30 203961280
>>2039201
Так проблема не в компиляторе, а в артефактах прошлой подсветки. Иди в виме код пиши, там проблем таких нет, а если есть, они решаются простым :e
Аноним 23/05/21 Вск 13:27:14 203963281
fn x() {}

mod a {
__mod b {
____// как здесь вызвать x?
__}
}
Аноним 23/05/21 Вск 17:53:00 203993882
Аноним 23/05/21 Вск 18:43:03 203999483
>>2039612
Нет, эта хуйня давно держится, прошло уже несколько переоткрытий иде и очисток кеша.
Аноним 23/05/21 Вск 18:46:43 204000184
>>2039632
Никак, потому что x не pub
Аноним 23/05/21 Вск 22:43:30 204026285
Аноним 23/05/21 Вск 22:47:12 204026986
>>2039994
Ты каким плагином пользуешься? Давно обновлял?
Аноним 24/05/21 Пнд 10:26:54 204060687
Хочу написать базу данных на расте, для практики. До этого никогда с таким не сталкивался, писал только энтерпрайз-парашу на джаве. Какие подводные?
Аноним 24/05/21 Пнд 11:13:32 204068888
>>2040606
Что такое энтерпрайз?
Аноним 24/05/21 Пнд 13:32:30 204095789
>>2040606
Никаких, пиши
Максимум что может быть, жопа сгорит от семантики владения и компилятора в целом
Аноним 24/05/21 Пнд 13:35:28 204096390
Аноним 24/05/21 Пнд 15:35:08 204116691
>>2040957
После жавы жопа скорее сгорит от неполноценности трейтов. GAT и TAIT очень сильно не хватает когда используешь трейты как аналог интерфейсов из жавы.
Аноним 24/05/21 Пнд 16:08:15 204123092
Скомпилировал хелло ворлд, а бинарник получился 3,4Мбайта. Это нормально вообще?
Аноним 24/05/21 Пнд 18:30:48 204149393
Аноним 24/05/21 Пнд 20:22:40 204167594
>>2041493
Это же очень много! На том же С++ получается 14-16кбайт всего с учетом стандартных библиотек.
Аноним 24/05/21 Пнд 20:25:52 204168095
>>2041675
Скажи мне, сколько он динамически линкует, и я скажу, кто ты.
Аноним 24/05/21 Пнд 21:38:27 204175796
>>2041680
Разве раст не линкует glibc динамически? Даже так выходит около 4МБ, после стрипа 1МБ.
Аноним 25/05/21 Втр 10:45:45 204214097
>>2041757
Нет, раст в отличие от сишки и крестов по дефолту всё статически линкует. Найди, где у крестов настройка статической линковки, а потом охуевай от реального размера бинарников.

Ах да, и не забудь про разницу размеров в дебаге и релизе.
Аноним 25/05/21 Втр 20:34:07 204293698
>>2042140
https://redbeardlab.com/2019/05/07/rust-and-glibc-version/
>The rust compiler dynamically link the executable against the glibc in the system
Это тогда что?
Похожее написано здесь
https://doc.rust-lang.org/edition-guide/rust-2018/platform-and-target-support/musl-support-for-fully-static-binaries.html
>However, if you use the standard library, it will dynamically link to the system's libc implementation
В любом случае бинарник линкуется к сишной либе динамически.
>Найди, где у крестов настройка статической линковки
>не забудь про разницу размеров в дебаге и релизе
Релизная версия может весить больше.
У меня размер получился в несколько раз меньше чем размер плюсового бинаря, но с жму тулчейном бинарь линковался динамически.
https://pastebin.com/6hid7kJ9
Аноним 26/05/21 Срд 07:03:08 204330399
>>2041230
Аноний, добавь в cargo.toml такое:

[profile.release]
lto = true

Получишь 1.2мб с отладочной информацией, 250кб без, и ощутимо возросшее время линковки. 12-14кб тоже можно, если откажешься от стандартной библиотеки и будешь работать через биндинги к libc. 4-8кб, если используешь системные вызовы напрямую (кстати, турбо паскаль от 1989 года под дос не мог без мэдскиллз делать бинарники меньше 7кб). По сравнению с крестами, код раздувается в основном за счёт всяких проверок - на переполнения, на выход за границы массива. И ещё ему приходится тащить с собой свою стандартную библиотеку, конечно.
Аноним 26/05/21 Срд 07:15:56 2043306100
>>2041166
Расскажи, пожалуйста, что за GAT и TAIT, не гуглятся эти аббревиатуры. А жопа моя дымится сейчас от трудностей байтоёбства: чтобы банально прочитать слово из v: Vec<u8>, приходится делать from_le_bytes(v[i..i+3]).try_into().unwrap(), не говоря уже о битовых массивах, и я уже ностальгирую по сишечке. Мелочи типа того что i16(-1) as u32 даёт 0xffffffff тоже неприятно удиваляют. А борроу-чекер - да, хуй с ним, RefCell во все поля (буквально).
Аноним 26/05/21 Срд 11:28:17 2043446101
Хотел что-то спросить, потом глянул - а хуле тут спрашивать? Давайте лучше я вам советы подам.

1. Чекнуть по-быстрому и увидеть только ошибки, без километров ворнингов:
RUSTFLAGS=-Awarnings cargo check

2. Собрать с пересборкой std (может сильно сократить размер)
rustup override set nightly; cargo build -Z build-std --target x86_64-unknown-linux-gnu --release; rustup override set stable

3. Развернуть Option<Option<T>> в Option<T>: flatten()

4. Развернуть Option<E>, Option<T> в Option<(T,E)>: zip()

макака, чини разметку
Аноним 26/05/21 Срд 11:39:08 2043453102
>>2043306
>RefCell во все поля
Если не используешь многопоток и связные списки с деревьями, то правила очень простые:
Если объект живёт дольше, чем функция, то можно передавать его по & куда угодно.
Если функция завершается и что-то возвращает, то не очкуй вернуть объект целиком. Никакого перемещения памяти не будет, будет та же передача по ссылке, только во владение

>from_le_bytes
Если знаешь свой ендиан и число байт точно чётное, то можешь через ансейф преобразовать Vec<u8> в Vec<u16>
Аноним 26/05/21 Срд 11:45:10 2043460103
>>2043306
GAT - generic associated types - https://github.com/rust-lang/rust/issues/44265
TAIT - type alias impl trait - https://github.com/rust-lang/rust/issues/63063

Вот пример для чего они нужны, чтобы иммитировать интерфейсы в жаве. Допустим у тебя есть интерфейсы.

public interface i1 {}
public interface i2 {
i1 getI1();
}

и их имплементации
public class i1Impl implements i1 {}
public class i2Impl implements i2 {
@Override
public i1 getI1() {
return new i1Impl();
}
}

Обрати внимание, что в интерфейсе i2 возвращается интерфейс i1, а не конкретный тип. Это очень распространённая идиома в жаве - использовать конкретные типы по-минимуму и совать где только можно интерфейсы. Вот аналог этого кода в расте: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=33fa415859772b050b8a8800c15ef2d7 в данном случае конечно можно не использовать TAIT и просто написать type getI1Rv = i1Impl; но иногда так сделать невозможно (например если внутри вызывается функция, которая сама возвращает impl i1. GAT нужны для того чтобы можно было использовать генерики и лайфтаймы в определениях типов в интерфейсах. Вот пример выше с использованием GAT: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=9740f54884bbf844039191d5003bc64a

Но как ты мог заметить, как GAT, так и TAIT в моих примерах используются как костыли и на самом деле нужны RPIT - return position impl trait внутри трейтов, чтобы тупо можно было написать fn getI1<'a, T: 'a>(&self) -> impl i1<'a, T>; внутри трейта, как это сейчас возможно в свободных функциях. Возможно позже добавят и такую возможность. Плюс это является необходимостью для использования асинхронных функций в трейтах.

Сейчас обычно эти ограничения обходят боксингом, т.е. последний пример выходит так: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=e0cec01ee4401c81867c71bc17017a3a но так получается медленней и иногда потребляет больше памяти.
Аноним 26/05/21 Срд 11:50:26 2043463104
Аноним 26/05/21 Срд 17:49:44 2043967105
>>2043453
> Если не используешь многопоток и связные списки с деревьями, то правила очень простые
Да у меня практически классический пример: объект через интерфейс в виде трейта обращается к другому объекту. А трейт - вот уж случайность - оказывается родительским объектом. Всё.

> Если знаешь свой ендиан и число байт точно чётное, то можешь через ансейф преобразовать Vec<u8> в Vec<u16>
Вот конкретно этот пример с изменением типа массивов - один из самых больших пиздецов языка. Сишечка во всём небезопасная, конечно, но в ней байтоёбство естественное. В Расте же это - как деревенская пьянь, показывающая акробатический трюк.
Аноним 26/05/21 Срд 18:00:31 2044018106
>>2043460
Спасибо за разъяснения. Не стыжусь признаться, что часть про лайфтаймы понимаю смутно, но заскринил и скурю, как сам начну писать обобщённый код.
Аноним 26/05/21 Срд 18:01:12 2044019107
>>2043967
Объект трейта, конечно. Извиняюсь.
Аноним 26/05/21 Срд 18:41:59 2044113108
>>2043967
Ни хуя не понял, кто у тебя там к кому обращается. Дочерний объект зовёт метод родительского? Меняй архитектуру, если так. Используй каналы, асинхронность, ещё что-нибудь.
Крайне редко бывает, чтобы что-то подобное было вот ну прям необходимым, хотя в мире плюсов встречается сплошь и рядом. У тебя там, поди, коллбэк какой-нибудь?
Аноним 26/05/21 Срд 19:04:11 2044152109
>>2044113
Да, зовёт, чтобы получить нужное поле. Нет, всё збс, поле сделано как RefCell и не требует мутабельности родительского класса. Нужно это для более удобной организации кода: получение полей делается через dyn trait и им можно подставить или класс приложения, или класс тестраннера. Приложение импортирует все классы своих полей, классы полей - только классы соседей в месте с трейтами для их получения. Идиллия. Всё вместе это - зародыш движка игровой логики.
Аноним 26/05/21 Срд 22:53:34 2044351110
>>2044152
>Всё вместе это - зародыш движка игровой логики
Нет, блять, просто нет, сука, давно умные люди придумали ECS, никто даже в крестах не пишет на ебаных классах твои ебаные игры.
Просто нет, блять, игры так не делаются.

Но если очень надо взять референс из внутренней структуры на внешнюю, то смотри std::rc::Weak или std::sync::Weak. Но тебе не надо, тебе надо просто научиться использовать правильные алгоритмы и правильно структурировать программы под задачу.
Аноним 28/05/21 Птн 11:26:46 2046207111
Вот изучаю Rust и не могу понять: зачем они сделали все переменные константами? В чём смысл этого? Программа создаётся, чтобы преобразовывать данные, а значит переменные должны изменяться.
Такое ощущение, что разработчики руководствовались одноклеточной логикой с позиции каких-нибудь анализаторов кода: типа если большинство ошибок возникает из-за изменений переменной, то надо запретить изменять переменные.
Аноним 28/05/21 Птн 11:28:29 2046217112
>>2046207
Чтобы случайно не поменять то что не должно быть изменено
ты вобще дурак?
Аноним 28/05/21 Птн 14:48:34 2046513113
>>2046207
Ты перепутал раст с хачкелем, у нас мутабельность есть, а вот алиасинга нет.
Аноним 28/05/21 Птн 15:10:18 2046560114
>>2046207
Пчел, концепция вредоносности мутабельности по умолчанию это уже признанный стандарт — найди хоть один новый язык кроме gовна, где это не так.
Аноним 28/05/21 Птн 15:11:21 2046562115
>>2046207
Алсо, как иммутабельность по умолчанию тебе мешает преобразовывать данные?
Аноним 28/05/21 Птн 19:05:36 2046935116
Подскажите удобную IDE для Раста
Аноним 28/05/21 Птн 19:08:14 2046941117
Аноним 28/05/21 Птн 19:31:57 2047003118
>>2046935
Я idea пользуюсь, вроде удобно
Аноним 28/05/21 Птн 19:50:59 2047035119
>>2047003
Она же платная. Там 30 дней только пробный период, а мне надо инструмент на длительный период.
Аноним 28/05/21 Птн 19:56:07 2047040120
Аноним 29/05/21 Суб 01:05:27 2047505121
>>2047035
Она 100 долларов в год стоит, ты серьёзно? Там даже можно не продлевать подписку если не хочешь, тогда ты сможешь её использовать, но без обновлений на новую версию.
Аноним 29/05/21 Суб 01:21:29 2047528122
>>2046935
Pycharm + rust плагин покрывает все потребности
Аноним 29/05/21 Суб 01:22:51 2047533123
>>2047528
Кроме отладки, которая доступна только в clion.
Аноним 29/05/21 Суб 01:29:29 2047552124
>>2047533
Отладчик тоже завезли. Не знаю, как в комьюнити версии, но в проф версии он точно есть.
Аноним 29/05/21 Суб 03:16:25 2047625125
Аноним 29/05/21 Суб 08:59:43 2047672126
Если со стеком, любому, кто программировал на Ассемблере, всё понятно, то вот реализация кучи остаётся загадкой. О куче идёт много разговоров, но лично мне до сих пор не понятно, каким таким магическим образом нам динамически выделяют любой по размеру кусок памяти, а потом его освобождают. При этом утверждается, что освобожденный кусок также можно использовать.
Аноним 29/05/21 Суб 10:24:20 2047701127
Аноним 29/05/21 Суб 12:17:03 2047785128
>>2047672
Куча — это тупо массив битков, который аллокатором делится на нужные куски. Аллокатор в себе хранит данные о выделенных кусках, и когда ты освобождаешь аллокацию, аллокатор просто удаляет кусок из листа используемых, а когда выделяешь память, аллокатор ищет подходящий невыделенный кусок с помощью анализа уже выделенных кусков.

На самом деле там всё немного сложнее, конечно же, но основной принцип именно такой.
Аноним 29/05/21 Суб 12:29:21 2047789129
>>2047672
> каким таким магическим образом нам динамически выделяют любой по размеру кусок памяти
С точки зрения ОС ты просто вызываешь функцию аллокации памяти нужного размера и тебе даётся указатель на массив байтов, после чего вызываешь функцию деаллокации передавая ей указатель, который дала тебе функция аллокации. Но обычно апи ОС напрямую использует только аллокатор (потому что сама аллокация памяти - достаточно долгий процесс и лучше взять памяти побольше и потом постепенно использовать) - специальная библиотека, которая выделяет память для твоих объектов в куче. А там уже сколько памяти брать, как объекты внутри распределять - зависит от самого аллокатора (потому их так и дохуя и универсального как бы и нет).
Аноним 29/05/21 Суб 13:45:01 2047849130
Если я написал программу, которая не выходит за границы массива и работает корректно, то почему я должен платить за дополнительные проверки на границы массива во время выполнения, которые снижают производительность?
Аноним 29/05/21 Суб 13:51:45 2047861131
>>2047849
Ну вообще компилятор проверки и не суёт, если во время компиляции твёрдо и чётко видит, что за границы массива ничего не выходит. Однако видит не всегда.
Аноним 29/05/21 Суб 14:27:13 2047922132
>>2047849
Потому что ты не умеешь использовать итераторы, как вариант. Или потому что ты не смог убедить компилятор в ненужности проверок с помощью сейф кода.
Аноним 29/05/21 Суб 18:14:35 2048253133
Стикер 577Кб, 400x300
400x300
Аноним 29/05/21 Суб 19:02:27 2048303134
>>2046941
>>2047040
Кстати попробовал. Обе IDE рабочие. Правда в VS Code надо самому писать все эти cargo build и прочее. Автоматизации нет.
А вот IntelliJ IDEA приятно удивила, что достаточно поставить плагин и работаешь как-будто среда затачивалась под Раст. Всё собирается просто по кнопочке.
Аноним 29/05/21 Суб 19:08:54 2048312135
>>2048303
В vscode можно также запилить на кнопочку
Тока хзы как, мне вполне удобно в консоли все делать
Аноним 29/05/21 Суб 19:30:04 2048339136
https://github.com/systemd/systemd/pull/19598
systemd - ключевой компонент всех популярных дистров линукса, и теперь туда пытается проползти раст, что его неминуемо обессмертит.
Раст идёт к успеху!
Аноним 30/05/21 Вск 18:35:55 2049575137
Суп, расты. Начал изучать работу с файлами, не могу вкурить как переписать кусок файла без создания нового и копирования в него со смещением. Можете помочь примером?
Аноним 30/05/21 Вск 20:05:28 2049716138
>>2049575
Описание std::io::Seek прочитай. И то, как оно заимплеменчено для файлов.
Аноним 30/05/21 Вск 20:10:11 2049725139
>>2049716
>std::io::Seek
fn main() -> io::Result<()> {
let mut f = File::open("foo.txt")?;

// move the cursor 42 bytes from the start of the file
f.seek(SeekFrom::Start(42))?;
Ok(())
}

Это прочитает 42 байта или начнёт читать с 42 байта? Я прочитал коммент на английском, но туповат немного.
Аноним 30/05/21 Вск 20:18:56 2049748140
>>2049725
Это передвинет курсор в файле на 42 байт со старта. Дальше жмёшь std::io::Read или std::io::Write, чтобы читать или писать начиная с 42 байта в файле.
Аноним 30/05/21 Вск 23:23:42 2050006141
>>2049748
Понял, спасибо. Но мне наоборот надо, с 0 до 42 байта.
Аноним 31/05/21 Пнд 01:21:23 2050079142
Аноним 31/05/21 Пнд 10:58:02 2050251143
>>2050006
Тебе же надо было переписать кусок файла, нет?
Прочитать первые 42 байта — это элементарнейшая херня, делается через

let buf = &mut [0_u8; 42];
let r = std::io::Read::read(reader, buf)?;

Правда в файле может быть меньше 42 байтов, так что по хорошему надо ещё сделать так:

let bytes_read = &buf[..r];
Аноним 31/05/21 Пнд 11:41:53 2050308144
>>2050251
>Тебе же надо было переписать кусок файла, нет?
Да, переписать. С чтением я понял, получилось с буфером нужного размера, спасибо.

И ещё вопрос, допустим у меня есть
> let buf2 = &mut [0_u8; 84];
Я могу как-то записать его в начало файла, но так, чтобы:
1) первые 42 байта заменились, то есть 43 байт стал 85-м
2) без копирования во временный файл
С временным файлом я разобрался, принцип тот же, что и выше - используя Seek::Start и дописать в нужный файл с OpenOptions::new().write(true).append(true)
Аноним 31/05/21 Пнд 12:10:51 2050348145
В общем, я даже нашел либу для подобного, но хочу разобраться как оно работает.
Аноним 31/05/21 Пнд 23:06:23 2051339146
>>2050308
Нет, не можешь, разное же количество байтов. Вообще, в теории есть варианты, но проще всего именно записать в новый файл, а потом этим файлом заменить старый. Это и проще и надёжнее.
Аноним 01/06/21 Втр 12:30:47 2051726147
>>2051339
Понял. Но просто в начало файла я могу же дописать?
Аноним 01/06/21 Втр 13:13:49 2051783148
>>2051726
Нет, не можешь, только перезаписать байты в начале файла. Думай о файле как о векторе: дописать в конец ты можешь, а вот чтобы дописать в начало, тебе сперва надо весь вектор сдвинуть.
Аноним 03/06/21 Чтв 17:32:08 2055226149
>>2051783
фон Нейман ебучий заруинил запись в начало файла
Аноним 04/06/21 Птн 12:04:36 2056103150
Вопрос тем, кто пишет на расте не системщину: почему вы не пишете на стабильном языке со сборщиком мусора? Чем вам go не угодил?
Аноним 04/06/21 Птн 12:38:42 2056158151
>>2017017 (OP)
Как зумеры изменят Россию?

https://2ch.hk/po/res/43508970.html

Зумеры неспособны читать книги и даже лонгриды, их предел — пост в Фейсбуке на 500 символов. Страшно будет жить в мире, где кардиохирургами, нейрохирургами, авиаконструкторами и проектировщиками АЭС будут зумеры. А вам было бы не страшно лечь под нож на операцию, которую будет делать вам врач-зумер, воспитанный не на чтении толстых медицинских книг по 900 страниц, а не коротких твиттерных постах и Ютуб-стримах? Для зумеров толстые книги — это "занудно" и "душно", они живут под лозунгом "Не парься, миллениал, ты — душнила, зануда, не бери в голову, живи без задней мысли, расслабься, миллениал".

Получатся ли из зумеров хорошие программисты, инженеры? Что в скажете про поколение с годами рождения 1997 — 2012? Хороши ли они в Расте?
Аноним 04/06/21 Птн 12:49:20 2056182152
р
Аноним 04/06/21 Птн 12:52:00 2056189153
Аноним 05/06/21 Суб 08:52:24 2057605154
Аноны, тут ВБ ищет растовика - собираются внедрять цифровой ГУЛАГ на складах и пишут самопальную замену CEPH. Удалёнщики также вэлкам. Я особеседовал, но они меня, скорее всего на хуй пошлют. Попробуйте и вы.
Суть: сидят 2 задрота-экс-плюсовика и дрючат тебя на знание алгоритмов и списков в рот я это всё ебал. Говорю, да вот же, терминал торговый написал, приложение камеры поверх NDK - не, им это всё похуй, им алгоритмы давай. Может кто-то из вас найдёт с ними общий язык, я хз. Ещё спрашивали, какая у меня любимая книга, ну, я, короч, неправильно ответил, надо что-то по алгоритмам чтоб было.
Аноним 05/06/21 Суб 12:52:32 2057815155
>>2056103
Медленно, тормозит, сам Го как язык лютая хуита. Мне больше котлин понравился как джава, только нормальный, но он работает на JVM, а она тоже медленная.
Аноним 05/06/21 Суб 16:33:51 2058023156
>>2057815
>Медленно

Если сравнивать не на синтетических тестах, а на реальных задачах, то разница в скорости не заметна. Реально заметна на глаз только скорость компиляции - у go гораздо быстрее проекты собираются.
Аноним 05/06/21 Суб 16:51:19 2058048157
Аноним 06/06/21 Вск 05:25:09 2058777158
Уважаемые растоманы, как вы пришли к расту? Что вас побудило начать писать на нем? Допустим, почему я должен перейти с условных плюсов на ржавого? Стоит ли вкатываться?
Аноним 06/06/21 Вск 07:32:05 2058794159
>>2058777
Заебал питон с его недотипизацией и тормозами.
Заебали си/плюсы с их ебучими сегфолтами в самых неожиданных местах, которые поди ещё поотлаживай.

А у раста ещё и карго есть, одна из самых, если не самая, система подтягивания зависимостей.

С другой стороны, если ты с плюсами на "ты", тебя в них прям вот всё устраивает, пишешь ты, аки святой Кармак, то может именно тебе и не надо. За растом будущее как раз ещё по той причине, что он удобен бизнесу - в реальном мире, где далеко не все прогеры кармаки, он позволяет отсечь плохой код (и, возможно, плохих кодеров) ещё на этапе компиляции.
Аноним 06/06/21 Вск 11:20:50 2058873160
>>2058023
Если "реальные задачи" в твоём понимании это отдать html страницу из кэша - то да, тут разницы не заметно. А если нужно делать что-то сложное при этом не умирать и не тормозить при очень большой нагрузке, тут твоё го уже не справляется.
Аноним 08/06/21 Втр 10:08:01 2061395161
>>2058777
Начал принимать лоли-колёса и становиться настоящей девочкой.
Аноним 09/06/21 Срд 11:09:19 2062777162
>>2058777
Раньше писали на работе медиапроект на Си. Я чет по-рофлу решил глянуть на раст.
Так и началось.
В итоге весь проект переполз на раст. Написали бинды к ffmpeg'у\gstreamr'у. Сидим, кайфуем. Писать кодяру - быстрее, зависимости тянуть - просто, распиливать проект на сабмодули - просто, сегфолтов нет, перфоманс тот же самый.
В итоге, уже запилили стриминг-платформу и плеер без единого сегфолта, лол. Сейчас допиливаем метрики и апишку внешнюю.
Аноним 10/06/21 Чтв 00:32:50 2063844163
ftPNFHVCTCqL8t3[...].jpg 131Кб, 1255x1059
1255x1059
Аноним 10/06/21 Чтв 08:24:03 2063938164
>>2063844
Да, возможно рановато ещё расту в ядро. Но эта проблема давно известна и потихоньку пилится

https://rust-lang.github.io/rfcs/2116-alloc-me-maybe.html
https://www.crowdstrike.com/blog/dealing-with-out-of-memory-conditions-in-rust/
https://github.com/rust-lang/rust/issues/48043

возможно сейчас, после линусового пендаля, будет пилиться активнее. Для обычных же приложений, вне ядра, вылет в случае нехватки памяти - ну это не самое страшное, что может случиться, раз уже ты столкнулся с этой самой нехваткой.
Аноним 10/06/21 Чтв 08:55:41 2063947165
>>2017017 (OP)
Вот так живут нормальные программисты
https://citizen1980.livejournal.com/310.html

Цитата.
И вот в таком коттедже, как на картинке 18, сидит больной кифозом человек, стучит пальцами по клавиатуре, пишет, к примеру, код на Scala/Java/Erlang или схемы на VHDL, продаёт свою экспертизу в Австралии/США/Канаде и привлекает в свой карман доллары, не желая переезжать из провинциального миллионника в Калифорнию.

Потому что жизнь в Калифорнии — это когда инженер за год заработал, условно говоря, $110 тыс., а потратил на всё $105 тыс. Строго формально он зарабатывает ежегодно больше, чем тратит, и разница копится год за годом, но фактически это издевательство. Зачастую для удобства продажи экспертизы обитатель такого коттеджа не позиционирует себя как физическое лицо, а учреждает в любой из юрисдикций общего права юрлицо, в этой же или другой с common law заводит счёт, регистрирует корпоративный домен второго уровня с почтовым ящиком, создаёт сайт юрлица и минимальный substance, вот прямо совсем минимальный, и взаимодействует со своими контрагентами из Австралии/США/Канады от имени своего юрлица (КИК), самостоятельно формулируя тексты контрактов и в итоге пользуясь преимуществом разницы глобальных денег и местных провинциальных услуг по ППС. Да, таких людей в России мало, средний класс — всего 1 % населения. Наугад взятый программист не владеет коттеджем, потому что на рынок пришло слишком много некомпетентных людей беднеющей страны.

Нужно сказать, что, наверное, больше половины программистов в России не входят в средний класс. Причин много. У кого-то нет амбиций для того, чтобы в частном порядке начать продавать свою экспертизу, именно экспертизу, а не часы работы. У кого-то убогий английский не позволяет проявить инициативу и начать зарабатывать деньги в формате кооперации в глобальной распределённой команде разработчиков или начать продавать собственные разработки как закрытые компоненты, устройства, сервисы. А кому-то управленцы ранее смогли внушить, что самостоятельно находить контрагентов, устанавливать с юрлицами именно деловые отношения, а не отношения найма, составлять и подписывать контракты (fixed-price, time and materials, cost-plus) в формате B2B и управлять своими проектами якобы невозможно. Судьба программистов, которые не захотели или не смогли войти в класс "Средний класс", — это продолжать находиться в классе "Слегка зажиточные". Удел не вписавшихся в рынок экспертизы — работать на рынке труда и участвовать в аутсорсинге или аутстаффинге, работодатель таких россиян — так называемый "бодишоп" (так называемая "галера"). Ошибочно думать, что российская галера покупает человеко-часы программистов в России и просто втридорога продаёт их толстосумам из SoftBank Group или подобных денежных мешков, так как чаще всего в цепочке между сверхбогатыми инвесторами и программистами находится намного более одного посредника, к каждому из которых прилипают доллары, и накрутка там уже не в три раза получается. При Дмитрии Медведеве провинциальный рынок был примерно таким: студент получал $350 в месяц, младший программист — $750, средний — $1,5 тыс., старший — $3 тыс. Сейчас, при Обнулёныше, ситуация иная: студент работает за еду в буквальном смысле слова (в провинции на галере дают бесплатный чай с печеньями, не более того), младший — $350 (конкурс гигантский, резюме не читают), средний — $750 (тоже длинная очередь и дикая конкуренция). Старшие не подешевели, а даже подорожали, но их мало. Из этого нужно сделать вывод, что рынку в 2021 году не нужны уже не только начинающие специалисты, но и даже посредственные, среднего ума, эрудиции и опыта. Но ведь это логично: например, когда у вас разболелся зуб, вы стремитесь записаться именно к хорошему специалисту, а не к посредственному стоматологу, верно? Так почему же на рынке разработки hardware и software должно быть иначе в 2021 году?
Аноним 10/06/21 Чтв 09:10:58 2063954166
>>2063947
вода с претензией на сурьезность
Аноним 10/06/21 Чтв 15:23:56 2064325167
У вас https://crates.io/ через браузер palemoon тоже не работает? На зеленом фоне пишет "sorry...."
Аноним 10/06/21 Чтв 20:15:38 2064606168
Аноним 10/06/21 Чтв 21:43:20 2064669169
Раньше упарывался по чистым сям и винапи.
В расте можно под винду писать?
Аноним 11/06/21 Птн 00:20:44 2064866170
>>2064669
Да. Есть winapi биндинги, если тебе это нужно.
Аноним 11/06/21 Птн 08:25:12 2065035171
Недавно вышла первая стабильная версия языка программирования crystal https://crystal-lang.org/
Синтаксис как у ruby, а скорость как у C.
Аноним 11/06/21 Птн 09:20:58 2065054172
Аноним 11/06/21 Птн 10:36:40 2065100173
>>2065035
А нужность как у брейнфака.
Аноним 11/06/21 Птн 19:34:13 2065719174
>>2065100
Не пизди, брейнфак охуительно нужен как эталон эзотерических ЯП. А crystal этот никому нахуй не нужен кроме рубидрочеров, которые со своим ООП могут пойти на хуй.
Аноним 12/06/21 Суб 12:53:46 2066128175
rust небезопасен из-за дырявого llvm
Аноним 12/06/21 Суб 23:12:15 2066637176
>>2066128
Открой ишшуи в репе раста и загугли I-unsound. Но это вовсе не отменяет того, что раст намного безопаснее и удобнее крестов или сишки.
Аноним 14/06/21 Пнд 01:35:16 2067546177
image.png 41Кб, 602x281
602x281
Читаю книжку.
В 12 главе (где пишешь свой плохонький греп) предлагают написать юниттесты к функции, которая парсит аргументы командной строки.
>Feel free to write some tests for the functionality in the Config::new and run functions on your own.
В этой главе агрументы были сделаны в виде массива строк, соответсвенно, юниттест был лёгкий.

В следующей главе поменяли массив строк на итератор std::env::Args. Как теперь юниттест-то написать? Пробовал банальное
let cmd = vec![String::from("binary"), String::from("needle"), String::from("haystack"),] as std::env::Args;
Но это "non-primitive cast"

Как быть?
Аноним 14/06/21 Пнд 13:49:38 2067766178
>>2067546
Запедаль свой итератор, очевидно же.
Аноним 14/06/21 Пнд 22:01:17 2068312179
>>2067766
В смысле?

А, виноват, не всё скопировал. Уже делал
vec![String::from("binary"), String::from("needle"), String::from("haystack"),].iter() и добавлять as std::env::Args тоже пробовал;
Потом даже переделал в let cmd = ["binary", "needle", "haystack"].iter().map(|s| s.to_string()); чтобы почище

Он уже был итератором, в общем. Проблема в том, что он не был std::env::Args. И никакого способа сконструировать руками std::env::Args я не нашёл.
Аноним 15/06/21 Втр 09:32:56 2068655180
image.png 35Кб, 986x332
986x332
>>2068312
Почему бы тебе не воспользоваться дженериками?
Аноним 15/06/21 Втр 21:05:46 2069535181
image.png 12Кб, 621x104
621x104
>>2068655
Да, таки сделал в итоге. Точнее, вынес в отдельную функцию
Config::parse(mut args: impl Iterator<Item = String>) -> Result<Config, &'static str>
а так и оставил как в примере в книжке
Config::new(args: std::env::Args)
она теперь просто вызывает более общую приватную. На неё юниттест и запускаю.
Аноним 15/06/21 Втр 21:30:35 2069552182
Аноним 17/06/21 Чтв 10:06:20 2070982183
Как правильно хендлить some().unwrap()?
Аноним 17/06/21 Чтв 11:11:21 2071030184
Аноним 17/06/21 Чтв 11:19:28 2071045185
Аноним 17/06/21 Чтв 12:05:34 2071094186
Допустим, я - миллиардер. Стоит ли вкладывать деньги в создание игрового движка на расте для ААА-игр? Как это окупится?
Аноним 17/06/21 Чтв 12:13:41 2071107187
>>2071094
Делай гачу на анрыле и не выёбывайся.
Аноним 17/06/21 Чтв 12:44:06 2071153188
>>2070982
Через unwrap_or_else()
Через if let
Через match
Аноним 17/06/21 Чтв 12:59:35 2071177189
>>2071094
И что выгоднее: продавать такой движок другим компаниям или организовать свою студию по производству игр, которая будет его эксклюзивно использовать, пользуясь всеми преимуществами раста?
Аноним 17/06/21 Чтв 13:02:43 2071181190
>>2071107
Тогда у меня точно не будет никаких конкурентных преимуществ.
Аноним 17/06/21 Чтв 13:05:01 2071184191
>>2071181
Будто гей-мерам не похуй какой язык у тебя там в двигле используется.
Аноним 17/06/21 Чтв 13:37:39 2071217192
>>2071184
Для них достаточно того факта, что они будут покупать ААА-игры по меньшей цене благодаря расту.
Аноним 17/06/21 Чтв 17:07:37 2071492193
Кто все ещё свои движки продолжает писать?
Аноним 17/06/21 Чтв 23:52:58 2071914194
>>2071492
Все, у кого:
а) Есть свои наработки;
б) Есть хотелки которые имея деньги легче реализовать инхаус, чем ждать что когда-то реализуют в унылэнджайне/хуюнити.
Аноним 18/06/21 Птн 06:38:20 2072045195
>>2071217
Так не бывает. Цена будет та же, чтобы твоя прибыль была больше. Геймер же в любом случае проигрывает, поэтому игры покупают только тупые лохи.
Аноним 18/06/21 Птн 14:24:03 2072389196
1624015439293.jpg 235Кб, 720x1560
720x1560
1624015439313.jpg 287Кб, 720x1560
720x1560
Всё чаще на ххсру натыкаюсь на вакансии, в которых нужен рист.
Хотя ещё год назад не было вообще ни одной

https://hh.ru/vacancy/45212753
Аноним 18/06/21 Птн 14:34:35 2072405197
Когда уже будем писать фронт на расте, аноны?
Аноним 18/06/21 Птн 14:47:40 2072426198
>>2072389
клоуны. нахрен там раст, если все либы по cv это питовские интерфесы к плюсовым либам
Аноним 18/06/21 Птн 14:49:04 2072428199
>>2072405
Yew давно уже есть, но он не перформит.
Аноним 18/06/21 Птн 15:08:02 2072459200
>>2072426
Тебя ебёт?
Если бабло платят то не похуй ли?
Аноним 19/06/21 Суб 05:28:10 2073275201
>>2043303
> (кстати, турбо паскаль от 1989 года под дос не мог без мэдскиллз делать бинарники меньше 7кб).
Зато они запускались и без дос тупо загрузчиком.
Аноним 19/06/21 Суб 16:29:30 2073701202
Аноним 19/06/21 Суб 18:54:12 2073817203
>>2073701
Удачи скомпилить hello-world без libc ЛОЛ.
Аноним 19/06/21 Суб 18:55:20 2073819204
>>2072426
Клоун как раз ты, раз полагаешься только на готовые библиотеки. Профи пишут под задачу оптимизированный код. Представь себе, нейронки и компьютерное зрение под силу написать даже в одиночку. Тем более, распознавание лиц не такая сложная задача.
Аноним 20/06/21 Вск 02:21:38 2074150205
>>2073819
Чмо, твоя маня реализация CNN, которую действительно можно написать в соло за пару дней, будет сосать в производительности, возможностях, удобстве использования либам, которые пишутся, выилизываются и оптимизируются уже лет 10 на плюсах.

И никто в здравом уме не будет переписывать это на расте.
Аноним 20/06/21 Вск 06:54:04 2074183206
>>2074150
1. Чел, ты видишь плюсы там где их нет.
2. Нейронки и прочее считают на кудах и опенцл, за редкими исключениями. Зачастую через удобные интерфейсы вроде тензорфлова.
3. Numpy это вначале фортран а затем сишная обёртка.

Так что выпей антиплюсин.
Аноним 20/06/21 Вск 07:10:10 2074187207
>>2074183
>опенцл
>кудах
>Чел, ты видишь плюсы там где их нет.
Обосрался с этого знатока.
мимо
Аноним 20/06/21 Вск 07:38:42 2074195208
>>2074187
Ну иди теперь штаны стирай, засранец.
Аноним 20/06/21 Вск 10:28:03 2074244209
>>2074150
Практика показывает обратное. Ты слишком возомнил себе, будто нейронки это что-то сверхсложное, но это не так.
Аноним 20/06/21 Вск 12:00:20 2074303210
Аноним 20/06/21 Вск 18:51:25 2074728211
>>2057605
Как в итоге с фидбеком вышло?

И что там за задания/вопросы были, коли не секрет?
Аноним 20/06/21 Вск 20:01:49 2074849212
>>2026136
Обычный тупой маркетинг, что ты так подорвался?
Аноним 20/06/21 Вск 21:16:26 2074946213
>>2017017 (OP)
Почему Rust ассоциируют с трапами? Много известных rust-кодеров трапы или в команде разработки самого языка много трпаов?
Аноним 20/06/21 Вск 23:23:33 2075116214
>>2074946
Была история, что на него несколько больших аэропортов свой внутренний софт переписали, отсюда и повелось.
Аноним 21/06/21 Пнд 02:50:00 2075228215
>>2074946
Смотрел в прошлом году RustConf одним глазком - половина презентеров была трапчанские
Аноним 21/06/21 Пнд 09:05:33 2075306216
>>2074946
Чтобы тебя привлечь.
Аноним 21/06/21 Пнд 09:31:28 2075315217
>>2074946
Ну смотри, программирование как деятельность в целом – само по себе для девиантов, тех, кто вместо "человек - человек" предпочитает "человек - машина". У нас такие тесты были в школе, на определение будущего проф направления, ну и классы были тоже с "уклоном", я был типа в техническом. Так вот, Раст в этом плане - один из наиболее сложных ЯПов, соответственно, привлекает наиболее отклоняющихся от "нормы" индивидуумов.
Ну и второе - это их такая самореализация и самобичевание. Типа, смотрите, вот натуралы и прочие нормисы не могут прогать на этом нечитаемом говне, а мы смогли, смогли-и-и!
Ну и времени свободного у них видимо дохуя, на вечеринки и другие активности нормисов-то не зовут. Вот и сбиваются в кучки по интересам, а там как снежный ком и диаспоры за рубежом - свои тянут своих.
21/06/21 Пнд 12:03:10 2075456218
>>2075228

Ты смотрел cppcon? Там тоже есть трансы. один из https://github.com/TartanLLama

>>2074946
>>2075315

Привлечение меньшинств в разработку это буквально цель раста
https://blog.rust-lang.org/2017/06/27/Increasing-Rusts-Reach.html
>Some groups that are underrepresented in technology and in the Rust community that we would especially love insights from include women (cis & trans), nonbinary folks, people of color, non-native English speakers, people who learned programming later in life (older, or only in college, or at a bootcamp as part of a midlife career change), people with disabilities, or people who have different learning styles.

>>2075315

>вот натуралы и прочие нормисы не могут прогать на этом нечитаемом говне
Согласно https://blog.rust-lang.org/2018/11/27/Rust-survey-2018.html#feeling-welcome 92% это, скорее всего, обычные люди.
Аноним 21/06/21 Пнд 14:56:32 2075763219
>>2075315
>Раст
>один из наиболее сложных

Легкотня по сравнению с задротской связкой cmake & autotools & с/c++
Все самые известные растоманы - это вебмакаки, перешедшие с умирающего ruby. Твои любимые трапы тоже оттуда перекатились.
Аноним 21/06/21 Пнд 16:27:34 2075912220
>>2074946
Пидоры зохватили язык. Буквально. Сменили некоторые из должностей, начали визжать и кукарекать. Потом пропихивать себя же на различные посты. Потом уже все стали пидорами вокруг, в итоге язык уже год как пидераст.

>>2075315
> Раст в этом плане - один из наиболее сложных ЯПов
Только для трапов и пидоров.
Аноним 21/06/21 Пнд 16:34:51 2075927221
>>2075763
Кстати, ruby тот ещё загон закрытый клуб.
Зачем это дерьмо использовали для написания нескольких крутых продуктов - мне непонятно. Наверное потому что в те годы питон не был настолько крут, а энтерпрайз языки были уже слишком унылы и не модны.
Аноним 21/06/21 Пнд 17:36:18 2076049222
>>2063938
Кто ядру будет выделять память? Разве это не задача самого ядра менеджерить память?
Аноним 21/06/21 Пнд 17:40:32 2076065223
Если в программировании возникает много ошибок при работе с динамическим выделением памяти, то почему Раст не запрещает динамическое выделение памяти? Вот просто убрать это всё из языка и тогда программы станут надёжнее.
Аноним 21/06/21 Пнд 17:43:05 2076069224
>>2076049
Вот с эти проблем у раста нет. Там можно определить специальные функции (аллокатор) которые будут вызываться, если нужно немного памяти. Проблемы начинаются если памяти не хватает. Аллокатор в этом случае возвращает ошибку, но куча мест в стандартной библиотеке на эту ошибку реагирует паникой, а нужно просто передавать эту же ошибку коду выше. Сейчас самый большой перепил и идёт в этом направлении - добавить fallible-аналоги для всех infallible-функций и добавить какую-нибудь конфигурацию, при активации которой все infallible-функции будут недоступны.
Аноним 21/06/21 Пнд 18:23:04 2076170225
Проблема всех новых языков как правило в том, что они замкнуты сами в себе. Можно бесконечно до хрипоты доказывать, что в любимом языке максимально эффективно перегоняются байтики, но всё это становится бесполезной математической задачей без возможностей ввода/вывода. Вот какой ввод/вывод имеется в Rust кроме консоли?
Аноним 21/06/21 Пнд 20:02:21 2076366226
1624294940404.mp4 141Кб, 480x480, 00:00:02
480x480
>>2076170
Откуда вы лезете блять
Аноним 21/06/21 Пнд 20:10:17 2076374227
>>2076366
Типа на С++ написаны все либы и надо через них всё делать?
Аноним 21/06/21 Пнд 20:22:11 2076389228
>>2076374
Да делай что хочешь, хоть эти либы сам перепиши
Аноним 21/06/21 Пнд 20:30:10 2076404229
>>2076389
Как я перепишу системные либы?
Аноним 21/06/21 Пнд 20:56:25 2076452230
16236865907210.mp4 141Кб, 480x480, 00:00:02
480x480
Аноним 21/06/21 Пнд 21:15:18 2076466231
>>2076452
Почему разработчики выкатывают свой язык, но не пишут к нему либы для ввода/вывода типа Qt?
Аноним 21/06/21 Пнд 23:00:42 2076566232
>>2076466
Потому что десктоп мертв?
Аноним 22/06/21 Втр 00:44:15 2076630233
>>2076466
А нафиг им это нужно? Они захотели сделать язык и компилятор и сделали. К слову, разработчики большинства других языков или компиляторов поступают точно так же. Думаешь авторы C++ или GCC написали Qt? Нет. К слову, для Rust куча библиотек для GUI есть. Ты видимо не искал или плохо искал.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов