Главная Юзердоски Каталог Трекер NSFW Настройки

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

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 548 62 143
RUST #21 /rust/ Аноним 04/02/22 Птн 15:53:06 2286737 1
image.png 47Кб, 480x360
480x360
image.png 251Кб, 360x480
360x480
image.png 1065Кб, 745x555
745x555
image.png 97Кб, 512x512
512x512
RUST #21

Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.

Ссылка на официальный сайт: https://www.rust-lang.org/

В этом ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.

IDE для Rust: https://areweideyet.com/
GUI для Rust: http://www.areweguiyet.com/
Web для Rust: https://www.arewewebyet.org/
GayDev для Rust: https://arewegameyet.rs/
Что еще есть для Rust?
- Посмотри сам: https://wiki.mozilla.org/Areweyet

Основная литература:
Rust Book(версия на русском языке): https://doc.rust-lang.ru/book/
Rust Book: https://doc.rust-lang.org/book/
Rust by Example: https://doc.rust-lang.org/rust-by-example/
The Rustonomicon(для продвинутых анонов): https://doc.rust-lang.org/nomicon/
Programming Rust: https://www.oreilly.com/library/view/programming-rust/9781491927274/

Ресурсы на русском: https://rust-lang.ru/
Отдельное спасибо автору этого гитхаба(старому ОПу). Здесь вы сможете найти много полезной информации: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41

Предыдущий тред: >>2253780 (OP)
Аноним 04/02/22 Птн 17:28:08 2286885 2
Попробую еще раз. Есть текстовый файл с хексом типа такого \x03\xea\x81 и так далее. Я читаю этот файл построчно, но не понимаю как перекодировать такие строки в равноценные байты. Помогите советом как это сделать, аноны.
Аноним 04/02/22 Птн 17:32:56 2286886 3
>>2286885
Сразу как байты читай.
Аноним 04/02/22 Птн 17:51:41 2286906 4
>>2286886
В этом файле не только такие хексы, есть и обычный текст. Я нахочу нужные мне строки посредством регулярок и вот тут уже затык, не пойму как мне его конвернуть.
Аноним 04/02/22 Птн 20:20:33 2287075 5
>>2286906
сделай сплит по \\x и заюзай u8::from_str_radix
Аноним 06/02/22 Вск 00:08:36 2288205 6
>>2285976 →
>Заметил, что в языках без ООП код читается лучше. Может потому что мой первый код был когда-то в процедурке, хз, но явно без ООП абстракции размазывают меньше.
Мне лично все равно как оно читается, но вот что анализатор в IDE не справляется с 3/4 кода, потому что не может процедурные макросы распарсить - вот это для меня проблема. https://github.com/kas-gui/kas/blob/master/crates/kas-macros/src/widget.rs
Аноним 06/02/22 Вск 00:47:49 2288216 7
>>2265593 →
>Удивительно как язык яростно сопротивляется ООП, а так же вещам которые есть в других современных языках (значение поля|аргумента поумолчанию). Ладно, спасибо.
Все из ООП кроме совсем упоротых случаев связанных с наследованием в расте есть. Когда завезут https://github.com/elahn/rfcs/blob/delegation2018/text/0000-delegation.md уже нечего будет против сказать.
Аноним 06/02/22 Вск 09:19:31 2288287 8
>>2288205
>Мне лично все равно как оно читается
Потому что ты не программист.
Аноним 06/02/22 Вск 13:15:55 2288483 9
>>2288287
Забавно что программисты чаще наоборот говорят - к синтаксису привыкаешь через время и становится важна семантика.
Аноним 06/02/22 Вск 18:40:14 2288915 10
>Нахер это все нужно, если программы на расте не достижимы?
>То есть, без unsafe или сборки мусора (Rc), нельзя растом покрыть 100% потребностей системного языка.
unsafe это не проблема, а преимущество. В виде локализации потенциальной ошибки, и упрощения code-review. Необходимость в Rc - физический ограничитель, результат дизайна архитектуры фон Неймана - проблему совместного непротиворечивого асинхронного доступа к ресурсу переложили на программиста.

Гораздо приятней многие другие плюшки языка. (перепечатал с другого места, но согласен сам)
- В отличии от многих других компилируемых языков со статической типизацией в Rust присутствует единая система сборки и менеджер зависимостей проекта. Добавить зависимость можно одной строкой в конфигурационном файле (поддерживаются также приватные репозитории, git). Также одной командой cargo vendor можно скачать все зависимости и использовать их в дальнейшем без необходимости доступа к интернету.
- Экосистема Rust заботится о безболезненной возможности обновить инструменты и зависимости, так что автоматизация процесса сборки не будет стоить столько нервов и усилий как в экосистемах типа NPM, например репозиторий crates.io был спроектирован с учетом проблемы left-pad в том смысле, что когда разработчик пакета меняет версию, пакет предыдущей версии все еще будет доступен любому. При внесении изменений в компилятор или стандартную библиотеку бот https://github.com/rust-lang/crater проверяет внесенные изменения на предмет совместимости с пакетами crates.io.
- Мощная система типов Rust позволяет закодировать множество различных инвариантов, чтобы компилятор мог их применить. Как пример приводится паттерн https://cliffle.com/blog/rust-typestate/ который позволяет удостовериться в корректности прохода состояний конечного автомата на стадии компиляции. (HTTP библиотека Hyper использует этот паттерн чтобы обернуть "попытку установить заголовок запроса/ответа после начала отправки тела пакета в поток ввода-вывода" в ошибку времени компиляции)
- Система типов Rust и модель владения+заимствования сильно упрощает композицию и переиспользование структур данных, позволяя с легкостью использовать структуры данных написанные кем-то более искусным в оптимизации, и облегчая способность подстроить ваше API таким образом, что вы сможете переключиться позже к новой имплементации. (Внутренности HashMap стандартной библиотеки недавно заменили на более быструю реализацию hashbrown, и начались обсуждения по импорту урезанной версии crossbeam-channel для исправления давних проблем с std::sync::mpsc, а также для значительного ускорения ее работы)
- Проверяемые компилятором тип-суммы. Ты пишешь enum с несколькими вариантами, содержащими данные, и получаешь тип-сумму без лишнего шаблонного текста, а компилятор удостоверится что ты не прочитаешь из ошибочного варианта.
- Отсутствие NULL. Поскольку Option<T> и match были в языке изначально и использовались повсюду в стандартной библиотеке, никакие &-ссылки не могут быть null. И даже если Option не присутствует в сигнатуре функции, можно не беспокоиться за null'ы. (И если любая из переменных где угодно в T промаркирована как необнуляемая, тогда компилятор использует этот бит информации чтобы выделить вариант None из Option, так чтобы не тратить память понапрасну на вариант enum'a. Т.о. получается бесплатный по памяти Option в Option<T>)
- Result<T, E> это тоже что в Java проверяемое исключение, только реализованное как положено. В Rust это просто тип-сумма, и стало стандартом по всей экосистеме и в стандартной библиотеке. Если функция возвращает не Result, значит она не может отказать. (Кроме разве что макроса panic!, но это Rust-овый вариант assert'a - и используется в целях отладки)
- Великолепные комбинаторы. Серьезно. Загугли список методов типов Option, Result и Iterator. Они почти во всех случаях компилируется в такие же по эффективности реализации как если бы ты написал их вручную на Си с использованием if и for... если не лучше в некоторых случаях, поскольку компилятор может полагаться на то что вы не сможете поменять ненароком данные, находящиеся внутри; и благодаря этой информации может применить дополнительные оптимизации.
- Гигиенические макросы базирующиеся на разборе потока лексем, вместо простой подстановки строк.
- Поддержка срезов как объектов первого класса (могут быть переданы как параметр, возвращены из функции, присвоены переменной). Позволяет производить zero-copy разбор без необходимости беспокоиться о висячих указателях. Оптимизируйте в волю.
- Объектно-ориентированный синтаксис без необходимости думать о том POD-ли мой класс (как в С++) поскольку my_obj.method(foo) это просто синтаксический сахар для чего-то вроде MyStruct::method(&mut my_obj, foo) можно прямо так и писать если хочется. (гугли "Universal Function Call Syntax")
- Если обратиться к динамической диспетчеризации, она все равно не модифицирует структуру ( https://docs.google.com/presentation/d/1q-c7UAyrUlM-eZyTo1pd8SZ0qwA_wYxmPZVOQkoDmH4/ ). Вместо этого структура становится (&object, &vtable) толстым указателем
- Автоматическая упаковка структур. Если не укажешь #[repr(C)] в целях FFI, раст за тебя реорганизует поля структуры чтобы минимизировать заполнение (padding).
- #![forbid(unsafe_code)] позволяет удостовериться что небезопасный код не проникнет в модуль силами менее опытного коллеги.
- Когда unsafe необходим можно использовать не только санитайзеры LLVM, в Rust присутствует свой собственный санитайзер Miri ( https://github.com/rust-lang/miri#bugs-found-by-miri ), который выискивает множество возможных случаев неопределенного поведения, и разработчики поставили себе целью довести его до состояния когда он сможет отлавливать все такие ошибки (см. также Loom https://lib.rs/crates/loom )
- Одна из основных целей Rust - минимизировать или совсем убрать необходимость размышлять о поведении кода на глобальном уровне, в том смысле что к примеру вам бы пришлось подумать о потенциальной возможности другого модуля освободить память, на которую у вас имеется указатель. И не важно кто тут был неправ, тот кто освободил память или вы, тем что взяли этот указатель. Rust не позволит коду в таком состоянии скомпилироваться, потенциально сэкономив время и труд разработчиков.
- По поводу владения и заимствования. У компилятора есть преимущество в том что он не устает, не отвлекается, и у него не бывает критических дней.
- В дополнение сборщику проекта (cargo build) и линтеру (cargo clippy), вы получаете Искаропки Работает™ систему документации API (cargo doc), форматировщик кода (cargo fmt) с выработанными сообществом предустановками стиля, и замечательно интегрированным стандартным фреймворком для автоматического тестирования (Аннотация #[test] чтобы указать что функция является юнит-тестом, папка "tests" для интеграционных тестов, любые кусочки кода в вашей документации будут, по-умолчанию, запущены как тесты документации, для проверки их корректности на текущей кодовой базе и для уменьшения количества тестов, которые вам требуется написать)

>Вот мы и видим только пет-программы, или утилиты консоли баша.
Движок firefox
Микро VM https://github.com/firecracker-microvm/firecracker
JS рантайм с 80к звезд на github и полсотней контрибьюторов https://github.com/denoland/deno
автор Curl переписывает его на раст.
Prime Video написали приложение на раст для 8000 устройств 35000 строк скомпилировали в 150кб https://www.amazon.science/blog/how-prime-video-updates-its-app-for-more-than-8-000-device-types
Операционная система, которая уже работает на устройствах https://www.redox-os.org/screens/

>Этот язык нужно было закрыть на уровне эксперементов, когда уперлись в то, что недостижимо написать программы в парадигме языка.
>Зачем этот баран-чекер, если он влияет только на хелло-ворд??
Он будет вторым языком в ядре Linux. Линус сказал что в целом доволен, но есть небольшие недочеты. Согласно отчетам разработка спонсируется ISRG (Internet Security Research Group) и Google https://lore.kernel.org/lkml/20220117053349.6804-1-ojeda@kernel.org/
Аноним 06/02/22 Вск 18:41:25 2288916 11
Аноним 06/02/22 Вск 18:42:41 2288919 12
Аноним 06/02/22 Вск 21:08:00 2289045 13
https://habr.com/ru/company/1cloud/blog/501408/ (11 мая 2020) Группа разработчиков предлагает перейти на UTF-8
https://habr.com/ru/post/524426/ (21 октября 2020) Исключительно быстрая валидация UTF-8
https://old.reddit.com/r/programming/comments/jmqtx/should_utf16_be_considered_harmful/
https://utf8everywhere.org/
https://lucumr.pocoo.org/2014/1/9/ucs-vs-utf8/

Так что чел в треде со своим UTF-16 какой-то динозавр древний из 90-х. (не обижайся)
Аноним 07/02/22 Пнд 01:09:16 2289255 14
>>2285976 →
>Заметил, что в языках без ООП код читается лучше.
В языках без классов. ООП != классы.
Аноним 07/02/22 Пнд 01:45:15 2289260 15
Аноним 07/02/22 Пнд 01:47:27 2289261 16
Аноним 07/02/22 Пнд 02:23:42 2289273 17
>>2289260
Так это можно сделать на любом компилируемом языке.
Аноним 07/02/22 Пнд 02:32:40 2289276 18
>>2289260
Ты же понимаешь что это саботаж от анальников и жуткий недосмотр менеджмента (либо он тоже в доле), если они переписали что-нибудь критическое?
Теперь эти анальники могут до пенсии сидеть и пилить свой кусочек, завязав все процессы на себя и откладывая какашечку. набрать новых индусов заниматься разгребательством так просто не получится, а если уволить текущих то можно остаться с оптимизированными, но обосранными штанами и креслом. И даже на паркете будет размазано.
Но если у них все хорошо получится, то майн респектирунг.
Аноним 07/02/22 Пнд 03:58:38 2289283 19
>>2288483
Если ты работаешь в бизнесе, то на практике выходит, условно (для примера), что 70% сопровождаешь код (читаешь, изучаешь) и только 30% пишешь.
Даже в хваленной либами джаве или шарпе, вне топ либ приходится сталкиваться с поверхностной документации и лесть в сорцы чтобы понять как это работает и как этим пользоваться. А в динамико-дрисне вообще через IDE хер что прочитаешь, тут вы вместе с IDE не понимаете что за код.

Так что если кодер говорит, что важнее как пишется код, а не читается, он не работает программистом, это домашний писарь, или сантист с питоно мозгами. Отличие, наверное, только у сишников, которые пишут ембеддед. Они там паяют и каждый раз с нуля пишут. Там им читать, может, не особо надо. Но этим ребятам даже С++ не особо подходит.
Аноним 07/02/22 Пнд 04:07:52 2289285 20
>>2288915
Программы недостижимы, система владений работает только для простейших примитивных решений, а во всем сложном придется юзать сбощик мусора с подсчетом ссылок или unsafe.

Но зато посмотрите какой хороший пакетный менеджер. Во всем виноват фон Нейман!
Аноним 07/02/22 Пнд 04:17:15 2289286 21
>>2289045
Естественно для хранения практичнее UTF-8, но в программирование, при потребности пройтись по чарам, тебе нужно будет не бесплатное преобразование, потому как все строки хранятся как сырой список из 8 байт (что в реале не является вообще UTF-8).

И даже не важно, что там поколение зумерков на-мечтало. Сэкономленный байт дешевой памяти для UTF-16, никогда не будет стоит дорогого процессорного времени при частом преобразование строки из сырого потока 8 байт в UTF-32 (4 байта).
Аноним 07/02/22 Пнд 04:20:25 2289288 22
>>2289255
В расте нет ООП. То что зумерку видится как "объект.метод()" через точечку, то в расте это просто сахарок для функции с некоторыми возможностями для закрытого доступа.

Нет наследование, нет ООП. даже не фантазируй и не спорь.
Аноним 07/02/22 Пнд 04:31:08 2289291 23
>>2289276
Двачую это хитрый саботаж для бизнеса.
>>2289260
Забавно, но даже если переписать того же языка на этот же, можно получить кратные цифры.
Гордиться тем, что системный компилируемый язык победил динамико-дресню, это как гордится что ты на феррари обогнал школьника на велосипеде. Победы, которые мы заслужили.
Переписали бы на Го, не попали бы в найм-яму. Теперь модные и молодежные сбегут (или загнут требования) и бизнес останется один на один с растом.
Аноним 07/02/22 Пнд 09:46:21 2289323 24
>>2289288
>Нет наследование, нет ООП.
Чепуха. Наследование != ООП.
Аноним 07/02/22 Пнд 10:17:41 2289342 25
>>2289286
>никогда не будет
вот прям щас стоит дешевле
добро пожаловать в 2022, перд
Аноним 07/02/22 Пнд 10:48:37 2289369 26
>>2289273
1. Rust оказывается не медленный в написании, если ты его действительно учил, а не пробежался глазами по "rust by examples".
2. Компилируемый != быстрый.
3. Из языков позволяющих писать скоростной код (железного уровня) соответствующий уровень безопасности может предоставить только Ada.
Аноним 07/02/22 Пнд 11:07:17 2289392 27
>>2289323
Раст и Го действительно не ООП языки
@
В реальности в промышленном программирование это является достоинством.
@
Все дрочат на анемичность данных, в котлине подефолту зафиналенны классы. В шарпе надо явно пукнуть чтобы сделать виртуальные методы.
@
Тупенький с двача сидит доказывает что в расте есть ООП.
Аноним 07/02/22 Пнд 11:10:01 2289397 28
>>2289392
>Тупенький с двача сидит доказывает что в расте есть ООП.
Кто доказывает? Это ты тупенький. Я говорю, что классы и наследование это не ООП. Всё!
Аноним 07/02/22 Пнд 11:11:27 2289401 29
>>2289283
>Так что если кодер говорит, что важнее как пишется код, а не читается,
Но ведь в комменте не это написано. Сказано про семантику, а не синтаксис.

К слову, в Rust он нормально читается. Существует большое количество языков, в которых по одному объявлению непонятны инварианты кода (иногда даже объявление оторвано от определения без явной и существенной причины, как в Си или С++). В Rust же обязательно указывать ссылочность типа и мутабельность. Что позволяет через простой взгляд на заголовок функции понять уже многое из того что происходит внутри. И что произойти ни как не может. Бывают в заголовках также и времена жизни (что позволяет по одному только заголовку увидеть отношение входов функций к выходам).

Такой читаемости на уровне только определений, без необходимости заглядывать в реализацию могли бы позавидовать многие.
Аноним 07/02/22 Пнд 11:12:15 2289405 30
>>2289342
Сказочник, процессорное время всегда дороже памяти.
Аноним 07/02/22 Пнд 11:15:50 2289412 31
>>2289405
Все это превращается в громкий маркетинговый пук, пока ты не натыкаешься на переопределение переменных в расте.
let my_var = 100;
//тона кода
let my_var = "пук";
Аноним 07/02/22 Пнд 11:18:00 2289416 32
>>2289405
ага и поэтому весь мир использует utf-8
надо бы поскрее рассказать всем что оказывается процессорное время дороже, вот тупицы!
Аноним 07/02/22 Пнд 11:18:05 2289417 33
>>2289392
>Тупенький с двача сидит доказывает что в расте есть ООП.
Но он ведь прав в чем-то, оно действительно есть в некоторой степени (3,5 из 4 парадигм). Наследование в Rust появляется в урезанном виде - наследование поведения, но нет наследования состояния.
Аноним 07/02/22 Пнд 11:21:53 2289426 34
>>2289412
Самое забавное, кодя на js, я иногда торопился и писал к определенной переменной повторно "let", просто на уровне мышечной памяти. И меня интерпритатор ругал за переопределение. То есть из-за этой херни в расте и человеческого фактора, я могу словить не хилую такую плавающую ошибку.
Аноним 07/02/22 Пнд 11:23:33 2289431 35
>>2289416
Его используют отображение информации (и вводе), но в программирование это все UTF-16.
Аноним 07/02/22 Пнд 11:26:19 2289443 36
>>2289431
ага, каждый раз из utf-8 переводят в utf-16 чтобы попрограммировать)
Аноним 07/02/22 Пнд 11:27:02 2289449 37
>>2289426
>кодя на js
Оставайся там лучше.
Аноним 07/02/22 Пнд 11:28:02 2289452 38
>>2289417
Я помню гоферы тоже фантазировли, что у них есть ООП, а потом как-то резко перестали это говорить.
Расту тоже нужны евангелисты, а то среднестатистический фанбои несут порой херню. Когда мир устал от ООП эти додики гордятся что у них там какое-то кастрированное ООП
Аноним 07/02/22 Пнд 11:30:43 2289456 39
Аноним 07/02/22 Пнд 11:30:57 2289457 40
>>2289443
Тебе нужно на входе преобразовать и на выходе - и все.
А там где у тебя сырой список 8 байт и нужно "чариться" ты будешь все это преобразовывать в 4 байтовый список.
Это достаточно нативная операция и в каком-то парсинге строк в цикле ты опустишься до питонов.
Аноним 07/02/22 Пнд 11:32:33 2289458 41
image 162Кб, 756x686
756x686
>>2289457
> Тебе нужно на входе преобразовать и на выходе - и все
План во!
Уже чувствуется экономия
лан чел, хватит троллить уже
Аноним 07/02/22 Пнд 11:32:51 2289459 42
>>2289276
Ты серьёзно считаешь что это проблема, когда пара жсеров (или вообще один) за 2 недели пошли и переписали свой сервис?

Ты мб не в курсе, но в тех же западных компаниях вообще редко хайрят по принципу "знает язык", если речь не про ждуномидлов.
Аноним 07/02/22 Пнд 11:33:32 2289461 43
>>2289449
Домашний писака может позволит себе не использовать js в жизни. Но из-за монополии js в браузерах не использовать его, становится все сложнее.
Аноним 07/02/22 Пнд 11:37:15 2289471 44
>>2289458
У тебя два стула,
Либо преобразовывать на входе и выходе.
Либо преобразовывать всегда в программе.
Понятно, что опытные разработчики выбрали ~20 лет назад и что выбрала хипстота сегодня, когда памяти хоть жопой жуй
Аноним 07/02/22 Пнд 11:37:57 2289473 45
>>2289286
Память — ботлнек уже хуй знает сколько лет, и всякие костыли индустриально признанные решения вроде кэшей процессора как бы на это намекают.
Аноним 07/02/22 Пнд 11:39:35 2289475 46
>>2289459
Мимо другой анон.
Анон и написал про критичное. Хватит анусом читать.
Аноним 07/02/22 Пнд 11:39:50 2289476 47
>>2289471
большего щитпоста и придумать сложно
для развития сходи сделай бенчмарки одного и другого способа, раз всему миру не веришь, ну или хотя бы погугли их чтоли
Аноним 07/02/22 Пнд 11:42:28 2289483 48
>>2289475
Семён, ты насрал этим в ответ на конкретную статью, не виляй жопой.
Аноним 07/02/22 Пнд 11:44:23 2289484 49
>>2289473
То-то я смотрю уже даже на js десктоп пишут.
А среднее говно приложение со всеми абстракциями весит как винда 95.
UTF-16 хватило бы за глаза.
Аноним 07/02/22 Пнд 11:45:45 2289486 50
>>2289476
Стадия отрицацания.
Аноним 07/02/22 Пнд 11:47:01 2289489 51
>>2289483
Неприятно, да? Чини детектор.
Аноним 07/02/22 Пнд 11:47:22 2289490 52
Аноним 07/02/22 Пнд 11:47:45 2289494 53
>>2289484
>А среднее говно приложение со всеми абстракциями весит как винда 95.
Тем временем людям уже не хватает 16 гигов оперативки

>>2289486
другого ответа и не ожидал
Аноним 07/02/22 Пнд 12:02:26 2289521 54
>>2289456
Одно дело когда тебе втирают какой раст правильный со всех сторон и крутой. И когда на фоне этого ты натыкаешься на затенение. И такой "чего??".

Попильный язык без души, с прикрученными сладостями для заманивания глупого юзера. Я думаю, что и внутри либ и такой же бардак.
Аноним 07/02/22 Пнд 12:03:35 2289523 55
>>2289521
> И такой "чего??"
впервые функциональщину видишь?
Аноним 07/02/22 Пнд 13:06:27 2289609 56
Я вот думаю, а нахуя растобляди пиздят о том какой их язык дохуя системный и заменит Си, если в реальности он конкурирует с Говном и плюсами? На два стула сесть не получится, поэтому придется выкидывать бОльшую часть раста, чтобы писать на уровне где используется Си. Очередной маркетинг?
Аноним 07/02/22 Пнд 13:14:05 2289619 57
>>2289523
Вопрос в том что это делает в безопасном языке?
Аноним 07/02/22 Пнд 13:45:45 2289683 58
>>2289619
выполняет свою прямую функцию
если ты уж не можешь сам проследить что за переменную используешь в данные момент, то включай руками ограничения, зачем всем запрещать удобную фичу, когда каждый может себе её включить\выключить если им понадобится
Аноним 07/02/22 Пнд 14:35:14 2289730 59
>>2289683
если ты уж не можешь сам проследить за выделением памяти, используй смарт-поинтеры, зачем всем запрещать удобную фичу, когда каждый может себе её использовать\не_использовать если им понадобится.
Аноним 07/02/22 Пнд 14:37:50 2289733 60
>>2289730
все верно, смарт поинтеры классная штука, не надо их запрещать
Аноним 07/02/22 Пнд 14:41:11 2289737 61
>>2289733
Тогда зачем мне раст?
Аноним 07/02/22 Пнд 14:42:43 2289740 62
>>2289737
Хуй знает зачем тебе раст.
Аноним 07/02/22 Пнд 14:43:46 2289742 63
>>2289737
хуй знает бро
должен сам себе на вопрос этот отвечать, в расто треде же ты зачем то сидишь
Аноним 07/02/22 Пнд 15:48:58 2289825 64
>>2289619
Это не просто неочевидное затенение, это еще и скрытый drop предыдущего содержимого.
Вот есть вещь поинтереснее:
let mut i = 0;
match 1 {
1 | _ if { i += 1; false } => {}
_ => {}
}
// i == 2
Аноним 07/02/22 Пнд 16:00:22 2289830 65
>>2289825
Лол, нет, шадовинг не дропает сразу, значение как дропалось в конце блока, так и после затенения дропнется в конце блока.
Аноним 07/02/22 Пнд 16:34:41 2289860 66
Аноним 07/02/22 Пнд 16:41:20 2289865 67
Аноним 07/02/22 Пнд 16:42:09 2289867 68
>>2289865
Должен быть
пук
1
2


но растер наврал
Аноним 07/02/22 Пнд 16:50:10 2289875 69
Аноним 07/02/22 Пнд 16:52:02 2289877 70
Rust простой язык
Аноним 07/02/22 Пнд 16:54:08 2289882 71
>>2289867
Фикс
https://rust.godbolt.org/z/YTWhvPqzr

Вообще, вероятно подчеркивание сразу дропает. А так надо смотреть ассемблер, может там перед let _a = S(2); дроп.

Аноним 07/02/22 Пнд 17:11:14 2289896 72
>>2289882
Я эльфийский не знаю, но вроде на 123 строке реально на выходе два раза дропается вызов.
Так что может растер и не звездел (редкость, но бывает и такое).
Аноним 07/02/22 Пнд 17:11:33 2289898 73
Аноним 07/02/22 Пнд 17:12:43 2289900 74
>>2289882
Важно это помнить, что паттерн матчинг без биндинга дропает инплейс объект создаваемый справа.

Потому что могут возникать такие ситуации:

let _ = mutex.lock();
// дальше идут какие-то действия в полной уверенности что мьютекс залочен.
Аноним 07/02/22 Пнд 17:17:01 2289903 75
>>2289900
Привет undefined behavior подводные камни самого безопасного языка. надеюсь компилятор там варнинг кинет
Аноним 07/02/22 Пнд 17:20:28 2289904 76
Аноним 07/02/22 Пнд 17:27:59 2289908 77
Аноним 07/02/22 Пнд 17:31:33 2289915 78
Аноним 07/02/22 Пнд 17:40:59 2289932 79
Как понять время жизни этой записи
fn get_message<'a>() -> &'a str {
"hello"
}
Типа жить будет в области видимости использования функции или что? И почему компилятор тут сам не может сделать что-то, ведь параметров нет и вариантов не особо то и много?
Аноним 07/02/22 Пнд 17:46:18 2289936 80
>>2289932
Второй вопрос. Как вообще прописывать эти лайфтамы, если функция не знает как может жить внешняя переменная?
fn foo<'a, 'b>(name: &'a str, default: &'b str) -> &'b str

То есть, тут я программиста заставляю, чтобы параметр жил ровно столько же как возвращаемое значение. А что если у программиста будут другие условия?? Он тупо не сможет воспользоваться функцией или из-за моей функции будет все переписывать?
Аноним 07/02/22 Пнд 17:46:51 2289939 81
>>2289915
Разве они конкуренты? У них вроде разные основные области применения будут.
Это конечно плохо что есть неочевидности, но их все же меньше чем скажем в С++, которому Rust реально конкурент в далеком будущем.
Аноним 07/02/22 Пнд 17:47:18 2289940 82
Аноним 07/02/22 Пнд 18:14:24 2289971 83
>>2289932
Оно выводится из переданной строки, у которой время жизни static.
Запись 'a можно воспринимать как тип. Это как бы коробочка для какого-то конкретного времени жизни которое может прийти извне. В данном случае пришло изнутри.
Можно было и fn get_message() -> &'static str написать

>>2289936
В твоем примере времена жизни относятся только к деталям реализации тела функции. Она просто обещает что вернет ссылку внутрь параметра name, но не ссылку на default.
Аноним 07/02/22 Пнд 18:24:32 2289975 84
>>2289971
>внутрь параметра name, но не ссылку на default.
наоборот
Аноним 07/02/22 Пнд 18:34:08 2289997 85
>>2289971
А если не str, а что-то другое?
fn get_message<'a>() -> &'a SomeType

Тоже будет статик?
Аноним 07/02/22 Пнд 18:38:29 2290010 86
>>2289971
Неудачный пример, я имел ввиду нечто такое
fn foo<'a, 'b>(name: &'a Type1, default: &'b Type2) -> &'b Type3
Я же, как автор функции, не могу знать сколько живет переменная во вне? А тут я явно говорю что должно жить столько же как default.
Для меня это выглядит дико что кто-то меня может ограничить функцией или я кого-то могу огрничить функцией и придется переписывать, подстраиваться (или же я чего-то не понимю)
Аноним 07/02/22 Пнд 19:08:45 2290071 87
>>2290010
Зачем ты мудришь, придумываешь себе сложности на пустом месте? Либо в функцию пришло, она обработала и отдала, и дальше ей похуй, либо она сама заспавнила полноценный объект и отдала без всяких лайфтаймов.
В твоём случае ты же не переменную возвращаешь, а ссылку на неё. Сама переменная живёт где-то в другом месте, это не твоя головная боль, а владельца переменной.
Аноним 07/02/22 Пнд 19:31:19 2290110 88
>>2290071
Хз, это профдеформация, мы когда пишем что-то, то пытаемся покрыть все возможные случаи, так же и тут, я просто смотрю что возможно и как будет.
Я бегло листал сорцы, там активно используют лайфтаймы, мне показалось они нарушают концепцию функций как "черных ящиков".
Аноним 07/02/22 Пнд 19:34:39 2290115 89
>>2290071
...но в целом ты прав. Я понял мысль, что зачастую такого не будет в коде (наверно).
Аноним 07/02/22 Пнд 19:37:30 2290118 90
>>2289997
Ну да, вот тут видно https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=bdbe336264a178d0efb5d4a00c83a28b

>>2290010
Если ты автор этой функции, то ты ограничил время жизни всех объектов за переданными тебе ссылками на время действия твоей функции, а что там дальше будет (после возврата из твоей функции) это уже зависит от вызывающего кода. Он может все хоть одновременно дропнуть.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=e72fcbcdbf9235b55a9eda0efe1c683d

Вот только ты не сможешь дропнуть b пока у тебя на руках ссылка на его внутренности
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=221a19f5336abbce63ccf66cd1edaf8f
Потому нужны времена жизни, чтобы компилятор мог это гарантировать.

Другая история в том, что он мог бы их вывести сам. Ведь он уже анализирует тело функции, и тебе бы не пришлось их указывать. Но тут подумай что ты можешь не иметь доступа к телу функции, поскольку она уже у тебя скомпилирована и находится во внешней библиотеке - как тогда гарантировать лайфтаймы? Как определить что вернулось из функции ссылка во внутренности первой переменной, а не второй?
Аноним 07/02/22 Пнд 19:48:01 2290134 91
>>2290118
Благодарю за развернутый ответ. Стало яснее.
Аноним 07/02/22 Пнд 20:32:29 2290173 92
У меня нубский вопрос.
Все носятся с этим двухсвязанным списком. Его как бы вообще нельзя написать на расте? Или речь идет про то, что безопасно написать нельзя, а через unsafe возможно?
Аноним 07/02/22 Пнд 20:40:11 2290177 93
Аноним 07/02/22 Пнд 21:21:22 2290213 94
>>2290173
>безопасно написать нельзя, а через unsafe возможно?
Можно, просто это кейс в котором концепция владения и система типов раста текут, и так себе оно пахнет.

На эту тему даже вот такие серьёзные кеки есть: https://rust-unofficial.github.io/too-many-lists/
Аноним 07/02/22 Пнд 22:08:53 2290246 95
движок для игр сейчас Bevy самый крутой?
Аноним 07/02/22 Пнд 22:34:00 2290259 96
>>2290173
Тут прикол в том, что безопасное подмножество Rust запрещает гонки по данным. И те кто "носятся" просят увидеть не стандартный связный список, как в Си (который в Rust тоже будет unsafe). А безопасную многопоточную имплементацию, которая и в Си выглядит интересным образом https://www.microsoft.com/en-us/research/wp-content/uploads/2001/10/2001-disc.pdf

Ну и как обычно можно добавить что они не нужны в 2022. https://isocpp.org/blog/2014/06/stroustrup-lists
Аноним 07/02/22 Пнд 23:33:24 2290292 97
Аноны, а на каких дистрибутивах линукса вы сидите?
Аноним 08/02/22 Втр 01:35:10 2290349 98
>>2290213
В атс точно были двусвязные списки на линейных типах без гц
Аноним 08/02/22 Втр 02:12:57 2290363 99
Аноним 08/02/22 Втр 03:22:12 2290370 100
>>2289417
>Наследование в Rust появляется в урезанном виде - наследование поведения, но нет наследования состояния.
Это называет, вроде как, композиция или агрегация, но не наследование.
Аноним 08/02/22 Втр 07:53:00 2290406 101
image.png 37Кб, 1200x628
1200x628
Слышал в подкасте о том, что амазон хотел якобы подмять под себя фонд раста, подкастеры как всегда сыкливо намеками обменялись и ничего толком не сказали.
Кто в теме, что там случилось?
Аноним 08/02/22 Втр 09:32:36 2290432 102
>>2288216

ООП ради ООП, как в учебниках 90ых годов по крестам, никому нахуй не нужен. Оно нужно только там, где сама логика программы просит объекты. Читай гуй и игры.
Аноним 08/02/22 Втр 09:51:59 2290443 103
>>2290406
амазон основной донатер их независимого фонда, хочет влиять на общее виденье проекта
Аноним 08/02/22 Втр 09:52:55 2290445 104
>>2290432
в играх уже давно ECS, а не ООП (как и в гуях как частный случай)
Аноним 08/02/22 Втр 09:59:27 2290450 105
>>2290445
ECS никак не противоречит ООП
это вобще разные штуки
Аноним 08/02/22 Втр 11:17:50 2290483 106
>>2290406
Да уже полгода как идёт, к сожалению всё никак.

Расклад такой:
Есть амазон, который и так топ донатер, так ещё и хочет выкупить нахуй эту НКО, и нормально развивать руст с соответствующим спонсированием, которое они могут позволить для своего проекта.

А есть друзьяшки которые сидят на кормушке зп и называется это кубло core team (по факту что-то типо манагеров), и боятся что их пидорнут за ненадобностью и придётся реально работать а не сраться в твиттере за донаты и разрушать сообщество ебанатским поведением.

Алсо, главарь этой шайки об этом выразился так:
>they've also taken steps to marginalize the core team. and some other dirty shit I won't say rn.
Видимо, это амазон туда кончей вроде ashley williams набирает.

С полной версии инсульта жепы главы этой самой core team можно ознакомится тут — https://twitter.com/steveklabnik/status/1437441118745071617
Аноним 08/02/22 Втр 11:24:37 2290488 107
FKmMxC6WQAU5CKM.jpeg 91Кб, 1035x997
1035x997
Аноним 08/02/22 Втр 12:11:18 2290527 108
>>2290443
А есть какая-то инфа о том как амазон хочет развивать проект?
Аноним 08/02/22 Втр 12:25:33 2290534 109
1586822653894.png 98Кб, 1840x430
1840x430
Аноним 08/02/22 Втр 12:51:38 2290567 110
1618272623216.png 717Кб, 2068x1488
2068x1488
>>2290483
А там уже подчистили слегка.
Аноним 08/02/22 Втр 13:11:37 2290595 111
>>2290567
Разве это не Мозилла по-сути подчистила дропом поддержки?
Аноним 08/02/22 Втр 17:05:14 2290853 112
>>2290595
Нет, там с деньгами пролбемы нет, почекай спонсоров.
А судя по тому что ashley williams ещё там, скорее всего это колесо генотьбы сделало поворот.

Эту хуйню просто выпилить надо, не подчищать.
Аноним 08/02/22 Втр 18:08:18 2290933 113
image.png 55Кб, 1200x1200
1200x1200
Насколько раст подходит для разработки под винду?
1) Без проблем.
2) Были небольшие затыки в некоторых либах.
3) Лучше писать пока под линуксом.
Ну или свой вариант.
Аноним 08/02/22 Втр 19:11:02 2291038 114
>>2290933
Смотря что под этим понимать.
Если делать простой софт средствами раста и не спускаться вниз — всё ок.
Если спускаться на уровень системных апи — будешь трахаться с кодировками (как и на всех нативных и не только языках под шиндой) и прочие радости работы с шиндой.

Короче 2 вариант.
Аноним 08/02/22 Втр 19:20:24 2291051 115
Вопросы по применимости Раста в эмбеддеде:
1) Насколько идиоматично core-подмножество относительно стандартного раста, в частности, передача ошибок? Не повторится ли плюсовой пиздец, где в std минное поле из эксепшнов, а ворочать сырую память в С-стиле ведёт к избытку ручных непроверяемых кастов и вообще по стандарту UB, с вырождением фактически в отдельный С/С++ язык?
2) Насколько сложно воспроизвести на Расте объявление в коде и расстановку в итоговом бинаре вроде такого:
main.c:
[code]
...
struct __attribute__((packed, section ("ext_adc"))) {
uint32_t sps;
uint8_t gain;
uint16_t data;
} ext_adc_struct;
...
[/code]
linker.ld:
[code]
...
ext_adc (RW) ORIGIN = 0x00001100, LENGTH = 0x00000007
[/code]
Аноним 08/02/22 Втр 20:49:11 2291126 116
>>2291077
Заходи сюда почаще, обязательно узнаешь
Аноним 09/02/22 Срд 01:52:35 2291297 117
Аноним 09/02/22 Срд 01:53:23 2291299 118
Аноним 09/02/22 Срд 09:30:43 2291358 119
Аноним 09/02/22 Срд 10:31:20 2291384 120
>>2291297>>2291299
Спасибо, выглядит не так уж и страшно.
На самом деле, я на Расте ещё ничего не писал, но в свете того что его предварительно одобрили для модулей ядра линукса интересно самому оценить пригодность, и стоит ли учить его уже сейчас.
Похоже, ему не хватает для перехода всего двух вещей: начального импульса, чтобы писать одновременно и на Расте, и поддерживать интероп с уже написанным на С, и стабилизации стандарта, я так понял, core пока что официально не закончен.
Аноним 09/02/22 Срд 11:25:52 2291450 121
>>2290933
> Насколько раст подходит для разработки под винду?
пишу кроссплатформу, проблем нет, если не будешь спускаться на уровень системных либ, то ничего не заметишь
Аноним 09/02/22 Срд 11:54:39 2291473 122
Аноним 09/02/22 Срд 12:36:20 2291509 123
>>2291384
>и поддерживать интероп с уже написанным на С
FFI вроде на отличном уровне с Си, и на средненьком с С++. В любом случае он может в LTO с с/с++. (Если у тебя есть статическая либа написанная на этих языках, он не только ее может прилинковать но и функции от туда выдирать и вставлять в свои участки кода inline'инг)
Аноним 09/02/22 Срд 13:54:53 2291596 124
В сях, я помню, был препроцессор позволяющий по условию вставлять/убирать блок кода.
Вроде типа:
#if defined(WIN32)
..
#endif

Как в расте это реализовано?
Аноним 09/02/22 Срд 14:02:50 2291598 125
Я так понял чтобы подключить файл надо использовать
mod filename;

Почему не сделали подключение сразу через use? Как-то просто странно выглядит, как будто мы цепляем внешние либы через use (я понимаю, что это просто алиас имен), а свои мало того что use да еще и mod.

Я, наверное, просто что-то не уловил или просто так задизайнили?
Аноним 09/02/22 Срд 14:11:59 2291611 126
Аноним 09/02/22 Срд 14:12:44 2291613 127
>>2291598
Модули можно в том же файле писать.
mod modulename {
// и погнал
}
Аноним 09/02/22 Срд 14:13:01 2291614 128
Аноним 09/02/22 Срд 14:48:58 2291646 129
>>2291614
Зачем пытаться самоутверждаться на анонимном форуме? Все равно никто о тебе ничего не знает и твои шутки никак не отображают твое остроумие.
Аноним 09/02/22 Срд 14:59:09 2291652 130
image.png 1315Кб, 1400x788
1400x788
Слушал очередной подстаст, там народ говорит что все никак в расте не могут прийти к концепции гуёв. Мол дефолтный мир гуев имеет массу циклических ссылок друг на друга, а это в свою очередь херова ложиться на парадигму раста.

Так пришли к чему-то?
Аноним 09/02/22 Срд 15:01:24 2291655 131
14870561.jpg 263Кб, 900x900
900x900
>>2291646
>Зачем пытаться самоутверждаться на анонимном форуме?
Ебать маняпроекции.
Какие сурьёзные нынче зумерки.
Аноним 09/02/22 Срд 15:07:29 2291664 132
>>2291652
>там народ говорит что все никак в расте не могут прийти к концепции гуёв
Либо хуйню несут, либо ты что-то явно не то услышал. Что за подкаст-то?

>Мол дефолтный мир гуев имеет массу циклических ссылок друг на друга
Что ещё за дефолтный мир такой? Как напишешь — так и будет, блять.

>Так пришли к чему-то?
Есть чисто растовые гуи, есть байндинги разного качества.

Но в целом раст для гуя — это оверкилл. Даже большие гуи вроде блендера можно написать на питухоне и всё будет ок работать. Если разработчики самой либы рисующей гуй не обосрутся.
Аноним 09/02/22 Срд 15:15:51 2291681 133
>>2291652
Да гуи на расте никому особо и не нужны
Но есть вот такое вот прикольное https://tauri.studio/
Аноним 09/02/22 Срд 15:51:34 2291723 134
>>2291664
>Что за подкаст-то?
Да я уже и не помню, я пачку посмотрел (их там на русском не много, но не помню где именно)
Аноним 09/02/22 Срд 16:33:19 2291771 135
>>2291664
>Но в целом раст для гуя — это оверкилл.
Пытаюсь смотреть на раст на прикладном уровне. Достал уже этот зоопарк языков.
Аноним 09/02/22 Срд 18:15:04 2291858 136
Аноним 09/02/22 Срд 20:05:49 2291953 137
>>2291664
> Но в целом раст для гуя — это оверкилл
одна из типичных фраз из сборника школоты

либа для гуя пишется прекрасно один раз на нормальном языке, а конфигурация настраивается или тыканьем параметров в json или прикручивается слегка дающий логику скриптовый язык поверх, например, Lua (ну или петухон шобы модно-молодежно)
Аноним 09/02/22 Срд 20:40:56 2291972 138
>>2291953
>одна из типичных фраз из сборника школоты
Тебе в школе так сказали?
Аноним 09/02/22 Срд 22:48:59 2292080 139
>>2291972
Жизнь долгая, много таких зеленых повидал и отсеял на собесах
Аноним 10/02/22 Чтв 15:47:25 2292717 140
EbS6xDdQ.png 87Кб, 500x500
500x500
>>2292080
Ого, одноклассников на моковых интервью ебал, говоришь?
Мы вам перезвоним мелкобуквенное чучело.
Аноним 10/02/22 Чтв 16:32:43 2292793 141
>>2291664

> на питухоне

На питухоне консольные ФМ тупят, с гуём проще застрелиться будет.
Аноним 10/02/22 Чтв 16:34:26 2292796 142
>>2291652

> не могут прийти к концепции гуёв

А где могут? Везде кто во что пидоразд пишут, под любую ОС и любую библиотеку на любом языке.
Аноним 10/02/22 Чтв 16:59:42 2292827 143
Ага, для гуев там еще идет многолетняя война IMGUI vs RMGUI и это в отрыве от языка и платформы
Аноним 10/02/22 Чтв 17:20:10 2292840 144
rst.png 5Кб, 325x214
325x214
Я правильно понимаю, что в обоих случаях выхлоп одинаковый:
1) что заводим одну мутабельную переменную и потом изменяем ее значение по ходу
2) что каждый раз заводим новую переменную под любое изменение

выхлоп:
https://godbolt.org/z/bo5e744rc
Аноним 10/02/22 Чтв 17:24:21 2292846 145
895d2107dcaa696[...].jpeg 306Кб, 1539x1057
1539x1057
ss40168ff109f12[...].jpg 162Кб, 1280x720
1280x720
>>2292793
Я рендеринг/лэйаут/и всё остальное, что может лагать хотя бы в теории на питухоне и не предлагаю писать.

Речь, очевидно, про клиентский код — какой язык у тебя там будет строить дерево формочек — вообще похуй, на что пикрил как бы намекает.
Аноним 11/02/22 Птн 16:07:09 2293871 146
>>2292840
https://godbolt.org/z/doj3qeMK8
Можно еще так проверить. Если тут поставить во второй функции 13 вместо 14 они сходятся к одной.
Аноним 11/02/22 Птн 16:14:57 2293880 147
Аноним 11/02/22 Птн 16:24:50 2293895 148
>>2292846
>какой язык у тебя там будет строить дерево формочек — вообще похуй
Ну не совсем. Помню я сидел в QTox'е, весь такой обмазанный безопасностью, а потом услышал что его обновить надо. Потому что у вас видите-ли такое:
https://www.cvedetails.com/cve/CVE-2018-19873/
И как-то мне гадко на душе стало, неприятно так...
Аноним 12/02/22 Суб 06:57:54 2294619 149
>>2293871
>>2293880
Выходы тут - да, получаются одни. Но вот на практике в проектах есть ли варианты к какому стилю лучше стремиться? Типа, что при ограниченном стеке на текущей платформе предпочитать одну мутабельную переменную или, что для теоретически большей безопасности создавать меньшее количество мутабельных переменных и каждый раз для таких простых типов завести обычную новую переменную... или вообще писать как БГ на душу положит, не задумываясь о таком
Аноним 12/02/22 Суб 12:51:37 2294785 150
>>2294619
>Но вот на практике в проектах есть ли варианты к какому стилю лучше стремиться?
Зависит от качества компилятора.
Если он такое говнище, что не может оптимизировать даже подобное (т.е. оптимизации в нём вообще отсутствуют, работает просто как транслятор в асм) — может и стоит.

Любой компилятор на базе LLVM это говно свернёт ещё задолго до этапа генерации кода (https://godbolt.org/z/Ea5PEv8de), так что можешь с чистой совестью
>писать как БГ на душу положит, не задумываясь о таком
Аноним 12/02/22 Суб 12:53:19 2294787 151
Аноним 12/02/22 Суб 14:40:42 2294900 152
Как вкатиться в блокчейн?
Аноним 12/02/22 Суб 22:08:24 2295433 153
Аноним 14/02/22 Пнд 13:51:08 2296758 154
>>2294900
Накати geth эфир, возьми крейт web3 для раста, попробуй сделать что-то типа этого https://etherscan.io/ например по адресу холдера найти все транзакции с ним, или транзакции у определенного токена. Для начала этого хватит, весело и увлекательно Еще нужно где-то пару Тб свободного места и обязательно SSD а то заебешься
Аноним 15/02/22 Втр 10:20:08 2297619 155
>>2292793
ranger тупит не из-за гуя на ncurses, а из-за того, что оно работает в один поток и там очень много странной и тяжёлой логики (типа конвертации изображений в другой формат imagemagick, рендера html консольными браузерами или рендера всяких пдфок, а если отключить превьюшки всего, оно почти не тупит). Если начать работать с превьюшками в отдельном потоке, тупняка станет куда меньше
Аноним 15/02/22 Втр 13:12:52 2297772 156
Аноним 15/02/22 Втр 15:24:43 2297980 157
Посмотрел тут видос как пилится веб проект. Ппц, столько телодвижений чтобы круд сделать, да даже сервис передать.
И при этом сервисы все на Arc и еще какое-то <dyn...> (хз что это, но звучит как рантаймовый костыль).

При этом олды помнят, что раст изначально задумывался как Го - асинхронным сразу (и вроде был ГЦ), а теперь там вообще ничего путного не осталось для прикладного уровня, а эти асинки погоняемые авейтами, та еще хрень (а могли вроде как в гошечке сделать).

Столько говностраданий чтобы получит производительность веб-сервиса на уровне джавы, шарпа или го.



Аноним 15/02/22 Втр 16:14:23 2298050 158
Аноним 15/02/22 Втр 16:31:07 2298073 159
Аноним 16/02/22 Срд 01:19:02 2298569 160
1508628480702.png 79Кб, 444x272
444x272
>>2298050
Что значок Т обозначает?
Аноним 16/02/22 Срд 05:12:06 2298593 161
Аноним 16/02/22 Срд 06:02:55 2298604 162
>>2298593
Вроде понятно, но понятнее не стало.
Аноним 16/02/22 Срд 14:51:23 2298882 163
>>2286737 (OP)
Как омега-самцу-программисту стать альфа-самцом?

https://2ch.hk/sex/res/8141622.html

Есть предположение, что типичный двачер — это сочетание шизоидного и тревожного расстройства личности. Экономика усложняется с каждым годом. Мир усложняется. Если много лет назад мужчины в основном рычали, двигали тазобедренным суставом и охотились, то сейчас появилось много сидячей, компьютерной, удалённой работы. Для успеха нужно много лет потратить на образование и самообразование, убить молодость и социализацию, чтобы потом ты стал хорошим специалистом, хорошо владел английским, ковырял баги в дебаггере, месил мьютексы и семафоры, обмазываясь многопоточностью и асинхронностью, мигал лампочками на STM32, каждый день самостоятельно учился чему-то новому и загребал доллары, вписался в экономику XXI века. Что в итоге?

У инцела шизоидное расстройство. Он — церебротоник ("мозговитый"). Высокий IQ, интроверт, линуксоид. Много ресурсов тратит на мышление, калории сжигаются, он всегда уставший, апатичный. Ускоренный обмен веществ. Логик. Рационал. Не развита эмоциональность. Сух, зануден. Душнила (душный человек). Не способен адекватно рассказать о своих хобби, интересах, потому что они сложные наподобие "запилить свой процессор на FPGA своей архитектуры и микроархитектуры, а потом для него компилятор написать". Когда начинает рассуждать про монады и моноиды, Haskell и Erlang, тянки разбегаются, затыкая уши.

У инцела тревожное расстройство вследствие воспитания в однополой семье "мать плюс бабушка". У Дениса Бурхаева было ещё хуже: мать + бабка + сестра матери, они втроём пытались его воспитать даже не образцовым пионером, а образцовой пионеркой. Поскольку двачер потратил молодость на умственное, а не физическое развитие, да ещё и мать с бабкой стращали его, дрессировали и запугивали, то получился результат, как на картинке 1. Рост — средний по популяции, астеник, есть дефицит массы тела, одна кожа да кости. Драться не умеет
Аноним 16/02/22 Срд 20:42:15 2299268 164
Аноним 16/02/22 Срд 22:46:48 2299381 165
>>2298882

Ебало представили? Инцелошиза прям из экрана течёт. Он наверное дрочил пока это писал.

Таким людям просто не нужно общаться с быдлом. После окончания школы это несложно. Ну и опционально творожность полечить таблетками, если уж прям кроет.
Аноним 16/02/22 Срд 23:46:42 2299429 166
Сап, растаны.

Есть какое-то нормальное решение для мини-оркестратора?

Задача-минимум - чтобы при своем старте одна программа стартовала несколько других в фоне, а при завешении точно так же завершала эти несколько других. Мониторинг состояния и перезапуск при падении не обязательны.

Не, я могу что-то подобное родить и сам, но наверняка есть готовые решения...
Аноним 17/02/22 Чтв 01:39:12 2299514 167
>>2288205
Отбой, прекрасно распаковывает. Надо было просто грамотно установить.

Для VSCodium скачать отсюда ".vsix" под свою систему https://github.com/rust-analyzer/rust-analyzer/releases/tag/nightly
И в Extensions поставить через пункт менюхи "Install from VSIX..."
Аноним 17/02/22 Чтв 16:59:41 2300054 168
>>2299429
struct Yoba(std::process::Child);
impl Drop for Yoba { fn drop(&mut self) { self.0.kill() } }

В мейне просто используешь std::process::Command, пихаешь все чайлды в йобу, а все йобы в один вектор. Вот тебе и твой мини оркестратор.
Аноним 17/02/22 Чтв 18:14:59 2300145 169
impl View for FrameView<'_>
трейт требует статик
этого бы не произошло, если бы вместо передачи во фрейм ссылки на буфер, фрейм использовал свой. как в расте выделить буфер фиксированного размера в рантайме? да не инициализированный буфер юзать опасно, но мне нужен . так понимаю надо делать vec::with_capacity? а потом передавать референс в read? и подразумевается, что реаллокаций не будет?
Аноним 17/02/22 Чтв 19:46:02 2300232 170
>>2300054
Ну чел явно хочет абстрактной фабрики синглтонов и развесистого фреймворка же, кек.

>>2300145
Научись мысли лучше выражать, или код сразу кидай, прочитал раз 5 — нихуя не понятно.

Вот все варианты, от вектора до ковыряния в байтах:
https://stackoverflow.com/questions/32414567/allocating-a-buffer-on-the-heap-at-runtime
Аноним 17/02/22 Чтв 20:13:10 2300273 171
>>2300232
> Ну чел явно хочет абстрактной фабрики синглтонов и развесистого фреймворка же, кек.

Нет, я как раз ищу максмально простое решение без вагона зависимостей Мой хэлловорлд и так уже разросся до 500 крейтов, ебать... А функционала толком и нет

>>2300054
Спасибо, попробую!
Аноним 17/02/22 Чтв 20:55:54 2300314 172
>>2300232
>Научись мысли лучше выражать, или код сразу кидай, прочитал раз 5 — нихуя не понятно
Ну так я специально так написал.
Один хуй сделал как и до этого делал. через макрос для вектора. Чтение в вектор всё равно не меняет его размер.
Аноним 19/02/22 Суб 15:31:14 2301578 173
почему на расте никто не пишет?
Аноним 19/02/22 Суб 16:13:25 2301604 174
Аноним 19/02/22 Суб 22:10:10 2301836 175
253102569773334[...].mp4 1835Кб, 576x1024, 00:00:10
576x1024
>>2294619
На практике второй вариант это идиоматический Раст. А еще идиоматичнее убрать b и вернуть выражение напрямую. Иммутабельность по дефолту, мутабельность только если без нее никак. В хорошо написанном Раст коде очень редко когда видишь mut.

Олсо, в Расте обьявление "переменных" это не совсем то, что в дефолтных языках вроде JS или Питухона. Их нужно рассматривать больше как не переменные, а просто обозначения у кто держит ownership значения, и shadowing это не что-то плохое как во многих других языках. Например, у меня на работе есть такой код (примерно):

```
let svg = createSvg(a, b);
let svg = applyXslt(svg);
let svg = correctBoundaries(svg);
```

То есть по сути идет простая композиция функций, просто в Расте нет возможности ее покрасивей написать без обьявления переменной.

Уверен, более опытные растоманы смогут сказать официальными терминами о чем я говорю.
Аноним 19/02/22 Суб 22:56:12 2301883 176
>Олсо, в Расте обьявление "переменных" это не совсем то, что в дефолтных языках
Меня вообще удивляет что это часто пишут не как "объявление" а как "связывание" (биндинг). А левую часть называют паттерном. Настолько часто что я даже не уверен теперь можно ли вообще использовать словосочетание "объявление переменной" в Rust.

>let svg = createSvg(a, b);
>let svg = applyXslt(svg);
>let svg = correctBoundaries(svg);
>в Расте нет возможности ее покрасивей написать без обьявления переменной.

Не уверен что ты имеешь ввиду, но можно сделать impl Svg и запихать туда все эти функции как методы. Тогда получится
let svg = createSvg(a, b).applyXslt(svg).correctBoundaries(svg);
Аноним 20/02/22 Вск 05:39:34 2302019 177
Нашел в телеге обоснование синтаксиса turbofish:

let (oh, woe, is, me) = ("the", "Turbofish", "remains", "undefeated");
let _: (bool, bool) = (oh<woe, is>(me));
/////
let _: (bool, bool) = ("the"<"Turbofish", "remains">("undefeated"));
/////
let l = "the" < "Turbofish";
let r = "remains" > ("undefeated");
let _: (bool, bool) = (l, r);
Аноним 20/02/22 Вск 07:52:46 2302033 178
>>2297619
Там не логика тупит, а неисправимое питухонство. Сначала тупит, но несильно, а потом начинает тупить мощно, без всяких причин, даже в идле. Типичная бесконтрольная помойка работающая непредсказуемо плохо.5
Аноним 20/02/22 Вск 09:10:31 2302050 179
Привет!
Ваш язык никому не всрался и скоро сдохнет
Аноним 20/02/22 Вск 11:05:40 2302108 180
image.png 216Кб, 960x500
960x500
>>2301578
Потому что хардкорный embedded пишут на сях (и даже не на плюсах). Если такое писать, то вероятно, на расте будет один сплошной ансейв без стандартной либы.

Около системное пишут на сях и плюсах.

А для прикладного уровня, он слишком много требует чем дает (см тесты производительности, всякие джавы и шарпы вровень почти идут, в шарпах вообще многие узкие места на сях написаны). Раст слишком много накладывает оверхеда на программиста в прикладном уровне (С++ тоже), такой оверхед там нафиг не нужен.
Самое забавно то, что достигая уровня приложений джавы или шарпа, тебе придется обмазыватьcя Arc, что по сути костыльная сборка мусора. Ну и вероятно ансейвы тоже будут.

Что там в играх уровне ААА, я хз, но вероятно все равно проще накатить С++ ибо тупо либ больше и на проще сделать тяп-ляп и в продакшен. Если ты инди разраб, шарфа с юнити хватит с головой.

Насколько я понял, раст получил первый хайп, когда у него была асинхронная работа как у го "подкапотом". Но они его выпили и он превратился в еще один обычный ЯП.

Так же, есть мнение, что раст поломанный язык. То есть, вся его парадигма владения укладывается только на продукты уровня хеллоу ворда, утилит линукса и прочей мелкой радости. А во всем реально сложном придется прибегать к ансейвам и сборки мусора (rc/arc).

Так же, есть мнение, что языки без исключение непригодны вообще для работы в проектах миллиониках (на прикладном уровне). Ну, то есть, когда у тебя 10К строк кода ты еще можешь ручками потыкать и понять в каком контексте стектрейса упала твоя функция, а когда у тебя плавающая (случайная) ошибка, которая падает в функции, которая дергается в разных местах 10.000 раз, тут ты принтами не отдебажишь, нужен стектрейс чтобы понять в каком из 10.000 случаев упала эта функция.
Аноним 20/02/22 Вск 11:27:20 2302117 181
>>2302050
Он единственный из языков без оверхеда с нормальной экосистемой http://www.modulecounts.com/ Уважай это, Николай.
Аноним 20/02/22 Вск 11:32:40 2302123 182
>>2302108
Забавная паста, но слишком толсто
Аноним 20/02/22 Вск 12:24:49 2302212 183
>>2302123
Не толстил, взвешивал перед тем как потратить усилия на раст. Пытался читать исходники. Не зашел мне, как для прикладной макаке. Возможно в будущем станет как-то лучше. Но я больше надеюсь появиться некий язык со встроенной асинхронщиной (как в го), чтобы не дрочить эти async await и не делить мир разработки на асинхронный и не асинхронный (пускай может сборка мусора отключается через unsafe, а так, в принцепи, value type за глаза хватает чтобы меньше аллоцировать память, на прикладном уровне).

Может для системщика это звучит наивно, но просто мой взгляд.
Аноним 20/02/22 Вск 12:26:22 2302218 184
>>2302108
>Потому что хардкорный embedded пишут на сях (и даже не на плюсах). Если такое писать, то вероятно, на расте будет один сплошной ансейв без стандартной либы.
Ансейф обязан быть только в обвязках обращений с вводом-выводом (что бай дезайн не безопасно). А это всего лишь мизерная часть.
>Скорость
На пикреле. Используя идиоматичный Rust такая же как у Си и С++. Когда допишут бэкенд GCC (написание спонсируется) возможно станет еще быстрее. Считается что LLVM хуже оптимизирован.
>Самое забавно то, что достигая уровня приложений джавы или шарпа, тебе придется обмазыватьcя Arc, что по сути костыльная сборка мусора.
Арк нужен только при специфичной многопоточности - изменяемого асинхронного разделения ресурса. При этом является обычным подсчетом ссылок (без сборщика мусора, как в Яве или Шарпе).
>Ну и вероятно ансейвы тоже будут.
Они не обязательны в этом примере, не хочешь - не надо. Safe Rust - Тьюринг-полный язык.
>Что там в играх уровне ААА, я хз, но вероятно все равно проще накатить С++ ибо тупо либ больше и на проще сделать тяп-ляп и в продакшен. Если ты инди разраб, шарфа с юнити хватит с головой.
Я считаю что Rust совсем не подходит для написания игр. Возможно только IO/разбор пользовательского ввода к ним, так как обеспечивает безопасность.
>Насколько я понял, раст получил первый хайп, когда у него была асинхронная работа как у го "подкапотом". Но они его выпили и он превратился в еще один обычный ЯП.
Инфа неверная. До 2014 года (до версии 1.0 если не ошибаюсь) в Rust были грин-треды как в Го и сборщик мусора. Кстати, Rust единственный на сегодня язык который обеспечивает безопасность от гонки по данным и отлавливает 100% таких ошибок при компиляции.
>Так же, есть мнение, что раст поломанный язык. То есть, вся его парадигма владения укладывается только на продукты уровня хеллоу ворда, утилит линукса и прочей мелкой радости. А во всем реально сложном придется прибегать к ансейвам и сборки мусора (rc/arc).
Сборки мусорка как я уже указал нет, есть подсчет ссылок которого не избежать ни в одном языке программирования. Это самая легкая версия обеспечения непротиворечивого мутабельного асинхронного (многопоточного) доступа к ресурсу. Ансейвы могут пригодиться для оптимизации работы некоторых алгоритмов - при использовании циклических структур данных (но необязательны). Они нужны при доступе к функциям из библиотек других языков программирования (т.н. FFI). Если использовался не идиоматичный Rust вкупе с большим количеством трейтов, дженериков и ссылок придется иногда поставить unsafe (но лучше все-же переписать как положено если есть возможность).
>Так же, есть мнение, что языки без исключение непригодны вообще для работы в проектах миллиониках (на прикладном уровне). Ну, то есть, когда у тебя 10К строк кода ты еще можешь ручками потыкать и понять в каком контексте стектрейса упала твоя функция, а когда у тебя плавающая (случайная) ошибка, которая падает в функции, которая дергается в разных местах 10.000 раз, тут ты принтами не отдебажишь, нужен стектрейс чтобы понять в каком из 10.000 случаев упала эта функция.
Стектрейсы есть, но они не на экспешенах работают - таким же образом как работают отладчики. Просто получают коллстэк момента вызова.
Исключения считаются вредными в 2022, современные ЯП пишут без них т.к. в большинстве ситуаций они не отличаются от паник приложения - не выполняют свою основную функцию возобновления работы программы после исключительной ситуации. Поскольку в большинстве случаев не позволяют восстановить программу в каком-либо вменяемом, рабочем состоянии. Чтобы использовать их правильно нужно очень аккуратно писать логику и сильно подстраиваться.
Аноним 20/02/22 Вск 12:28:27 2302225 185
ыфвфыв.png 197Кб, 1620x869
1620x869
Пикрел
Аноним 20/02/22 Вск 12:33:26 2302241 186
Аноним 20/02/22 Вск 12:38:05 2302250 187
>>2302108
Бесполезно спорить, только время покажет. Мания переписывания всего и вся у сообщества скоро закончится, а вот сколько корпорации эту херню пиарить будут, вот это интересно.
Аноним 20/02/22 Вск 12:54:03 2302283 188
>>2302218
>подсчет ссылок которого не избежать ни в одном языке программирования. Это самая легкая версия

и самая уебищный подход, который в люом не хелло-ворлд приложухе приводит к утечкам памяти, с которыми без поллитры не разберешься
и все это параллельно восхваляемой "безопасности"
Аноним 20/02/22 Вск 12:54:09 2302284 189
Аноним 20/02/22 Вск 12:59:56 2302295 190
image.png 175Кб, 400x275
400x275
Аноним 20/02/22 Вск 13:05:40 2302304 191
>>2302108
>Ну, то есть, когда у тебя 10К строк кода ты еще можешь ручками потыкать
rust-lang 1.78 млн.
redox 1.33 млн.
diem 300 тыс.
tikv 300 тыс.
Veloren 200 тыс.
Аноним 20/02/22 Вск 13:18:34 2302334 192
>>2302283
Приведи пример пожалуйста, я просто не профессор. Когда объект выходит за скоуп рефкаунтер уменьшится. Где тут возможность для утечки?

>>2302295
Мемори лик не решается ни в одном языке программирования. Странно было бы этого ожидать от Rust. Можно сравнить такое требование с требованием поиска компилятором возможных бесконечных циклов. Это неразрешимая задача.

Вот пример
fn main() -> Result<(), Error> {
let leak = Vec::with_capacity(take_n_from_input()?);
loop { / Program main loop ... / }
Аноним 20/02/22 Вск 13:25:38 2302346 193
Аноним 20/02/22 Вск 13:32:05 2302355 194
>>2302334

в основном проблема с циклическими зависимостями, без которых весьма проблематично бойтись в не-хелло-ворлде

memory leak решается в любом языке программирования с нормальным сборщиком мусора.


я тоже не профессор, но, к примеру, питонщики последние годы очень жалеют, что завезли в питон счетчик ссылок, от механизма которого теперь зависит куча библиотек и теперь от него не избавиться.
это приносит огромную головную боль - мешает закатить многопоточность, так как добавление на них мьютексов просаживает производительность
и мешает сделать основной сборщик мусора более эффективным
Аноним 20/02/22 Вск 14:03:16 2302376 195
>>2302355
>в основном проблема с циклическими зависимостями, без которых весьма проблематично бойтись в не-хелло-ворлде
Действительно, есть такое, спасибо. С другой стороны разрешающий эту проблему механизм в сборщиках мусора выглядит как еще одно усложнение рантайма.

Там где совсем тяжко становится можно прибегнуть к методу языка Ada - аренам.

В языке со сборкой мусора можно совершить утечку памяти. Вот тут показано >>2302334 Она не будет отличаться. Тоже создаешь объекты, затем запускаешь бесконечный рабочий цикл программы. Объекты висят до конца работы программы и не используются - это по определению является утечкой памяти.
Аноним 20/02/22 Вск 14:04:08 2302377 196
>>2302218
Забавно, что подсчет ссылок в рантайме перестал быть GC. Зачем вы подменяете понятие? Программисты не такие тупые, как вам кажется.
Аноним 20/02/22 Вск 14:13:06 2302386 197
>>2302218
>Просто получают коллстэк момента вызова.
Исключения считаются вредными в 2022
Кем? Хипстерам которые пишут компилятор?

У тебя магическая ошибка на проде. Спонтанное исключение, которое пишется в лог со стектрейсом, вместо простого лога, что функция "foo не смогла" (и такие точно будут).

И что теперь, ты будешь оборачивать в панику или явно запрашивать стектрейс и потом заливать в прод, чтобы просто хотя бы локализовать ошибку (понять сначала в каком контексте вызовов произошла ошибка).

Блин, сейчас не семидесятые, мы не пишем программы в 1000 срок.
Аноним 20/02/22 Вск 14:15:52 2302391 198
>>2302304
Так я про это и говорю. Язык уже используется на миллионы строк и без вменяемых исключений будет сложно, но конечно можно (способных у нас много).
Аноним 20/02/22 Вск 14:28:32 2302404 199
>>2302377
GC GC рознь. Я так пишу чтобы не отпугнуть новичков, которые подумают что в Rust это якобы так же медленно как и в языке с полноценным сборщиком мусора. С "остановкой мира" при освобождении памяти, и выводом циклических зависимостей о которых анон написал.

Такие проблемы сборщика мусора кстати подвигли Discord переписать свое приложение с Go на Rust. https://discord.com/blog/why-discord-is-switching-from-go-to-rust Там указаны графики. И это при том, что сборщик мусора Go считается одним из самых совершенных.
Аноним 20/02/22 Вск 14:30:48 2302406 200
>>2302391
Так а зачем? Ты же не восстановишь работу приложения. Чем это тогда отличается от простой паники?

Кроме того что от паники оверхеда никакого в отличи от тяжеловесных исключений.
Аноним 20/02/22 Вск 14:37:19 2302410 201
>>2302386
>У тебя магическая ошибка на проде
Приведи пример который нельзя переписать также на Result.

Кроме OOM (который критичен только для системного программирования. Драйверы, там, ядра. Хотя и с этим сейчас решают - Линус сказал что без этого Rust в ядро не попадет)
Аноним 20/02/22 Вск 15:22:16 2302445 202
>>2302376
>Объекты висят до конца работы программы и не используются - это по определению является утечкой памяти.
Нет, утечкой памяти является выделенная память, к которой нельзя получить уже доступ.
Насрать в память и потом не использовать или использовать позже, или использовал, но перестал - это просто проблема оптимизации. Тут нет ключевого понятия "утечка".
Аноним 20/02/22 Вск 15:26:46 2302450 203
Более ракового треда в пр не видел
Что вас сюда всех тянет так?
Аноним 20/02/22 Вск 15:29:58 2302453 204
>>2302404
>Я так пишу чтобы не отпугнуть новичков
Очередная ошибка тупого маркетинга.
Людей надо подготавливать к правде, а не смягчать её или прятать. Лучше он узнает как есть и примет решения, чем потом словит фрустрацию и возненавидит за обман.

То есть, можно прям открыто написать, что существует проблема множественного владения и решается она только вот сборкой, но это сборка такая, а не как СтопЗеВорд.

>Такие проблемы сборщика мусора кстати подвигли Discord переписать свое приложение с Go на Rust.
Компания хайпят себя средствами малых сообществ, которые разносят их лейбл как фанатики. Сейчас бы в 2022 до сих пор верить в этот маркетинговый маневр.
Что и как там написано мы никогда не узнаем. Может там очередной микросервис, который завтра на ноду перепишут, потому что программитов легче найти. Или же там го был написан так, что тормозил, хз, но объективно это очередно буллшит истории успеха.
Аноним 20/02/22 Вск 15:34:43 2302459 205
>>2302404
> И это при том, что сборщик мусора Go считается одним из самых совершенных.
Лол, они там в 12 или 15 версии, тупо забили на гц и тупо переписали (сдвинули рычаг) на частое срабатывания (там еще эти умные слова типа латенсети и прочее). В общем, они тупо взяли и разменяли память, на процессорного время (очень часто срабатывание). Когда в жабьих мирах ты можешь выбрать, как часто дергать ГЦ с "Stop the World", тут просто всех поставили перед фактов и все приложение стали жрать на 10-20% проца (от мы офигели).
Аноним 20/02/22 Вск 15:37:50 2302464 206
>>2302406
Приложение может восстановится. Например упало при http запросе, зачем ронять сервак.
Во вторых это нужно чтобы записать в лог сразу с стектрейсом, что позволяет понять
-когда падало,
-что падало
-и где именно падало.
Аноним 20/02/22 Вск 15:52:24 2302474 207
>>2302410
Я уже все объяснил.

У клиента раз в месяц происходит странная ошибка, данные записывают в документ некорректно.
Ты же умный разработчик, ты ведешь логи. И просишь клиента прислать логи программы. Там написано, что упала функция foo, типа там какой-то null (None) прилетел. Ты запускаешь, у тебя не падает. Что делать то? Надо понять при каких условиях это происходит. Но функция вызывается 10.000 раз в 10.000 разных местах. Что делать? Ты оборачиваешь в панику, отдаешь клиенту и ждешь месяц.

Через месяц приходит ответ и ты видишь, что в определенном стекевызовов, сервис отрабатывает некоретно (потому что клиент делал редкие манипуляции, о которых ты даже не ожидал и вообще не знал).
Фиксишь проблему за 1 минуту, решения которой стоило месяц.
Заходишь на форум и пишешь как исключения и стекстрейсы ненужны.

Аноним 20/02/22 Вск 15:56:11 2302478 208
>>2302450
>Что вас сюда всех тянет так?
Это самый безопасный тред.
Ошибка буллшитного маркетинга. Ты наслушаешься сладостей, а потом начинаешь копать и натыкаешься на суровую правду. Фрустрация, ощущения обмана - ты начинаешь ненавидит язык, вместо простого игнора. Вот такие последствия агрессивного маркетинга, как ты хотел?
Аноним 20/02/22 Вск 16:08:14 2302497 209
Я не вижу ошибок маркетинга, а вижу одного шизика, который называет rc сборкой мусора и срет из треда в тред. Не понравилось — съеби, без тебя разберёмся.
Аноним 20/02/22 Вск 16:22:58 2302510 210
>>2302497

странно называть rc - gc

но кофнликт

вопли о безопасной работе с памятью vs без rc (который изначально error prone)

забавен со стороны
Аноним 20/02/22 Вск 16:24:05 2302511 211
>>2302510

- но кофнликт
+ но конфликт

- вопли о безопасной работе с памятью vs без rc (который изначально error prone)
+ вопли о безопасной работе с памятью vs без rc (который изначально error prone) вообще никуда в полноценном приложении
Аноним 20/02/22 Вск 16:45:29 2302531 212
Ну вот писал простую программу с внешним крейтом. При запуске программа крашнулась без сообщений. В дебаггере определил, что крашится в момент входа в функцию внешнего крейта. Чекнул исходники, там куча ассертов. Возможно ещё перенаправил стандартные файловые дескрипторы процесса, поэтому нет сообщений о панике.
Насчёт проблемы остановки, такая хуйня чекается пруверами, и в ATS такая возможность есть. Также в атс есть линейные и зависимые типы. Там есть безопасная арифметика указателей и прочие байтоёбские игрища. Встраивание сишки проще, чем в расте.
Аноним 20/02/22 Вск 16:51:49 2302536 213
>>2302474
>>2302464
А чем вам обычные стектрейсы не подходят?
#![feature(backtrace)]
use std::backtrace::Backtrace;
pub fn main() {
println!("{}", Backtrace::capture());
}
Вкупе с таким https://play.integer32.com/?version=stable&mode=debug&edition=2021&gist=98c155cc9ad381021a2ada5d961ed2e5

Почему вам именно эксепшен хэндлинг надо? Даже в комитете С++ признают что надо что-то c этим делать http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0709r4.pdf

>>2302478
Создатели Rust целились в С++, неудивительно что сложно получилось. Вместо того чтобы орать ВСЕ ЭТО БУЛЛШИТ. Укажи что конкретно буллшит, и желательно еще указать как бы ты сам хотел видеть решение проблемы. Тогда будет шанс что услышат и запилят, если это что-то стоящее внимания.
Аноним 20/02/22 Вск 17:07:56 2302554 214
>>2302536
>Почему вам именно эксепшен хэндлинг надо?
Потому что чел 10 раз написал — ему похуй зерокост там или хуйкост, он хочет как в шарпах и джавах языках — упало — вот тебе стектрейс, причём symbolicated (хуй знает как это на русский перевести), а не залупу с адресами после стрипа бинарника.
Аноним 20/02/22 Вск 17:15:27 2302561 215
>>2302346
это база, я кстати не смог прочитать это говно (не образец, а язык)
какого хуя функция возвращает Ptr, там берется result = mem.len()
последнее выражение в функции result
И ОНО ВОЗВРАЩАЕТ ПТР
Аноним 20/02/22 Вск 17:16:19 2302563 216
>>2302531
>Ну вот писал простую программу с внешним крейтом. При запуске программа крашнулась без сообщений. В дебаггере определил, что крашится в момент входа в функцию внешнего крейта. Чекнул исходники, там куча ассертов. Возможно ещё перенаправил стандартные файловые дескрипторы процесса, поэтому нет сообщений о панике.
Как тут проблема языка? Я тебе таких крейтов сто штук в день могу налепить. Не суй в рот непонятно что, не разобравшись.
>Насчёт проблемы остановки, такая хуйня чекается пруверами, и в ATS такая возможность есть.
Не чекается пруверами проблема остановки, она неразрешима в общем случае.
> Также в атс есть линейные и зависимые типы. Там есть безопасная арифметика указателей и прочие байтоёбские игрища. Встраивание сишки проще, чем в расте.
Но он вышел позже Rust, когда он уже был на волне. И снискал поддержку мозиллы в развитии экосистемы. Без которой уже ни кто не хочет браться за язык для написания чего-то реального, только в исследовательских целях. Увы. Есть еще такой момент золотой середины - не переборщить с фичами иначе это оттолкнет народ. Часто жалуются на Rust что он слишком сложен для приходящих с динамически-типизированных языков. Создатели явно указали что целились при дизайне в недовольных Крестовиков (а не удрученных скоростью исполнения Хаскеллистов).
Аноним 20/02/22 Вск 17:17:27 2302567 217
Снимок экрана 2[...].png 149Кб, 1022x416
1022x416
Аноним 20/02/22 Вск 17:18:32 2302568 218
>>2302531
Сейчас по серьезной переработке С есть проекты двух типов.
1. Безопасность за счет тесной интеграции программной и аппаратной части, + суперсет языка С. CHERI
2. Субсет языка С.
>>2302567
ЕБАТЬ он жирный, пиздец. Я не в глаза ебусь, я просто не растер. Ты скажи, он это чтобы потролить сделал?
Аноним 20/02/22 Вск 17:20:49 2302570 219
>>2302568
> чтобы потролить
Да.
Аноним 20/02/22 Вск 17:23:40 2302575 220
>>2302568
>Ты скажи, он это чтобы потролить сделал?
>The Most Memory Safe Buffer Overflow in Rust!
Нет, блять, он на полном серьёзе высрал эту кучу говна.
Вот с этого ещё подливы выдавил — https://rustrecoveryfoundation.neocities.org.

Аноним 20/02/22 Вск 17:24:27 2302578 221
Аноним 20/02/22 Вск 17:29:21 2302582 222
Такс значит что происходит
Создает пустой вектор чаров.
Пушит 15 пробелов, buffer = 0.
Пушит "password\0", password = 15.
Пушит 15 пробелов, отбрасывается возврат 24.
А дальше хуета какая-то, реально говнище. Специально написал какой-то свой менеджер памяти блядь и переписал в нем чета.
Я так понимаю, у вас есть альтернативы его read_line_into_buffer()?
Аноним 20/02/22 Вск 17:32:03 2302586 223
>>2302554
Так он неправильный strip делает. Ему надо с флагом -d
Мой хеллоуворлд (и стандартная библиотека) с полным стрипом 314кб
а с сохранением дебаг информации 375кб.

Гораздо выгодней чем эксепшоны.
Аноним 20/02/22 Вск 17:40:01 2302603 224
>>2302568
Сейчас по серьезной переработке С есть один-единственный проект - сам С, развиваемый комитетом. И он просто очень неспешно добавляет в опциональную часть стандарта новые плюшки, вроде потоков и мютексов.

С - это как ебаный топор:
- свою задачу выполняет на 120%;
- в рамках своей задачи идеален по эргономике - ни добавить, ни убрать;
- им хуярил твой дед, им будут хуярить твои внуки;
- одно неверное движение и ты остался без ноги.

Раст больше напоминает мультитул с алиэкспресса:
- прорезиненная непонятным пластиком рукоять осыпается на морозе и липнет в жару;
- инструменты мешают друг другу;
- некоторые вообще не открываются или недофрезерованы;
- основная заявленная киллер-фича - ручная фреза, но никто так и не разобрался, как ее запустить, а продавец на все вопросы шлет смайлики и закрывает тикеты;
- держать его можно только двумя руками - и похуй, что ты хотел просто поточить карандаш.

Не, выглядит интересно. Стильно, модно, молодежно. Иногда даже прикольно и удобно. Но явно не то, что может завоевать массы.

У меня есть претензии и по существу, но их писать дольше и скучно. Когда-нибудь потом.
Аноним 20/02/22 Вск 17:40:47 2302607 225
out.jpg 325Кб, 1440x1080
1440x1080
Аноним 20/02/22 Вск 17:41:40 2302612 226
Аноним 20/02/22 Вск 17:46:27 2302617 227
>>2302603
> потоков и мютексов
C11, больше вроде бы ничего такого потом не делали.
Ну я посматриваю за С23, чета там дичь, не видел кстати (изменений у) потоков, мьтексов; лямбды передумали вводить.
Удобные штуки для препроцессора, тип bool часть языка О_О, какие-то бафы printf(), функции для защиты от целочисленных UB - в общем мелочи, этого мало.

Перспективно статическими анализаторами заниматься, проверки везде прикручивать, вот, __FORTIFY_SOURCE=3 скоро будет в gcc, все такое. Но это не стандарт, это просто в теории полезно.
Аноним 20/02/22 Вск 17:47:22 2302622 228
>>2302617
> __FORTIFY_SOURCE
И вот если так написать, то в ответ будет тишина...
Аноним 20/02/22 Вск 17:48:36 2302629 229
>>2302568
>>2302570
>>2302567
Не пиздите, это самый нормальный ИТ стример на твиче. Хаскелист, сишник, растер и вооще на елде дудец.
Аноним 20/02/22 Вск 17:49:14 2302632 230
>>2302603
> У меня есть претензии и по существу
В принципе мне достаточно инфлюенса от этого, чтобы не учить раст. Я просто начитался буклетов про него, где вкратце про эти борроу чекеры, семантики владения и все такое, прямо интересно стало.
Аноним 20/02/22 Вск 17:54:10 2302646 231
>>2302617
А, ну еще (unsigned)? _BigInt(N)
прикиньте, можно результат от SHA256 положить в один интежер, а не в буфер, потом его поксорить с таким же результатом так : a ^ b, а не bxor(a, b, SHA256_SZ);
Аноним 20/02/22 Вск 18:18:10 2302692 232
Аноним 20/02/22 Вск 18:20:49 2302700 233
Аноним 20/02/22 Вск 18:21:48 2302701 234
>>2302700
Я свой выбор уже сделал.
Аноним 20/02/22 Вск 18:22:58 2302704 235
image.png 1123Кб, 1099x1097
1099x1097
Аноним 20/02/22 Вск 19:01:17 2302783 236
>>2302212
>Но я больше надеюсь появиться некий язык со встроенной асинхронщиной

https://alan-lang.org/
Аноним 20/02/22 Вск 19:20:54 2302804 237
haskell.jpg 246Кб, 1024x768
1024x768
>>2302607
Всегда проигрываю, когда домашнее фп макаки впервые видят реальный продуктовый код. Либо ты костылешь и пишешь все ручками сам, либо плавно натягиваешь готовую абстракцию над абстракцией.

У меня даже на процедурке петпроект уходил за 10-30 вложенности. Если писала целая команда, думаю за сотню наворотили точно.
Аноним 20/02/22 Вск 19:24:06 2302812 238
>>2302783
Скоро каждая пиццерия будет писать свой яп.
Аноним 20/02/22 Вск 19:25:55 2302813 239
rust.png 1162Кб, 699x933
699x933
>>2302692
>У нас уже есть на ютубе 2д девочк
Сразу олицетворяет комьюнити раста.
Аноним 20/02/22 Вск 19:33:51 2302825 240
Аноним 20/02/22 Вск 19:41:42 2302829 241
>>2302804
>Либо ты костылешь

В этом ITT треде байтослесари сознаются, что с самого рождения опускаются на дно чана с говном и не покидают его до конца жизни. Любые формализмы, логические системы, концепции, идеи, правила проектирования, да и просто хорошего тона, чувство вкуса — все это для байтослесаря чуждо, он пытается убедить себя, что всего этого не существует в реальном мире.

Лаба1, обертки над обертками, вот я жизнь повидал, у нас в армейке/на зоне и не такое было, а ты теоретик лаборант говна не нюхавший, в реальной жизни все иначе, вот у меня на заводе кудах-тах-тах! — кричит он, наворачивая очередной черпак дерьма, жадно причмокивая.
Аноним 20/02/22 Вск 19:47:57 2302835 242
>>2302563
>Как тут проблема языка
это было к слову о паниках при ошибке. здесь или ещё спрашивал, почему box не возвращает result например, послали нахуй, типа нинужно, а линуса послушали. подгорело с такого дизайна либ Хотя в расте, вроде, вместо box юзали тильду ~, а потом убрали.

>Не чекается пруверами проблема остановки
её же не существует для языков не полных по тьюрингу. типа кока, агды и т.д.

>вышел позже Rust
вроде нет. он просто очень перегруженный
вот двоичное дерево поиска на линейных типах
https://github.com/githwxi/ATS-Postiats/blob/7f5bea78c8849e730ca9b89bb513d25674b06ae5/doc/BOOK/INT2PROGINATS/CODE/CHAP_DATAVTYPE/bstree_vt.dats
ну и сообщения о ошибках там пиздец полный
Аноним 20/02/22 Вск 19:54:52 2302841 243
>>2302825
Если сделаешь, будет
Аноним 20/02/22 Вск 19:57:17 2302843 244
>>2302829
> Любые формализмы, логические системы, концепции, идеи, правила проектирования
Петухан, твои паттерны проектирования на собес за 200 это не не формализмы и не логичекие системы.
Аноним 20/02/22 Вск 20:01:51 2302853 245
>>2302804
> У меня даже на процедурке
> даже на процедурке
> даже
Жирно пиздец.
Аноним 20/02/22 Вск 20:11:58 2302861 246
Вы откуда вылезли, долбоёбы? Дохуя функциональщины с эксепшенами, они от этого не перестают быть функциональными, просто не чистыми.
Аноним 20/02/22 Вск 20:12:36 2302862 247
14899270571641.webm 2839Кб, 1280x720, 00:00:10
1280x720
>>2302843
>твои паттерны проектирования
Индусобыдло процерирует.
Аноним 20/02/22 Вск 21:17:48 2302912 248
>>2302861
Я вообще неофит и мимошел, но в чем прикол ФП, если под капотом выполняется простыня императивного кода? Чем это отличается от написанной функции?
Аноним 20/02/22 Вск 22:19:52 2302951 249
>>2302912
прикол в том, что тебя это ебать не должно. это называется абстракция.
>Чем это отличается от написанной функции
меньше рутины
Аноним 20/02/22 Вск 23:16:40 2303000 250
>>2302951
> прикол в том, что тебя это ебать не должно. это называется абстракция.
Присоебиняюсь. А любой, кто что-то на это гавкнет - пусть молча проходит в ассемблеротред.
Аноним 21/02/22 Пнд 00:31:25 2303037 251
>>2302912
Причем здесь то, что под капотом? В Хаскелле тоже под капотом машинный код.

Язык программирования для человека в первую очередь. Для абстракций, кооперации с другими разработчиками, удобного чтения, поддержки, расширения. ФП взамен на некоторые ограничения дает свои преимущества.

А то что под капотом вообще значения не имеет. Офк когда речь идет не о критических местах, где важна производительность, там уже да, можно пожертвовать поддержкой ради ебли указателями и имеративным грязным кодом.
Аноним 21/02/22 Пнд 00:42:13 2303042 252
>>2302617
>>2302646

Чел, вот именно поэтому С - язык системного программирования последние 50 лет, и еще на 50 лет вперед им останется. Rust, тащемта, неплохой язык, но им надо вектор и методологию развития пересмотреть, и тогда он взлетит.

>>2302632

У Раста глобально две основные проблемы: дичайший false advertising и базарная разработка в ее худшем виде.

Первая проблема лично меня вводит в полнейшее недоумение. Раст почему-то упорно рекламируют как язык системного программирования, хотя он для этого а) никогда не предназначался и поэтому б) подходит как мокрый валенок для забивания гвоздей.

В Расте даже с первого взгляда видно очень много высокоуровневых абстракций, которые во-первых жрут ресурсы, а во-вторых ведут себя под капотом непонятно как, скрывая кучу тонкостей и нюансов от программиста.

Более того, многие из этих абстракций еще и не откручиваются толком. no_std в стабильном (!) компиляторе был поломан шесть (!!) лет это ко второй проблеме, кстати, тоже относится, а собрать что-нибудь сложнее fn _start() { loop {} } вообще не получится - нужно портировать core под целевую платформу, что есть задача весьма нетривиальная. Для сравнения: чтобы использовать все фичи языка C, не нужно ничего, кроме собственно компилятора C.

Если же танцуя с бубном и принося в жертву девственниц часть абстракций все-таки попытаться открутить, то внезапно окажется, что мы получили программу на почти чистом С, но с синтаксисом джаваскрипта. И 100% unsafe в каждой строчке. Стоило оно того? Да, потом на базе этого можно построить безопасный интерфейс, но...

И самое главное, я категорически не понимаю _зачем_ это делают. Раст отлично подходит для написания сложных высокопроизводительных сетевых многопоточных программ - неудивительно, учитывая тот факт, что главным драйвером его развития был и остается веб-браузер. Иными словами, Раст - конкурент C# / Java / Go, позволяющий добиться по сравнению с ними бОльшей производительности и предсказуемости, и при этом еще и меньшего потребления памяти ценой чуть более высокого порога вхождения и небольшого увеличения времени разработки что очень актуально в наше время затянувшегося дефицита полупроводников и в целом кризиса пролупроводниковой микроэлектроники. Но его никак нельзя сравнивать с C++ и тем более с С. Не системный это ЯП ни разу. То, что люди умудряются писать на нем ОС, дрова и прошивки - ну, так и на JS умудряются, что с того?

Рекламируйте Раст правильно - и от него будет не оторваться.

Что до второй проблемы... Раст разрабатывается сообществом по базарной модели. Демократия, открытость, голос каждого важен, все дела.

На словах вроде бы заебись, а по факту получается ситуация из басни про лебедя, рака и щуку: единое представление о проекте отсутствует как класс, каждый тянет в свою сторону и при этом никто не хочет брать на себя ответственность.

Баги вместо того, чтобы фикситься, приобретают статус мемов, которыми отвечают забредшим в issue на гитхабе или на форум. Баг с no_std шесть лет обсуждали, как исправить. Спасибо хоть исправили. Не с первой попытки, правда.

Обсуждения критически важных фич продолжаются годами. На материалах комментов к некоторым дискуссиям пара аспирантов себе диссертации могут написать, при этом ни строчки кода в компилятор ни единая блядь не добавит.

В коммьюнити уже по-моему отдельный вид онанизма - кто напишет более красивый RFC, на основе которого другие онанисты потом будут писать - нет, вовсе не код - другие RFC на ту же тему.

По той же причине язык и компилятор представляют собой дикое лоскутное одеяло, на которое без слез и поллитры не взглянешь. Уж на что плюсы клеймили за то, что они все подряд к себе тащат и не всегда это выходит последовательно и идеоматично, но Раст ИМХО переплюнул вообще все ЯП на свете в этом плане. Почему, блядь, например:

- iter и into_iter
- as_ref и as_mut
- as_ptr и as_mut_ptr

называются по-разному, если семантически они параллельны?! Вопрос "хули вы там обсуждаете годами, если на выходе вот такое" вообще задавать смысла нет - некому на него ответить.

В других проектах подобное решается либо узким советом избранных, как в плюсах, либо вообще единолично, как было до этого с питоном и все еще есть с ядром Линукс. Да, обсуждения и вклад более чем приветствуются, но в ситуации, когда необходимо принять решение, его есть кому принять. В коммьюнити Раста решения принимать некому.

Отличный пример, почему прямая демократия никогда не будет работать, кстати.

Без исправления этих двух проблем ИМХО Раст так никогда и не созреет, как язык, оставшись фактически очень прикольной концепцией и уделом любителей хайпануь.

Не хотел ведь писать... Ну пусть будет, для следующих поколений юнош бледных со взглядом горящим.
Аноним 21/02/22 Пнд 01:37:35 2303056 253
Лолблядь, представили ебало шизика, который эти стены текста строчит? Ты случаем не из столяровских лунопопых, нет?
Аноним 21/02/22 Пнд 02:00:29 2303059 254
>>2303042
Раст с стд такой же по скорости, как и С. Нет причины "откручивать абстракции", ими как раз и нужно пользоваться, ведь они лоу-кост (бред про "жрут ресурсы").
Аноним 21/02/22 Пнд 02:06:23 2303062 255
>>2303042
>Раст - конкурент C# / Java
Там такое чудо нафиг не нужно, что пишут в промышленном программирование байтодрочу и не снилось. Эта область давно обросла такими потребностями, что уже все равно когда ты там соберешь память, главное чтобы за неделю она у тебя не фрагментировась.

Демократии тут вообще нет, так как нет выбора управляющих. Суть демократии это не голосование фичь, а возможность смены руководство, которое и будет принимать решение. Хорошее руководство естественно нужно, но проблема как выбрать хорошее руководство? И как сменить руководство, если оно вдруг плохое? И вот как раз выборы эту проблему решают. забавно что выросло поколение, которые не понимают такие простые основы
Аноним 21/02/22 Пнд 02:08:05 2303063 256
>>2303059
Все вспоминаю мою первую фрустрацию с зеро абстракшен. Когда узнал, что в цикле каждую итерацию чекается граница списка.
Аноним 21/02/22 Пнд 08:49:33 2303121 257
Аноним 21/02/22 Пнд 09:50:29 2303135 258
>>2303059
Я тут недавно наткнулся на серию статей "Learn Rust the Dangerous Way".

Вроде прикольная идея: чувак берет хорошо оптимизированную программу на С и постепенно превращает ее в программу на идеоматичном Расте, попутно показывая, что производительность не теряется а даже совсем наоборот.

Я читал и прям радовался - ну надо же как все красиво и правильно!

Вот программа, переписанная "в лоб", она чуть отстает от сишного оригинала.

Вот чуть допиленная и избавленная от unsafe версия, она уже почти на равных.

А вот итоговый вариант, и он даже быстрее оригинала!

"Прям сказка какая-то", - подумал я. И решил проверить.

И не зря.

По факту версия, переписанная "в лоб" с кучей unsafe оказалась самой быстрой, но даже она отставала от сишного оригинала почти в два раза (а вовсе не на 30%, заявленных в статьях).

По мере же приведения к более "православному" виду программа становилась все медленнее и медленнее.

Итоговая канонiчная версия отставала от сишной уже в три раза.

Я игрался с оптимизациями, пробовал разные версии компиляторов GCC, CLang и Rust, собирал и запускал на разных процессорах - без толку. Тщательно оптимизированная сишная программа рвала растоподелие как Тузик - грелку.

Вопреки всему тому, что было написано в статьях.

Ну и как после такого вообще доверять сообществу раста?..
Аноним 21/02/22 Пнд 09:51:45 2303139 259
>>2303059
Необходимость обмазываться unsafe для ССкорости уже пофиксили?
Аноним 21/02/22 Пнд 10:01:44 2303147 260
>>2303135
скриншоты бы хоть прикрепил
надеюсь додумался хотя бы релизную сборку собирать, а не как тот студент из статьи что в тред кидали
Аноним 21/02/22 Пнд 10:41:25 2303187 261
>>2303147
Чел, я как бы в этом говне немножко понимаю, если что.

Скриншотов у меня нет, я их тогда не делал, а щас повторять влом уже. Вряд ли с тех пор что-то изменилось, впрочем.
Аноним 21/02/22 Пнд 10:50:59 2303192 262
>>2303135
Ты где-то наебался, скорее всего специально. Соси хуй.
Аноним 21/02/22 Пнд 11:11:44 2303205 263
>>2303187
И что, даже не стал разбираться почему перфоменс в 2 раза упал?
Просто бенчи сделал и ушел?
ну ты и скучный
Аноним 21/02/22 Пнд 12:29:57 2303255 264
image.png 105Кб, 512x512
512x512
Сейчас знакомому надо было утилитку-скриптик по парсингу конфига роутера сделать. Сначала хотел на питонах, потом подумал что еще пол дня объяснять как все эти интерпретаторы да jvm ставить. Решил модно и молодежно накатить на расте и приятно удивился, чтобы установить надо от винды 6 гигов билдера С++ скачать - вы там совсем охерели??

мимо, пошел поставил го и наговнакодил утилитку.
Аноним 21/02/22 Пнд 12:35:56 2303259 265
>>2303255
На жмупинусе не надо, пишешь на винде - сам себе злобный буратино.
Аноним 21/02/22 Пнд 12:59:16 2303276 266
>>2303255
скорее всего, все решилось бы с помощью ansible, если бы ты развивал кругозор.
Аноним 21/02/22 Пнд 13:07:38 2303287 267
image.png 383Кб, 533x533
533x533
>>2303187
> Скриншотов у меня нет, я их тогда не делал, а щас повторять влом уже. Вряд ли с тех пор что-то изменилось, впрочем.

Невыдуманные истории, о которых невозможно молчать!
Аноним 21/02/22 Пнд 13:11:52 2303293 268
>>2303259
Чекнул и охренел, там какой-то монстр в виде жабьих фрейворков.
Мне же не ракету запутить, а exe файл сделать. потом мне еще объяснять как через pip пакеты поставить?
Аноним 21/02/22 Пнд 13:15:07 2303296 269
Блядь какие же дегенераты в этом итт треде. Один пишет утилитки-скриптики на языке для промышленно-системного программирования, другой пишет стены текста называя rc сборкой мусора, пиздец ебаный. Что за пиздец тут происходит нахуй?
Аноним 21/02/22 Пнд 13:18:30 2303297 270
>>2303296
Сбор мусора хто тред этого) ваша единственная гордость это статья восьмилетней давности как неосиляторы го переписали свою парашу на раст
Пойми это как раз язык для хобби, он не нужен нигде, тупа хайп
Аноним 21/02/22 Пнд 13:24:13 2303302 271
>>2303296
В основном тут шитпостит шарпошиз, и я треда так 2 уже заебался с ним сраться и удалился. Отличается стенами текста про какую-то недостежимость, лгбт, врущий маркетинг и прочую хуйню и малафью. Вот оно — >>2302108
Алсо, в какой-то момент заебал половину борды и подвергся остракизму с выпидориванием из тредов боевыми картиночками вместо ответов — результат терапии можно увидеть тут >>2302804 >>2302813

Ещё иногда залетает фп-шиз, одним-двумя сообщениями поясняющий что весь тред — тупые пидорасы-байтойобы, не секущие в его божественном фп — и сливающийся. Вот оно — >>2302829
Аноним 21/02/22 Пнд 13:24:55 2303303 272
>>2303296
Очевидный толстый троллинг
Аноним 21/02/22 Пнд 13:26:27 2303305 273
>>2303255
>чтобы установить надо от винды 6 гигов билдера С++ скачать
Это, кстати, один из главных форсов шарпошиза. Кто ещё на винде итт будет сидеть, кроме гейдевов у которых оно и так установлено, блять?
Аноним 21/02/22 Пнд 13:26:37 2303306 274
1619155853999.jpg 210Кб, 1200x851
1200x851
>>2303297
> язык для хобби, он не нужен нигде
Еще крипта.
Аноним 21/02/22 Пнд 13:27:36 2303308 275
>>2303296
>промышленно... программирования
Без исключений/стектрейса и ООП? Ты там смузи траванулся??
Аноним 21/02/22 Пнд 13:30:27 2303312 276
>>2303305
Десктопный линукс настолько ущербный, что лучше бы помалкивал. даже спустя 15 лет хер без костылей там посидишь, всегда, всегда нужно будет с чем-то ипаться
Аноним 21/02/22 Пнд 13:31:43 2303314 277
>>2303312
>Десктопный линукс
Ждун не накопил на макпук?
Аноним 21/02/22 Пнд 13:34:48 2303322 278
>>2303302
>шарпошиз
Пока на растах думают как лучше переписать асинки и еще больше тормознуть и так медленное развитие инфраструктуры языка, в нормальных яп завезли чудный хотрелоад, который позволяет делать визуал как избалованный хипстер. Да да, теперь можно часами играться со шрифтами.
Аноним 21/02/22 Пнд 13:36:29 2303329 279
image.png 214Кб, 600x400
600x400
>>2303314
Пинус уже моветон? "Ах растеры, ах сукины дети"
Аноним 21/02/22 Пнд 13:37:27 2303331 280
>>2303308
> Без исключений и ООП
как и положено в современном системном языке

найди работу уже, самому не стыдно такой бред писать?
Аноним 21/02/22 Пнд 13:40:55 2303335 281
1598613482249.jpg 10Кб, 255x256
255x256
>>2303314
Что на линухе, что на макбуке никаких проблем.
Аноним 21/02/22 Пнд 13:42:04 2303337 282
>>2303335
У тебя просто нет желания доказать, что шинда незаменима, лол.

Аноним 21/02/22 Пнд 13:43:35 2303341 283
>>2303329
Сам придумал — сам поржал, реально шиз.
Аноним 21/02/22 Пнд 14:03:20 2303349 284
rust.png 1162Кб, 699x933
699x933
>>2303341
Непечёт у хипстоты
Аноним 21/02/22 Пнд 14:05:49 2303352 285
>>2303205
Разбирался, говорю же. Флаги перебирал, версии компилятора, разные машины (атом, зеон, кору разных поколений, зен) - все без толку.

>>2303287
Ну так я написал название серии статей, они легко гуглятся. Попробуй сам и убедись, кто прав - автор или я.
Аноним 21/02/22 Пнд 14:07:10 2303356 286
>>2303352
> Флаги перебирал, версии компилятора, разные машины
Да я не про это, а от чего сам оверхэд идёт
В ассемблер глядел?
Аноним 21/02/22 Пнд 14:13:11 2303362 287
>>2303352
$ time ./nbody.gcc-8.gcc_run 50000000
-0.169075164
-0.169059907
./nbody.gcc-8.gcc_run 50000000 2.09s user 0.00s system 99% cpu 2.099 total

$ time ./nbody-6 50000000
-0.169075164
-0.169059907
./nbody-6 50000000 2.00s user 0.00s system 99% cpu 1.999 total
Аноним 21/02/22 Пнд 17:25:28 2303573 288
>>2303296
c, rust - треды с шизами
асмотред тоже скатывается, только плюсотред остался из околобайтоёбских тредов.
Аноним 21/02/22 Пнд 17:34:52 2303581 289
>>2303573
>только плюсотред остался из околобайтоёбских тредов
Засранный примерно полностью студнями с лабами.
Аноним 21/02/22 Пнд 17:45:57 2303594 290
>>2303573
>>2303581
Лол, а вам что нужно? Те кто уже в теме особо не пиздят, ибо дела делают. Ну и в других местах общаются, в чатиках, в ирках там, но точно не на помойной борде.
Аноним 21/02/22 Пнд 17:48:43 2303597 291
>>2303573
Все эти потуги сделать из раста системный язык.
Аноним 22/02/22 Втр 12:45:30 2304168 292
1111.png 112Кб, 521x500
521x500
Там один написал кернель на педерасте и только у местных даунов Раст не системный я скозал
Аноним 22/02/22 Втр 13:33:18 2304213 293
>>2304168
То-то я смотрю ты капчуешь с новой оси.
Сейчас бы удивляться в те времена, когда даже на js игрушечные операционки писали
Аноним 22/02/22 Втр 22:26:13 2304601 294
>>2299268
Кстати, раз уж про скрипты заговорили, а есть что-то кроме Рая этого, вроде пресвятой Lua-шечки, только своей (не биндиндинги)
Аноним 22/02/22 Втр 22:35:47 2304612 295
>>2302218
> Я считаю что Rust совсем не подходит для написания игр.
а как же крутой дописываемый Bevy
Аноним 23/02/22 Срд 09:52:57 2304728 296
>>2303297
>неосиляторы го переписали свою парашу на раст
Чего бля? Я этого goвнокод научился читать пройдя по-быстрому тур го за вечер, он простой как мясорубка, а вот с растом только через несколько месяцев более менее начал понимать что к чему. Шёл бы ты отсюда вкатун
Аноним 23/02/22 Срд 10:39:50 2304745 297
>>2304728
Дак это дело в том что синтаксис помойный) на го он простой да, но у нас нет встроенной функции сделать все хорошо, надо самому думать
Чтоб ты понял (хотя я сосниваюсь что ты сможешь): голанг это кисть и краски, а раст это раскраска по номерам. То есть дебсы учат бесконечный список функций заранее написаных и потом пытаются складывать из них что-то.
Аноним 23/02/22 Срд 22:19:12 2305201 298
Аноны, есть одна JSON-структура, внутри которой, кроме всего прочего есть и список. Как бы мне проитерироваться по этому списку?
Юзаю `json` https://docs.rs/json/latest/json/index.html . Преобразую строку в JSON, затем выбираю нужный ключ(под которым лежит список) а дальше хуй. Как преобразовать получаемое значение из JSON в нормальный итерируемый списочек?
Аноним 23/02/22 Срд 23:07:12 2305232 299
>>2305201
может сначала проще этот json в ron перегонять
Аноним 23/02/22 Срд 23:34:56 2305248 300
>>2305201
Попробуй использовать serde, сделай структуру и уже в нее преобразовывай json, а там уже спокойно в вектор можешь преобразовать
Аноним 04/03/22 Птн 22:08:36 2310970 301
А работой работать на этом как?
Аноним 05/03/22 Суб 11:34:28 2311196 302
Блог обучающий новичков (в Rust, а не новичков в программировании) через создание мини-проектов на Rust.
https://www.sotr.blog/
Аноним 05/03/22 Суб 20:59:49 2311531 303
Бот который покажет RFC в процессе https://rfcbot.rs/ (кто-то спрашивал что ему непонятно что вообще происходит и кто что делает)
Аноним 07/03/22 Пнд 18:26:52 2312524 304
Зачем нужен &mut? если надо менять по ссылке - cell, не надо менять - &, не по ссылке - move
Аноним 08/03/22 Втр 00:23:50 2312736 305
>>2312524
Я только что прочитал про Cell, и вот как я понял.
Ты когда описываешь, скажем, структуру. Не можешь указать модифицируемое поле:
struct Point {
x: f32,
y: mut f32, // Так вроде нельзя
}
Но если ты хочешь чтобы поле было модифицируемо, даже когда экземпляр структуры не создан mut'абельным тут и пригождается Cell. Как ограничение мутабельности короче.
Аноним 08/03/22 Втр 01:15:22 2312753 306
>>2312736
Так я про &mut, что может оно, чего не могут Cell/& etc?
Аноним 08/03/22 Втр 07:12:22 2312804 307
Почему в С/С++ не работает принцип - выделил память, тут же найди место где её освободить?

Ну? то есть, в языках с ГЦ есть файловые дескрипторы, которые ты выделяешь и чуть ли не с младенчества учат - сразу писать код закрытия. В го даже есть defer. Так почему в С++ нет правила при выделение ресурсов сразу обозначать место их освобождения (по сути, память нам нужна только в определенных контекстах программы)?
Аноним 08/03/22 Втр 07:17:09 2312805 308
>>2312804
Потому что ты можешь не знать, когда и где тебе надо будет память освобождать. Особенно если пишешь что-то посложнее консольной утилитки.
Аноним 08/03/22 Втр 07:28:51 2312807 309
>>2312805
Ну вот у нас есть 3 контекста
1. Глобальные контекст (на весь процесс/поток)
2. Контекст одного запроса/события/сценария
3. Контекст одного блока/условия/цикла/функции.

Я всегда знаю где надо освободить память. Других мест не будет никогда же? (просто 3 вариант должен создавать контекст автоматически средствами языка и тогда просто при объявление памяти нужно будет указывать контекст (если не указанно то это контекст блока).

PS По-моему контексты решают проблему полностью?
Аноним 08/03/22 Втр 07:33:17 2312808 310
>>2312807
Типа такого

new:QUERY {

fn foo() {
new:QUERY SomeStruct(); // контекст QUERY
new SomeStruct(); // контекст блока, то есть функции.
}

}
Аноним 08/03/22 Втр 12:53:46 2312869 311
>>2312753
Может я и ошибаюсь, но вроде отличие в том, что Cell владеет. А &mut только указывает на уже существующее.

То есть беря мутабельную ссылку на уже существующий объект, ты можешь ее потом дропнуть и взять эксклюзивную ссылку. А создавая Cell, и передавая туда объект, ты по сути его муваешь внутрь Cell.
Аноним 08/03/22 Втр 13:05:11 2312874 312
>>2312808
Для того чтобы такое построить нужно на стадии компиляции знать когда поток исполнения в этот контекст до конца программы больше не вернется. Чтобы можно было со спокойной совестью освободить память. Посчитать это не такая уж тривиальная задача.
Аноним 08/03/22 Втр 13:06:27 2312875 313
>>2312805
> Потому что ты можешь не знать, когда и где тебе надо будет память освобождать.
Почему, она всегда освобождается либо в статическом месте, известном на этапе компиляции (по скоупам) или в жестком месте, где поставил программист или в рантайме на вызов какого-либо события.
Поэтому можно проверять чтобы хотя бы один из этих вариантов для каждого выделения памяти есть.
Аноним 08/03/22 Втр 15:31:24 2312952 314
>>2312524
Cell — это костыль, который иногда мешает оптимизациям. И вопрос стоит не в том, зачем нужен &mut, а в том, зачем нужен Cell и что он может, чего не может &mut.

Но если ты хочешь ответ именно на твой вопрос, то &mut нужен для оптимизаций операций по уникальной ссылке, и чтобы реально мутить всякое, потому что Cell на самом деле не даёт мутабельности без Default::default() или клонирования.
Аноним 08/03/22 Втр 16:21:30 2312982 315
>>2312869
>>2312952
Теперь немного ближе к пониманию, спасибо. Надо с лайфтаймами разобраться..
Аноним 09/03/22 Срд 00:19:38 2313255 316
>>2312952
>Cell — это костыль, который иногда мешает оптимизациям.
Это ты на SO нашел? Я тоже там был, но когда начал разбирать почему конкретно он может помешать, понял что &mut в том же примере будет мешать точно также как и Cell.
Аноним 09/03/22 Срд 12:08:14 2313386 317
Аноним 09/03/22 Срд 18:08:40 2313622 318
>>2313386
Как видишь, не даёт, ибо тебе всё равно приходится иметь &mut на одиннадцатой строчке.

>>2313255
Нет, не на SO, а потому что уникальная ссылка и указатель — разные вещи, и потому что компилятор имеет разные UB для этих разных вещей, и правила для уникальной ссылки строже, а потому и компилятор лучше оптимизирует &mut. UnsafeCell и все производные от него (в этот список входит и Cell, если что), специально говорят компилятору, что даже если ты владеешь ссылкой на эту срань, она может измениться, в отличие от любой структуры без UnsafeCell внутри. Так понятно?
Аноним 09/03/22 Срд 18:18:44 2313635 319
Какие перспективы вообще у ржавчины? Работаю в сфере БЧ разработки и в силу популярности соланы/полькадота крайне форсируется изучение ржвачины помимо основного стека. Вот и стоит ли вообще время на это тратить на случай, если я захочу уйти из БЧ?
Аноним 09/03/22 Срд 20:38:31 2313723 320
>>2313622
>Как видишь, не даёт, ибо тебе всё равно приходится иметь &mut на одиннадцатой строчке.
Наверно я тебя просто не понял, потому как это мутабельная ссылка на значение из Cell без клонирования.
Аноним 09/03/22 Срд 20:55:36 2313729 321
>>2313622
>Нет, не на SO, а потому что уникальная ссылка и указатель — разные вещи...
На SO было подробней чем у тебя, с указанием конкретных причин просадок https://stackoverflow.com/questions/55168119/what-costs-are-incurred-when-using-cellt-as-opposed-to-just-t. Только когда я начал переводить чтобы указать тому челу, что деградация перформанса будет, понял что нет причин у компилятора потерять значимую информацию при оптимизации.
там 1 - указание что всегда требуется копирование (но это можно обойти добавив mut к T)
2 - Cell нарушает алиасинг. Но так и &mut делает то же самое, не понятно к чему тогда тут претензия.
Если с такой стороны посмотреть, то это полный аналог &mut
Аноним 09/03/22 Срд 21:00:29 2313731 322
>>2313729
>2 - Cell нарушает алиасинг. Но так и &mut делает то же самое, не понятно к чему тогда тут претензия.
Чушь написал, &mut не нарушает алиасинг в safe расте.

У него на SO так - когда компилятор видит &T он может применить некоторые оптимизации, которые невозможно провернуть с Cell из-за мутабельности. Получается что и &mut тоже такие оптимизации запрещает? Сравниваем-то не с &T
Аноним 09/03/22 Срд 21:54:49 2313763 323
>>2313635
Да, стоит. Только осторожно, не заделайся пидором по пути.
Аноним 10/03/22 Чтв 09:50:07 2313930 324
А в чем разница между ? и .unwrap()
Аноним 10/03/22 Чтв 16:13:21 2314155 325
>>2313930
? возвращает на месте значение, если оно в Result::Ok и выйдет из функции со значением Result:Err.

.unwrap() возвращает на месте значение, если оно в Result::Ok и
запаникует (вызовет макрос panic!) если внутри значение Result::Err
Аноним 10/03/22 Чтв 16:15:43 2314158 326
Аноним 10/03/22 Чтв 17:33:27 2314206 327
>>2314155
Проще говоря ? вернет что ошибка, а unwrap - прервет выполнение, если операция не успешна?
Аноним 10/03/22 Чтв 17:46:06 2314218 328
Аноним 13/03/22 Вск 14:41:14 2315895 329
И все-таки Раст не совершенный (для меня) пока язык. Есть еще куда rustи.

Все чаще замечаю значения, которые могли бы вычисляться на стадии компиляции в тех и других крейтах.
Вот пример Regex::new(r"/(\d+)$").unwrap()
зачем тут unwrap, если значение можно (в теории) вычислить на стадии компиляции? Много таких мест встречается.

Говорят Zig преуспел в вычислениях на стадии компиляции.
Аноним 13/03/22 Вск 14:49:25 2315903 330
>>2315895
в теории можно всё, на практике же в расте пока крайне кастрированный const-eval который находится на уровне ворочания RFC и пары PoC типа impl const Trait или <T: ~const Trait>

даже const_panic, стабилизированный в 1.57, мог бы позволить unwrap'ать в const-контексте, но там обосрались с const-дропом и const-деструктуризацией, поэтому пока паникуй сырыми строками и не выёбывайся
Аноним 14/03/22 Пнд 09:33:13 2316405 331
>>2315895
Нет, нельзя. И не только потому что возвращает Result, ибо строка может быть невалидной, а потому что у регекса внутри полный пиздец, хашмапы-хуяпы и куча всякой фигни, которую в компайл тайме никак не сделать.

Так что приведи пример получше, пожалуйста.
Аноним 14/03/22 Пнд 09:54:43 2316418 332
>>2316405
>хашмапы
Это как про тот вектор, который в компайл-тайме не натыкать значениями. Разве это не то же самое что массив сделать?

С чего ты взял что в компайл-тайме не получится взять хеш значения? https://github.com/mapbox/eternal
Аноним 14/03/22 Пнд 09:58:42 2316420 333
Присутствие unwrap'ов и прочих динамико-проверок идет против парадигмы раст о повышенной безопасности кода. Когда можно было сломаться на стадии компиляции, у вас в рантайме падение. Тяжело мечтать о присутствии на рынке критикал систем, когда у вас такое.
Аноним 14/03/22 Пнд 14:58:09 2316593 334
>>2316420
Хорошо что в плюсах и си нет падений в рантайме!
Аноним 14/03/22 Пнд 16:06:44 2316642 335
>>2316593
Зря ты сагрился, я вообще о плюсах и си не думал когда писал. Мне на тех языках сидеть не надо слава Богу. Просто на мой взгляд приоритеты при оптимизации Раста сдвинуты не туда, лучшая оптимизация - это когда значение уже вычислено. А если это еще и галочек поставит в основную нишу Раст (программирование с усиленными гарантиями), так вообще замечательно.
Аноним 14/03/22 Пнд 17:14:57 2316672 336
>>2316420
Че ноешь то? Ассемблерные вставки засунули уже. А ты про unwrap ноешь. Язык не безопасен уже которую версию. Пидорасит от релиза к релизу с высокой скоростью.
Побороли ошибки с указателями - наделали тысячи новых
Аноним 14/03/22 Пнд 18:03:40 2316693 337
>>2316672
Ассемблерные вставки не делают его небезопасным в безопасном контексте (поскольку в нем они не предусмотрены). Похоже ты тролль местный, т.к. очень уж слабый вброс. Даже новички типо меня знают о разграничении safe и unsafe
Аноним 14/03/22 Пнд 18:06:52 2316695 338
>>2316693
Держи в курсе, вкатыш
Аноним 14/03/22 Пнд 22:03:04 2316878 339
>>2316695
Уйди из раста, токсичный выкатыш.
Аноним 15/03/22 Втр 00:02:14 2316934 340
>>2316695
В ассемблерных вставках нет таких уязвимостей как в Си
Аноним 15/03/22 Втр 07:58:54 2316982 341
Яндекс из браузера мозилла уже удалила.
crates.io в РФ заблокирован?
Аноним 15/03/22 Втр 08:06:15 2316984 342
>>2316982
На реддите писали что еще в начале февраля терки у фф с яндексом (и парой других поисковиков) были, так что совпадение.
Аноним 15/03/22 Втр 12:58:29 2317061 343
1607008611404.png 18Кб, 337x209
337x209
Аноним 15/03/22 Втр 18:35:14 2317301 344
>>2317061
Мне непонятно какого размера твоя константа получится, ведь ты абстрагировался от конкретной структуры. Но при этом хочешь создать константу конкретного размера. Может попробовать указатели подключить? Извини если чушь написал.
Аноним 15/03/22 Втр 21:19:48 2317383 345
>>2317301
Надо как-то дать гарантии, что я могу вызывать функцию foo() (которую не написал, но она должна быть) для константы FOO
Аноним 15/03/22 Втр 21:53:47 2317408 346
>>2317383
Я так и не нашел в сети как можно дженерик константу сделать, покажи? Там в примерах она всегда конкретным типом инстанциируется.
Аноним 15/03/22 Втр 22:09:04 2317416 347
1585904231602.png 22Кб, 286x303
286x303
Аноним 15/03/22 Втр 22:11:01 2317417 348
>>2317416
Проблема как раз в этом, что с кодом из >>2317061 не дженерики в имплементации, а конкретные типы, в основном примитивные.
Аноним 15/03/22 Втр 22:24:28 2317421 349
1605894174648.png 38Кб, 356x529
356x529
Аноним 15/03/22 Втр 22:49:49 2317438 350
1498883050775.png 84Кб, 570x797
570x797
Аноним 16/03/22 Срд 09:14:56 2317567 351
Есть внешняя функция которая возвращает mut Т
Как бы так запихнуть в lazy_static чтобы я потом мог передавать по всей программе этот
mut T? У меня что-то не выходит
Аноним 16/03/22 Срд 09:15:43 2317568 352
>>2317567
Есть внешняя функция которая возвращает PTR mut Т
Как бы так запихнуть в lazy_static чтобы я потом мог передавать по всей программе этот PTR mut T? У меня что-то не выходит
Аноним 16/03/22 Срд 20:07:59 2317867 353
>>2317568
struct iSwearThisIsSendSync<T>(ptr mut T);
unsafe impl Send for iSwearThisIsSendSync<T> {}
unsafe impl Sync for iSwearThisIsSendSync<T> {}

static YOLO: once_cell::sync::Lazy<iSwearThisIsSendSync<()>> = Lazy::new(|| iSwearThisIsSendSync(foo()));
Аноним 16/03/22 Срд 22:13:50 2317945 354
>>2317867
Я так и сделал, спасибо!
Аноним 16/03/22 Срд 22:15:53 2317948 355
Аноним 17/03/22 Чтв 03:28:42 2318054 356
Аноним 17/03/22 Чтв 07:42:08 2318073 357
>>2303042
>а собрать что-нибудь сложнее fn _start() { loop {} } вообще не получится - нужно портировать core под целевую платформу, что есть задача весьма нетривиальная.
Так ведь нет, не надо портировать. Все для чего LLVM скомпилирует бинарь можно использовать с core. Это только std-либа использует libc, ее нужно под целевую платформу переписывать (не std-либу, а libc).

>очень много высокоуровневых абстракций, которые во-первых жрут ресурсы,
Там где происходит жор ресурсов об этом явно сказано в Rust book. Из языковых конструкций это только dyn-трейты (как и виртуальные функции в С++).

>ведут себя под капотом непонятно как, скрывая кучу тонкостей и нюансов от программиста.
В этом и стояла цель, написать как можно больше (но не слишком) общепринятых и часто используемых абстракций без ущерба производительности. То есть такую абстракцию, которую если бы ты сам идеально написал она бы жрала столько же ресурсов. Сможешь лучше - добро пожаловать разработчики ЯПов!

>Но его никак нельзя сравнивать с C++ и тем более с С. Не системный это ЯП ни разу.
Ты никогда не поймешь прелести Rust пока не признаешь что мизерное число людей на планете способны писать код без CVE по памяти (таких уязвимостей >70% в кодовых базах Гугл, Амазон и Майкрософт). Но писать код надо, и хорошо бы иметь инструменты, которые помогают писать быстрый и безопасный код. А если таких нет, то хотя бы разделять безопасный и небезопасный (Rust отодвигает границу safe так далеко для системных ЯПов, как позволяет сегодняшний Computer Science. Взамен уничтожая совместимость с Си/С++).

Я согласен что с Си его сравнивать не надо. Хоть русскоговорящее сообщество его почему-то именно с Си сравнивает. Он задумывался и писался как замена С++.

>жалобы на медленную разработку языка программирования
Когда на самом деле быстрее чем в раст мало где. Люди жалуются что не успевают за языком. Так что это скорее другая проблема - слишком быстрой разработки и кучи разных фич за несколько лет. К счастью темпы замедляются, уже не знаю с чем это связано. Может развал Мозиллы.

>- iter и into_iter
Явное владение. На это жаловаться грех. То что должно было стать частью С++ изначально, пришло только в последующих стандартах в нашлепочной форме. Первое (iter) дает тебе ссылки на объекты по которым ты итерируешься. Второе (into_iter) сообщает что ты хочешь переместить/копировать (в сущности принимать во владение) объекты за итератором.
Альтернатива скрыла бы от программиста основную задачу (ради решения которой раст для новичков стал сложней) - суть ее в том что я хочу знать когда я перемещаю/копирую туда-сюда объекты в памяти, а когда просто обращаюсь к какому-то объекту в памяти где-то там. Это хлеб и соль системного ЯП, так программист понимает что у него происходит со скоростью выполнения программы, и "что там по памяти". Понять когда она уменьшится очередной копией. Там же где другие языки просто копируют объекты - получается чисто прикладной ЯП с облегченной семантикой в ущерб производительности программы.
(Можно еще упомянуть что в раст существует Cow (clone-on-write) которым можно передать кому-то неизменяемый объект, но позволить его копировать при необходимости изменить объект, или получить во владение. Да, это могло быть реализовано скрытой оберткой над каждым составным типом, но Раст - системный)

>- as_ref и as_mut
>- as_ptr и as_mut_ptr
Тут не понятно. Если это вопрос почему нет единого трейта вместо AsRef и AsMut, то это в основном потому что на принимающей стороне пришлось бы указывать все лайфтаймы.
Если вопрос почему уникальность ссылки должна быть показана явно, то по этому поводу прошло обсуждение (не в пользу мембера кор тимы) https://old.reddit.com/r/rust/comments/25i544/babysteps_focusing_on_ownership_or_removing_let/
Это одна из причин почему язык так популярен у программистов-системников (не бизнесменов). Они его реально сами создали. Захотели безопасный и быстрый язык на замену крестам.

>А в других проектах...
Хорошо что есть ЯП которые от народа и для народа.

>И самое главное, я категорически не понимаю _зачем_ это делают. Раст отлично подходит для написания сложных высокопроизводительных сетевых многопоточных программ - неудивительно, учитывая тот факт, что главным драйвером его развития был и остается веб-браузер. Иными словами, Раст - конкурент C# / Java / Go
У каждого из них сборщик мусора. А ваши предложения тянут Раст именно в ту сторону. Зачем пытаться сделать из него то, что уже есть во многих экземплярах. Все эти языки занимают одну нишу. Ну, может быть Го скоро к ним подтянется. Я вижу как он начинает вбирать абстракции. Интересная задумка - набрать побольше начинающих программистов, а затем с ними вырастить новую Java и С#. Весьма оригинально.
Аноним 17/03/22 Чтв 07:47:22 2318074 358
>>2303135
Жаль что ваш дневник собака съела.
Аноним 17/03/22 Чтв 07:49:25 2318075 359
>>2303255
Последние несколько лет это не так. А как там раньше было не знаю.
Аноним 17/03/22 Чтв 07:51:53 2318076 360
>>2303308
Уже писали что стектрейс есть.
Аноним 17/03/22 Чтв 11:43:54 2318136 361
>>2303308
Исключения со временем оказались избыточны в оверхеде при низкой фактической полезности. Из ооп в раст нет только наследования состояния все остальные головы гидры остались нетронуты - инкапсуляция, полиморфизм, наследование поведения. От самого ООП успешно отходят все современные ЯП - >>2302304
Аноним 20/03/22 Вск 00:54:50 2319643 362
basiccheatrust.png 1010Кб, 1920x1080
1920x1080
Аноним 20/03/22 Вск 13:05:02 2319785 363
>>2319643
Неплохо. Но я б сказал что все это автоматически выучивается когда ты работаешь над реальным проектом. Начал учить Раст почти год назад, повезло попасть на работе в новый проект. Со временем сам выучиваешь все комбинаторы функторов (Option, Result), функции над итераторами, работу со строками.

Но неплохой подбор, действительно 80% функций часто используются, некоторые из них супер важные, но к сожалению спрятаны внутри доков среди функций попроще, те же map, and_then, iter/into_iter.
Аноним 21/03/22 Пнд 11:29:29 2320459 364
Аноним 21/03/22 Пнд 11:39:54 2320464 365
Почему новички жалуются что растбук начинает "не с начала". Чего там не хватает полному новичку чтобы понять?
Может запилить предисловие к растбуку, полному ночивчку чтобы главы были понятней.. не думаю что это прям супер сложно.
Аноним 21/03/22 Пнд 15:07:27 2320585 366
Чет глянул количество вакух по этому вашему русту, а их там по пальцам одной руки пересчитать можно. Это после пыняперации так или всегда было? Получается перспектив у данного языка в ЭТОЙ стране никаких нет?
Аноним 21/03/22 Пнд 15:35:53 2320612 367
Аноним 21/03/22 Пнд 20:20:53 2320810 368
image.png 216Кб, 2603x866
2603x866
А нахуя, кто-то может ответить? Фреймворк для фронта, который запускается через вебассембли, втф. Похоже не пердолинг ради пердолинга
Аноним 22/03/22 Втр 06:06:53 2321020 369
Аноним 22/03/22 Втр 20:34:41 2321493 370
>>2320810
Для определенных приложений через васм будет быстрее. Если там вирутальным дом внутри васма обсчитывается, тогда в разы быстрее может быть.

Олсо, один и тот же язык для бэка и фронта если бэк на Расте.
Аноним 22/03/22 Втр 21:50:38 2321521 371
>>2321493
>>2321020
Быстрее растяжимое понятие, быстрее писать ++i, а не i++, только из-за этого люди чаще всего не парятся.

Самые времязатратные вещи на фронте это работа с dom и запросы на сервер, на фоне этого остальные вещи смотрятся несущественно, да и непонятно, действительно ли такой быстрее, потому что между js и wasm всегда будет бутылочное горлышко, общающееся через json.
На фронте особо вычислений диких и нет никогда, специальные случаи типо фотошопов онлайн, редакторов видео онлайн и распределенных вычислений как раз и решаются wasm, но не пересоном же всего фреймворка туда, лол

Короче максимально странно звучит, и это мы еще не начинали про то, насколько там инфраструктура есть, типа стейт менеджеров и т.д.
Аноним 22/03/22 Втр 22:26:57 2321539 372
>>2321521
Блин, ну очевидно что это не сильверная пуля, говорю же, в некоторых аппах (вот как раз те фотошопы и видеоредакторы) может пригодится.

>стейт менеджер
Типа для Раст разработчика сложно свой редакс написать за полчаса. Хотя я уверен, что либы все есть или скоро появятся.

Сейчас такие фронты, что тупо лагает всё из-за хуевых ререндеров, даже если особых вычислений нет. Хуевые ререндеры на Расте (асме) будут быстрее, вот и всё.
Аноним 22/03/22 Втр 23:03:38 2321563 373
>>2321539
>Сейчас такие фронты, что тупо лагает всё из-за хуевых ререндеров, даже если особых вычислений нет. Хуевые ререндеры на Расте (асме) будут быстрее, вот и всё.

Как реакт разработчик со стажем в 4 года могу сказать, что это дело в недостаточных скилах, особенно касательно БАЗЫ.
Очень печальная ситуация, но к сожалению не фиксится тем, чтобы перегнать тех же разработчиков на wasm фреймворк на расте, заставляя писать собственный стейт менеджер.

Мне на техсобезе ни один июнь не рассказал нахуя в редаксе нужна иммутабельность при изменении стейта, а ты говоришь свой написать)
Аноним 25/03/22 Птн 11:57:44 2322760 374
>>2321563
>Мне на техсобезе ни один июнь не рассказал нахуя в редаксе нужна иммутабельность при изменении стейта
И зачем она там? Разве этот редакс не под JS (однопоток)?
Извините за оффтоп
Аноним 25/03/22 Птн 12:08:48 2322763 375
>>2321563
>Мне на техсобезе ни один июнь не рассказал нахуя в редаксе нужна иммутабельность при изменении стейта, а ты говоришь свой написать)
Низачем, просто так решили разработчики редакса, когда придумывали этот кусок говна. А ты какой ответ ожидаешь услышать, вот чисто интересно? Наверняка какую-нибудь кашу, вроде "иммутабельность это ФП, а ФП это круто, позволяет писать чистый код, спасает от проблем со стейтом, дает работать асинхронно(в жсе лол), лечит от запоров"?
Аноним 25/03/22 Птн 12:29:20 2322780 376
image.png 156Кб, 1468x960
1468x960
>>2319643
>>2320459
Годно, неделю назад начал изучать раст, после 14 лет на с++ немного по началу путался между этими рефцелами и референсами, но щас вроде стал понемногу разбираться.
Начал изучать раст с того, что решил написать свой видеосервер, который будет принимать видеопотоки из вне, сохранять их всовывая свою метадату и ретранслировать их дальше. Как бы такой видео-прокси сервер. Начал с того, что написал необходимую обертку на сишными ffmpeg функциями в раст, заодно попутно разобрался как ffi работает, кстати хочу сказать очень удобно, без лишнего гемора.
Сейчас пишу свой формат контейнера для сжатых видео пакетов, разбираюсь дальше, на расте писать конечно намного приятней чем на с++.
Аноним 25/03/22 Птн 16:06:18 2322992 377
йцуфыв.png 100Кб, 681x560
681x560
А я очередной менеджер процессов пытаюсь. Попутно понимаю что программирование это не мое. Слишком много времени трачу впустую, долго обдумываю даже простейшие действия.
Аноним 25/03/22 Птн 16:41:58 2323024 378
>>2322992
> Слишком много времени трачу впустую, долго обдумываю даже простейшие действия.
Синьйор видимо.
Аноним 25/03/22 Птн 20:13:49 2323182 379
>>2322760
Почитай доки Редакса, там написано зачем.
Аноним 25/03/22 Птн 23:55:06 2323273 380
>>2322760
>>2322763
Когда при изменении стейта вычисляется, какие его части поменялись, а какие нет, чтобы выслать ивенты об обновлении стейта подписчикам, объекты сравниваются по ссылке, а не по значению, соответственно ивент не придет. Ну и не только на самом деле, если мутировать стейт, а в жиэсе это бывает как раз два, то поведение становится совсем загадочным.

Вообще правило реакта и жиэса в целом - видишь какую-то неведомую хуйню, проверяй на мутирование
Аноним 27/03/22 Вск 22:04:49 2324267 381
>>2322780
Работает? Скинешь гитхаб?
Аноним 05/04/22 Втр 08:45:34 2329201 382
>>2324267
Да пока еще не сделал.
Пока написал обертку над ффмпегом, свой контейнер и вот сейчас хранилище пилю.
На гитхабе нету пока
Аноним 07/04/22 Чтв 00:06:53 2330663 383
Читаю rust by example. На моменте создания связанного списка вообще нихуя не понял

fn len(&self) -> u32 {
__match *self {
____Cons(_, ref tail) => 1 + tail.len(),
____Nil => 0
__}
}
Cons(_, ref tail) откуда такая конструкция взялась, что она указывает на конец списка? Конкретно меня сам tail интересует
Аноним 07/04/22 Чтв 00:34:14 2330671 384
Аноним 10/04/22 Вск 14:38:19 2333032 385
rust как первый язык для вката в программирование подойдет? Ебашить готов
Аноним 10/04/22 Вск 15:52:06 2333059 386
>>2333032
Это глупость. Надо начинать с си в любом случае, другие варианты не пойдут.
Аноним 10/04/22 Вск 16:06:00 2333072 387
>>2320585
Эта страна не то чтобы когда-то была передовой в айти, пчел.
А за бугром на пересчёт этих вакансий тебе просто на 1 руку больше потребуется, так что вкатываться в раст есть смысл только если тебе нравится, каких-то карьерных преимуществ он тебе не даст. Разве что если тебя рандомно не найдут на гитхабе и не схантят в какой нибудь криптостартап.

>>2320810
>Похоже не пердолинг ради пердолинга
This.
Ну хочется фронтендерам на нормальном языке пописать хотя бы в петпроджектах, че.
Аноним 10/04/22 Вск 16:06:40 2333074 388
>>2333032
Нет, начни лучше с си, если хочешь лоувевела и понимания как что работает.
Аноним 10/04/22 Вск 16:11:22 2333081 389
Screenshot 2022[...].png 710Кб, 624x1600
624x1600
Screenshot 2022[...].png 440Кб, 812x964
812x964
Screenshot 2022[...].png 519Кб, 822x1142
822x1142
>>2321020
>>2321493
>>2321521
https://krausest.github.io/js-framework-benchmark/current.html
1) С DOM работает +- как и чистые фреймворки;
2) Время запуска такое же (у других языков/фреймворков компилирующихся в wasm вроде C#/Blazor, Dart/Flutter, Swift/хзчё бинарники по 15-20 мб и они тут сосут);
3) При работе с кучей памяти, очевидно, ебёт всех.

Итого: для приложений вроде фигмы которая на плюсах по заверениям авторов пойдёт, в другипх случаях разницы в перформансе тупо не будет.
Аноним 11/04/22 Пнд 17:53:50 2333813 390
>>2330663
>>2330671
это паттерн матчинг
вот в sml

fun len [] = 0
| len (_::xs) = 1 + len xs;

ocaml, fsharp

let rec len xs =
match xs with
[] -> 0
| _::xs -> 1 + len xs ;;

haskell

len [] = 0
len (_:xs) = 1 + len xs

Аноним 12/04/22 Втр 16:42:59 2334504 391
Аноним 12/04/22 Втр 16:48:42 2334515 392
Как думаете, есть смысл схоронять с ютуба видосы с растконф? Какое там соотношение сигнал-шум?

Хотел стренжлуп выкачать, да чет на один нормальный доклад десять гомофеминегров. Пейперсвилав наверное можно скачать, хотя там половина хуевые записи на тостер. Кложуртв целиком качать наверное тоже смысла нет (да и там не все видосы, годнота раскидана по 10 каналам разных конференций), отдельно презентации кудряша сохранил.

Доставьте какой-нибудь годный плейлист с маст-си презенташками, что ли.
Аноним 12/04/22 Втр 17:37:22 2334559 393
>>2334515
> есть смысл схоронять с ютуба видосы с растконф?
нет, нахуя?
Аноним 12/04/22 Втр 17:39:38 2334561 394
image 61Кб, 720x951
720x951
Аноним 12/04/22 Втр 17:40:27 2334564 395
>>2334561
так смотри, зачем схоронить их?
Аноним 12/04/22 Втр 17:47:11 2334572 396
>>2334564
Чтобы смотреть, когда не будет доступа к первоисточнику.
Аноним 12/04/22 Втр 17:48:24 2334574 397
>>2334572
и куда этот первоисточник денется?
записи с ютуба потрут?
Аноним 12/04/22 Втр 17:55:03 2334585 398
>>2334574
Ютуб не будет работать.
Аноним 12/04/22 Втр 17:56:24 2334587 399
>>2334585
впн легче скачать, чем скачивать десятки гигов видосов если ты про блокировку говоришь
Аноним 12/04/22 Втр 19:00:34 2334635 400
>>2334587
Скачать видосы легче и надежней. Почему десятки? Сотни, пару террабайт можно забить.
Аноним 12/04/22 Втр 19:51:35 2334663 401
>>2334635
>Сотни, пару террабайт можно забить
ну да, это намного легче
флаг тебе в руки
скинешь потом плейлист свой, я онлайн гляну мбы
Аноним 13/04/22 Срд 01:55:01 2334823 402
Аноним 13/04/22 Срд 20:31:52 2335193 403
>>2334663
Пока кстати не знаю, через что лучше расшаривать, чтоб минимум телодвижений и п2п был
Аноним 14/04/22 Чтв 14:54:58 2335625 404
>>2335193
>Пока кстати не знаю, через что лучше расшаривать, чтоб минимум телодвижений и п2п был
peertube
Аноним 15/04/22 Птн 16:53:05 2336500 405
>>2335625
Там дохуя телодвижений насколько я помню
Аноним 15/04/22 Птн 18:09:05 2336598 406
>>2336500
Это минимум для
расшаривать, чтоб и п2п был
Аноним 15/04/22 Птн 18:09:35 2336600 407
>>2336598
*
>расшаривать, чтоб и п2п был
Аноним 15/04/22 Птн 19:30:24 2336669 408
>>2336598
Минимум - это ipfs add yoba.mp4
Аноним 19/04/22 Втр 03:47:42 2338870 409
Помогите понять переход с ООП языка на Раст.

Как написать в трейтах и структурах такое:
Есть Человек (Имя, Возраст)
Он Работник - Программист или Менеджер
У Программиста есть Клавиатура, у Менеджера Бэджик (наоборот запрещено)
Программист Кодит, Менеджер Управляет
любой Человек может Пернуть.

Желательно со всеми возможностями будущего расширения кода и данных.
Например удобно добавлять вещи работникам, или расширять поведение на любом уровне (человек, работник и т.д.) чтобы не получилось так что надо в 200 местах что-то переписывать если у тебя много видов работников, вещей, или поведение на каком-то уровне добавилось.

Т.е. просто прошу идиоматичный пример на Расте. Гуглил, нашел только общие описание. А надо что-то конкретное чтобы потом самому писать и другим показать. Спасибо.
Аноним 19/04/22 Втр 14:22:43 2339137 410
>>2338870
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=441daa55d282ab60ba8b96eada3cbfb8
не благодари.

>Желательно со всеми возможностями будущего расширения кода и данных.
Ну вот есть работник — берёшь и добавляешь ему вещь.
Если вещей потенциально дохуя — ну не зашивай типы на них и всё будет гибко как ты хочешь.

>чтобы не получилось так что надо в 200 местах что-то переписывать
Как напишешь — так, блять, и будет.
Ещё раз — всё зависит от того, как композицию типов составишь, пчел.
Если обосрался и сделал всё не енамах — всегда можешь что-то придумать отрефакторить и больше так не делать, и, например, вытащить общее поле через Deref, как я с пуком в этом примере. Хотя там оно и нахуй не нужно.
Аноним 19/04/22 Втр 15:12:14 2339163 411
>>2339137
Спасибо, я примерно так себе это и представлял в голове. Только Deref не ожидал, удобно. Но все равно если например Работник это еще и Налогоплательщик то Deref только для Человек будет, а в Налогоплательщик уже не сделать?
Получится если зависимостей много - работник.налогоплательщик.фнс.ндфл.рассчитать()
В принципе терпеть это можно, но когда я вчера думал над тем как закодить, у меня тоже получился enum Профессия, а работать() impl-ом
Если профессий 10 штук то метод работать будет распаковывать на 10 возможных вариантов каждый раз когда надо поработать. Это заметно медленней чем в языках с ООП где Программист это просто наследник Работника. По сути такая самодельная динамическая диспетчеризация. Можно ли с этим бороться?
Аноним 20/04/22 Срд 12:24:05 2339862 412
Аноним 20/04/22 Срд 13:58:05 2339960 413
>>2339163
>Но все равно если например Работник это еще и Налогоплательщик то Deref
Нет, я же написал — лучший юзкейс это когда у тебя куча енамов с одним полем.

>Получится если зависимостей много - работник.налогоплательщик.фнс.ндфл.рассчитать()
Какой уебанский пример, я бы даже на ООП языке за такую иерархию отпиздил, лол.
Налогоплательщик — отдельный трейт для работника, с функцией посчитать_налоги(&self, фнс, ндфл) -> НалоговаяДекларация.

>Это заметно медленней чем в языках с ООП где Программист это просто наследник Работника.
Только у тебя в голове.
На практике:
1) Динамик диспатч ломает нахуй все оптимизации доступные при AOT компиляции, от инлайнинга до dead code ellimination без JIT это говно вообще хуй оптимизируешь;
2) Матч в большинстве случаев будет компилироваться в jump table и по скорости работает как доступ к элементу массива, а даже если не оптимизирует — вероятность попадания в кэш всегда будет выше;
3) Благодаря динамик диспатчу у тебя будет куча индиректов — на каждый обсёр бранчпредиктора процессор будет тратить время на прогулку по памяти вместо работы;
4) Чтобы понимать, можно ли кастить тип А к типу Б — придётся таскать с собой ещё кучу метаинфы, походы за которой будут повторять пункт 3.
Медленнее оно может быть разве что если у тебя будет жутко жирный матч, который будет руинить кэш — но в таком случае частично перестанет быть верным только 3-й пункт.

Если тебе лично приходится писать меньше кода — это не значит что код будет работать быстрее, лол.

> Можно ли с этим бороться?
Можешь почитать как разработчики LLVM боролись с динамик диспатчем в плюсах, но релевантно для всех компилируемых языковhttps://llvm.org/docs/HowToSetUpLLVMStyleRTTI.html
Спойлер: свели всё к тем же енамам и проверкой руками. Как в расте, только с кучей костылей.
Аноним 20/04/22 Срд 14:29:08 2339995 414
>>2339862
>>2339960
Спасибо. Извините если туплю жестко, ООП для меня слишком сложная тема.
Вот так получилось и без джамп тейбла и без диспатча (если складывать всех менеджеров в однин контейнер, а всех программистов в другой):
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=b585856311db681c52b5680c4f8a989f
При этом из бойлерплейта только дополнительный трейт объединяющий два других. Зато можно их теперь разбить и работать без dyn.

>Можешь почитать как разработчики LLVM боролись с динамик диспатчем
Я обязательно это прочитаю. Спасибо еще раз.
Аноним 20/04/22 Срд 18:40:47 2340218 415
>>2338870
Тип entity + тип activity, схема сквозная на всей монорепе, активити пишем через кафку
Аноним 22/04/22 Птн 19:43:06 2341910 416
изображение.png 95Кб, 1470x940
1470x940
Объясните кто-нибудь, почему Рист так хуёво работает под виндой?
Требует какие-то зависимости от C++, крейты вообще почему-то (У меня) ставить отказывается.
А на линуксе - всё заебись.
Почему так? С чем связан такой пиздец?
Аноним 23/04/22 Суб 04:15:14 2342274 417
>>2341910
>почему Рист так хуёво работает под виндой?
Потому что под виндой, лол.

Но если серьёзно, то просто поставь раст под mingw, самый простой вариант растовать на винде.
Аноним 23/04/22 Суб 18:06:32 2342652 418
>>2341910
Так а почему ты не через rustup устанавливал?
Аноним 23/04/22 Суб 19:31:15 2342732 419
>>2339960
Чел, ты из какого года капчуешь? В крестах уже давно никто таким не пользуется, когда есть шаблоны и концепты. А RTTI на помойку выкинут, его нахуй выключить можно.
Аноним 23/04/22 Суб 21:09:40 2342809 420
>>2342732
>Чел, ты из какого года капчуешь?
2к22

>когда есть шаблоны
Ну я даже ссылку дал на описаине этого пирдолинга, вот и он:
https://llvm.org/doxygen/Casting_8h_source.html

>концепты
Мань, лет через 10 свистни а лучше в хуй прямо сейчсс, мб кто нибудь затащит в проект. Как модули примерно.

>А RTTI на помойку выкинут
Так я и пишу что пердолятся чтобы его выкинуть, заканчивай очком читать.

>его нахуй выключить можно
Выключать его ещё лет 30 минимум будешь, с таким-то количеством легаси, манька.
Аноним 03/05/22 Втр 18:55:43 2349498 421
Объясните кто-нибудь, как заставить этот код работать?
Rustbook (Главу 6) уже до дыр зачитал, всё никак понять не могу

enum asd{
__value1(String),
__value2(i8),
}

fn compare(value: asd) {
__match value {
____value(val) => {
____println!("{}", value(val));
____}
__}
}

fn main() {
__let v1 = asd::value1(String::from("This is value 1"));
__let v2 = asd::value2(2);

__compare(v1);
__compare(v2);
}
Аноним 03/05/22 Втр 20:55:10 2349572 422
Сап, Анон!
Недавно начал изучать сей божественный язык, надеюсь не пожалею о своем выборе и надеюсь, что у вас здесь тёпло-ламповая атмосфера.
Если есть что сказать новичку, выкладывай! (Но это не первый мой язык)
Тред пока не читал...
Аноним 03/05/22 Втр 21:12:57 2349578 423
>>2341910
Братик, я как раз вчера мучался, всё устанавливал, правда у меня была проблема в линкере.
В общем, в моем случае нужно было накатить Visual Studio Build Tools + MSVC 142 в опциях, хоть у тебя и другой стектрейс, но вдруг эта инфа как-то поможет. Добра.
>>2342652
в растап кстати как раз указывает при установке чего именно не хватает
Аноним 04/05/22 Срд 12:23:44 2349845 424
Аноним 06/05/22 Птн 01:50:39 2351048 425
Что там по гуям есть популярное? Только не какая-нибудь ебала, типа как в winapi
Аноним 06/05/22 Птн 22:19:18 2351591 426
>>2351048
Обойдешься консольным приложением.
Аноним 06/05/22 Птн 22:20:09 2351592 427
>>2341910
Не используй винду. Юзай линукс.
Аноним 07/05/22 Суб 12:50:36 2351812 428
>>2342809
> Мань, лет через 10 свистни а лучше в хуй прямо сейчсс, мб кто нибудь затащит в проект.
STL уже на них написан, проблемы легасидебилов не важны.
> Так я и пишу что пердолятся чтобы его выкинуть
Одним параметром выключается в компиляторе.
> Выключать его ещё лет 30 минимум будешь, с таким-то количеством легаси, манька.
Каким таким? В легаси его в 99% случаев не используют, в нормальных проектах рантайм рефлексия по дэфолту запрещёна, так же как и эксепшены.
Аноним 07/05/22 Суб 16:13:16 2351902 429
Есть ли у компилятора rust флаги оптимизации как march native у gcc?
Аноним 07/05/22 Суб 16:50:42 2351927 430
Аноним 07/05/22 Суб 18:55:55 2351997 431
>>2351812
>STL уже на них написан, проблемы легасидебилов не важны.
Их проблемы == твои проблемы, маня.

>Одним параметром выключается в компиляторе.
Код компилятор переписывает?

>Каким таким? В легаси его в 99% случаев не используют
Пиздец ты наивный, ещё учишься чтоле?

>в нормальных проектах рантайм рефлексия по дэфолту запрещёна, так же как и эксепшены.
Нормальные проекты — хром и ещё полторы программы?
Аноним 07/05/22 Суб 23:22:14 2352156 432
>>2351591
Хуя ты дебил. Может ты тогда links юзаешь и без иксов сидишь?
Аноним 08/05/22 Вск 09:48:08 2352262 433
>>2351997
> Их проблемы == твои проблемы, маня.
> Код компилятор переписывает?
Какой код, мань? В легаси пишут на "си с классами", там нет никакого кода, использующего RTTI. Ты совсем ёбнулся?
> хром и ещё полторы программы?
Проще составить список где это используется - выяснится что это почти всегда опенсорс-высер одного студента. Когда нужна рантайм рефлексия - пишут свой RTTI с блекжеком и шлюхами. Если ты захочешь спросить зачем же он вообще нужен и почему с ним ебутся в компиляторах - потому что обратная совместимость, про которую в расте никто и не слышал.
Аноним 08/05/22 Вск 13:15:01 2352437 434
>>2352262
>Какой код, мань?
Студень, съеби в плюсотред уже, заебал со своим любимым гнойником.

>там нет никакого кода, использующего RTTI
А мой опыт говорит так не бывает с любой фичей в языке.

> потому что обратная совместимость
Да, маня, правильно. И если какую-то хуитку в языке (особенно таком старом как плюсы) поменять — сломается больше кода чем ты высрешь за всю свою жизнь.
Аноним 08/05/22 Вск 20:02:30 2352883 435
Думал тут лампово, а тут какой-то токсик ебучий срёт в тред.

Вопрос к адекватам, что там по асинхронщине? Насколько стабильна?
Аноним 08/05/22 Вск 22:17:13 2352964 436
Аноним 09/05/22 Пнд 05:45:19 2353025 437
>>2289291
>> Теперь модные и молодежные сбегут (или загнут требования) и бизнес останется один на один с растом.

ты ебало то завали да
Аноним 09/05/22 Пнд 13:17:29 2353142 438
>>2352883
>Rust
>Стабильно
В лучшем случае pre alpha.
Аноним 09/05/22 Пнд 18:28:41 2353357 439
>>2352883
хуёво всё

нет трейтов с асинх-методами (вместо них не-зирокост #[async_trait])

нет асинх-замыканий (вместо них изъёбки с замыканием,
возвращающим impl Future), а значит

нет асинх-комбинаторов (map, and_then, unwrap_or_else, - соси в асинх-контексте)

нет взаимозаменяемости рантаймов, а значит, большинство либ рантаймо-зависимы (либа может работать с tokio и не работать с async-std/actix-rt/smol/...)

нет асинх-дропа

на что надеяться в ближайшее время?
где-нибудь через минимум полгода подгонят асинх-трейты, которые нельзя будет засунуть в Box<dyn AsyncTrait>
а в остальном наслаждайся фантазиями в официальном бложике
Аноним 12/05/22 Чтв 16:47:43 2355281 440
>>2286737 (OP)
Бля, начал пользоваться ебучим текстовым редактором VS Code вместо IDE, как же горит. Как сделать чтоб при наведении на код показывалась инфа что это? Какой тип у переменной, сигнатура методов и т.п. Этим же невозможно пользоваться, когда у тебя строгая типизация, а в коде на одного типа нет. Даже хуй угадаешь что new() возвращает - там может быть контейнер вокруг типа, блять. Можно сделать как-то по-человечески?
Ещё и протухший плагин раста висит выше раст-аналайзера в списке плагинов, пиздец интуитивно.
Аноним 12/05/22 Чтв 16:56:23 2355286 441
>>2353357
Пиздец кал. Я вот почитал бложики, там реализации просто ахуеть насколько костыльные. Типа проверяющего в цикле экзекутора на "блокированность" и "степень прогресса", который сам блокируется между проверками, даже страшно представить какие там задержки при засыпании/просыпании тасков, наверное даже выше чем у уснувшего системного потока. А ещё абсолютно все бенчмарки у этих петухов на веб-серверах, как будто в ГОвно попал, а не системный язык.
Аноним 12/05/22 Чтв 17:16:52 2355304 442
>>2355286
> на веб-серверах
Так на асинхронность только там и есть спрос.
Аноним 13/05/22 Птн 15:46:19 2355780 443
>>2355304
> только
Не только. В embedded как раз полно асинхронщины. Особенно для критичного оборудования, которое должно в реальном времени получать данные из разных датчиков и принимать решения.
Другое дело, что rust особо пока не тащат в embedded. Сырой.
Аноним 13/05/22 Птн 16:32:02 2355824 444
>>2355281
rust analyzer тебе в помощь
Аноним 14/05/22 Суб 09:18:20 2356122 445
>>2355824
Так он это не умеет. Я как раз от него и сгорел.
Аноним 14/05/22 Суб 10:26:30 2356148 446
image 29Кб, 545x193
545x193
image 10Кб, 536x50
536x50
>>2356122
> Как сделать чтоб при наведении на код показывалась инфа что это?
>Так он это не умеет.
что еще расскажешь?
Аноним 14/05/22 Суб 10:27:09 2356149 447
соре за мат
Аноним 14/05/22 Суб 10:48:42 2356157 448
1524778822719.mp4 168Кб, 360x360, 00:00:03
360x360
>>2356148
Всё это работает только если код добавлен в дерево модулей. Пиздец как удобно. Мне этот функционал нужен когда я пишу код, а не когда уже написал его. Ни в одной IDE нет таких как тут костылей.
Аноним 14/05/22 Суб 10:52:04 2356159 449
>>2356157
что? тебе иде должно тип подсвечивать еще до того как ты код написал?
Аноним 14/05/22 Суб 11:00:09 2356160 450
>>2356159
В VS или JetBrains так. Там IDE работает когда я пишут любую строку кода, а не только когда уже готовый модуль указал в виде зависимости в другом. Мне же подсветка нужна чтоб во время написания кода смотреть на неё, а не после.
Аноним 14/05/22 Суб 11:04:46 2356164 451
>>2356160
>а не только когда уже готовый модуль указал в виде зависимости в другом
ну вопрос очевиден, что собственно мешает тебе его указать?
как тебе раст аналайзер должен что то подсвечивать если по факту этот файл в твой проект не входит
Аноним 16/05/22 Пнд 07:56:59 2357244 452
С треда ушли хейтеры, тред загнулся. Как там успехи натянуть сову на глобус?
Аноним 16/05/22 Пнд 09:05:31 2357252 453
Недавно решил обмазаться системным программированием. Из опыта имеется только 2 семестра кодирования на крестах и полгода разработки на c#. Начинать с раста хорошая идея? На работе советуют играться с плюсами.
Аноним 16/05/22 Пнд 14:27:13 2357388 454
16399974954570.png 484Кб, 750x548
750x548
>>2357252
>Начинать с раста хорошая идея?
Нет.

>На работе советуют играться с плюсами.
Если цель именно байтоёбить — лучше вообще с си начать, а потом уже плюсов навернуть.

>>2357244
>С треда ушли хейтеры
Ну могу боевой пикчей позвать обратно.
Аноним 16/05/22 Пнд 14:37:06 2357391 455
>>2357252
Хоть с чего можешь начинать. Всё одинаковое с небольшими отличиями, это не хаскель или пролог.
Аноним 16/05/22 Пнд 15:28:02 2357411 456
>>2357388
Ну штош, начну с си тогда.
Аноним 16/05/22 Пнд 15:28:30 2357413 457
Аноним 19/05/22 Чтв 01:15:06 2358906 458
Мужики, может ну его нахуй этот раст? Давайте все на Zig переходить.
Аноним 20/05/22 Птн 01:32:51 2359556 459
>>2358906
Миру требуется просто современный С++, но все клепают очередную отсебятину, которая убивает язык полностью. Слышал что и в zig есть такое, вроде там чет не компилиться если лишний файл в сборке или еще что-то, не помню.

Пока языки делают художники, которые "так видят", а не инженеры, мы будем грызть тугой С++.
Аноним 20/05/22 Птн 06:20:19 2359589 460
извольте.jpg 152Кб, 640x464
640x464
>>2358906
>>2359556
Без конкретных претензий вы смешны, сударь. Но помните, аппелация к внешнему виду отклоняется без лишних разбирательств...
Аноним 20/05/22 Птн 11:02:28 2359694 461
Аноним 20/05/22 Птн 12:09:08 2359740 462
Сап, аноны.
Есть один нубский вопрос, нагуглить что-то не получается.

В общем, в Расте как я понял, любят обмазываться Enum'ами. Ну и я тоже решил обмазаться.

Суть в чём, допустим мы объявили Enum с параметрами
enum SomeType{
...
SomeType::Integer(i32);
...
}
let i = SomeType::Integer(25);
Но я не могу понять, как "вытащить" сам int из энама?
Вроде тип определен и казалось бы очевидно, что должен быть простой способ так сделать, иначе не понятно, нахуйа хранить что-то в Енамах, если не можешь извлечь потом значения.

В Result и Option есть метод unwrap, а как быть со своим энамом? МОжет какой-то метод нужно реализовать... Подскажите, потерялся...
Аноним 20/05/22 Птн 12:17:10 2359750 463
>>2359740
ты для начала должен проверить, какой у тебя именно подтип енама:
let e = SomeType::Integer(25);
match e {
SomeType::Integer(i) => println!("{i} - целое")
SomeType::Huinteger(i) => println!("{i} - хуелое")
_ => println!("пошёл нахуй вообще) // да, ты обязан обработать все возможные варианты энама
}
Аноним 20/05/22 Птн 12:20:15 2359755 464
>>2359750
либо укороченная запись:
if let SomeType::Integer(i) = e { //именно в таком порядке
...
} else { //обрабатываешь остальные случаи, на которые насрать
... //или вообще не обрабатываешь, если насрать капитально
}
Аноним 20/05/22 Птн 12:58:40 2359812 465
Аноним 20/05/22 Птн 22:34:46 2360319 466
>>2359750
ладно, спс, похоже проще не получится сделать, вообще полную хрень выдумал, хотел ещё enum разных типов распарсить, инты и стринги, но понял, что так лучше не делать... ведь нужно в компайл-тайме выводить типы, плохая затея...
Аноним 21/05/22 Суб 05:32:08 2360394 467
>>2359589
1) Делать в современности еще один язык не "конкурентно френдли" это тупость. После выпуска го, мы думали, мол, сейчас пойдут пачками асинхронные языки, но с вменяемым дизайном. Но увы, люди продолжают писать синхронное говно. Даже асинк/авэй накладывают лишний оверхед, а без рантайма это все та еще жопа.
Забавно, но вроде так себя раст и позиционировал до релиза, ну хипстота не смогла и выпилила (и до сих пор нормально не допилят).

2) Владение туфта. Это все прикольно пока ты пишешь утилитки, типа grep, но серьезное программирование сразу же скатиться до Arc, а это вообще примитивное GC.

3) Тебе говорят про безопасность, но даже в стандартной либе куча unsafe. В ембедед ты сможешь только без стандартной либы. Да вообще, любое около системная разработка приведет тебя к unsafe. Как и с владением - тут просто посали на лицо.

3) Упоротый местами дизайн. Тут тебе в лицо говорят про безопасность и тут же рассказывают про затенение. Очередное - я художник, я так вижу (многие попугаи еще разносят это как преимущество, блин, присвоение вместо равенства уже десятками лет не можем победить, а тут прям руками затенение ввели, гуманитарии).

Ну еще куча там говна, которого я уже не вспомню.
Самое забавное, что без хейтеров тред не живет вообще. А треды на зекаче, это основной показатель популярности языка, не иначе.
Аноним 21/05/22 Суб 07:01:55 2360407 468
>>2360394
>без хейтеров тред не живет вообще
СРАЛЕВАЛИ ЗАСРАЛИ ТРЕД
@
(ЛЮДИ УШЛИ)
@
СРАЛЕВАЛИ НА МИНУТКУ ПРЕКРАТИЛИ СРАТЬ
@
(НИКОГО НЕТ)
@
"ВИДИТЕ, БЕЗ СРАНЬЯ ЖИЗНИ НЕТ, ДАВАЙТЕ НАСРЕМ ЕЩЕ БОЛЬШЕ"
Аноним 21/05/22 Суб 08:09:27 2360415 469
>>2360394
> серьезное программирование сразу же скатиться до Arc
используй unsafe
> любое около системная разработка приведет тебя к unsafe
используй Arc
> затенение
лучшее что случалось на земле, только цпп макаки могут быть против этого
ну у них в целом мышление особенное
21/05/22 Суб 10:09:56 2360458 470
>>2360394
> скатиться до Arc, а это вообще примитивное GC.

Ты опять выходишь на связь, мудило?
Аноним 21/05/22 Суб 11:41:35 2360509 471
>>2360415
Вся суть раста - используй ансейф или сборку мусора.

>>2360458
Видимо люди стали догадываться, что пранк затянулся.
Аноним 21/05/22 Суб 11:46:47 2360510 472
>>2360407
>(ЛЮДИ УШЛИ)
Ты сейчас на ноль поделил, кроме хейтеров и лулзов тут ничего не было. В го было так же, но неожиданно это говнище заняло нишу и выстрлело, потому что асинхронное программирование, которое бесплатно для программиста в плане мозгозатрат, это, неожиданно, "серебряная пуля" и может вытащить даже убогий дизайн языка. Что есть у раста? Ничего. Идея владения работает только в плане хелло-ворда, а дальше ансейф или сборка мусора (зеро-кост-буллшитинг).
Аноним 22/05/22 Вск 12:05:25 2361064 473
>>2360394
Вы наверное плюсовичок-крестовичок?
Аноним 22/05/22 Вск 12:31:12 2361069 474
image.png 210Кб, 337x599
337x599
>>2361064
Забавно, но настоящим плюсовикам а не ограниченным из сети с синдромом недостатка внимания и особенно сишникам, им вообще пофиг на все эти потужные попытки спасти всех плюсовиков очередным убийцей С++. Там давно уже образовался отдельный устойчивый мирок, отделенный от хайп потугов хипстоты и трансгендерных квази-программистов.

А я? Я как раз тот хер, которому иногда нужно погрузить на дно и пописать на неуправляемом языке и мне больно писать на С++, но замены ему так и нет, а хипстота в очередной раз пилит не инструмент, а йобу, чтобы тупо продавать свое ебало в экран и кабанчику.
Аноним 22/05/22 Вск 20:52:58 2361359 475
>>2361069
>хайп потугов хипстоты и трансгендерных квази-программистов
>хипстота в очередной раз пилит не инструмент, а йобу, чтобы тупо продавать свое ебало в экран и кабанчику
это хипстота сейчас тут, в этой комнтате?
Аноним 22/05/22 Вск 23:33:33 2361439 476
>>2361064
Нет, это шарпошиз. Которого я таки призвал боевой пикчей выше, кекус.

Узнать можно по этим тейкам которые у этого долбоёба не меняются 126-й тред подряд:
>>2360394
>но серьезное программирование сразу же скатиться до Arc, а это вообще примитивное GC
>Тут тебе в лицо говорят про безопасность и тут же рассказывают про затенение.
>Даже асинк/авэй накладывают лишний оверхед, а без рантайма это все та еще жопа.

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

>>2360509
>Вся суть раста - используй ансейф или сборку мусора.
Долбоёбик, это суть любого языка.
Аноним 23/05/22 Пнд 00:36:15 2361464 477
>>2361359
>>2361359
>это хипстота сейчас тут, в этой комнтате?
Эта хипстота пилит сейчас не хилые гонорары себе, пока ты сидишь в загоне и на серьезных щах думаешь, что тебе выкатили нормальный продукт. Уже сам факт, что многие части этой хрени пилятся годами и не могут быть доведена до ума, говорит о целях сего пузыря.

Каково осознавать, что ты лишь разменная макака для затянувшего стартапа, из которого пытаются максимум высосать себе профитов? Вот серьезно, анон, все эти скандалы с "менеджерами" и вечно "около-бета" структуры проекта (слышал хотят вот асинки сейчас переписать, лол), тебе еще не показала, что это тупо попильный пузырь, аля стартапы из 10, только в больших масштабах и крупней кабанчиков?
Аноним 23/05/22 Пнд 00:55:27 2361471 478
image.png 19Кб, 352x625
352x625
>>2361439
>Узнать можно по этим тейкам
Которые в хламину разносят весь тот буллшит попильного пузыря.

>Долбоёбик, это суть любого языка
Как раз таки и нет, вероятно, именно поэтому раст теперь пытаются натянуть не сишникам, а прикладным программистам на трубе есть доклад, где чел реально затирает про то, что большие прикладные программы - это уже системное программирование.

>Нет, это шарпошиз
Способность везде видеть одного и того же чела (хотя тут и правда мало народу), лишь доказывает тот факт, что только такие ограниченные как ты, могут годами жрать попильный пузырь и быть миньоном ЛГБТ разводил (ранее хипстоты).

Я вместе с тобой следил за этими языками и раст, из них, до сих пор полу-сырая говнина, которую пытаются натянуть везде. И натянули бы, но кривая обучения экспериментальной парадигмы владения, требует реальных усилий, от чего язык любимый всеми много лет, но нефига никто не пишет, когда тот же го всех бесит, но по количеству звезд догоняет и обгоняет топ языки, даже твой проприетарный говно-шарп).
Аноним 23/05/22 Пнд 01:02:13 2361475 479
image.png 51Кб, 1162x411
1162x411
>>2361471
Забавно, но на первой странице топа, до сих пор весят клоны консольных утилит Лет 6 назад, я тоже с этого проиграл, но понимал новизну языка, а сейчас это прям реально забавно.
Аноним 23/05/22 Пнд 01:08:55 2361480 480
>>2361475
>>2361471
А какое у тебя видение "убийцы плюсов"? Какие проблемы плюсов должен решать новый язык?
Аноним 23/05/22 Пнд 01:27:24 2361490 481
Лол, одно то, как в этом языке называются примитивные типы и какие используются кейворды уже говорит об уровне авторов. u8, u16, fn, impl, etc. Я пытался примерно так писать в 7 классе на паскале, еще и в одну строчку все и без отступов.
Аналогично и с обилием <>. Да, когда впервые узнал про дженерики, это прикольно, нравится везде их совать и соответственно когда в коде много угловых скобок.
В целом же у rust кода около нулевая читаемость, особенно из-за постоянного использования unwrap.
Аноним 23/05/22 Пнд 01:39:04 2361502 482
Аноним 23/05/22 Пнд 02:47:25 2361534 483
>>2361480

Это должен быть просто улучшенный, насколько это возможно - СИ. Любые плюшки тупо приведут к жирному рантайму.

Но для успешного языка в 2022 нужно (по приоритетности, вплоть до маня фантазий)
- Дешевая в плане разработки асинхронность, или подключаемая бесплатная с корутинами.
- Пакетный менеджер (именно через вендоринг, чтобы и через 10 лет собрал из папки)
- Модульность, раз есть пакетный менеджер.
- Детерминирование поведение везде, вплоть до ембеддед.
- Дженерики.
- Кросскомпиляция.
- Какой-то сахар для ручной работы с памятью, структурами (как в го достаточно).
- Улучшенный препроцессор или возможность подключения мета-программирования.
- Язык "для всего" с модульным рантаймом. Начиная от отсуствие вообще (или минимального), заканчивая возможностью подключить такой рантайм который имеет ГЦ или даже рефлексию, для прикладных нужд.
- Долгая разработка и максимальная заморозка синтаксиса.
То есть, нужно развивать инструменты, а не дрочить на синтаксис.
Вот добавили веб сервер в стандартную либу, пускай он будет всегда востребованным и конкурентно пригодным, а не положили болт и спорить как нам сделать язык еще лучше.
Больше сил на инструменты, а не синтаксис (только реально нужное, где у других зашло и проверенно временем).
- Минимум отсебятины, это не рисование картин, это инженерный инструмент.

Ну и в целом средний программист не тупой, не нужно пытаться языком его ограничить, это признак ограниченного мышление инженера.



Аноним 23/05/22 Пнд 02:53:02 2361535 484
>>2361475

Шел XXI век, век великих айтишных инноваций и открытий.
@
Теперь можно стать спонсором утилиты cat.
Аноним 23/05/22 Пнд 08:44:15 2361562 485
как будто опеннет открыл
странно что такая шиза только в русских комунити появляется
Аноним 23/05/22 Пнд 12:29:07 2361650 486
>>2361471
>Которые в хламину разносят весь тот буллшит попильного пузыря.
Потому что ты скозал? Ты настолько всех заебал, что с тобой даже никто не спорит, лол.

>Как раз таки и нет
Ну давай, показывай язык с ручным управлением памятью без ансейфа.

>и быть миньоном ЛГБТ разводил (ранее хипстоты).
Кто о чём, а латентный шарпошиз о своих любимых пидорах. Быть пидором — это ок, просто прими себя уже.
Аноним 23/05/22 Пнд 13:56:20 2361697 487
>>2361562
Все еще помнять десятые и как мохнатая хипстота разводила на бабосы бизнес. Это был локальный бум доткомов, кабанчики захотели в айтишечку и давали полную свободу, естественно мохная хипстота их наказывала. Так как около ИТ-журналисты чаще тырят новости из-за бугра, ни кто так и не расследовал это локальное явление, но у многих закрепился этот феномен в голове.

Просто когда хипстота сосет бабос с крупной компании, это не так заметно, можно дуть пузырь долго и весело развиваться, а когда местный кабанчик бездельников кормил, это ощущается в более короткий период и ярко.
Аноним 23/05/22 Пнд 14:01:17 2361700 488
>>2361650
>Ну давай, показывай язык с ручным управлением памятью без ансейфа.
Ну, С, С++, никакого там ансейва нет. Придумал себе ограничение и потом пытаться этим превозмогать.

В этом, кстати, весь буллшит, ансейв в расте везде, даже в стандартной либе, я уже молчу о подтягиваемых либах и обертках вокруг Си. То есть ансейв у тебя везде даже, вероятно, в хеллоуворде. Это как умножение на ноль, любое место где он есть, делает сразу и твой код ансейвом.
23/05/22 Пнд 14:56:27 2361731 489
>>2361534
> Ну и в целом средний программист не тупой, не нужно пытаться языком его ограничить, это признак ограниченного мышление инженера.

Всё программирование всегда развивалось в сторону ограничений. Из дикого ассемблера мы пришли в менее дикий С, где уже не так просто писать в рандомные регистры всякую хуйню. Из си мы пришли в С++, где появились классы, и возможность ещё больше ограничить разработчика. Оттуда мы плавно переходим в сишарподжавы, где у нас ограничили возможность свободно работать с памятью, и обязали разделять наш код на классы. И всё это время, параллельно развивается функциональщина, где ограничений ещё больше, начиная от иммутабельности и системы типов всяких хаскеллей, и заканчивая завтипами какого-нибудь Идриса.

Короче, всё программирование это сплошные ограничения. И это прекрасно, потому что чем сложнее обойти ограничения, тем сложнее мамкиным виртуозам и «инженерам» делать нечитаемую и неподдерживаемую хуйню.
Аноним 23/05/22 Пнд 15:17:57 2361745 490
>>2361731
>Из си мы пришли в С++, где появились классы, и возможность ещё больше ограничить разработчика.
Как? С++ полжизни пытался сохранить совместимость с Си, как он его ограничил?

>Оттуда мы плавно переходим в сишарподжавы, где у нас ограничили возможность свободно работать с памятью
Это же повышение абстракции, за цену производительности, а не ограничение программиста. Типа мы решаем прикладные задачи и контроль памяти нам нафиг не нужен. Как аналогия, либо ты головкой диска управляешь и пишешь в сектора руками, либо на тебе абстракцию в виде файла.

>параллельно развивается функциональщина
Она всегда была и жила параллельно, просто ФП лапша пригодна лишь для маня фантазий, а не для промышленного программирования. Взяли нужное, на остальном пофиг. Те же нуллабл типы в котлине и шарпе, куда практичнее опшинов, которые тупо обертка.

Например в го есть ограничение за неиспользуемую переменную, компилятор мог бы ее выпилить сам, но каким-то хером бьем по рукам разраба, по приколу. Точка с запятой, неожиданно может тоже стать опциональной, незачем дрессировать программиста. В неуправляемом системном языке мне нужен контроль над памятью в ручную, для этого я его и выбрал.
Аноним 23/05/22 Пнд 15:30:48 2361759 491
16433955670090.png 380Кб, 797x868
797x868
>>2361700
>Ну, С, С++, никакого там ансейва нет.
Там оно без кейворда — вообще весь код.

>Придумал себе ограничение и потом пытаться этим превозмогать.
Ограничение у тебя в твоём зумерском мозге, пчел.

>любое место где он есть, делает сразу и твой код ансейвом
Ту часть, в которой он есть, а не всю.

>>2361745
>Как? С++ полжизни пытался сохранить совместимость с Си, как он его ограничил?
Он же написал — возможность ограничить.

>Те же нуллабл типы в котлине и шарпе, куда практичнее опшинов
И в чём же это заключается? В том, что нормальную систему типов на говно из 2000-х уже не натянуть?

>которые тупо обертка.
Хуя, макака поняла что такое монада, какая редкость.
Аноним 23/05/22 Пнд 15:45:20 2361777 492
>>2361759
>Там оно без кейворда — вообще весь код.
Ввели кейворд и он теперь пронизывает весь раст, лол.

>Ограничение у тебя в твоём зумерском мозге, пчел.
Пук

>Ту часть, в которой он есть, а не всю.
Л - логика. Вся вера в раст быстро уходит после сигфолта. Но виноват, конечно, один из тысячи ансейвов, не твоих, главное, так заказчику и скажу.
Аноним 23/05/22 Пнд 21:21:16 2362070 493
А мне нравится Раст...
Аноним 24/05/22 Втр 14:02:02 2362316 494
Когда нет доминирующих фреймворков, типа, джанги, cocoa, то получается полная ебала. Каждый лепит то, что хочет и в итоге либо 3 калеки - пользователя фреймворка есть, либо он вообще нахуй ненужон. А силы бы могли в нужное русло направить. Например дизель.
Соглы?
Аноним 24/05/22 Втр 17:22:21 2362442 495
>>2362316
В этом и проблема всех этих новых языков, дрочат синтаксис, когда нужна стандартизация инструментов.
24/05/22 Втр 17:56:42 2362456 496
>>2362442
Зачем? Ведь это же ОГРАНИЧЕНИЕ творческого мышления РАЗРАБОТЧИКА! Ведь так хорошо, когда ИНЖЕНЕР ничем не ограничен, он же не дурак. Сам сделает все, зачем ему эти ОГРАНИЧЕНИЯ фреймворков?
Аноним 24/05/22 Втр 19:49:00 2362554 497
>>2362456
А кто запрещает, хочешь пили, вон в жабе есть спринг и еще пару топ решений, а все остальное тухлое художественная херня, которое берешь на свой страх и риск.
Но если бы была стандартизация, то спринг не был чуть быстрее джанги, а как ASP.NET давал на клыка неуправляемым языкам.
Аноним 25/05/22 Срд 00:11:37 2362732 498
>>2361534
>Ну и в целом средний программист не тупой, не нужно пытаться языком его ограничить, это признак ограниченного мышление инженера.

Зачем говорить от себя, если можно рассказать цифрами про тех программистов которые хорошие, а не средние:
(Понимаю что всем надоело, но я не устану это постить, пока вы не перестанете мне про хороших программистов бездоказательно рассказывать.)

Extremely. A recent study (2019) ( https://langui.sh/2019/07/23/apple-memory-safety/ ) found that 60-70% of vulnerabilities in iOS and macOS are memory safety vulnerabilities. Microsoft estimates (2019 https://msrc-blog.microsoft.com/2019/07/18/we-need-a-safer-systems-programming-language/ ) that 70% of all vulnerabilities in their products over the last decade have been memory safety issues. Google estimated (2019 https://security.googleblog.com/2019/05/queue-hardening-enhancements.html ) that 90% of Android vulnerabilities are memory safety issues. An analysis of 0-days (2019 https://nitter.net/LazyFishBarrel/status/1129000965741404160 ) that were discovered being exploited in the wild found that more than 80% of the exploited vulnerabilities were memory safety issues.

The Slammer worm from 2003 was a buffer overflow (out-of-bounds write). So was WannaCry. The Trident exploit against iPhones used three different memory safety vulnerabilities (two use-after-frees and an out-of-bounds read). HeartBleed was a memory safety problem (out-of-bounds read). Stagefright on Android too (out-of-bounds writes). The Ghost vulnerability in glibc? You betcha (out-of-bounds write).

Two-thirds of Linux kernel vulnerabilities (2019 https://static.sched.com/hosted_files/lssna19/d6/kernel-modules-in-rust-lssna2019.pdf ) come from memory safety issues.

70% of all Chrome security bugs (2019 https://security.googleblog.com/2019/05/queue-hardening-enhancements.html ) are memory safety issues.
Аноним 25/05/22 Срд 02:37:39 2362790 499
Что думаете про Таури? https://tauri.studio/

Мне кажется дико кайфовая штука. Фреймворк для десктопных приложений с бэком на расте и фронтом не через хромиум, а через браузер встроенный в систему.

Как Электрон, но не говно. Или всё таки говно? Меня бесят долгая загрузка и большой размер приложений на Электроне. У Таури загрузка чуть-чуть быстрее, и значительно меньше вес приложений. https://github.com/Elanis/web-to-desktop-framework-comparison Но всё равно это блоут.

Я дизайнер с небольшим опытом веб-разработки. Начал заниматься разработкой приложений на Таури чтобы сделать приложения для себя и возможно потом выпустить их в опенсорс. Работать с Таури очень просто и весело, мне нравится. Особенно круто то, что можно очень легко сделать приложение из существующего веб-проекта, буквально в пару действий и строк. Ещё возможно в будущем приложения для Таури можно будет выпустить для Android/IOS.

Я думаю, что у Таури есть всё для того, чтобы заменить Электрон, и это уже огромный шаг вперед. Но если сравнивать его с другими инструментами для разработки приложений, то хуй знает.
Аноним 25/05/22 Срд 02:43:05 2362791 500
>>2362790
Кстати, было бы здорово найти тут людей, которые тоже занимаются разработкой на Таури, хотят попробовать, или просто знают Раст, и могут помочь. Я достаточно тупой и мне Раст сложно дается, потому что нет знакомых у которых можно попросить помощи. Можем сделать что-то вместе, я могу помочь вам с дизайном.
Аноним 25/05/22 Срд 07:13:57 2362820 501
>>2362732
Хорошо, но почему тогда раст не популярен? Ему уже 16 лет, а крупных коммерческих проектов на нем нет. Да и для 16-ти лет разработки он слишком сырой. Такое ощущение, что его пилят ради того, чтобы пилить.
Аноним 25/05/22 Срд 11:30:27 2362916 502
>>2362820
>Хорошо, но почему тогда раст не популярен?
Какой популярности ты ждёшь от узкопрофильного языка? Как у шарпа или плюсов? Ну такой не будет никогда.

> Ему уже 16 лет
В его текущем виде — 7.

>а крупных коммерческих проектов на нем нет
Потому что ты опять скозал?
Аноним 25/05/22 Срд 18:05:12 2363202 503
>>2362820
>Такое ощущение, что его пилят ради того, чтобы пилить.
Ты не поверишь.
Аноним 25/05/22 Срд 21:38:46 2363395 504
AOjJSjDW400x400.jpg 21Кб, 400x400
400x400
mqdefault.jpg 7Кб, 320x180
320x180
screenshot-b369[...].png 114Кб, 1024x768
1024x768
Аноним 26/05/22 Чтв 01:04:47 2363534 505
>>2363395
Это, конечно, очередная перделка, с llvm сейчас только ленивый свой яп не пишет, но все же, как работает этот мозг художника? Типа вот, точка с запятой - моветон, хорошо, уберем. И тут же добавляют полнотекстовое слово function, лол.

И за что! ПРОСТО ЗА ЧТО двоеточие после типа, ну IDE даже подсвечивает, если трудно с восприятием?
Никакой вообще практичности, просто фаняться, я художник я так вижу (а то что потом пол жизни как на пианино играть по клавиатуре это пох).
Аноним 26/05/22 Чтв 05:36:01 2363570 506
>>2363534
Читабельность языка это основное требование в их дизайне. Код должно быть легко распарсить и человеком (включая без IDE и подсветки синтаксиса), и семантическим анализатором, и какие-то части условным grep/sed/awk, если припрет. Никому не нужен новый Perl или APL. И касается это как семантики, так и синтаксиса.
мимо
Аноним 26/05/22 Чтв 12:13:08 2363785 507
Аноним 26/05/22 Чтв 12:14:43 2363787 508
>>2363570
>Читабельность языка это основное требование в их дизайне
Ну да, нормальная такая читабельность.

Объявление типов здорового человека:
Type name = ...
name Type = ...
Курильщика:
let mutable name: Type = ...

паблик статик воид мэн!
Аноним 26/05/22 Чтв 12:23:08 2363792 509
>>2363570
То есть, они реально считают, что полные ключевые слова добавляют читабельности? Они жабу видели??

Тогда я уверен, что скоро снова появиться поколение людей, которые будут делать язык с уклонном на реальный английский язык. Я пережил, когда "зумеры" открыли noSQL,
но второй кобол я уже боюсь представить
Аноним 26/05/22 Чтв 12:40:04 2363810 510
>>2363792
> язык с уклонном на реальный английский язык
obj-c
Аноним 26/05/22 Чтв 13:11:37 2363847 511
В общем, поковырял 3 недели Раст. Всё отменяется. Полная хуита. Пошёл в плюсы. Ветку можно закрывать.

Аноним 26/05/22 Чтв 13:55:38 2363876 512
>>2363570
Перл топ. Никаких лишних конструкций, язык для настоящих художников
Аноним 26/05/22 Чтв 16:14:52 2364028 513
>>2363847
Лол, а что ты там такого увидел? Напиши отчет.
Аноним 26/05/22 Чтв 17:53:12 2364091 514
>>2364028
Может мой ответ покажется неожиданным, посмотрел интервью Страуструпа у Лекса Фридмана и призадумался. Такой дядька хороший, всю жизнь этому посвятил, столько лет полировали плюсы, проводили всяческие оптимизации, и тут вырисовываются какие-то кренделя со своей киллер фичей владения \заимствования и думают, что захватят мир? А вот хуй им.
Лично мне С, С++ и Раст не очень из-за
читабельности, кому-то наоборот >>2363792 , опять же важна область применения, но если выбирать из этих трёх, выбор очевиден. Может Раст и поприятнее и чуть дружелюбнее, но сыроват + если уж ты любишь байтоёбствовать, то можно как-то и без утечек памяти научиться писать.
Аноним 26/05/22 Чтв 18:33:49 2364116 515
>>2364091
>можно как-то и без утечек памяти научиться писать
невозможно
нвидия вот всё научиться никак не может
Аноним 26/05/22 Чтв 22:53:22 2364277 516
>>2364116
Чет в цпп ветке совсем упоротые сидят. Да я если честно фо фан занялся растом, хотел простенькую приложеньку для десктопа сделать, в итоге завяз где-то в дебрях и был несколько демотивирован. А так системные языки не очень приятны, ну в плане каждодневной работы... кровь из глаз от всяких конструкций вида *&<нувыпоняли. Но может быть это ошибка, может раст велик, люди ещё не поняли этого (на самом деле овердохуя где используют, но это не значит что антон сможет найти работу где-нибудь в постснг), а так весело, чо.
Аноним 27/05/22 Птн 01:19:32 2364359 517
>>2364116
Сейчас бы ругать язык с ручным управлением памяти, а не идиотский дизайн железа или же бизнес процессы.

Писать без ошибок на неуправляемом языке возможно, но сопоставимо дорого для бизнеса. Неожиданно, но есть конторы, где даже юнит тесты не пишут, ибо бизнес он такой.

Но вопрос нужен ли раст бизнесу? Для ембеддед он слишком жирный, а без стд кусок говна, так что там сишечка навсегда. Для прикладных вообще нет потребности совокупляться с околосистемным уровнем и трахать память, зачем вот жабисту или шарперу твое владение или 6 видов строк, когда оптимизированные сервера на VM на сотую процента медленней серверов на неуправляемых языках.

Я сначала думал, что они просрали рынок, когда выпилили конкурентность, но в реале там вообще скорее всего попильный язык для стрижки кабанчиков высоко помета.

Глубокое такое ИМХО, конечно, без обид.
Аноним 27/05/22 Птн 08:04:35 2364404 518
>>2364359
спс конечно за огромную пасту
но я просто написал что безопасно и без утечек памяти писать невозможно

>>2364277
>хотел простенькую приложеньку для десктопа сделать
такое сейчас уже давно не на системных языках пишут
Аноним 27/05/22 Птн 11:32:10 2364519 519
>>2364359
>а не идиотский дизайн железа
Ваши предложения?
Аноним 27/05/22 Птн 20:58:33 2365063 520
>>2364404
>не на системных языках пишут
Соглы, зачем усложнять себе жизнь.

А какие области применения видите у системных языков?
Мне вот ещё интересна тема потоковых видео-аудио, возможно для таких дел стоило бы байтоебствовать...
Аноним 27/05/22 Птн 21:41:21 2365092 521
>>2365063
>тема потоковых видео-аудио
впринципе смотря конечно что ты делаешь, но почти всегда хвататет биндингов к ффмпегу
Аноним 27/05/22 Птн 21:57:20 2365105 522
>>2364404
>но я просто написал что безопасно и без утечек памяти писать невозможно
А я тебе сказал, что это возможно, но это дорогой трудо-ресурс. Зачем тебе вообще раст, если ты контекст пасты потерял за абзац текста?
Аноним 27/05/22 Птн 21:59:42 2365107 523
>>2365105
извини, как эта фраза меняет смысл в другом контексте?)
> можно как-то и без утечек памяти научиться писать
Аноним 28/05/22 Суб 00:07:51 2365168 524
>>2365107
В этом вся проблема агрессивного маркетинга, он привлекает только таких вот шизов, которые не могут даже сформировать свою мысль, но уже хотят писать на расте.
Аноним 28/05/22 Суб 04:01:22 2365207 525
Жаба, шарп и прочее мусорное говно сильно тормозят из за этого мусора, поэтому на мусоре программы не пишут - никакие, ни системы, ни приложения пользователя не пишут, а пишут только бизнес-процессы для корпоративных серверов, где много бабла и много серверов, которые можно добавить если тормозит, да и вообще нам на риалтайм похуй, везде задержки и поебать. А в системе и особенно в приложениях пользователя важна отзывчивость в реальном времени, чтобы все действия человека откликались сразу, без лагов и работали ровно без статтеров. Такие "мелочи" по меркам бизнес-процессов, чрезвычайно важны для системы и пользователя. Поэтому, сколько бы миллиардные машины говнопиара и одебиливания не впаривали веб-говно и крочий кал, его хоть и жрут, но всё равно ненавидят. Одно слово "электрон" и все уже плюются.
Аноним 28/05/22 Суб 07:17:26 2365221 526
>>2365207
Не стоит так обобщать, где именно важна отзывчивость, какую проблему ты решаешь, где узкие места, с которыми по-твоему не справятся языки с GC?
Вообще расту надо отдать должное, во-первых у них интересная книжка на сайте, многие вещи касательно памяти хорошо описывают между делом, да и вот к примеру теперь задумался об оптимизации GC непосредственно в коде, пару фишек подсмотрел. Короче, GC это не такой большой оверхед, если покопаться. Понимаю, что для перфекционистов, которые дрочат на перфоманс, даже такой проёб это ад, но опытные ребята всегда отталкиваются от задачи, чего и вам советую.
Аноним 28/05/22 Суб 08:07:32 2365230 527
>>2365221
> не большой оверхед
> stop the world
Аноним 28/05/22 Суб 09:35:43 2365250 528
>>2365221
>где именно важна отзывчивость, какую проблему ты решаешь
Это не проблема, это сами программы как они есть. Я пользуюсь разными приложениями и среди них есть пара на шарпе и одно на джаве. Все программы - как программы, а эти видно что тормозят, и запускаются медленно, и перерисовываются медленно всё какое-то заторможенное, на подсознательном уровне противно. Хотя, если замерять секундомером, вряд ли увидишь разницу, но человек не секундомер, лагающее дерьмо - видно, оно постоянно действует на нервы уничтожая комфорт пользования, это мерзкий дефективный интерфейс пользователя. Одно и то же банальное окошко на сях (и тому подобном) или на динамикодрисне, как небо и земля.
Аноним 28/05/22 Суб 10:59:35 2365278 529
>>2365221
Что такое Сборщик Мусора? Это такая программа, висящая в фоне параллельно твоей программе, которая ебет твою программу в хвост и в гриву как ей там вздумается. Что это вообще за дерьмо, алё, гараж? Слышь, это уже не программа получается, с скрипт. Ты пишешь типа пожелания, которые отправляются в нёх-машину, которая там типа их выполняет и вообще хуй пойми чем занимается, может майнит.
Это не программирование никакое, чел. Программа, это когда ты пишешь, и компьютер выполняет ЧТО ТЫ НАПИСАЛ, а не вертит нёх-машину от чужого дяди. Это скриптинг, макакинг, программирование 1С.
Аноним 28/05/22 Суб 17:27:07 2365603 530
>>2302404
>Discord
А ещё они на элексир с фениксом все переписывали, такое ощущение, что там просто реализуют хотелки главного тимлида потрогать языки в масштабах продакшена.
Аноним 28/05/22 Суб 21:20:46 2365846 531
В общем, гайс, всё отменяется, язык реально хорош. Это как хорошее вино, нужно время чтобы распробовать, чтобы вкус раскрылся, возможно потом будет похмелье, пару дней, и вот когда оно проходит, ты понимаешь что не можешь не выпить этот прелестный напиток. Или это как знаете, новый вкус мороженного от любимого производителя, дайте ему время, почувствуйте как оно тает на языке.. да, это определенно клубничный вкус, со сливками. Ну а вообще, по крайней мере от раста не воняет говном мамонта, как от других языков, что согласитесь не мало. В общем, продолжаем разбираться в этом чудесном языке. Всем потокобезопасности в этом чате.
Аноним 29/05/22 Вск 16:08:28 2366440 532
Насколько раст применим в обычных бекендерских задачах? На проекте появилось требование переписать один из жрущих сервисов а в последствии и большую часть проекта с питона на что-то более производительное, выбор пал на раст и го.
Почитал треды на разных ресурсах, очень много постов с подчеркиванием системности языка и большим количеством низкоуровневых операций, на которые тратится больше времени чем на написание бизнес логики. Есть ли тут аноны, которые успешно пишут веб на расте? Какие ощущения от этого?
Аноним 29/05/22 Вск 18:33:31 2366568 533
>>2366440

Если надо чтоб работало - переписывай на го, если надо ебать мозги кабану бесконечным раздуванием сроков, а потом оставить перед выбором: остаться с неподдерживаемым кодом либо платить тебе дохуя денег - тогда переписывай на раст.
Аноним 29/05/22 Вск 19:40:19 2366606 534
Аноним 30/05/22 Пнд 02:43:30 2366797 535
>>2366440
>>2366568
Если надо чтоб работало - оставляй как есть на питоне, если надо ебать мозги кабану бесконечным раздуванием сроков, а потом оставить перед выбором: остаться с неподдерживаемым кодом либо платить тебе дохуя денег - тогда переписывай на го.
Аноним 30/05/22 Пнд 03:45:20 2366804 536
Аноним 01/06/22 Срд 01:34:24 2368412 537
CUn-7LuU8AA-8Yp.jpg 89Кб, 600x600
600x600
>>2366797
>оставляй как есть на питоне
Однопоточная говнина, которая тормозит даже при итерации цикла.
Если нужно нормальное приложение, которое не будет жрать память планками, бери го. Не жри все эти асинки, авэйты, промисы и прочие костыли асинхронного программирования. Сейчас, когда ядер больше чем извилин у среднего веб разработчика, нахер не нужны синхронные языки. Да, дизайн языка говно, но другого люди не осилили, кроме откровенной экзотики
Аноним 04/06/22 Суб 01:10:25 2371147 538
>>2365278
Пора учить Ассемблер и становиться тру кодером
Аноним 04/06/22 Суб 05:00:19 2371173 539
>>2371147
Есть такие слова:
"при накоплении определенного объема количества, оно переходит в качество"
"всё хорошо в меру"

Не обязательно ударяться в крайности если ты не школьник-максималист, достаточно не переходить ту границу, когда программирование срывается в макакинг.
Хорошим примером является С++, совершенно чудесный язвк, позволяющий как писать нормальные программы си-стайл, так и пердеть макакиным говном js-стайл, со всеми этими stl, лямбдами и тому подобной дрянью. Вот где-то по-серединке и проходит эта роковая граница срыва, перехода количества в качество.
Аноним 04/06/22 Суб 07:24:53 2371191 540
>>2371173
> С++ совершенно чудесный язвк
такое даже те кто на нём пишут никогда не скажут
Аноним 04/06/22 Суб 09:26:02 2371252 541
>>2371191
В контексте сказанного же. Не вырывай слова из контекста, это не имеет смысла.

И дополню, под "количеством" имелось в виду количество абстракций. Абстракции сначала помогают, избавиться от машинных кодов, потом от громоздкого ассемблера, потом сделать си удобнее., но вот наступает момент, когда вместо помощи программированию, абстракции "захватывают власть" становясь самим программирование. Зменяется менталитет программиста на уже другой, и то что он пишет, уже совсем не то что раньше было, и отношение другое, всё другое.
Аноним 04/06/22 Суб 10:58:43 2371310 542
>>2371252
> В контексте сказанного же.
йеп, вот прям в твоём контексте
я тебе наверное раскрою секрет, но в плюсах не зеро кост абстракшенс нихуя, собственно по этой причине С до сих пор жив
Аноним 04/06/22 Суб 10:59:53 2371312 543
а ну и еще

>>2371173
> js-стайл
> stl
Аноним 07/06/22 Втр 07:06:01 2373422 544
1642526963951.png 75Кб, 1630x208
1630x208
Аноним 07/06/22 Втр 10:27:23 2373489 545
>>2373422
И ведь конечно, даже после того как он сам признался, что в чате, где большинство русские, выставив ник реж русню, он не считает что не прав и все свалят на злых русских
Аноним 07/06/22 Втр 14:41:48 2373779 546
image.png 4547Кб, 3893x2733
3893x2733
Хочу изучать rust, но пугает, что там все захватили всякие транспидоры, фемки и прочие sjw/lgbt/blm-щики, которые ведут сообщество к пропасти. Успокойте меня, у раста есть надежда на будущее?
Аноним 10/06/22 Птн 22:09:55 2376801 547
Аноним 10/06/22 Птн 22:11:27 2376803 548
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов