В этом ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
Кстати из предыдущего треда, там довольно забавную сигнатуру кто-то высрал. На сколько я понял это нужно чтобы в трейт добавить синхронный метод, где-то когда-то мелькала новость что собирались завести поддержку async в трейтах, чтобы не костыльть сторонним крейтом, кому-то попадалось это на глаза? А вообще это боль, особенно если что-то с лайфтаймами, странно что до сих пор не завезли
Спасибо за критику, тоже вдохновился всеми этим постами про лучший раст, но увидел что он не очень то и хорошо для меня подходит. Читаемость кода для меня важна, да и макросы то еще недооцененное зло. Спасибо за сэкономленое время.
>>3030942 Ну оно и понятно, ты же глупый ригидный скуф, которого как в универе научили писать на плюсах он так и серит везде ими. У тебя уже мозг забыл как это - учиться новому. Даже руби от раста отличить не можешь.
>>3030942 Дело не в том прав или нет, а в том что тред не успел толком появится и уже он тут как тут, сейчас чуть ниже найдет крейт с говнокодом и будет сюда постить или запостит то что макрос сгенерировал и будет жаловаться на синтаксис.
>>3032151 >а что тебе не нравится? раст охуенен и без паршивых фаангов Проблема в том что дохуя библиотек, которые поддерживаются васянами и на часть из них давно положили хуй, ситуация прям как с руби
>>3032416 >Там просто число без спроса приводится к нужному типу.
Так это не в крестах. Это CPU сначала приводит тип к плавающей запятой, а затем уже затем производится арифметическую операцию. Компилятор просто это прячет.
>>3031797 Лучшее что случиться, это займет какую-то нишу, например как котлин мобилы, или го микросервисы, будет очередным языком для перделки. Но в реале, любой подобный язык, который будет выпущен под крупным финансированием и у которого будет лучше читаемость кода и скорость написания, обгонит раст.
Просто посмотри как можно легко работу с ошибками и нуллами в том же зиге. И как скоупы памяти и деферы, намного проще выглядят костылей владения и лайфтаймов и как легко выглядит кодогенерация вместо макросов, как-будто рефлексия.
>>3032497 Для питонорожденных есть моджо. Но все они без крупной поддержки. Хотя я офигел что оборот зига полмиллиона долларов в год. Фонд раста публикует расходы, как они кормятся?
>>3032448 >Гугл Что гугл? Любой шаг в сторону от веба и там такие же васянские пакеты. Да ещё и хостится это всё где попало, в любой момент можно устроить новый leftpad - насколько я понял, бегло погуглив, гугл не имеет репозитория для го. А с crates.io так просто не удалишь, например.
>на нём много всего написано что будут поддерживать ещё долгие годы Кто будет поддерживать и как? Репозитория-то нет. Я тебе скажу, как: корпорация просто берёт кусок васянской либы и включает в свой проект методом Ctrl+C - Ctrl+V и там её поддерживает, периодически высирая изменения для gpl либ в виде архива в разделе corpsite.com/opensource/.
>>3032838 Надо тогда собрать статистику по потёртым постам и банам на доске, так поймём на какой язык больше уходит модерских ресурсов - т.е. кто сжирает больше всех бюджет доски.
>>3032444 Нет, ты не прав. Не существует операции + над типами слева int и справа float. Все арифметические операции производятся над унарными типами. Компилятор добавляет неявных преобразований типов, пока типы не будут совпадать. Это вообще проблема языка большая, что очень много вещей происходит без ведома пользователя.
>>3032870 В нормальных языках существует. Нет никаких проблем написать реализацию сложения двух чисел. Особенно если эти типы не надо конвертить и сложение можно выполнить при компиляции. > Это вообще проблема языка большая, что очень много вещей происходит без ведома пользователя. Ты лучше расскажи как раст в консольку пишет, нахуя он перекодирует текст из utf-8 в кодировку консольки, даже если не просишь. На той же винде можно просто попросить консольку выводить текст в utf-8 и консолька выведет его, но в расте всё равно идёт конвертация в wide string. Единственный способ в расте вывести utf-8 в виндовую консольку - дёрнуть через ансейф winapi.
>>3032900 > В нормальных языках существует. Нет никаких проблем написать реализацию сложения двух чисел. Особенно если эти типы не надо конвертить и сложение можно выполнить при компиляции. Ни в каких не существует, ты не можешь складывать числа с плавающей точкой и целые типы без конвертаций, ты чё ебанутый?
>>3032925 Покажешь её в расте? Даже в дебаге без оптимизаций там просто 2, т.е. он при компиляции посчитал 1 + 1 при одинаковых типах. При этом u8 в расте занимает весь 32-битный регистр, т.е. там даже в теории не может быть сдвига знакового бита, как ты уверяешь.
>>3032925 > Там вставляется инструкция Пикрилейтеды из сишки, всё ещё не вижу чтоб байт куда-то конвертировался отдельной инструкцией. Вот с float есть конверсия.
https://en.wikipedia.org/wiki/ATS_(programming_language) >By using theorem proving and strict type checking, the compiler can detect and prove that its implemented functions are not susceptible to bugs such as division by zero, memory leaks, buffer overflow, and other forms of memory corruption by verifying pointer arithmetic and reference counting before the program compiles. Additionally, by using the integrated theorem-proving system of ATS (ATS/LF), the programmer may make use of static constructs that are intertwined with the operative code to prove that a function conforms to its specification. Ну и чем раст лучше?
>>3032993 > разной размерности Самое смешное что это только в крестах она разная, у раста там просто mov, а u8 хранится в 32 битах. В контексте х86 уже обсер с этим оправданием, там одинаковые значения с идентичными инструкциями.
>>3033029 Это очень частный случай, который можно подпереть таким костылём: Если примитивное число меньшей размерности вступает в арифметические отношения с примитивным числом большей размерности и тип результата задан явно как тип соответствующий типу числа большей размерности, то автоматически кастовать число меньшей размерности к большей. Хз, может когда-нибудь и сделают.
>>3030347 → >Чел разбирается в энергетике, экономике, астрофизике и программировании. Это абсолютно точно не бумер-шизик, ага. Хрюкни, пидор. Финка все помнит и ждет.
>>3030402 → >Да похуй, его будут только в облаке использовать. Как до винды доберётся, так и приходите. У меня для тебя плохие новости - винда уже переезжает в облако.
>>3032919 А почему случилось так, что у тебя целочисленные типы разной размерности?
Если допустить неявное приведение то в ситуации где выходной тип опущен, непонятно что хотел сказать программист в некоторой ситуации. То ли тебе u32 то ли u8. Это может быть симптомом какой-то проблемы в другом месте.
Вот правила для C# (не такая пушка как для VB, но тоже полезно знать):
Improved overload candidates
Summary The overload resolution rules have been updated in nearly every C# language update to improve the experience for programmers, making ambiguous invocations select the "obvious" choice. This has to be done carefully to preserve backward compatibility, but since we are usually resolving what would otherwise be error cases, these enhancements usually work out nicely.
- When a method group contains both instance and static members, we discard the instance members if invoked without an instance receiver or context, and discard the static members if invoked with an instance receiver. - When there is no receiver, we include only static members in a static context, otherwise both static and instance members. - When the receiver is ambiguously an instance or type due to a color-color situation, we include both. - A static context, where an implicit this instance receiver cannot be used, includes the body of members where no this is defined, such as static members, as well as places where this cannot be used, such as field initializers and constructor-initializers. - When a method group contains some generic methods whose type arguments do not satisfy their constraints, these members are removed from the candidate set. - For a method group conversion, candidate methods whose return type doesn't match up with the delegate's return type are removed from the set.
>>3033793 >Приведи конкретный пример посмотреть. >Не язык говно, это вы плохо прогаете.
У меня есть теория. Раньше усложняли компилятор, чтобы облегчить работу программиста, теперь же чулки настолько стали сильно сжимать и мешать кровотоку, что в мозг стало мало попадать кислорода и многие технологии были забыты.
Нет никакой причины, чтобы не сделать безопасную конверсию типов, кроме как забить болт и скормить как есть, все равно сожрут.
Понимаешь, сейчас проще статью написать или на конференции рассказать почему это не нужно, чем сделать что-то. На этом половина го построено и выстрелило же.
Чувак, чтобы ты понимал, они половина того что не успели впихнули в макросы и забили, потому как надо было релизиться, а ты сидишь сейчас и пытаешься с умным видом рассказать что это не яп сырой, а тот чел неправильный код пишет.
>>3033796 >>3033798 Сколько надо ума чтобы сравнивать неуправляемые язык с управляемым, да еще и с ГЦ? Ты не то чудо, которое в прошлом треде с котлином сравнивал?
>>3033837 У котлина вообще свой статический DLS на базе языка, у всеми любимого раста даже дефолтных аргументов нет. Но зато есть затрах с опшенами и мегакостыльные пользовательские ошибки.
>>3033859 Ты о чем вообще дурачок? Опшены тебе не нравятся? Да мало ли что тебе не нравится. Иди на котлине пиши и не еби серьезным дядям тут мозг. Проблема макак Итт в том, что они почему-то думают что в их языке все реализовано правильно, следовательно в условном расте это должно быть тоже. Хотя по факту это просто необучаемость и старческая ригидность мышления. Вы хотите чтобы вам было удобно, а язык от вас требует времени для изучения других концептуально вещей. Вместо того, чтобы изучить язык, открыться для других идей, мы начинаем вонять что А ВОТ В СИ КОТЛИНЕ ЖАБЕ ЭТО ЕСТЬ ХАХА СОСИТЕ ОПШЕНЫ НИНУЖНЫ. Допустим оно все в расте есть. Так и зачем тогда вам он нужен? Ведь есть уже котлин. Безусловно есть вещи которых в расте не хватает. Но серьезно хуесосить систему типов за то, что она не позволяет проводить операции над разными типами - нонсенс.
>>3033892 > не позволяет проводить операции над разными типами - нонсенс Ну если тебе не нравится пример с интами, то что скажешь про Result и Option. Это же банально неудобное говно, когда тебе всё надо в Ok оборачивать, а разные Ок не кастуются друг в друга. Вот в крестах они оба умеют кастоваться из ок-типа, просто возвращаешь значение. И эксепшены тут можно использовать - можно даже не чекать Ок там или ошибка, при обращении оно скастуется к Ок, а ошибка кинет эксепшен. Это в расте мало того что надо прописывать unwrap, так ещё и нет возможности сделать что-то с паникой выше уровнем.
>>3033924 >накрутили рейтинг любимого языка, Это делается так: назови, какие языки знаешь, среди них выбери любимый. Раст на первом месте у тех, кто вообще знает раст, только и всего.
>Как строить АПИ без перегрузок. >как вообще жить без GOTO
>Зачем качать макросы, чтобы не бойлерплейтить ошибки руками? Чтобы сахару было больше, очевидно же. Посмотри на serde или cached, например.
>древнейшие опшены Ты долбоёб, нулл ещё древнее, а > сахар с нуллабл типами это вынужденный костыль, когда у тебя уже есть куча легаси кода с нулл и надо как-то с ней жить. Что касается опшенов: в отличие от нуллбл костылей, это универсальный подход, который позволяет делать, например, как на картинке
>>3033926 >надо прописывать unwrap Долбоёбушек, это сделано, чтобы при случае можно было все эти unwrap найти и нормально обработать, а не оставлять заряженное ружьишко, нацеленное на яйца, как вы, сишники, любите.
>>3033926 >раз в крестах есть то и в расте ДОЛЖНО быть >будто если есть в плюсах — априори самое лучшее решение Что и требовалось доказать. Кому-то memcpy удобно руками вызывать и указатели складывать. Что теперь?
Кастовать опшены? охуеть вообще. Ты разберись пойди зачем они нужны и как их применять, почитай про option или error монады например. Ах да, тут же голову включать надо. Зачем? Лучше пойду проблююсь на двощах.
>>3033924 Твои наллбл типы это тот же опшен с сахаром Я не очень понимаю тряски с перегрузками вообще. Способов заебашить апи тысячи. Этому лишь бы перегрузки писать. Почитай про трейты и дженерики.
Я пишу на скале. Там можно оверлодить функции. Но никто не будет заниматься раскидыванием этого кала, когда можно просто добавить инстанс тайпкласса или написать свой тайпкласс
>>3033946 > нормально обработать Нормально обработать - это вот эта >>3033944 лапша? Option кастануть к bool по какой причине нельзя? >>3033949 > монады Как только появится вменяемый синтаксис под это говно, так и приходи. Лапшу из монад и в крестовом optional можно сделать.
Кекаю с местных срачей про FP. За 2 месяца сказал команде переписать простенький сервис с переусложненного fp-говна на скале на простенький круд на джаве. Пофиксили все баги, разблокировали найм, удешевили поддержку и разработку, снизили риски ухода сотрудников. Брат жив и счастлив.
>>3033924 >Как строить АПИ без перегрузок. Никак, не пиши на нём апи и вообще лучше не пиши код
>Зачем качать макросы, чтобы не бойлерплейтить ошибки руками >когда есть сахар с нуллабл типами Как сказать что ты ничего кроме хэлоуворда на расте не писал, не говоря об этом прямо лол
>>3033801 Я сравниваю не синтаксис, а семантику. Это разные вещи. >неуправляемые язык с управляемым Тут получается что ты либо в M$ работаешь, и двачуешь на перекурах. Или кроме .net никогда ничего не видел. На будущее просто. Чтобы люди тебя понимали, что ты пишешь.
Как я уже писал, это цитаты с сайта где коммитеры в Rust отвечают на вопросы таких как мы с тобой. И они утверждают что есть проблемы с перегрузкой методов в трейтах, приводя в пример C# .
>>3034125 >иди анализируй бёрндаун чарт кекнул, а ведь правда
>ФП для других задач, простенькие круды писать на нём смысла нет. Круды вообще писать смысла нет. Это как на ассемблере писать сайт визитку Я знаю. Я люблю ФП, но не с позиции промышленного программирования, а академического. Написал, чтобы выбирающие ФП задумолись и не пихали его, куда не стоит. ведь один раз уже напихали
>>3034034 на расте мне код более понятен например, но я не писал на плюсах лет 10 распаковывать Optionals так нельзя, смысл в явной и элегантной обработке отсутствия значения в том числе, иначе опшеналы смысла не имеют
сочинение Почему мне нравится Rust. Вот разраб языка nikomatsakis, один из основателей, передумал о своем намерении убрать из раст ключевое слово mut под аргументами reddit'a. Где такое можно увидеть вообще, чтобы язык разрабатывался самими программистами, а не личным мнением фюрера? Каждую запятую так обсуждали, и на гитхабе, и в internals, даже на реддите. https://old.reddit.com/r/rust/comments/25i544/babysteps_focusing_on_ownership_or_removing_let/
>>3034146 потому раст и не ФП язык; вообще фп как дисциплина хорош тем, что оттуда можно понапиздить ништяков и немного улучшить императивную парашу чтобы меньше страдать (замыкания, некоторые монады (result, option например), паттерн матчинг, иммутабельность и прочее. но макаки все равно будут дергать Option(x).value не ведая зачем оно вообще
Я как-то смотрел по фану курс по скалке от одного чела которого я очень уважаю, суть такова: пишется крад с использованием котов, эффектов итд. Прелюдия начиналась с того, что он пояснял за функторы и аппликативы на пальцах ЛОЛ, что отнюдь не мотивирует изучать скалу для написания крадов.
сорян зря быканул на тебя, не в настроении сегодня
>>3034154 я люблю раст за - хайп (это весело) - комьюнити, это для меня значит много, можно и похоливарить, и пообщаться, и поучаствовать в совместном проекте just for fun - за возможность писать быстрый код без гц не отстреливая себе очко, ибо основной альтернативой тут является только цпп (no go zone)
С растом я снова почувствовал себя как в свои 13 лет когда я на паскале ПРОСТО по фану без задней мысли писал вирусню и прочие решаторы уравнений. Последний раз от кодинга я полча лкайф именно тогда.
Годы гребли выбили из меня всю спесь и я превратился в раба энтерпрайза, раст в этом смысле освобождает
>>3034034 Это не мусор, это сахар. Так ты можешь любой енум распаковать. В том смысле, что Option и Result в расте работают на общих принципах, в отличие от null и nullable в других языках, которые приделаны сбоку.
>>3034482 Во-первых, есть if let. Как у тебя сопли из лямбд даже в джаваскрипте уже не пишут. Во-вторых, пограничные случаи обычно проверяют вначале, чтобы не плодить лесенки из скобок. В том же сишарпе я бы сначала проверил if (a == null) и отвалился с ексепшеном, например. В расте я так сделать не могу.
>>3034532 > if let Можно и его, есть разные варианты, я просто чаще так использую поскольку чаще нужно что-то получить из выражения и/или дальше что-то вызвать, а не печатать в консоль. Можно и match использовать, как в примере выше вообще размотать до конкретных значений. Короче варианты разные есть.
> Как у тебя сопли из лямбд даже в джаваскрипте уже не пишут. В жс теперь сопли из "тегов" компонентов jsx пишут
>Во-вторых, пограничные случаи обычно проверяют вначале, чтобы не плодить лесенки из скобок. Во-вторых всё зависит от того что тебе нужно, если надо просто проверить как ты привык в шарпе бери match, if let или вообще .is_some(). Если надо еще что-то бери методы которые есть в enum Option, там полно всякого на разные случаи жизни. Если у тебя руки из жопы и получаются лесенки из скобок или выглядит не так как в шарпе, то не бери эти методы.
>>3034435 > Это не мусор, это сахар. У тебя хуита вместо сахара, если вместо простого чека опционала надо городить паттерн матчинг с нечитаемой лапшой из скобочек. > в расте работают на общих принципах > в других языках, которые приделаны сбоку Тем не менее я не вижу в твоём коде этого. Ты чекаешь что в конкретном енуме лежит такой-то тип. Читающий код как должен понять с какой целью это делается? Никакими общими принципами даже и не пахнет. А для того чтобы поменять опционал на другой хотя бы на абсолютно идентичный самописный тебе надо переписывать код паттерн матчинга, потому что паттерн изменился, ведь ты чекал какую-то хуиту. Т.е. у тебя реализация этой срани лежит на конкретном типе, а не язык предоставляет инструмент. Такая же проблема, как и про то что писали тут раньше - надо разбирать типы на запчасти и собирать из них то что тебе надо, никакой консистенции в обработке ошибок, даже если брать Option/Result - нет единого способа проверить валидность значения в них. Даже дженерики не спасут, если ты захочешь чекнуть в одном месте их, потому что разные API у них. >>3034482 Проблема всё в том же - вместо простого чека ты городишь костыли. Покажи как средствами языка выразить "если опционал имеет значение, то выполнить то-то", какие ещё мапы, блять.
>чек опционала жопу свою чекни, о чём ты споришь вообще? Чекай как хочешь. Если тебе нравится городить ифы - чекай ифами. Читабельнее твой кал не стал. Если ты не понимаешь другой синтаксис - ты просто тупой или необучаемый, пиши как умеешь. Серьёзные мужчины любят элегантные и локаничные решения, чем в данном случае паттерн матчинг и является.
Другое дело что анон >>3034435 хуйню написал с вложенными опциями, так не принято делать, но от криворукости никто не застрахован.
>Проблема всё в том же - вместо простого чека ты городишь костыли. >паттерн матчинг >костыль
мужики и не в курсе
Уёбывай из треда, у тебя деградация головного мозга, расскажи нам ещё про то что лучше чем while(1) для лупов ещё не придумали, олень
>>3034167 В фп не пишу, но во время изучения в унике мы изучали его на примере Лиспа и очень понравилось. Это будто совсем другой способ делать привычные вещи, начинаешь по-другому мыслить. В общем как упражнение для мозга заебись, а вот как в проде с ним работать - хуй знает. Чем большая макака понимает написанное - тем лучше.
>>3034591 >чтобы поменять опционал на другой хотя бы на абсолютно идентичный самописный тебе надо переписывать код паттерн матчинга См. пик. Многое изменилось, по-твоему?
>как средствами языка выразить "если опционал имеет значение, то выполнить то-то", какие ещё мапы, блять. То, что я показал, это пример того, как можно работать с Option. А так, да сколько угодно - можно if let, можно чекнуть на is_some()/is_ok(), полно вариантов.
>>3034602 > чекай ифами Покажи как чекнуть их средствами языка. Ты пиздишь про общие принципы, но почему нельзя сделать пикрилейтед в твоём расте? >>3034627 > Многое изменилось, по-твоему? Да, ты полез переписывать паттерн. Пикрилейтед сможешь повторить даже с дженериками?
>>3034635 тебе выше показали некоторые из средств языка, доступных для этого, о чём ты вообще? ЧТО ТЫ ОТ МЕНЯ ХОЧЕШЬ?
>общие принципы про общие принципы говорил другой анон, но давай я попытаюсь тебе объяснить про них в любом случае, если твой узкий лоб тебе этого не позволяет погуглить и понять самостоятельно ты вообще программист? интересуешься чем-то кроме плюсов?: общие принципы это про у нас есть условная монада option, она может быть либо some либо none, мы можем растягивать монаду через условный map столько - сколько нам захочется (если совсем просто) - результатом будет всё та же монада. Терминология в контексте раста не совсем правильна, но раст очевидно взял Option из ФП, так что пойдёт.
Вот тебе пример, как это работает (пикрил)
Несмотря на то, что мы мэпим None - у нас ничего не падает с null pointer error или другой парашей.
В твоём случае на плюсах это выглядело бы так: допустим нам надо обработать возможно нулловое значение дважды:
if a ? (( a + 1 ) ? a + 2 : option(0)) : option(0) //типа того в расте или другом фп-inclined языке
a.map(|x| x+1 ).map(|x| x + 2)
Об этих принципах, почему-то неизвестных тебе, вероятнее всего говорил тот анон
>>3034591 >Проблема всё в том же - вместо простого чека ты городишь костыли. Покажи как средствами языка выразить "если опционал имеет значение, то выполнить то-то", какие ещё мапы, блять. Тебе 3 разных варианта показали match, if let и map. Все 3 делают то что ты говоришь если есть значение, то выполняют что-то. Все это средства языка. Тебе надо напечатать значение из структуры в терминал или сделать таким же точно способом как в другом языке? Ты хочешь поныть что тут не так как ты привык? Я понять не могу тебя, если тебе надо доебаться, то есть множество других вещей до которых действительно можно доебаться
>>3034669 > пик Даже не собираюсь твой высер читать, пока не покажешь как сделать чек как в крестах. То что у тебя для каждого типа свой чек не значит что в языке есть хоть какой-то функционал для этого. Вот и получается, что даже обработку ошибок не завезли, только какие-то костыли на енумах.
>>3034679 > Даже не собираюсь твой высер читать Он даже не читает, я думаю рациональнее ему и подобным им шизам не отвечать. Меньше кормишь, меньше пасутся. Тем более маркер виден "ря фсё ни так как в C/C++C/C#Cobol/JS/PHP”, пусть хуй сосёт в МБР треде
>>3034669 > в расте или другом фп-inclined языке Ты сейчас пошутил или что? Потому что в крестах ты так же можешь сделать вермишель из монад: > a.transform([](auto a) { return a + 1; }).transform([](auto a) { return a + 2; })
>>3034711 >>3034716 Т.е. я засчитываю победу крестов в контексте "общих принципов" работы с вложенными типами? Потому что всё что я увидел - пять способов использования монад для конкретного типа и ни одного примера именно изначального вопроса - проверки валидности вложенного значения средствами языка. Только сплошные маневрирования в стиле "а давайте вместо проверки кинем лямбду", заебись решение нашли просто перепрыгнув задачу. И это при том что в самом начале я нахуй посылал с мапами, которые вообще к сути вопроса не имеют отношения. Особенно забавно что после того как аргументов не осталось просто скатились в траллинг.
>>3034669 В расте вот так. И, заметь, в расте я точно знаю, что пришло опциональное значение, которое обязательно нужно проверить. А ты со своими плюсами взвёл курок и лихо заправил револьвер в штаны с претензией "А вы так могёте?" Слава Б-гу, нет.
>>3034865 Ну не 3, а 2. Конечно, недоработка с моей стороны в плане наглядности, но вот то, что ты в счёте до 3х путаешься, уже диагноз. Ну вот те ещё один тип.
>>3034908 Ты реально траллишь. Ещё раз - используй разные типы монад, а не вложенных типов. Ты хоть видел что я тебе показывал? Речь про использование Option/Result в одном месте, кого вообще ебёт какой тип в них.
>>3034917 А, понял, о чём ты. Что ты скармливаешь Oprion, Result, просто null и непосредственно значение одной функции и "она просто работает". Дак это ж то самое говно, которое отличает низкоуровневые языки от высокоуровневых. На ассемблере можно чары друг на друга умножать - плюсовики посрамлены и унижены. Раст просто выше уровень и не даёт тебе насрать себе же в тапок, смирись с этим.
Проблема-то в чём? Что если у тебя изменился Option на Result и надо полазить по коду и поменять распаковку? Ну да, где-то придётся, охуеть, какая проблема. А если распаковка через .map(), то даже и не придётся.
>>3034945 > Проблема-то в чём? В том что у тебя нет "общих принципов" для работы с монадами. На этом все разговоры можно закончить. А ведь после этого я могу доебаться до того что bind не завезли, хотя это одна из базовых вещей в монаде. > монады дам > функциональный синтаксис и инструменты для работы с ними не дам Даже в джава-говне до такого распиздяйства не додумались.
>>3035161 Хватит позорить растанов, из-за тебя он продолжает тут траллить, потому что с каждым разом ты всё тупее и тупее перлы выдаёшь. Наличие монадных операций ещё не делает тип монадой, с таким же успехом можно на ГО написать ручные операции и сказать что это теперь монада. По дефолту у енумов нет никаких монадных свойств, а то что ты пытаешься выдать за монады - пять ручных типов на всю std.
>>3035246 Ну давай разберем все тобой по частям тут написаное. Какими свойствами должна обладать монада? Left identity, right identity и associativity. Можешь погуглить что это такое.
Мне лень тут писать, но всеми этими качествами опшен обладает, беря в пасует весь инструментарий что я выше обозначил, можешь погуглить опять же если сам своей агрессивной головушкой думать не хочешь.
На го можно тоже написать монаду наверное. Хоть на небе, хоть на Аллахе. Удивлен? В этом нет ничего магического.
Тип это тип, монада это математическая абстракция которая может быть перенесена в язык свойствами абстракции этого языка будь то классы, типы или что-то другое.
Енам тут при чем вообще?
Что в итоге сказать хотел, брат? Ты давай сам лучше не тупи и иди образовывайся прежде чем срать в треде.
Другое дело что раст не энфорсит тебя знать про монады и писать код в таком стиле. Он просто взял лучшее/практичное из мира фп. В этом был мой тейк.
>>3035251 Паттерн делающий возможной композицию функций которые возвращают обернутые значения. В расте эту функцию выполняют option и result, их можно чейнить (композировать) и не ссать что отстрелишь себе очко.
>>3035257 >Что в итоге сказать хотел, брат? Ты давай сам лучше не тупи и иди образовывайся прежде чем срать в треде. >Другое дело что раст не энфорсит тебя знать про монады и писать код в таком стиле. Он просто взял лучшее/практичное из мира фп. В этом был мой тейк. Раунд!
>>3035246 > с таким же успехом можно на ГО написать ручные операции и сказать что это теперь монада Это и есть монада, просто расписываешь всё вручную. >>3035257 >он просто взял лучшее/практичное из мира фп. Взял, да не добрал. Получилось почти как в го: вроде есть, но в таком виде, что нахуй бы нужно.
>>3035257 > Какими свойствами должна обладать монада? По классике: - монадный тип - юнит-операция - бинд-операция Ну и то что ты написал, для полного соответствия определению монады. Вообще по факту в расте функциональщины столько же, сколько и в ванильной джаве или крестах, там тоже есть ручные типы-монады с юнит/бинд-операциями. Разница лишь в том что в расте есть паттерн-матчинг, это единственное отличие. > Енам тут при чем вообще? При том что в фп-языках ты можешь монадные операции над любым типом выполнять, не надо вручную их реализовывать для каждого типа, потому что они часть языка. В расте нет монад, если убрать ручные реализации из std.
>>3035651 >По классике: >- монадный тип >- юнит-операция >- бинд-операция Что ты высрал тут, тупица? Из кодов выложенных анонами выше непонятно что все три свойства уже удовлетворены? Или ты пиздишь тут типа "ну да я в теме, прочитал на википедии статью и щас надо показать что я ШАРЮ ЗА МОНАДЫ" ебанько.
За них шарить не надо, надо ими пользоватсья а расте ебя в рот теорию категорий, потому что ФП говно по факту для software engineering писать на ЧИСТОМ ФП перформант код - ад, хайрить тяжело, ВСЕГДА будут люди умнее тебя, которые специально усложняют код по фану и потом съебут в закат, потом приходится писать всё на джаве лол с нуля, learning curve ещё выше чем в расте, я потратил около полугода когда изучал скалу чтобы разобраться во всех этих функторах и семигруппах в котах в контексте их применения, в расте я начал писать код через 2-3 дня ленивого чтения растбука
>Ну и то что ты написал, для полного соответствия определению монады.
то что я написал это MONAD LAWS, а не просто properties; без них твоя (семантически) монадка полупокерская будет просто тупым синтаксическим сахаром который нихуя не делает.
Ручные монады или нет - до пизды абсолютно как они интегрированы в язык, если они решают проблемы, мы в раст треде и обсуждаем раст, а не "почему в хачкеле так а в расте нет?? СОСО!!", "А В КРИСТАХ-ДРИСТАХ Я МОГУ САМ У СЕБЯ СОСНУТЬ НЕ ЛОМАЯ СВОИ РЕБРА!!! КАКАЯ ГИБКОСТЬ!".
>в фп-языках ты можешь монадные операции над любым типом выполнять И? Раст ФП язык? Вот пиздуй отсюда тогда, мы не об этом спорим вообще тут. Перечитай предыдущий параграф, мы не обсужадем ФП тут, мы обсуждаем РАСТ. И его monadic-style error and null handling.
>в расте функциональщины столько же, сколько и в ванильной джаве или крестах А ещё в джаве и крестах есть нулы и можно на эти монады хуй забить и брать в рот у вложенных if x == null
Короче, чё ты доебался? Мы (растаны) не будем требовать у тебя тут извинений или включение съебатора потому что по незнанке не шкварятся (а за фп и монады ты очевидно шаришь так же как и я за политику), простим тебя просто без задней мысли. Но с одним условием: харош тут пиздеть и качать лодку по левым топикам которых не знаешь и которые не имеют отношения к теме. Енамы какие-то, автоматические бинлды, вообще ахуеть.
Спроси если есть вопросы лучше - аноны пояснять тебе.
соре всем анонам итт за монадосрач, я кончил, давайте лучше за раст
>>3035802 Открою тебе страшный секрет: асинхронность нахуй не нужна. Она нужна только в кривом джаваскрипте, где всего один поток. Обычный пул потоков работает быстрее, чем новомодное говно с асинками. Для защиты от ддоса используются прокси, в типичном облаке на кубере между твоим сервером и интернетом будет три прокси.
>>3035748 > до пизды абсолютно как они интегрированы в язык Они никак не интегрированы в язык. В ядре ОС без std как предлагаешь ими пользоваться? > мы не обсужадем ФП тут, мы обсуждаем РАСТ Это не я тут хвалился наличием функционалищины в расте и возможностями, которых якобы нет у других. Про то что в расте правильные монады, а в джаве/крестах нет - это тоже не мои высеры. > А ещё в джаве и крестах есть нулы А в расте есть ансейф, который в любой низкоуровневой либе горой навален, в том числе в std. > Спроси если есть вопросы лучше - аноны пояснять тебе. Уже второй день не можете пояснить как сделать if(a) для любой монады. Мне хватило бы одной строчки кода, вместо десятка шизоидных простынь текста и оправданий почему оно не нужно. Зачем это надо уже пояснено - сделать проверки до того как соберёшься использовать вложенное значение.
>>3030948 >unwrap Кстати проиграно, это что получается, если я вставлю макрос для Си, который будет делать exit(1) при ненулевом результате вызванной фукнции, или возвращать результат, это же будет буквально 99% кода на пидорасте.
>>3035926 Все так. Наигрался с Футурамы, к сожалению без контроля тредов и пула сложно написать гибко конкарррент апп. Но для среднего проекта с Футурамы сложнее отстрелить себе жопу. Как обычно трейдофы
>>3033924 >древнейшие опшены Мой любимый пример того, насколько усложняют жизнь null и упрощают жизнь Option это методы Dictionary.TryGetValue в C# и HashMap::get в расте соответственно. Посмотри, насколько нужно изворачиваться в первом случае через bool и out-параметр потому, что через систему типов невозможно выразить, что возвращаемого значения типа T? может и не быть. Это даже не проблема из-за требования совместимости с кодом, написанным до nullable references, эта проблема была бы всегда. А, и в случае return=false у тебя полюбасу остается переменная с бесполезным дефолтным значением, которая будет засорять скоуп, даже если ты вызвал метод в условии ифа. Эта хуйня укусила не раз на практике. (Предполагаю что утечка во внешний скоуп сделана чтобы работал early return/exception с этим же методом, мол если return=false то возвращай из метода или выкидывай исключение, а иначе вот тебе осмысленная переменная в твой внешний скоуп, всё ок)
В расте ты просто получаешь значение которое можно недвусмысленно заматчить через match/if-let/let-else на все возможные исходы, в т.ч. когда само значение в мапе/словаре - Option<T>. Протечек из ифа также нет - благодаря let-else такое поведение уже не нужно.
По сути разница в том, что в C# нельзя выразить что-то типа T??, что позволило бы сделать красивый апи.
В первом случае нулл это отдельная фича языка, во втором - просто очередной тип. В ту же серию, но менее критично, идет специальный тип void который нельзя использовать в дженериках, против вполне рядового () aka unit type - иногда вижу два метода с одинаковыми телами, но разница в возвращаемом значении аля Task vs Task<T>.
>>3036195 > насколько нужно изворачиваться в первом случае через bool и out-параметр потому Но зачем и кто вообще так делает в здравом уме? Паттерн-матчинг работает даже в if, пик1. Или пик2 как в расте с match. Или можно разобрать структуру/контейнер как на пик3. Или как тут любят: > list.Where(x => x is not null).ToList().ForEach(x => Console.WriteLine($"it's {x}")); Или с LINQ декларативно выкинуть все null: > var filtered = from x in list where x is not null select x; В шарпе уж полный порядок с выбором как работать с null, можно ещё несколько способов без language-ext придумать, например эксепшены. А если хочется совсем упороться функциональщиной по полной, то есть language-ext, пик4. Буквально всё что в расте есть и даже то что тебе не снилось, причём реализация Option какой ты её видишь в расте там существовала ещё с 2014. И вообще о каком пердолинге с null идёт речь в шарпе, когда nullable можно запретить на уровне компилятора, если боишься выстрелить себе в ногу.
>>3036636 а кто тебе запрещает отдавать управление на блоке IO? Есть куча механик как этого избежать. В условном эрланге отдельный тредпул на уровне beam (или как оно называется) для IO, там гоняется все что с ним связано чтобы акторы не лочились.
Можно реализовать шедулер который будет забирать управление при блоке ио (привет java virtual threads и горутины)
>>3036636 Все нормальные люди освобождают поток и оставляют коллбек/чекают прогресс операции асинхронщина это под капотом и делает. Неблокирующие операции IO есть везде. Нормальный многопоток всегда будет быстрее скакания по стеку, оставляя фрейм висеть где-то там в ожидании когда к нему вернётся выполнение.
>>3036653 по эрлангу мог спиздеть, сам не тестировал, читал в книжке когда эликсир тыкал, так что возможно там роль отдельного ИО пула в том чтобы тупо не забить ИО если каждый актор будет в ио биться (лимиты ядра/драйверов итд)
>>3036653 >а кто тебе запрещает отдавать управление на блоке IO? Лишняя писанина, тут взял tokio и за меня уже всё что нужно сделано, все библиотеки вокруг веба заточены под асинхронщину axum, actix, sqlx, redis, lapin (для rabbitmq) везде async/await и я поверх этого буду делать свои самопальные говнорутины или использовать какой-то тред пулл и ебаться скрещивать ужа с носорогом
>>3036707 Я выше писал что для среднего аппа вполне себе решение. Если проект более менее нагруженный и сложный, в том плане что не просто параллельно отрабатывает запросы а что-то гораздо сложнее типа чат сервера с лямом юзеров, где еще надо учитывать особенности цпу кешей в cpu bound hot path чтобы быстрее крутить данные - заебешься тюнить и дебажить асинк код. Наелся говна в свое время со скала футурами теми же. Переписали в итоге все на продюсер консюмер и виртуальные треды.
>>3036625 > Паттерн-матчинг работает даже в if, пик1. А ведь это то, о чём мечтал шизик с крестами, ещё и приправленное чем растовик хвалился, лол. Можно написать проверку и тут же разобрать структуру с возможностью использовать проверенное значение, все счастливы. Я даже полез проверять, реально работает.
>>3036625 >>3036783 По-моему вы путаете var с { }/not null, потому что паттерн expr is var x безусловный, это просто создание переменной (пик 1), так что я предположу что вы имеете в виду { }.
А делать так приходится, чтобы банально достать значение из словаря и воспользоваться им за одну операцию вместо dict.Contains(key) + dict[key]. >И вообще о каком пердолинге с null идёт речь в шарпе, когда nullable можно запретить на уровне компилятора, если боишься выстрелить себе в ногу. Как? Одно дело - включить nullable references, может быть даже сделать несоответствие статусов nullable ошибкой при компиляции, но это не помешает стандартной библиотеке в рантайме пихнуть куда-то нулл где он не ожидается, например, при загрузке appsettings.json который не ругается если отсутствует ключ, а выдумывает значение - null для всех референс-типов или 0 для TimeSpan который ты пробрасываешь в метод .Timeout() и ну никак не хочешь, чтобы он неожиданно был 0 (сори, наболело).
Даже если мы представим, что (каким-то образом) нулл не бывает там, где его не ждут, проблема с кривыми апишками в стандартной библиотеке всё еще остается. Представь себе аналог метода HashMap::get в C#, который возвращает null если ключа нет, и T если ключ есть. В таком раскладе через такой метод нельзя доставать значения, если в твоей модели они нуллабл - как понять, почему тебе вернулся нулл, отсутствие ключа или это и есть значение по твоему ключу? Метод вроде HashMap::get невозможно полнценно выразить в системе типов шарпа (пик 3). Да и даже в случаях где твой T не предполагается нуллабл, биндинги через maybeNullValue is { } nonNullValue всё равно протекут наружу и оставят бесполезные переменные во внешнем скоупе.
Про language-ext слышал, но им же не пользуется экосистема C#, которой, в свою очередь, пользуюсь я.
>>3036653 > а кто тебе запрещает отдавать управление на блоке IO? Когда тред сам отдает управление, а не шедулер его забирает, это и есть асинхронность как бы
>>3035926 > Открою тебе страшный секрет: асинхронность нахуй не нужна. Она нужна только в кривом джаваскрипте, где всего один поток. Обычный пул потоков работает быстрее, чем новомодное говно с асинками. Для защиты от ддоса используются прокси, в типичном облаке на кубере между твоим сервером и интернетом будет три прокси. Ты походу вообще не понимаешь о чем говоришь. Суть перфа то как раз в корутинах на множестве системных потоков, то есть когда потоки могут и сами отдать управление, и когда они шедулятся при этом. В го это горутины, например
>>3036950 > то есть когда потоки могут и сами отдать управление В современных системах потоки переключаются при системных вызовах. Если поток переключает ядро ОС, то значит программу написал рукожоп.
>>3035950 >А в расте есть ансейф, который в любой низкоуровневой либе горой навален, в том числе в std. Если одно и то же повторять, то когда-нибудь дойдет: - Подчеркни слово "низкоуровневой", и подумай почему низкоуровневое это ансейф. - Налл это идиоматично в тех языках. Ансейф - напротив, считается дурным тоном где его можно обойти (не низкоуровневый код). - По налл никто загрепать не может, и не делает так. Потому что он может быть неявным, т.к. является нормой. Даже если ты тролль, все равно читающий и вникающий мимокрок нас рассудит. Для него пишу, не для тебя, потому что ты и так все это знаешь.
>>3036968 Причем тут системные потоки, если речь про виртуальные потоки и корутины внутри абстракции языка?
> Если поток переключает ядро ОС, то значит программу написал рукожоп. Вут? Ядро будет прерывать и переключать выполнение физическими потоками системных потоков и тебя не спросит даже. Вроде в посикс тредах можно выставить критическую секцию, чтобы в ней не было прерывания через системные вызовы, точно не помню. Но это не имеет никакого отношения к написанию высокопроизводительного веб сервиса. Там у тебя есть абстрактные виртуальные потоки, написанные поверх посикс тредов, которые в корутинах обрабатывают запросы пользователей, и как там ось переключает выполнение посикс тредов ты не думаешь
>>3036987 >Причем тут системные потоки, если речь про виртуальные потоки и корутины внутри абстракции языка?
Эти абстракции это уже третий уровень. Это вообще другое. Такое будет работать и без ОС.
>Ядро будет прерывать и переключать выполнение физическими потоками системных потоков и тебя не спросит даже. Да, это называется защита от дураков и кривых рук. Это ненормальная ситуация с точки зрения ядра. Ну, может быть и нормальная, но это всё равно защита от дурака. Потому что отсутствия ввода/вывода характерно, например, в "числодробильных" задачах. Матемоделирование, короче. Но и тогда не имеет смысл переключать поток, потому что в таких задачах количество потоков устанавливают под количество ядер.
> Вроде в посикс тредах можно выставить критическую секцию, чтобы в ней не было прерывания через системные вызовы, точно не помню.
И я такого не помню. Ты наверное слышал звон, да не знаешь где он и рассказываешь про SpinLock.
>>3037003 > Эти абстракции это уже третий уровень. Это вообще другое. Такое будет работать и без ОС. А ты на уровне ядра собираешься писать веб сервис, что ли? Юзер спейс и программы в нем это уже третий уровень и будет
> Такое будет работать и без ОС. Ват
> Да, это называется защита от дураков и кривых рук. Это ненормальная ситуация с точки зрения ядра. Нигде не видел и никогда не слышал, чтобы кто-то пытался изнутри программы объяснить оси, как ей шедулить потоки, и это был нормальный продакшен код. Это стрельба из пушки по воробьям. Общие настройки шедулинга - ок, какие-нибудь специальные риал таймовые сборки оси - ок, но пытаться переуправлять потоками ось это бред - ей лучше знать, как ей шедулить, на это потрачены миллионы человекочасов. Может какие-нибудь нфт фирмы бы стали таким заниматься, но им приходить жить в одном облаке с биржой и жить в юзер спейсе линукса
>>3036266 Проблема в том, что вы о разных вещах говорите.
Тебе говорят "у меня ошибок в коде меньше стало", а ты отвечаешь "мне неудобно так писать, и некрасиво выглядит".
Мне понравился такой ответ: В раст и так if-else возвращает значение. Не так уж трудно написать let get_my_a = if Some(foo.a) {a} else { ... не могу вернуть НИЧТО. ошибка компиляции }; Разница с тернарным оператором минимальна, при том еще и дает возможность безопасной инициализации.
Засорять лишним синтаксистом когда и так есть... зачем? Унификация без потери читаемости. При этом я не раз видел код, когда делают cond1 ? expr1: cond2 ? expr2: expr3 .. какое же это уродство! Боже упаси от тернарных операторов. Писателя не остановишь, пока перо не отберешь.
Вот еще. Когда тебе захочется вместо одного экспрешона два - в if-else это будет тривиальный перенос строки, а тернарник придется переписывать.
>чтобы кто-то пытался изнутри программы объяснить оси, как ей шедулить потоки, и это был нормальный продакшен код.
Речь не об этом, а о том, что до принудительного переключения потоков почти любая программа успевает сделать системный вызов. А там его встречает планировщик.
>>3037056 > Речь не об этом, а о том, что до принудительного переключения потоков почти любая программа успевает сделать системный вызов. А там его встречает планировщик. Что за бред Если у тебя программа упихана системным вызовами и постоянно проваливается в кернел спейс, это пиздец и очень плохо. Никто так не пишет (по возможности). Так что планировщик быстрее заберет управление у потока
>>3036852 >dict.Contains(key) + dict[key] Откуда вы лезете, наркоманы? Где-то открылся портал с перлом? Такое говно потом невозможно читать и хуй разберешь, что хотел сделать автор. То джуники напердолят абстрактных фабрик, то мамкины саентисты насрут монадами, а ты сидишь потом и разгребаешь эту шизу.
>>3036939 Суть в том, что асинки работают медленнее пула потоков. Я проверял на сишарпе, на го и на расте через токио, везде асинки сосут. Чемпионом оказался го, там с горутинами показало на треть меньше рпс. Можешь сам проверить, а не вестись на пиздабольство маркетологов.
>>3037173 Выложи результаты, чтобы перепроверить и понять в чем твоя ошибка. Так твое сообщение тонет в 100500+1 результате других подобных бенчей, которые заявляют обратное. Причем это не от компаний каких-то на рандомных сайтах, а просто на гитхабе люди тестируют.
>>3037182 Я не встречал бенчмарки, где асинки выдают больше рпс. Маркетологи напирают на экономию памяти, но тактично "забывают" указать, что, прежде чем закончится память, ты упрешься в производительность бд или в лимит подключений на сокетах. В расте асинки тем более нахуй не нужны. Для системного программирования есть liburing, а прикладной код на расте никто писать не будет, язык не для этого. Чулочники придумали: если код на расте будет похож на код на нодежс, то раст станет таким же популярным, как нодежс. Шизофрения как есть. Лучше бы довели до ума стандартную библиотеку, а не как сейчас 100500 либ от разных авторов и все они нерабочие.
>>3037173 Кей ворд асинк делает из функции корутину. Горутины это корутины на пуле потоков. Так что у тебя там медленнее работает И вообще тебе даже в школе должны были рассказывать, что создавать на каждое соединение к веб сервису по потоку, который будет 1 к 1 к системному, это мертвый путь. Короче ты вообще не понимаешь, что пишешь. Тебя однопоточной нодой трахнули когда-то и ты до сих пор тупишь в терминах
>>3037215 Если ты сравнивал liburing с асинками на epoll, то ясен хер юринг будет быстрее. Они создавались для разного в разное время. Но фьюча - это просто стейт-машина, она к реализацию экзекутора вообще не привязана.
>>3037289 >>3037291 >>3037303 Тем не менее, асинки самые медленные. Вангую, что это связано с памятью: когда процесс загружается на ядро, линукс загружает в кэш нужные страницы, такая себе оптимизация. А процесс с корутинами начинает ебать общую память через волатайл переменные, ведь ему надо прверить таски из общей очереди. Это мои предположения, глубоко я еще не разбирался.
>>3037393 > гугл > плюсов Гугл никогда не писал на нормальных плюсах, у них в гайдлайнах прям написано писать на си с классами. > в тему переписывания с плюсов Не вижу где это написано. Они вложились только в совместимость раста с плюсами, ни слова про то что собираются что-то переписывать. Более того, это какая-то частная инвестиция одного из владельцев гугла, а не бабла самого гугла, к разработке оно никакого отношения не имеет. Как обычно желтизну разводите, как уже было с "майки переходят на раст", а на деле там веб-макаки из субстрата что-то в облаках пердолят на микросервисах.
Пиздец вы тут срач устроили, один про Фому другой про Ерёму.
На примере жму/пинуса: - в ос есть потоки - ос потоки есть а. kernel space (которое шедулит само ядро, вытесняющий принцип многозаданости), для них нет конкретного API, вы ниче с ними сделать не можете - b. user space: это как раз та самая хрень которую обычно имеют в виду, в жму пинусе это обычно сделано через NPTL с мапингом 1:1 к кернел треду - потоки в конкретной среде исполнения (руби, jvm, etc). Тут где как. Где-то есть поддержка и нативных тредов (тип b) где-то реализованы свои костыли поверх тредов типа b, в простонароде их часто называют GREEN THREADS/VIRTUAL THREADS
по пунктам:
>>3036939 >Когда тред сам отдает управление, а не шедулер его забирает, это и есть асинхронность как бы
Асинхронность это когда код выполняется НЕ синхронно. Главный тред может запустить операцию в другом треде и не заблокируется, будет выполнять инструкции дальше.
>Ты походу вообще не понимаешь о чем говоришь. да, тот анон наполовину хуйню сморозил, впрочем как и ты (без негатива)
>>3036968 ты вероятно путаешь так называемые зеленые (виртуальные) треды и треды ОС. У ОС тредов есть только одна гарантия - никаких гарантий.
>>3036987 >Вут? Ядро будет прерывать и переключать выполнение физическими потоками системных потоков и тебя не спросит даже вот этот все правильно говорит если под физическими потоками имеет в виду kernel threads а системными потоками = user space threads, но звучит все равно туговато
>>3037003 >Эти абстракции это уже третий уровень. Это вообще другое. Такое будет работать и без ОС. да, я недавно лупой выжег потоки на деревце. Что ты несешь? Вот этот челик какие-то странные вещи говорит короче. ^
>>3037035 >Нигде не видел и никогда не слышал, чтобы кто-то пытался изнутри программы объяснить оси, как ей шедулить потоки всё по фактам, да
>>3037173 Медленнее/быстрее, это всё зависит от кейса. Давайте постаим задачу, напишем примеры кода и выясним, хули спорить без дела
>>3037215 >В расте асинки тем более нахуй не нужны. Для системного программирования есть liburing, а прикладной код на расте никто писать не будет, язык не для этого.
1. я пишу прикладной код на расте, я любой код на нём пишу, мне очень нравится. Вопросы?
2. системное программирование не всегда жму/пинус к слову, юринга может и не быть
>>3037291 >И вообще тебе даже в школе должны были рассказывать, что создавать на каждое соединение к веб сервису по потоку, который будет 1 к 1 к системному, это мертвый путь. >Короче ты вообще не понимаешь, что пишешь.
поддвачну
>>3037357 >Тем не менее, асинки самые медленные ой иди нахуй заебал уже, выложи хоть код на который ссылаешься
>>3037540 >Они вложились только в совместимость раста с плюсами, ни слова про то что собираются что-то переписывать. Чел, ты... В такие вещи вкладываются, чтобы постепенно переписывать существующий код.
>>3037646 > постепенно переписывать существующий код А при чём тут плюсы? Переписывать можно и джаву на ведре, для этого как раз и будет нужна interop между растом и крестами. Как будет нормальная инфа, так и приходи, не надо фантазировать.
>>3037393 Пчел, 1лям это работа 9 топ программистов за год, но так как я не видел отчетов фонда раста, то скорее всего эти деньги уйдут на премию менеджерам и работу маркетинга.
>>3037710 Ну, был бы у раста хуёвый фаундейшн с непрозрачным менеджментом, никто бы ничего не отсыпал. Тем более, что это не первая подачка от гугла, они знают, кому дают.
>>3037646 Мне думается, это прикормка на место в фонде. Это инвестиции на будущее, вдруг выстрелит и нужно будет залочиться на вендере.
С++ спец очень дорог в плане ресурсов и вопрос не в деньгах, а числе самих спецов и в том, что количество не увеличивается. Раст же предлагает идею, что можно посадить зумера и он начнет кодить как плюсовик 30+лет стажем, без сигфолтов.
>>3037873 Думаю, таки да, как и дарт. Смотри: игла в яйце, яйцо в утке, утка в раст в ядре линуха, ядро линуха в андроиде. Выстраивается очень красивая схема, когда один язык для всего - от низкоуровневой системщины до, возможно утилит и сервисов. Тащить в эту схему ещё и карбон, ну как-то не очень. Вдобавок, гугл тоже не дурак и не рассчитывает тянуть проекты уровня языка с тулингом и репозиторием чисто на своём горбу, ему нужна поддержка сообщества. Карбон, в отличие от раста, особого энтузиазма не вызвал, поэтому вот.
>>3037893 > Карбон, в отличие от раста, особого энтузиазма не вызвал, поэтому вот. Лол если честно то я на него не смотрел как раз по причине того что гугл любит внезапно и без объяснения причин закрывать свои проекты. Тоже самое и с дартом, как то он особо энтузиазма не вызвал
>>3037916 > гугл любит внезапно и без объяснения причин закрывать свои проекты Ну, почему же, логика у него есть. Го взлетел как раз потому, что сообщество его приняло на ура - очень не хватало простого конпелируемого языка для веб-макак. А что никому не нужно, то он закрывает. Хотя, мог бы отдать в какой-нибудь фаундейшон и ебитесь, мол, сами, как хотите.
>>3037958 Логика может и есть, только вот закрытие продуктов происходит внезапно и почти всегда без объяснения причин, из-за этого у гугла соответствующая репутация. С го насколько помню там помимо гугла ещё и другие участники были и целая история с plan 9 и какой-то операционкой
>>3037873 У гугла странный подход к своим проектам, эти самые проекты не являются какой-то общей идеей, а просто работа какой-то небольшой команды, мол, глядишь случиться чудо и выстрелит. На примере дарта, как можно было пилить замену js без гарантии, что потом vm дарта не будет встроена в хром? Сейчас же дарт и флаттер вообще конкурирует с котлином, который в самом же гугле и приняли как основной язык. То есть, зачем вставлять палки в колеса для своего же проекта?
Проект карбон, а точнее язык с полным интеропом плюсов и еще удобнее чем плюсы (чтобы был резон их брать), это мега трудная задача требующая тонну ресов и объединение чуть ли не всего гугла. В итоге они там опубликовали дорожную карту и выяснилось, у этих ребят тамвсе очень медленно идет. А в условиях отсутствия стороннего наблюдателя, получиться какая-то экзотика в дизайне как у го (они там и так вдохновились стрелками из раста, ведь рисовать стрелочки буковками - это так весело).
>>3037893 > как и дарт А что с дартом? Он уже давно ушёл от гугла, они не смогут убить его своими руками, на мобилках он вполне используется. В том числе Тенцентом, который сам как гугл. > раст в ядре линуха Ну пока поддержка просто номинальная, по факту его там нет. > ядро линуха в андроиде И линукс с запозданием приходит в ведро. Обратную совместимость с большинством устройств кто будет делать? В ведре так-то много лет проходит перед перекатом куда-то. Даже на котлин лет 5 катились, хотя не было таких проблем с обратной совместимостью как будет у раста.
>>3038614 >давно ушёл от гугла Далеко ли ушёл? Покажи их фаундейшн и счёт для донатов. Вообще я в него не-ве-рю. Он, по факту, прибит к флаттеру, как руби к рельсам. Расползаться в стороны ему некуда - на бэке поджимает го, на фронте жс поскакал в светлое будущее ES6/7/8/9 Гугл плюнет и дарт сдохнет. Китайцы за своим фаерволлом смогут только поддерживать унылый форк для внутреннего рынка, будет как хуавэй, который вроде жив, но на который всему миру похуй.
>линукс с запозданием приходит в ведро Ты шо, с луны свалился? Ведро изначально на линухе, а с недавних пор там ещё и ядро унифицированное с базовым.
>по факту его там нет Китайцы запустили спутник, управляемый линухом с обвязками на расте на уровне ядра. ну вот, тоже привлёк китайцев для аргументирования позиции Ну, ещё гугл переписывает модуль ядра binder на расте, а этот самый binder давно (с момента унификации) в основной кодовой базе линуха. Например, он нужен для активации прослоек типа waydroid на ПК.
То есть, гугл собрался писать на расте ядерную часть андроида плюс разные прочие вещи, для которых раньше использовался С++. Карбон в схему ну не вписывается.
>>3038715 > прибит к флаттеру Рынок мобилок такой, что твоему расту даже и не снилось. Как я уже писал - Тенцент пишет на нём, что уже гарантирует жизнеспособность. > там Там это где? В гите? На мобилках самого гугла пиксель или что сейчас, которые занимают процент рынка околонулевой? За пределами гугла никто не пилит ведро под ролинг, даже на флагманах ядра устаревшие, на бюджетках вообще годовалые. > запустили спутник А ещё под спутники пишут на Аде, давай тогда на неё пересаживаться. > То есть То есть ты фантазируешь на ровном месте, выдавая необоснованные выводы за свершившуюся реальность.
>>3038800 >Рынок мобилок такой Да, да, вот только срок жизни строки кода там мизерный. Вчера она на жабе, сегодня на дарте, завтра на котлине.
>Там это где? В гите? https://github.com/torvalds/linux/blob/master/drivers/android/binder.c пока он на си, скоро будет на расте. Тебе этого мало? Да, этот модуль используется только при конпеляции с поддержкой андроида, но это прям мэйнлайн, то есть, гарантирует поддержку раста в ядре при настойчивой поддержке гугла. > даже на флагманах ядра устаревшие, на бюджетках вообще годовалые. Ну пиздец, какой аргумент. Рано или поздно все будут на новых ядрах, никуда не денутся. Или что, хочешь сказать, что сяюми с сосунгом форкнут ядро и будут упорно сидеть на сишном биндере, лишь бы не иметь дело с растом? Что-то не было с их стороны возражений.
>А ещё под спутники пишут на Аде Ты какой-то ёбнутый. Вот есть раст, вот он используется в ядре линуха, вот пример использования. При чём тут ада? У тебя шизофазия или около, походу.
Изначально речь шла о перспективах карбона, я показал, что гугл с Торвальдсом тащат раст в ядро, а карбон не тащат, в том числе поэтому андроид допиливают на расте, а не на карбоне, из чего я сделал вывод, что карбон не больно-то нужен самому гуглу, вот и всё. Ты же развёл какой-то срач не по теме (твои агрументы по дарту ещё туда-сюда).
>>3038868 >Вчера она на жабе, сегодня на дарте, завтра на котлине. > Позовчера она на жабе, вчера на дарете, сегодня на дарте, завтра обратно на котлине. Поправил) Не знаю почему, но многие после дарта уходят обратно на котлин
>>3038868 > Или что, хочешь сказать, что сяюми с сосунгом Я хочу сказать что они не будут писать две разные реализации - с растом и без. Для мобилок норма что они ещё 2-3 года получают обновы наравне с текущими моделями. Ну ок, 3-4 года после того как реально начнут массово писать на расте в ядре - это самый реалестичный вариант когда в продакшене раст на мобилках появится.
раст уже в мобилках прямо сейчас, начиная 13 ведроида. Биндер ещё не переписали, но системную обвязку уже. Необязательно начинать с ядра, оказывается. Красивая схема раст в яйце, яйцо в утке, утка в ядре, в которой нет места карбону, таки вырисовывается, но не обязательно в последовательности снизу вверх.
как долго мне приходится отстаивать аргументы, подтверждающие и без того банальный факт, что карбон не нужен
>>3039006 > memory safe language Это не обязательно раст, это жвм в первую очередь. > но системную обвязку уже Показать можешь в исходниках, лол? Пикрилейтед из текущих исходников AOSP. Пик 1, ядро 6.7 - ни строчки на расте. Пик 2, системные либы - на расте обёртки над куском внешнего API, 7 файлов, 1000 строк кода, ни одной строчки работающего кода. Пик 3, SDK - ни строчки на расте. Пик 4, основной код ведра - ни строчки на расте.
>>3039140 > Android Virtualization Framework А при чём он тут? Это даже не часть ОС ведра, не говоря уже про ядро. То речь про ядро была, то вдруг ты наскребаешь какое-то непонятное говно лишь бы показать 500 файликов.
>>3039190 >Это даже не часть ОС ведра а што эта, по-твоему? Што такое ОС, по-твоему?
>То речь про ядро была И? Ты не веришь, что гугл перепишет binder на расте, думаешь, соврали?
>лишь бы показать 500 файликов. на расте vs 790 на сишке/++ - тебе это соотношение кажется недостаточно убедительным?
маня, ну ты просто серишь. Напомню, изначально речь шла не о том, что весь андроид уже переписан на расте - что ты почему-то пытаешься оспаривать (впрочем, не особо успешно), а о том, что карбон не нужен и гугл его, видимо, скоро закопает в пользу раста.
>>3037636 >ой иди нахуй заебал уже, выложи хоть код на который ссылаешься Мне кажется, это обсуждение прямо хорошо показывает, почему всякие поползновения типо асинков плохи - челики из-за высоты абстракции/сахара нихуя не понимают, как эта параша устроена на самом деле, потом всюду трясут своим непониманием, типо как твой челик сравнивает неблок ио с тредпулами (мокрое со сладким). Если бы был тупо луп с дерганьем шедулера (как уж он там устроен это дело второе) и вывозом неблокирующих функций, было бы куда лучше.
>>3039317 Долбоеб ты а не зоонаблюдатель. Могу написать асинк хеллоу ворлд и сравнить его с тред пульным продюсер консбмером файл батч процессором. Потом серить везде что асинк быстрее. Понятно тебе все?
>>3039257 > а што эта, по-твоему? Это виртуалька для запуска ведра, в андроид студии оно как раз используется. Ты траллишь тупостью, да? Зайди в репу AOSP, из которой этот самый андроид собирается и покажи мне код на расте. > а о том, что карбон не нужен и гугл его, видимо, скоро закопает в пользу раста Речь изначально была о том что раст вот прям уже скоро будет переписывать кресты, потом ты высрал что УЖЕ переписывает. Что фактически бред полнейший.
>>3039317 ты чё тут серишь, шизик? блокирующий ИО является проблемой как в синхронных так в асинхронных системах, чё ты сказать-то хотел мудила? Кто там где сравнивает тред пулы с ИО блокировкой? Выйди из-за комплюктера пробздись на улицу, а то уже в глаза ебёшься.
>>3039140 >зайди в любую диру, почти все на расте Посмотрел исходники, педерастраст - многословная параша (из-за свистелок и перделок), тупо кал. Эти проекты точно закопают, ебало додиков, которым придётся потом это поддерживать.
>>3039257 > а што эта, по-твоему? Што такое ОС, по-твоему? Непонятно используется ли этот avf на практике, ходит ли туда кто-нибудь в системе, или просто лежит параллельно, как секьюрная возможность
>>3039401 Ты дебил, блять? AVF работает только под гипервизором. > AVF consists of the framework APIs, the hypervisor, and the Virtual Machine Manager. The hypervisor guarantees virtual machines (including Android) are isolated from each other, much like how the Linux kernel does it for processes.
>>3039422 >Ты хочешь заебашить бизи вейтинг и еще "шедулер дергать"? >вызови мне неблокирующий HTTP запрос маня своим "лупом" дернув "шедулер" Делаешь кучу сахара @ быдло высирается в интернете с ебалом иксперда. Во поэтому всякие асинки и зло.
>>3039426 > AVF is shipped in Pixel 6 and 6 Pro, but isn't enabled by default. To enable it, follow the instructions below: А ну оно по дефолту выключено. Короче это ещё пока всё в процессе наработки
>>3039437 Всякий сахар уровня асинков способствуют развитию магического мышления и в этом совершенно нет необходимости, когда речь заходит про ио. Дополнительно с этим возникает негативный эффект - армия хомяков начинает сувать эти асинки в жопу, т.е. применять там, где это не нужно, и тп.
>>3039436 > Это работает (если включить) внутри телефона Нет. Ты для начала должен иметь железо, которое поддерживает pKVM, потом поставить pKVM и только потом ставить на него инстансы микродроида. Т.е. это не часть ОС, это виртуалка в ведре для запуска микродроидов. По умолчанию в ведре нет этого, а поддержка pKVM на текущий момент у полутора девайсов.
>>3039443 Двачую. Асинки должны использоваться только если нет многопоточности. В вебе их используют только потому что жс и нода однопоточные. А использовать их в низкоуровневом языке - быть адептом ГОвна. Даже в жвм асинхронные кортутины не сильно в почёте, а на нормальном языке в принципе должно быть зашквар использовать их во все стороны просто потому что не умеешь работать с IO.
>>3039444 Что за верчение жопой, лол. Собирается вместе с аоспом, ставится на телефон вместе с аоспом, буквально написано, что в Андроиде 14 оно есть по дефолту, хоть и не включено. На каких девайсах это работает мы, кстати, не знаем, потому что хз как другие вендоры используют это или не используют, разрабы аоспа только на пикселях тестят
> Т.е. это не часть ОС, это виртуалка в ведре для запуска микродроидов Что за логика Это виртуалка внутри оси, чтобы секьюрно компилировать приложухи. По сути песочница. Для выполнения js кода, пролетающего от браузера, в андроиде тоже есть песочница. V8 это тоже уже не часть оси? Бред не пиши
>>3039454 >Двачую. Асинки должны использоваться только если нет многопоточности.
Я не совсем тебя понимаю. Почему, собственно? Насколько я понимаю (на ноде не пишу) в ноде есть event loop, который "переключает" выполнение "асинков" в стиле event-machine. Но что мешает заебашить треды и так же переключать их лол? Это просто такой выбор абстракции по сути.
>>3039454 >зашквар использовать их во все стороны просто потому что не умеешь работать с IO У тебя переносимость отвалилась, братан. Работай с IO на низком уровне сколько угодно, но зачем мучить жопу, если можно использовать общие наработки, делая вещи проще и переносимее? Например, для любителей uring есть https://github.com/tokio-rs/tokio-uring и https://github.com/bytedance/monoio - подключай и используй. А если очень хочешь выебнуться низкоуровневостью, то пиши сразу в двоичных кодах.
>>3039460 > буквально написано, что в Андроиде 14 оно есть по дефолту Где написано, шизоид? Найди это говно в исходниках AOSP, лол. Что там у пикселей для разработчиков напихано никого не ебёт, да и то на пикселях нет pKVM из коробки, это просто факт.
>>3039480 В джаваскрипте один поток. Когда делали жс, никто подумать не мог, что ебанаты через 30 лет будут писать на этом скрипте полноценные программы, а не просто показывать плашку по нажатию кнопки. Никто там ничего не переключает, просто в точке async код возвращает выполнение в вызывающий метод, а при повторном вызове продолжается с того же места. Это не переключение потоков по прерыванию, там пока один не дойдет до асинка, остальные стоят и ждут. Почему нельзя было просто сделать для нодежс виртуальную машину с многопоточностью - непонятно, у них там своя ебанутая атмосфера.
>>3039517 Дорого если на каждый запрос создавать новый процесс. Никто не мешает сразу нафоркать 1024 процесса и повесить их на один сокет, а дальше линукс сам сделает лоад балансинг.
>>3039527 >В 2024 году сервера бегут на линуксе А в 2025 придумают новую хуйню для асинхронного доступа к ресурсам. Этому самому uring без году неделя. Что легче - раз в 3-5 лет полностью код переписывать или рантайм сменить в пару строк?
>>3039530 >Никто не мешает сразу нафоркать 1024 процесса и повесить их на один сокет, а дальше линукс сам сделает лоад балансинг. на асинках ты можешь буквально 100500 коннектов держать, а на тредах будешь послан.
>>3039520 Я все равно не понимаю че ты бомбишь, это просто архитектурное решение. В ноде не 1 тред. В ноде single threaded event pool, который когда лочится - берет тред из тредпула и отдает ему управление, а сам переходит к следующей таске из очереди.
>>3039544 >на асинках ты можешь буквально 100500 коннектов держать, а на тредах будешь послан. Чего вдруг? Количество конектов не зависит от количества тредов.
>>3039574 > Как мне видится Без разницы какой рантайм, у тебя всё равно выполнение прерывается и возвращается обратно в неизвестный кодеру момент. Ты это никак не пофиксишь, потому что это сама суть асинхронности. Ну и наличие какого-то рантайма там где его могло бы и не быть - это лишние прослойки, усложняющие код и дающие оверхед. В бсд челики ещё жаловались на "заразность" этого говна - довольно пердольно использовать асинхронную либу, когда ты сам не используешь в коде асинхронность, т.е. оно вынуждает делать асинхронным всё.
>>3039574 А тебя не кажется странным, что асинхронщина не прижилась полноценно нигде кроме жс? В шарпе очень удобная асинхронщина уже больше 10 лет есть, но открываешь любой свежий проект, даже веб, и там нет её. В джаве тоже почти никто не пишет на ней. Только в котлине её используют, но там она и выглядит не так как у всех, слишком высокоуровнево. В плюсах она появилась, но тоже полнейшая тишина, насколько я знаю её используют только в однопоточных микроконтроллерах. Я когда-то у ГОвнарей сидел и читал много ахуительных историй про то как чтобы выучить язык надо две недели, а чтобы научиться уверенно разбираться в каше горутин большого проекта и оно работало без багов - 5+ лет.
>>3039614 > Рассказываешь тут про раст в ведре, при этом ведро видел только на картинках в гугле. Найс троллинг, как раз ты и не скачивал аосп ни разу. Аосп это множество (больше тыщи насколько я помню) гит репозиториев, которые менеджатся через repo и манифест, который показывает куда какой репозиторий скачивать. И какой нах гитхаб, аосп через геррит ревьювится. Скачай по инструкции и все платформ аппы и модули там будут: https://source.android.com/docs/setup/download/downloading
>>3039681 Не буду спорить, но тут есть выбор. Асинхрон в расте почти безальтернативен только при работе с http/websocket. Да и то, возможно есть синхронные варианты, я их не искал.
>>3039697 >>3039707 Я даже кинул инструкцию от гугла по AVF, где чётко написано что после сборки AOSP ставится отдельный пакет, а ты продолжаешь траллить тупостью?
>>3040155 Молодец, спустя два дня наконец нашёл модуль, который включен по умолчанию везде, но всё равно обосрался. > См. пик. Тебе видимо самому надо глаза с мылом мыть, потому что внешние модули ставятся питон-скриптами или через пакет-менеджер при сборке. Ты зачем-то притащил скрины репы ведра, но там очевидно нет этого модуля. Ты бы хоть чекал перед тем как писать. Алсо, заебал в Code search рыться, там собрано вообще всё, в том числе и внешние модули. Склонируй уже репу AOSP и не позорься, это 5 минут времени. >>3040158 > выделяет копирайт Тут даже комментировать не надо.
>>3040198 > AVF в отдельной репе лежит. > Склонируй уже репу AOSP и не позорься, это 5 минут времени. Ну я склонировал, всё есть. Хз откуда ты правда 5 минут взял, если учитывать, что сорсы 161G весят без блобов. На ночь поставлю cloc - посмотрим сколько там раст строк от общего числа
>>3040796 Без истории там все равно достаточно много 60-70гб
>>3040804 Ты "обвязку" никак не отключишь все равно. Аосп это 1300+ репозиториев, в том числе многие из них опенсоурсные а-ля ядро линукс. Так сделано, потому что приходится вносить патчи и в них. Так что чисто код, написанный разрабами аоспа, никак не посмотреть. Мб если только через гит блейм по комитам не идти и не фильтровать хз как откуда разраб
>>3041565 Поясни? Че все так макро боятся? Я щас посмотрел код, хз, вроде обычный кодогенератор. Понятно что с лисп макросами не сравнить, но тем не менее.
>>3041754 >В тех же крестах макросы это антипаттерн. Ты говоришь о макросах препроцессора, это другое. Шаблоны же, которые больше походят на макросистему, в крестах используются повсеместно.
Посмотрел видос, эти ппц, чтобы присвоить простое значение для ссылки в структуре нужно какой-то дереф, потом Rc<RefCell<>>, а потом какой-то refmut возвращается, жесть костыли на костыле, это точно самый любимый язык? https://www.youtube.com/watch?v=Fqnwj04CQX4
>>3041867 >Тотальная магия >Сложно читать и сопровождать >Сложно дебажить >Долго компилить ПТСР от крестошаблонов? Потому что ты перечислил проблемы крестов. А у раста не самая плохая макросистема. >Кодогенарацию можно сделать проще. Можно, но это тебе не лисп. >>3041890 >но макро/рефлексия неотъемлемая часть любого языка Щито?
>>3041942 Ты просто долбоёб, самый настоящий eblanus vulgaris. Твой случай не уникальный.
Как же достали уже нытики "штабы проста ссильку сделать на памить надо Rc<RefCell<i32>>!!! ТИЖИЛО" Да иди пиши свои линкедлисты с нормальным синтаксисом в си/плюсах/где хочешь. Будто вас кто-то заставляет писать на расте, уговаривает прям. Если вы не в состоянии прочитать растбук и понять в чем суть этих абстракций - то этот язык не для вас, очевидно. Вам о другом думать надо - о ригидности своего мышления и как это исправить, а не о рефцелах.
По рефцелам и другим абстракциям "каторые слажна четать!" идея проста: Раст гарантирует тебе безопасность при работе с памятью и тредами.
Условие только одно: пользоваться предоставленными абстракциями.
Если ты ими не пользуешься - что не проблема, unsafe это неотъемлемая часть языка - то язык тебе этого не гарантирует и ты ловишь сегфолты если у тебя кривые руки.
Дереф это трейт, который нужно имплементить, внимание, для правильного дереференса растом твоей абстракции. МояАбстракцияСтроки.deref() превращается в указательНаСтрокуХранящуюсяВАбстракции, то есть когда ты делаешь МояАбстракцияСтроки ты получаешь собственно строку, ибо под капотом это выглядит как (МояАбстракцияСтроки.deref()) Иначе раст не поймет как твою парашу задереферить.
>после этого Го не выглядит таким говном
Как же легко макаку заставить отказаться от своих убеждений.
Во-первых: го безусловно не говно. Это инструмент, причем относительно успешно решающий бизнес задачи. Язык безусловно менее гибкий, нежели раст, но от этого ниразу не "говно", хотя мне он и не нравится.
>>3041950 >но макро/рефлексия неотъемлемая часть любого языка >Щито?
Чё тебе непонятно? Дурак что ли?
В той или иной степени в любом уважающем себя языке есть средства для кодогенерации/рефлексии или хотя бы работы с препроцессором будь то руби, будь то скала, плюсы.
Если хочешь максимально тупой язык, чтобы тебя ограничивали во всём и ничего там не было лишнего - пиздуй в гоу, там только 1 го вей как можно писать правильно. но вообще даже там есть рефлексия
>>3041974 Да-да, долбаебы обвешаются тысячами самописных макросов, а потом оракл или перл не могут переработать, потому что заебешься переделывать говномакросы, которые удобны, ага?
>>3041964 >когда ты делаешь МояАбстракцияСтроки ты получаешь собственно строку, ибо под капотом это выглядит как (МояАбстракцияСтроки.deref()) Иначе раст не поймет как твою парашу задереферить.
когда ты делаешь <звездочка>МояАбстракцияСтроки ты получаешь собственно строку, ибо под капотом это выглядит как <звездочка>(МояАбстракцияСтроки.deref()) Иначе раст не поймет как твою парашу задереферить.
>>3041976 ты чё тут про перл вспомнил-то? Там без макросов минус ебало, это как раз антипример
В лиспе лучшие в мире макросы, в сравнении с лиспом макросы в любом языке априори кал. Никто не плачет там что макросы неправильные, все просто пользуются ими и кайфуют. Хотя они там выглядят как полный пиздец.
Раст в принципе сложный язык, как по твоему там должны выглядеть макросы? Или ты считаешь, что их там не должно вообще быть только потмоу что они "сложные" для тебя?
>>3041975 Да-да, уёбывай давай, отличную аналогию придумал, очень остроумно
ешь своё не говно, парашник
>перепишем линукс
А линукс безусловно будут дописывать на расте переписать его вряд ли получится. Потмоу что раст безопаснее и предсказуемее сишки и крестов для большей части аудитории, которая наигралась в это дерьмо в сосничестве и не прикасалась к нему никогда больше.
>>3042014 >интроспекция Во-первых, интроспекция != рефлексия, хоть часто и применяется в одном контексте.
Во-вторых, вот и пиздуй пиши на них, чё там на вскидку? Фортран, кобол, чистый асм, наверное ещё паскаль (но тут неуверен). Флаг в руки и пиздуй, даун. Надеюсь ты найдёшь там своё счастье.
>>3041950 > крестошаблонов > проблемы крестов А при чём тут они? С шаблонами как раз нет этих проблем, их сделали для того чтобы выкинуть сишные макросы. > у раста не самая плохая макросистема И чем она отличается от сишных макросов? Только тем что унифицированы имена через ! и оно не протекает как min/max в сишке? Всё так же нет никакой стандартизации синтаксиса внутри макроса и там может быть хоть код SQL, всё так же невозможно дебажить их. Как было говно, так и осталось в расте.
>>3042183 Никакой, но писать и сапортить безопаснее. Иди нахуй короче, зачем я тебе это объясняю если ты своей бошкой допереть не можешь. Спроси еще зачем обувь снимать когда заходишь домой если все равно потом убираться.
А пока небольшая стори. Такой фейл произошел со мной. Моя училка по Python узнала, что я к ней неровно дышу. Она пришла с ВМК несколько лет назад, ей 25 и она очень хороша собой. В жизни она лучше чем на фото. Небольшое отступление. Ее зовут Ева Борисовна, но так как в английском языке нету такого формального обращения как в русском, то она нас просит называть ее Eva Lu Ator. По ее словам это помогает наладить дружескую атмосферу и еще чего-то там. Ну в общем чувствуем себя с ней на равных. Наша группа по scheme небольшая (7 человек), остальные обсоски учат Lisp, и еще одна группа мудачков учит Haskell. Мы частенько всей группой остаемся в классе и программируем с ней всякие задачи AI. (В среду и пятницу наш урок последний) Она спрашивает у нас как прошел наш день, интересуется пробелами или табами мы пользуемся при написании функций. Я ей особо не рассказываю про свои exception, но остальные любят с ней обсудить свой быдлокод, а я сижу и листаю маны по Hadoop MapReduce. И вот как-то в один из таких дней нас осталось только трое, я и еще двое одноклассников. Остальные либо болели, либо съебались по делам. И вот сидим мы беззаботно болтаем. Я разговорился, хуле, народу то меньше чем обычно, я и посмелел. Расспрашиваю ее о процедурах, а у самого уже чуть ли не стоит. Я ведь общаюсь с НЕЙ. Она достает что-то из сумочки, присмотрелся – это ее нетбук. — Что делать будете? — Почитаю Lambda Calculus and Combinators. Обожаю! Читаю практический каждый день. — Комбинаторы? лямбда? Странно как-то. (я императивщик блджад) — Ну да. Может быть. Но я стараюсь читать здоровую литературу. Харрисон, Филд и все такое. — Да, прикольно (лицопальма) Пока она употребляла свои словечки о рекурсии и Y-комбинаторах, она попросила меня разобраться с ее компом. Она не могла выйти в сеть. Я как бравый парень сажусь за комп, лезу в настройки TCP/IP чего-то там курочу, перезагружаюсь, она пытается войти под своим логином и паролем, выдает ошибку. Пиздец пиздец. Стою краснею. Она говорит: «Спасибо тебе за пустую услугу». Блжад . Она спрашивает мой логин и пароль, чтобы попробовать войти под моим аккаунтом. Я называю логин(инициалы) и пароль: Evaluatorissexy. Назвал чисто машинально, не задумываясь. И только потом понял что ляпнул. Она просит называть ее Evaluator, хочет неформального общения, вот оно блядь! Во всей красе. Пиздец я от стыда чуть под пол не провалился. Собрался уже было съебывать, но думаю надо извиниться. Стою перед ней, взор потупил. И тут-то я высрал кирпичей. Кусочки пазла стали собираться воедино:
Она просит называть ее Eva Lu Ator , т.е. эвалуатор Любит здоровую литературу – Харрисон, Филд Говорила про «пустую услугу»
Ева Борисовна – ЛИСПОПЕТУШОК,замаскировавшийся под нормального человека. ЛИСПОПЕТУШОК сразу же заметил что я его раскусил и набросился на меня. Я еле увернулся от его ручищ и сразу же выбежал из кабинета. ЛИСПОПЕТУШОК бросился в погоню, сметя все на своем пути. Я побежал к выходу, ЛИСПОПЕТУШОК бежал за мной. Он сбил уборщицу, и она полетела как exeption в моих программах. Я выбежал на улицу и побежал к перекрестку. Пока я соображал как перейти дорогу чтобы не удариться об машину, ЛИСПОПЕТУШОК просто перескакивал через них. Водители бросились разъезжаться в разные стороны дабы не столкнуться с ЛИСПОПЕТУШКОМ. Он нагонял меня. У меня не было выбора кроме как спрятаться в ближайшем здании. Это был детский сад. Я уже забежал в само здание садика, как ЛИСПОПЕТУШОК ворвался в него, проломив стену. Нескольких детишек он раскидал своими кривыми руками, а каких-то придавил мерзким дыханием. Но эти детишки спасли мне жизнь. ЛИСПОПЕТУШОК с каждым прыжком ко мне пробирался все ближе. Я воспользовался тем драгоценным временем, которое мне подарили эти детишки, и запрыгнул на лестницу. Оттуда по трубе я мог добраться до дерева, и уже оттуда мог залезть на крышу детского сада. Возможно, там я бы смог запросить помощи у вертолета, пролетающего мимо.
>>3042545 >К сожалению, нативной реализации библиотек yt-dlp и FFmpeg для Rust нет >Код пишется довольно медленно, Мыши плакали, кололись, но продолжали грызть кактус
>однако компилятор предостерегает от потенциальных проблем, что делает его прекрасным выбором для создания производительного и надежного кода на века.Не случайно в настоящее время Rust решили использовать в коде ядра Linux, а Google внедряют Rust в платформу Android. Обязательная часть при заказе статьи? Что за слащавый маркетинг пошел? Волосы шелковистее не стали?
>>3042545 >В итоге я принял решение разработать бэкенд на Rust с использованием веб-фреймворка Axum. Выбор этого стека обусловили впечатляющие результаты бенчмарков, где Axum обгоняет по производительности практически все фреймворки.
>>3042644 Для тех кто растер. Чел тупо вынес дробилку из приложения на сервер и не упомянул об этом, при этом слащаво ратует за раст, мол как стало с ним все круто, хоть и скорость разработки упала.
Это какой-то технический сюр.
Что не так с деврелами? То недавно переписывает ядро винды, хотя там вообще не мягкие и вообще не ядро, то эта статья?
>>3042655 Чулочники просто ебанутые. Там неиронично диагноз по шизе, they/them и самовыпил в 30. Я немного пописал на расте и мне эта хуйня очень не понравилась. Документации нет, надо лазить по исходникам и там в комментариях искать примеры. Весь код или засран Box dyn Error, или ехал unwrap через unwrap. Шиза с владением - это просто за гранью разума, в программе на сотню строк я и сам уберу мусор, особенно, когда его нет.
>>3042705 > Шиза с владением Немного попердолился и всё работает без фиксов мемориликов и сегфлолтов в будущем. Не понимаю проблемы. Или просто сложно? Ну извините, уебывай назад в питон.
>>3042714 Но ведь всё верно пишет. Автогенерация списка API - это с трудом тянет на документацию. Я вот недавно с hickory-dns связался, так там вообще нихуя нет, сам блять разбирайся как использовать их либу, куча каких-то структур, нихуя не понятно как всё это говно связано и какие методы что делают. Ни примеров, и доков - хули ебало скривил, код же безопасный, а на остальное забить можно. Причём на docs.rs есть кусок примера, но в гите таких структур в принципе нет что они в примере используют, ахуеть теперь. Я в итоге взял первую попавшуюся сишную либу с 20-ю процедурами и сделал хуяк-хуяк всё - там всё сразу понятно было.
>>3042857 Его спросили как он добился снижения размера с 90мб до 10мб, он сказал что вытащили видео-дробилку с клиента на сервер. То есть, раст там вообще не причем, но статья завуалированно намекает на достижения раста.
>>3042872 Ты студент? Вот когда пару лет поработаешь и столкнешься с опенсоросом, то увидишь что часто с библиотеками бывает плохо если туда не вписываются какие-нибудь спонсоры. Я с таким на разных языках сталкивался
>>3042945 >не трепаться языком А по-другому никак, потому что это субъективное понятие. Больше языком треплешься здесь ты выдавая библиотеку с 4 сотнями загрузок как за данность в языке
>топ либ Покажи проблемы у раста с топ либами и вообще в чём критерий топовости?
>>3042877 Нет, достижения у раста всё же есть. Низкое потребление ресурсов и скорость. Если бы я написал этот сервис на Python'e или жаве,то не вывес бы расходы на содержание облака. мимо автор статьи
>>3042968 >Низкое потребление ресурсов и скорость. Ты вроде как сказал что дергаешь через консоль нужную команду?
>Если бы я написал этот сервис на Python'e или жаве Вот когда напишешь тогда и приноси. Хотя не нужно, ты скорее всего не понимаешь как резервируется память в этих жабо/шарпах. Епись теперь на расте, особенно когда придется расти и нанимать кодера, тогда прочувствуешь всю оптимизацию раста.
>>3044055 А чё конкретнее-то? У раста есть все инструменты. Есть tokio, есть futures (если токио не устраивает), есть actix на базе токио. Если акторы не устраивают, можно просто сделать thread::spawn. Я не знаю чё ты пришёл сюда и жалуешься на выдуманные проблемы. Ты фьючерсы пробовал? Токио пробовал? Вот когда попробуешь тогда и приходи. А щас это просто выдуманные проблемы рукожопов.
>>3044562 Из-за coloring problem получается что либы с асинхронным АПИ не могут вызываться блокирующим способом ну если не затаскивать в зависимости вызывающего кода асинхронный рантайм. Несущественно по-твоему?
>>3045062 Зачем? Не думаю, что раст не станет прикладным инструментом. Ты делаешь тоже самое, но дольше. Твой супер код все равно будет 90% проседать на i/o. Я смотрел на размер бинаря и потребление памяти, но оказалось го делает тоже самое и не нужно костылить с Rc/Refcell и лайфтаймами.
С такой компиляцией попробуй какой-нибудь ui подвигать и шрифтами поиграться. Хороший системный язык, для дробилок, для узких мест, но никак не прикладной.
>>3045247 >..а ещё есть потребление CPU и тут мы скромно промолчим. В конце девяностых многие писали cgi на всяких плюсах, бюджетные серваки были вообще на селеронах, и тут люди начинают вдруг писать на перл, пхп. А почему? Да потому что пинг, запросы с базы, файловое i/o пожирали всю мощь твоих плюсов, говноскрипта хватало чтобы высрать html'ку, а когда пхп стал модулем апача, плюсы вообще соснули, так как проигрывали именно по i/o и тупезне cgi технологии.
Так что срать потребление, мы по i/o стоим больше. Смешно, но раст планировали же с зелеными тредами, а теперь он нахер не нужен в прикладных задачах, когда у тебя за десяток ядер.
>>3045341 >В конце девяностых Мощности CPU росли быстрее, чем стартап сына мамкиной подруги, поэтому всякое скриптовое говно и повылазило, что как ты ни пиши, через перу лет менять парк компов на х3-4 раз мощнее.
>тупезне cgi не проблема языка и давно уже порешано тем же нжынксом.
>плюсы вообще соснули, так как проигрывали именно по i/o ты не понимаешь, о чём пишешь. Они проигрывали по скорости ответа из-за кривости CGI. i/o, это когда у тебя висит 100500 процессов того же апача 1.3 и ждёт, когда же клиенты с 2G мобилок скачают свои гифки.
>раст планировали же с зелеными тредами и правильно сделали, что выкинули. Иначе это был бы ешё один язык с неотключаемым рантаймом, а там и до сборки мусора недалеко. >мы по i/o стоим больше. стойте, хуй с вами, есть полно других задач, где это не актуально.
>>3045393 >а там и до сборки мусора недалеко. Там в соседнем треде, лобстер, судя по заявлению сам расставляет лайфтаймы и когда не может накидывает Rc. Чем это отличается от того же раста, где тоже самое делает чулочник, но уже руками и через мат?
>и правильно сделали, что выкинули. Тогда же язык многие и дропнули, людям нужен был го с вменяемым дизайном, а не враперка для плюсов.
>>3045504 >Чем это отличается от того же раста, где тоже самое делает чулочник, но уже руками и через мат? Тем, что в расте управление памятью, всё-таки, ручное. Ты можешь не оборачивать в Rc, а подправить ручками.
>го с вменяемым дизайном Много народу пользует тот же V ? https://vlang.io/compare#go а ведь это оно - бери и пользуйся. Ответ прост - без поддержки крупного корпа мелкие не рискнут писать на нём свои, как метко выразился некто, джейсономешалки.
>>3045677 >Много народу пользует тот же V ? Да причем тут это, когда мы про судьбу раста. Вместо еще одного конкурентного современного языка, получили очередной врапер с/с++ под финансированием. Причем судя по вкату рубистов и питонщиков, финансируют явно не в язык, а в поддув.
ты походу не знаешь основную фичу го и что такое зеленные треды, иди гугли уже
V это и есть удобный современный, нахрен никому не нужный конкурентный язык. Правда, зелёные треды пока только планируют, действительно https://github.com/vlang/v/discussions/11649
У конкурентных языков весьма узкая ниша, а геморроя из-за необходимости держать конкурентный движ заведённым, они тоже доставляют знатно. Дженерики в го неспроста так долго затаскивали.
>>3045825 Тоже мимо Половина списка - говно какое-то без задач. Другая половина не позволяют также нативно и легко их использовать, как в го я не гошер, честно
>>3045874 >Дженерики в го неспроста так долго затаскивали. Какая тут связь, зачем фантазировать? Дженерики там больше про скорость компиляции. Там идея была, что го уже весь готовый и туда больше ничего не надо, поэтому с трудом что-то продвигалось (кроме внутренних хотелок гугла, типа алиасов). Го больше напоминает внутренний язык, поэтому такой и странный и так долго пакетный менеджер рожали.
>У конкурентных языков весьма узкая ниша А у враперов очень широкая? С 90х годов от плюсов отожрали все кто могли, а там где остался, ничего другого не нужно, потому что никто уже не будет все это легаси говно переписывать.
То что раст натягивают не на системных, а на прикладных кодеров, не плюсовиков, а рубистов, говорит об языке очень плохо (буквально агрессивный маркетинг ради доли рынка и пофиг где, главное "продать").
>>3045874 >У конкурентных языков весьма узкая ниша Если в гитхламе поставить сортировку проектов больше 1000 звезд, то у го будет 2,9К реп, у джавы для сравнения 3,4К Причем эту позиции он занял очень давно, от чего даже я прифигел.
>>3045941 Узкая ниша, это не про число проектов, это про направленность. Там здоровенная часть, это различные tcp/http/upnp/etc-сервисы , а остальное, это полезные либы для написания таких сервисов. Ессно, из-за того, что куча вебмакак выучила го, они используют его для пет-прожектов. Я даже игровой движок видел, вот только надо ли оно?
>То что раст натягивают не на системных, а на прикладных кодеров Что такое системное, а что прикладное? Раст разрабатывался под написание браузерного движка - по-моему вполне себе прикладное направление. Или всё, что не веб и не аппликухи для мобилок, это у нас системщина?
>главное "продать" и кто же его "продаёт"? Вон, гуглу даже продали, в хром пихает, в андроид. Иллюминаты, не иначе.
>>3045921 >(буквально агрессивный маркетинг ради доли рынка и пофиг где, главное "продать"). Кто кому что продаёт? Ты уже тридесятый пост в тридевятом треде пишешь про маркетинг и продажи, а так и конкретики не назвал. У тебя от доработки битрикса 24 перед глазами эти лиды и воронки продаж?
>>3046187 Объяснял несколько раз, один даже подробно, но неудобные моменты же просто игнорятся.
Ты успешный менеджер продукта, ты кушаешь с него, ты пытаешься протолкнуть его и так по кругу. Просто раньше это крутилось среди каких-то b2b решений, теперь продуктом стал (зачем-то) язык и фонд. Отсюда политика, движ этот чулочный, отсюда драмы и прочее херня, главное чтобы хайпавало. Понятно что если бабло идет деврелам и в маркетинг, то кодерам оно достается меньше.
Вот зачем рубисту системный язык? А ведь он из какого-то утюга услышал и не раз. И за 9 лет рупор вещает одно и тоже. Что там в рубях была небезопасная работа с памятью?
продавать (толкать продукт) - там не просто так кавычки, но уровень интеллекта многих удивляет
>>3046197 >Объяснял несколько раз, один даже подробно, но неудобные моменты же просто игнорятся. Если ты объяснял также как ниже написал, то не удивительно что тебя игнорят. Опять налил воды из базвордов. По факту можешь пояснить как происходит монетизация? Как и кому что продают? Я понимаю там оракл зарабатывает на экосистеме жабы, майкрософт вокруг шарпа, там как бы очевидная монетизация. А тут что? Только без твоих гейских штучек и женской одежды, вижу у тебя ЛГБТ больная тема, за живое задевает. Но всё же мы говорим не о твоих внутренних проблемах
>>3046237 Ты такой наивный, как девочка в чулках Манагеру поебать, откуда берутся деньги. Главное, что он получает зарплату за свой проект. Пусть проект хоть трижды убыточный, пока капает зп, для менеджера все заебись. Вон, микрософт до сих пор делает свой бесплатный браузер, который буквально никому нахуй не нужен, вот прям совсем. Как происходит монетизация - да похуй как, лишь бы зарплату платили.
>>3046254 Я не понял, выходит некие менеджеры из раст фаундейшен (?) обвели вокруг пальца наивных дурачков из бигтеха которые решили попробовать себе раст затащить в свои хуитки?
>>3046254 >откуда берутся деньги >Как происходит монетизация - да похуй как, лишь бы зарплату платили. Так откуда они берутся-то? Кто платит? Аллах даёт? Хули ты тут воду льёшь я тебя конкретно спросил как монетезируется работа маркетологов. А потом плачешь что тебя никто не слушает и что аж тушь по щекам растеклась.
>>3046254 > который буквально никому нахуй не нужен, вот прям совсем Почему же он тогда выебал все остальные хромиумы, кроме самого хрома? Ты может ещё вспомнил бы бесплатный жпт-4, встроенный в винду и браузер?
>>3046268 Тут всё ещё хитрее: эти менеджеры получают зарплату из кармана тех самых корпораций, которые спонсируют раст фаундейшн. Облапошили гугл за деньги самого гугла!
>>3046237 Че как дети, ей-богу. Тебе объяснили корреляцию, хай + отчисления в фонд. Там же была какая-то драма с менегерами мозилы, пацаны обмазывались премиями.
>>3046826 Иди отсюда, вонючка. И теорию заговора забери свою. Покажи по факту где кто кому и за что заплатил, а не фантазиями своими тут делись, идиот.
>>3047803 Нужно еще крашенные волосы, тугие чулки и не осилить хаскель. Раст это канализационный слив тех, кто хотел самоутвердиться за счет языка, но не осилил хаскель. Этакий хаскель для тупеньких.
>>3047956 Ты сам-то хотя бы одну строчку на хачкеле/расте написал, или просто сидишь серишь тут в треде?
Мимо осилил скалу, перешел на раст. Харкаю в ебало тебе, ссанина бомжа.
Хаскель это ни что иное как способ ментальной мастурбации. Если я вижу человека который не имеет математического бекграунда и чето пиздит за теорию категорий и хачкель - харкаю ему в ебало, типичный каргокультист.
Раст - практичный язык для решения реальных проблем в разных областях.
хачкель, Скала (если брать исключительно фп стек) и прочие хардкор фп языки - нахуй никому не нужны, кроме кучки задротов и пары экспеременальных отделов в банках.
- слишком абстрактны (функторы, тайпклассы, инварианты, коварианты, монады, монойды) - сложно натягивать бизнес-задачи кабана на теорию категорий и изолировать эффекты, да ещё так, чтобы новые разрабы всё это поняли. - тяжело дебажить - космический порог вката даже в сравнении с растом - слишком академично (местами даже скучно)
Неудивительно это всё говно-хардкор фп не взлетело в индустрии. Кабаны поняли что никаких преимуществ тебе ФП не дает перед императивной джавой, косты слишком высоки.
Раст вообще другой язык, и вкатываться в него гораздо легче чем в хачкель или скалу, твой высер невалиден.
>>3047971 Хуй знает братишка, везде этого мусора хватает, другое дело хватит ли тебе ума чтобы понять этот мусор (пикрил). Окей в питоне, жс и прочих рубях этого нет, но мы на них и непишем.
В расте, на мой взгляд, этот мусор понять гораздо проще чем абстрактную писанину, пускай эта писанина и выглядит элегантнее.
>>3048074 В том числе. Краб у него на +-втором месте после сишечки. На расте он писал сервис для индексирования и поиска по html (вроде) докам. Бота с хачкеля переписывает на го.
>>3048255 >>3048288 Не представляю как вообще можно писать код, который содержит какие-то ошибки или какие-то указатели не туда. Что вы там такое нахуй программируете-то? Это как вообще?
Не понимаю, серьёзно, может на расте программируют люди которые пришли из JS и Java и по этому какие-то ошибки пишут?
>>3048351 Да сам не понимаю, хайп ушел, работы нет, многие компании от скалы отказываются, по причине того что СЛОЖНА и ДОРАГА, но с другой стороны если ты хороший скалист то всегда найдётся высокооплачиваемая работа в общем как и в любой области
>>3048393 Что тут понимать, на Котлин все перешли. До него только шкалка и была альтернативой голой жабе. Котлин нашёл идеальный баланс между императивщиной с ооп и функциональщиной, шкалка стала ненужна.
>>3048387 >Не представляю как вообще можно писать код, который содержит какие-то ошибки или какие-то указатели не туда. Чтобы не было багов - нужно писать без багов. Чтобы начать представлять как это, для начала надо просто написать что-то больше хэлоу ворда и лабораторной в 100 строк. Когда начинаешь что-то крупное писать, ещё и в команде, ещё и под воздействием внешних факторов типа дедлайнов и резких переключений между задачами, то такие ситуации будут неизбежно появляться. А когда много людей работает с репозиторием и все друг у друга черри пикают, то вероятность ошибок повышается в разы
>>3048387 >Не представляю как вообще можно писать код, который содержит какие-то ошибки или какие-то указатели не туда. Что вы там такое нахуй программируете-то? Это как вообще? Вся идея раста для бизнеса, что можно посадить зумера в чулках и он будет писать код по уровню сишника с овер 20 лет стажем. Но реальность оказалось немного суровее.
>>3048448 > то вероятность ошибок повышается в разы Ну тогда палю совершенно ультимативную йоба-фичу. Нужно использовать архитектуру! Это волшебное слово избавляет от 99% всех багов и неоднозначного поведения, которое возникает из-за того что множество пользователей пишут хуйню. Сам код разбивается на маленькие-маленькие функции-модули, которые тестируются просто замечательно! Конечно же они должны быть понятными ещё. Ядро же пишется математиками, которые дрочат математическую доказанность алгоритмов.
>>3048477 > Но реальность оказалось немного суровее. А какие в целом ошибки у этого сценария? Понятно что чулочники и фурри ничего хорошего написать не могут, но в целом, в чем обосрамс? Слышал что там ансейф в core-либах есть, а в других либах он вообще повсеместен, подвспшикнул конечно с этого, но кажется это не то.
>>3048400 >>3048482 Доля правды в этом есть. Но тем не менее вокруг скалки довольно большое комьюнити энтузиастов, стабильные экосистемы (зио, тайпсейф), но сложность отпугнула стартапы и компании которые не могут себе позволить платить много денег за бонусы которые дает фп дает ли хуй знает на самом деле
>>3048524 Не, ну серьёзно, понятно дело что архитектура это долго и сложно. Но это всё ещё лучше раста, когда взаимоблокировка потоков буквально фича языка.
>>3048510 >Ну тогда палю совершенно ультимативную йоба-фичу. Нужно использовать архитектуру! >Это волшебное слово избавляет от 99% всех багов и неоднозначного поведения, которое возникает из-за того что множество пользователей пишут хуйню. Сам код разбивается на маленькие-маленькие функции-модули, которые тестируются просто замечательно! Конечно же они должны быть понятными ещё. Ты сначала доучись в своей шараге, найди работу и тогда снимешь свои розовые очки.
>Ядро же пишется математиками, которые дрочат математическую доказанность алгоритмов. Я даже представил этих академиков из интела и хуявея что пишут линукс лол
>>3048524 Он либо студент, либо тот кто много читает литературу, но реальный код не пишет, например какой-нибудь препод тот же Столяров он на лоре такую же шизу выдает https://www.linux.org.ru/people/Croco/profileни на что не намекаю Это прям в каждом посте чувствуется что шизик сидит в своих розовых очках, любит носить женское бельё далёк от реальной разработки и имеет свое идеалистическое представление о том как тут все устроено.
>>3048561 >Ты сначала доучись в своей шараге, найди работу и тогда снимешь свои розовые очки. >Он либо студент, либо тот кто много читает литературу, но реальный код не пишет, например какой-нибудь препод Да вы заебали, чулочники, я гейдев просто. В смысле не на расте пишу, а игры разрабатываю, серверные приложения всякие, ещё всё такое.
Чужих либ не использую, всё самописаное, но недавно предложили установить какую-то хуйню на расте которая статистику решает, вот сижу раздумываю нужен ли покупать чулки использовать это или нет...
>>3048510 >А какие в целом ошибки у этого сценария? Просто, для примера, были попытки фронтендера жсника посадить на бэкенд и не вышло толком ничего путного, а тут вообще другой мир.
Сам по себе раст не дает возможность писать высококачественный оптимизированный код. Ну то есть нельзя взять что-то около плюсов и начать писать оптимизировано.
>>3048651 Скриптописак человек 5, каждый стрипт однопоточный, так что всё в порядке. Ядро нописано и не требует отладки, всё что требуется писать функции по интерфейсам и акторы.
>>3048679 > Сам по себе раст не дает возможность писать высококачественный оптимизированный код. Ну то есть нельзя взять что-то около плюсов и начать писать оптимизировано. Хм, ну с этих позиций понятно дело что
>>3048725 Да, всё это самописное, это же гейдев, тут так принято. Свой протокол с гарантированной доставкой и бд своя тоже.
Ты же не хочешь сказать для тебя проблема написать свой протокол или свою бд? А это точно тред системного языка?
>>3048757 >Ты же не хочешь сказать для тебя проблема написать свой протокол или свою бд? Написать свой васянский протокол и сделать свою колхозную БД не проблема, послушать порт и насрать в консоль вообще 3,5 строчки кода, тоже и с записью и чтением фалов. А вот сделать что-то на уровне нормальных баз данных и реализацию http - задача на долгие годы. Тут с библиотеками для clickhouse пришлось ковыряться несколько недель чтобы найти нужную и доработать для реализации нужных нам типов там была БД для хранения транзакций эфира, а сама БД разрабатывается уже несколько лет в яндексе. А про постгрес вообще молчу, там код пишут быстрее чем ты сможешь его прочитать. У вас в гейдеве наоборот стоят другие задачи вам нужен минимальный функционал, но в приоритете быстрое время отклика. И сравнивать теплое с мягким что кто-то на бекенде не колхозит свои решения как в гейдеве, а берет готовое, это мягко говоря признак вкатуна или дегенерата. Ты весь тред это пытаешься всем доказать
>>3048735 Значит на ядре ты один? В том плане, что твои наивные рассуждения про то, что достаточно заебашить правильно архитектуру, а там хоть на голях сях пиши - это работает только в коллективах до 3х человек. Дальше оказывается, что каждый понимает архитектуру по-своему и понеслась.
Вот я чо думаю-то. А вот бы! Вот бы безопасность как в расте. Но без раста! Синтаксис как в си, но немного безопасности, значит, накинуть сверху, как-то там замутить значит, чтобы короче и ансейф был, и оверхеда как в расте не было. Заебись бы, а бы? Вот бы, да кабы! Тогда и я бы чулочки надел. Хотя стоп, это были бы не чулочки, а валенки.
>>3048829 > И сравнивать теплое с мягким Да я не сравниваю, я просто посрать сюда зашёл, кхм. Энивей, нормальная архитектура и нормальные специалисты закрывают 99% проблем с утечками памяти, а остальные проблемы есть и в расте. > не колхозит свои решения как в гейдеве, а берет готовое Мои сожаления потерпевшим.
>>3048870 > Значит на ядре ты один? Ето да, не спорю. В основном архитектуру должен держать в голове один-два человека, по-другому это просто не работает. Но так-то именно так это в компаниях и работает! > это работает только в коллективах до 3х человек. Да. Архитектор и два помощника архитектора. Или три архитектора, которые хуячат что-то гейниальное нахуй. > Дальше оказывается, что каждый понимает архитектуру по-своему и понеслась. Дальше все пишут свою архитектуру, а потом тесты чья архитектура лучше и почему, доказывают это с пруфами и уже по обстоятельствам.
>>3048886 Это да, монстры в игрокале тоже присутствуют в огромных колличествах почти все движки это тырпрайс и СОСАТЬ БЛЯДЬ БЕЗОПАСНОСТЬ СОСАТЬ НАХУЙ ПРОТЕЧКИ ААА САСААААААААААААААААААТЬ ПЕРЕЗАГРУЗКА РЕШАЕТ ВСЁ
>>3048892 >Да. Архитектор и два помощника архитектора. Или три архитектора, которые хуячат что-то гейниальное нахуй. И вот смотри: есть линукс, гениальный Торвальдс, архитектура, куча сеньоров пилит на полную ставку. И, тем не менее, Линус так заебался с кривыми дровами, от которых не спасает даже архитектура, тесты и ревью, что он согласился на внедрение второго языка программирования в ядро - и этим языком оказался раст. Теперь прикинь, что гениальных архитекторов, способных тащить крупные проекты, настолько мало, что платить им нужно 10 мидловых ставок, прибавь к этому то, что архитектура, это, всё же, не панацея - и ты получишь, что без раста никуда везде, где управляемыми языками не обойтись.
>>3048892 >Да я не сравниваю, я просто посрать сюда зашёл, кхм. Энивей, нормальная архитектура и нормальные специалисты закрывают 99% проблем с утечками памяти, а остальные проблемы есть и в расте. Вот ты как раз с позиции гейдев разработчика смотришь на всё, одно дело когда вы выебали каждый байтик в своем коде и само собой знаете что и где у вас с памятью. Другое дело когда у тебя в приоритете бизнес-логика, большие объемы данных, где каждое неправильное число стоит довольно дорого в настоящих деньгах, а не кристаликах, плюсом ко всему много сторонних сервисов с которыми нужно взаимодействовать и всегда сжатые сроки из-за которых некоторые решения приходится делать не всегда оптимальными с точки зрения байтоёба. Раст очень помогает избежать множества ошибок если на нем нормально писать, а не как ты .unwrap() Rc<> да Box<dyn Zalupa>. У нас разные приоритеты и разные задачи, но ты пытаешься свой гейдев распространить на другие сферы.
>Мои сожаления потерпевшим. Ты лучше себя пожалей, каждый раз колхозить то что уже сделано другими из-за экономии каких-то наносекунд
>>3048908 >гениальный Торвальдс Что в это хуйле гениального??? Везунчик - оказался в нужное время в нужном месте, харизматичный, пиздобол-зайтеник, сквернослов.
>>3048945 > у Таненбаума не получилось, у Столламана не получилось (HURD) , а у Торвальдса получилось. Как думаешь, почему? Как раз потому, что будучи программистом, он в то же время оказался неплохим менеджером и архитектором, сумевшим найти баланс между шашечками и ехать. А такое редко, успешные инженеры-организаторы наперечёт. Илоний Маск, например. Даже Джобс не считается, он инженером не был.
>>3048908 >И вот смотри: есть линукс, гениальный Торвальдс, архитектура, куча сеньоров пилит на полную ставку. На сколько я понимаю, там нет архитектуры в классическом понимании. Вернее есть, но это другое, там не архитектура, а набор апи, аби, плюс всякие гайды по тому как делать хорошо, а как делать нельзя, куда в текущую "архитектуру" что добавлять, а куда нет. Скорее набор рекомендаций, чем архитектура, хуй знает как это описать. Свалка говна нахуй. Для ядра это норм конечно на самом деле, если бы не кол-во говна в ядре которое нужно срочно переписать и перепроектировать, то даже заебись. > Линус так заебался с кривыми дровами, от которых не спасает даже архитектура, тесты и ревью, что он согласился на внедрение второго языка программирования в ядро - и этим языком оказался раст. Погоди, и как это связано? Кто-то собрался 70% ядра переписать? И он согласился на это разве не потому что его ЛГБТК+++33см травить начали?
>>3048915 >Другое дело когда у тебя в приоритете бизнес-логика, большие объемы данных, где каждое неправильное число стоит довольно дорого в настоящих деньгах, а не кристаликах, плюсом ко всему много сторонних сервисов с которыми нужно взаимодействовать и всегда сжатые сроки из-за которых некоторые решения приходится делать не всегда оптимальными с точки зрения байтоёба. Тогда такая хуйня должна писать на скриптокале. Жава там какая, жаваскрипт, может быть скала или котлин. Ну и если совсем всё сложно - ерланг или хаскель. >У нас разные приоритеты и разные задачи, но ты пытаешься свой гейдев распространить на другие сферы. Дя, у меня бизнес-логика находится в игровом движке, на отдельном бекенде. Работает хорошо, правда там не реалтайм, а 120герц и меньше. Зато можно выдерживать без сбоев нагрузку в 60 раз превышающую обычную. По кайфу жиесть. > из-за экономии каких-то наносекунд Если не экономить наносекунды, то вместо раста можно писать на жаве.
>линукс драйвера говнокод Как сделана эта оценка? Какой опыт у тебя лично в разработке драйверов и вообще в писании чего-либо не в юзерспейсе? >ряя говнокод на расте не будет говнокодом Где пруф, что по этой причине сделали поддержку раста в дереве ядра?
>>3049111 >он согласился на это разве не потому что его ЛГБТК+++33см От ядра линуха слишком многое зависит, чтобы ЛГБТ там могли на что-то повлиять. Гугл, вон, сразу начал биндер переписывать, он и продавил.
>>3049255 > ers/net/phy/ax88796b_rust.rs > макросы > коды ошибок > vtable Осталось ещё сырые указатели сделать и будет бинго. Сплошной синтаксический мусор.
>>3049255 > От ядра линуха слишком многое зависит, чтобы ЛГБТ там могли на что-то повлиять. Они явно травили некоторых мейнтернеров. > Гугл, вон, сразу начал биндер переписывать, он и продавил. Короче кто-то продавил.
> what-research-papers-that-claim-linux-device-drivers-are-the-3ekhngiprx > 640 real concurrency use-after-free bugs Теперь будут баги c блокировками потоков и живыми блокировками, ведь в расте нет ничего чтобы их избежать. Даже в clang есть инструменты для этого, а растошизики на разработчиках горят с этого и рассказывают что это всё врёти и вообще нормальная ситуация. Алсо, такие баги проще эксплуатировать, потому что целые секции ядра могут нахуй ложится.
>>3049255 Заебись оценка, без примеров без нихуя. >addressing common bugs like use-after-free Только непонятно, как пидораст будет решать подобное в кернел спейсе. >типа, смотрите, как надо Ты версию на си посмотри для начала, лол.
>>3049111 >Тогда такая хуйня должна писать на скриптокале. Не тебе нам указывать на чём написать.
>Жава Ты запусти для начала хэлоуворд на спринге какой-нибудь туду лист, охуеешь от количества лишних действий на пустом месте
>жаваскрипт Я пишу и на нем тоже, он у нас второй язык, только поверх прикручиваю ts не всегда спасает, но это обычно небольшие проекты типа ботов для телеги, всякие мелкие внутренние сервисы. Писать на этом говне что-то большее настоящая боль, раст отлавливает 95% ошибок, которые я бы допустил в js еще на этапе компиляции. А ебучий npm это сборище говна, огромное количество кривых пакетов и всё написано через жопу. На нем быстро и на коленке можно только высирать реакты и небольшие проекты, которые умрут через год-другой. Плюс там память улетает в небеса, мы тупо раз в сутки перезагружаем контейнеры с js
>скала Сложно кого-то найти, экосистема в которой нет нихуя и придется везде прикручивать жабу. Плюс на ней пишут 3,5 калеки
>котлин Тоже неплохо, но для этого надо собирать другую команду
>ерланг Это немного специфичная штука для высокой отказоустойчивости, там еще в плане девопса есть свои нюансы и синтаксис ебановатый, элексир в какой-то мере помогает. Для нас это не подходит.
>хаскель Код чаще читают чем пишут, эта хуйня нечитабельна. Мы не математики.
Странно что ты не упомянул go он как раз нам тоже подошел бы, мы пилим сервисы, которые между собой общаются через кролик, нам нужно переваривать много данных и много взаимодействовать со сторонними апи, плюс вся эта хуйня типичная для веба: апи, БД, редис, иногда graphql для фронта и всё это крутится в докерах. Собственно мы занимаемся примерно тем же самым что и большинство гоферов, только на расте. В этой сфере языки похожи как 2 капли воды, а выбор именно раста это просто субъективный фактор, нравится больше чем го.
>>3049319 > /mutex.rs > unsafe > unsafe > unsafe > /arc.rs > unsafe > unsafe > unsafe Закашлял аш с этой хуйни. > не ссы, про лочки в первую очередь подумали, как-нибудь разрулят. Ну хуй знает.... > Вон, в сторонней либе уже есть Да ебаный рот...
>>3049286 Да ладно это ещё нормально. я бы только импорт со звездочкой убрал и vtable . Вообще когда вижу хуёво написанную библиотеку и начинаю смотреть чем занимается автор, то в большинстве случаев оказывается какой-то сишник
>экосистема в которой нет нихуя и придется везде прикручивать жабу. Плюс на ней пишут 3,5 калеки Зайди в скала реддит хотя бы
Экосистема любая на выбор: - императивная - hardcore fp (typelevel) - practical fp (zio) везде есть свой асинк
>прикручивать жабу
Ты везде будешь ее прикручивать, что в котлине, что в скале, что в кложе и в этом нет ничего плохого, интероп бесшовный (по крайней мере в скале), я вообще считал бы это преимуществом
>>3049373 Проблемы? Ты в курсе что любой low level тулинг пишут ансейф? думаешь жвм написан на джаве лол и память там как-то сама выделается и освобождается для объектов? Или руби на руби?
>>3049366 > Не тебе нам указывать на чём написать. А кому, блядь, ещё? Чулочникам? Ты вот серьёзно думаешь что какой-то шизик, страдающей от депрессии и десериализации личности, работающий в ядре раста, вероятно сидящий на гормонах, сможет адекватно описать существующую реальность? > Писать на этом говне что-то большее настоящая боль, раст отлавливает 95% ошибок, которые я бы допустил в js еще на этапе компиляции. Сколько не писал на жс, ошибок не было вообще. Не представляю, как ты можешь там ошибаться? В чем нахуй? Где? Это же примитивный язык. > Плюс там память улетает в небеса, мы тупо раз в сутки перезагружаем контейнеры с js А это как нахуй? У меня GC в жс не работает вообще, что вы там нахуй пишете такого? Ебать, другой мир нахуй. > Сложно кого-то найти, > Тоже неплохо, но для этого надо собирать другую команду Переучить сеньёра-жабиста не проблема. > Это немного специфичная штука для высокой отказоустойчивости, там еще в плане девопса есть свои нюансы и синтаксис ебановатый, элексир в какой-то мере помогает. Для нас это не подходит. > Код чаще читают чем пишут, эта хуйня нечитабельна. Мы не математики. Пиздец у вас там дримтим без математического образования. > апи, БД, редис, иногда graphql для фронта и всё это крутится в докерах. Собственно мы занимаемся примерно тем же самым что и большинство гоферов, только на расте. Короче как понимаю у вас там команда мидлов которые горят жопой если нужно делать что-то сложное, плюс из-за того что постоянно ебут сроками делать нужно прямо завтра, а по-другому писать никто не умеет и не хочет. Неприятная хуйня. В такой ситуации конечно раст неплох, наверное. В ядро и архитектуру такую хуйню я бы не завёл никогда.
>>3049384 > Проблемы? Проблемы будут в ядре, когда такое будет в ядре. Там, наверное, придётся вообще весь код именно так писать. Если раньше всё это было сложно понять, то теперь это говнище вообще никто не будет понимать, даже сам написавший. > Ты в курсе что любой low level тулинг пишут ансейф? Тогда, очевидно, никакой раст и не нужен, потому что он ничего не добавляет, только говна подкидывает. > думаешь жвм написан на джаве лол и память там как-то сама выделается и освобождается для объектов? Или руби на руби? Не знаю, объекты последний раз писал лет 10 назад, динамически выделял память примерно в то же время.
>>3049394 >А кому, блядь, ещё? Чулочникам? Ты вот серьёзно думаешь что какой-то шизик, страдающей от депрессии и десериализации личности, работающий в ядре раста, вероятно сидящий на гормонах, сможет адекватно описать существующую реальность?
Гигачады старой школы скатили в говно целый OpenGL, так и не превратили OpenCL во что-то юзабельное и придумали Perl. Так что вообще минусов не вижу.
>>3049394 >Сколько не писал на жс, ошибок не было вообще Ну, если ты на этом пишешь без ошибок, то пиздуй в Калифорнию сеньором, да чего там, сразу лордом.
>Это же примитивный язык Ты шо, ты шо, там же куча сахара. Например, есть "==" и "===" - круто, ведь, правда?
>>3049443 деградация это про тебя, стареешь и становешься тупее, погугли термин такой "старческая ригидность мышления", это нормально, просто прекрати серить и иди на сишке дрочи байты, мы не против
>>3049404 > сеньором Просто я пишу пять строчек в день, в сеньёры таких не берут. > Например, есть "==" и "===" - круто, ведь, правда? Не знаю, я разные типы никогда не сравнивал. Наверное в ООП и расте такое полезно...
>>3049450 Типичная ситуация в комьюнити раста, не знаю даже чему ты удивляешься. Возможно они пытались разобраться в типах строки SEX, но типов оказалось слишком много..........
>>3049480 >erlang хорошая технология, но в элексире опять все превернули, сделали ее веб ориентированной со своим ебучим фениксом, будет как руби, язык одного фреймворка и пары библиотек вангую
>хачкель Ментальная мастурбация, но очень приятная
>>3049485 >пишу пять строчек в день >ни разу не ошибался
ну и што ш ты своим примером тут всем тычешь? Жс и делали с прицелом на 5 строк кода для украшения динамикой страничек васей пупкиных, ни о каком бизнесе тогда и не помышляли.
>>3049394 >Ты вот серьёзно думаешь что какой-то шизик, страдающей от депрессии и десериализации личности, работающий в ядре раста, вероятно сидящий на гормонах, сможет адекватно описать существующую реальность? Не знаю кого ты там выдумал, но у нас решение писать на расте принимал соучредители он же и CTO, который сам колотит код и имеет больше 15 лет опыта, до этого писал на жабе и на плюсах, это его деньги и его ответственность. Вообще что-то мне подсказывает что как раз шизик со всеми страданиями это в первую очередь ты.
>Сколько не писал на жс, ошибок не было вообще. Это ты похоже максимум форму "мы вам перезвоним" на жиквери писал, ошибки бывают в неожиданных местах и часто с приведением типов, там даже [] == "" тебе true выдаст, приходится поверх этого городить тайпскрипт и валидировать все json потому что со сторонних апи бывает прилетает много кривых типов и многое другое. Это постоянная ебля, когда небольшой проект это не так заметно, а когда он разрастается это пизда всему. А еще когда проект какое-то время живет, там начинают происходить всякие изменения сделанные разными людьми, вот тут у всей скриптопараши и начинается основная боль. Вот он реально полезен когда надо на коленке за 2 дня бота накидать и забыть про него.
>У меня GC в жс не работает вообще, что вы там нахуй пишете такого? Ебать, другой мир нахуй. Бекенд уже почти избавились и чаты в телеге, оно когда работает постепенно кушает память и через несколько недель рантайма уже прилично так откусывает. Не забывай что в продакшн коде кроме своих библиотек есть много сторонних и как я выше писал npm еще та параша и ты хуй чего там отдебажишь, плюс с кодом постоянно работали разные люди.
>Переучить >сеньёра >не проблема Когда у тебя бесконечность денег и времени. Но у бизнеса чаще всего это в ограниченном количестве и решения принимаются чаще в сторону упрощения кадровых вопросов, у нас вся контора всего 40 человек, такое могут себе позволить вытворять в тиньке пока по голове не получат от начальства сверху. С другой стороны ты себя еще раз перечитай, нанимать дорогого специалиста чтобы переучивать и если он по каким-то причинам уйдет повторять те же грабли, а всё это время работа будет стоять, кто в здравом уме это будет делать? В банках наигрались уже и хватит.
>у вас там команда мидлов Да
>которые горят жопой если нужно делать что-то сложное Всякое делаем, жопа не горит, но сложных задач связанных с еблей байтиков и разматыванием памяти нет у нас в основном работа с данными из разных источников, агрегируем и предоставляем нашим клиентам. Вот данных большие объемы и бывают тоже свои сложности, особенно когда нужно организовать поиск приходиться иногда погружаться вглубь работы с БД. Миграция с постгреса на кликхаус тоже веселая тема, предстоит тут скоро. Короче всё как у всех, в основном рутина и перекладывания джсонов, иногда встречаются сложности, мы обычная средняя команда без выебонов.
>постоянно ебут сроками делать нужно прямо завтра Иногда бывает что-то срочно надо, но в основном работаем в спокойном темпе, есть общий дедлайн для всей команды. Чаще бывает проблемы что бизнес-логика кардинально изменилась и приходится много переделывать, вот тут как раз больше проблем может возникнуть, на расте что-то переделывать очень удобно.
>а по-другому писать никто не умеет и не хочет По-другому это как? Ты про по-какому имеешь в виду? Ты даже кода не видел и уже рассуждаешь о том как мы там пишем лол
>В такой ситуации конечно раст неплох, наверное. Да, раст неплох когда нужно работать с множеством сервисов, перемалывать данные и часто менять бизнес-логику
>>3049404 >Ты шо, ты шо, там же куча сахара. Например, есть "==" и "===" - круто, ведь, правда? Для самых извращенных можно сделать parseInt = (n) => n + 1; в глубине библиотеки и тогда придет пизда всему
>>3049514 Ну а зачем писать больше пяти строк? Вся логика вполне умещается в пять строк. Если не умещается - наблюдается проблема с абстракциями.
>>3049516 > Не знаю кого ты там выдумал, но у нас решение писать на расте принимал соучредители он же и CTO, да, точно, я вспомнил что я и есть соучредитель который принимает решения >Вообще что-то мне подсказывает что как раз шизик со всеми страданиями это в первую очередь ты. Это я взял из блога core разработчика раста. Он себя позиционирует как животное, кстати. > и часто с приведением типов Проблемы любителей объектов. > А еще когда проект какое-то время живет, там начинают происходить всякие изменения сделанные разными людьми, вот тут у всей скриптопараши и начинается основная боль. Нужно просто писать архитектуру в таком случае, разделение на данные и логику, всё такое. > Бекенд уже почти избавились и чаты в телеге, оно когда работает постепенно кушает память и через несколько недель рантайма уже прилично так откусывает. У меня чаты и бек работают с заранее выделенной памятью. Чё тут сказать, советую навернуть https://www.dataorienteddesign.com/dodbook/ вот этого и наконец-то начать программировать, а не абстракции писать. > С другой стороны ты себя еще раз перечитай, нанимать дорогого специалиста чтобы переучивать и если он по каким-то причинам уйдет повторять те же грабли, а всё это время работа будет стоять, кто в здравом уме это будет делать? Подписываешь контракт на 5-7 лет и всё. Конечно, при условии что бизнес это не какая-то залупная хуйня которая обанкротится уже вчера. > >у вас там команда мидлов > Да БИЛЯЯААААААААААААТЬ, не повезло, не повезло. > у нас в основном работа с данными из разных источников, агрегируем и предоставляем нашим клиентам. > Вот данных большие объемы и бывают тоже свои сложности, особенно когда нужно организовать поиск приходиться иногда погружаться вглубь работы с БД. Кроме книжечки сверху ещё вот че. Можно ещё использовать ECS у меня такая хуйня на бизнес-логике работает, только S не как System, а как Sequence, последовательность задач, последовательность функций и систем. Заодно будет обеспечена тразакционность всех вычислений, что часто отсуствует в подходе с объектами. Эта хуйня как раз про работу с реляционными базами. > Вот данных большие объемы и бывают тоже свои сложности У меня сложность не зависит от объёма вообще. только от того говна что я там понапишу > По-другому это как? Ты про по-какому имеешь в виду? Ты даже кода не видел и уже рассуждаешь о том как мы там пишем лол По-другому это дата-ориентированный подходю. Вероятнее всего с таким подходом никакого раста не нужно будет. > Да, раст неплох когда нужно работать с множеством сервисов, перемалывать данные и часто менять бизнес-логику Компонентные архитектуры и всякие блекборды именно про это. Без раста.
>>3049551 Тогда это язык товарищей-коммунистов, некоторым из которых нравятся мужские задницы. Не вот эти вот проклятущие западные геи, а наши, русские пидорасы! Всё в порядке.
>>3049592 >да, точно, я вспомнил что я и есть соучредитель который принимает решения Я вижу что ты жнец и на дуде игрец пиздабол
>У меня сложность не зависит от объёма вообще. Ну возьми postgres собери ради эксперимента табличку с полем text, возми какой-нибудь фейкер и заберй разными фразами (имитируем описание товаров) примерно по 500-1000 символов на запись. Сделай 1000 записей и организуй полнотекстовый поиск по этому говну, не просто description LIKE '%залупа%' а норамальный description_tsvector @@ to_tsquery('залупа') Если осили и работает, то потом попробуй прогнать скрипт до 50 млн записей в БД, этого уже будет достаточно чтобы опровергнуть твои слова. Для скрипта можешь кстати взять js на котором ты не ошибаешься и где память не утекает)))
>>3049592 >Нужно просто писать архитектуру в таком случае, разделение на данные и логику, всё такое. Простой рецепт "Как нам обустроить IT индустрию" от опытного писателя хэлловорлдов.
У тебя любая архитектура исходит из каких-то ограничений. Делаем Х, наиболее оптимальным способом У, так как Й нам точно не понадобится. Потом через полгода разработки к тебе прибегает манагер мы тут посовещались и говорит: а вот надо Й, давайте ребята, вы сможете. И ты к своему ХУ приделываешь этот Й, раздвигая очко архитектуре. И вот в таком случае скриптопараша тебе не подскажет, что может пойти не так. А норм языки, да даже вроде той же жабы - вполне могут, за это её и полюбил кровавый ынтырпрайз.
>>3049704 >Я вижу что ты жнец и на дуде игрец пиздабол Ето да, не спорю. вместо предприятия просто ОООшка с 0 сотрудников и фрилансерами в серую >Ну возьми postgres Че я корпоблядь по твоему что ли. >Для скрипта Обхожу деревья на си. >500-1000 символов на запись. >description_tsvector @@ to_tsquery('залупа') >Если осили и работает, то потом попробуй прогнать скрипт до 50 млн записей в БД Так подожди, подожди. Это же всего лишь 50 гигабайт. БД хранится полностью в ОЗУ. В чем тут вообще может быть проблема? Просто ставишь VP дерево и обходишь как тебе угодно. 50 гигабайт это нихуя. >прогнать скрипт >Для скрипта можешь кстати взять js Ебать вам там хуево с этими скриптами. Скрипты какие-то пишете для обхода 50 гигабайт. ПРОСТО берёшь VP дерево и ПРОСТО получаешь всё что ты там хочешь.
>>3049861 Просто не стоит строить архитектуру на объектах. У тебя данные хранятся. И твои говнофункции, которые отвечают за Й, Х и У. Можешь сколько угодно говнофункций написать, да всем буквально поебать что там будет понаписано и что они будут брать. Если надо, то можешь несколько функций завести и собирать с них данных. По-ебать. Ну а архитектура менеджерит все подключения, исключения, приоритеты работы, зависимости и последовательности транзакций. В идеале, конечно, ирл такого монстра заебешься писать. Что тут может пойти не так? Вот серьёзно, что? > И вот в таком случае скриптопараша тебе не подскажет, что может пойти не так. А норм языки, да даже вроде той же жабы - вполне могут, за это её и полюбил кровавый ынтырпрайз. То что ты описал это и есть проблемы жабы так-то, когда говянная архитектура на объектах, которую исповедуют в тырпрайзе, постоянно переписывается и обсикается в штанишки. Просто в жабе можно на это хуй положить.
Надо признать интерес к расту растет, помимо SO, что мало что показывает, кроме интереса, есть еще показатели гитхаба среди тысячников (более 1000 звезд). Если за 6-7 лет было около 200-400 овер-тысячников, то где-то за год или два стало 1200 тысячников, от чего раст попал в топ 10 по гибхабу.
Так что наблюдаем, но не верю что он пригоден для промышленного кодинга, все еще думаю что останется как экзотика, посмотрим, я часто бываю неправ.
>>3049906 У тебя всё равно должны быть какая-то модель данных. Структуры, енамы, это всё.
>архитектура менеджерит все подключения, исключения, приоритеты работы, зависимости и последовательности транзакций
если у тебя функции отдельно, а архитектура со стрелочками на бумажке отдельно нарисована, то далеко такая конструкция не уедет.
> говянная архитектура на объектах, очень хорошо подходит для коллективной разработки. Архитектор в калифорнии пишет интерфейсы, индусы пишут реализации под разные классы. Жаба потому и взлетела, что твоя лапша из функций и процедурок нежизнеспособна в таких условиях.
>Че я корпоблядь по твоему что ли. Задача поставлена работать именно с БД, она есть на проекте, она работает.
>БД хранится полностью в ОЗУ Не хранится, есть еще другие поля и очень много других данных, я сказал про одно поле только. ОЗУ нужна для других запросов
> В чем тут вообще может быть проблема? Сервер внезапно ребутнулся, как эти данные будут хранится в твоей васянской БД? Как организовать crud в твоей хуйне? Как со связями с другими таблицами? Как быть с транзакциями? Как твоя поделка работает если писать десяток записей в секунду 24/7, будет ли она все твои деревья перепердоливать? Что если я захочу ещё одно поле добавить? Как другие будут с твоей поделкой работать? Кто эту хуйню будет поддерживать? И еще сотни других проблем которые ты не решаешь тут, но они решены в постгресе на протяжении многих лет тысячами людей.
>Ебать вам там хуево с этими скриптами. Не не, скрипт только для наполнения БД, остальное исключительно средставами постгреса.
>>3049861 Двачаю, вкатуны не знают о том как происходит на самом деле, что иной раз приходится кардинально всё переделывать из-за изменений бизнеслогики и никакая архитектура не спасает
>>3050015 > У тебя всё равно должны быть какая-то модель данных. Структуры, енамы, это всё. Почти никаких структур не остается после нормализации так-то. Енамы только, но эт уже примитивы. > если у тебя функции отдельно, а архитектура со стрелочками на бумажке отдельно нарисована, то далеко такая конструкция не уедет. Вообще-то это почти что подход GraphQL, когда вместо сервера у тебя просто GraphQL стоит. Это может уехать очень, очень далеко. >очень хорошо подходит для коллективной разработки. Архитектор в калифорнии пишет интерфейсы, индусы пишут реализации под разные классы. Жаба потому и взлетела, что твоя лапша из функций и процедурок нежизнеспособна в таких условиях. Не, это скорее исторически так сложилось. Не обязательно объекты должны иметь именно такие нетривиальные связи, не обязательно они должна наследоваться и иметь вот всё эту хуйню. Просто когда-то зафорсили ООП как язык для манагеров, мол, АТВИЧАЮ ЧТО ПРОСТА БУДЕТ ЛЮБОЙ ИНДУС СМОЖЕТ АСИЛИТЬ!11 и каждая фирма стремилась его внедрять.
>>3050037 >Это в теории классно, а ты напиши. Да, скоро буду писать бд новую, с существующими пердолями проблемки возникают небольшие такие. Может писать не буду и заведу Foundation, ещё и с драйверами под новые диски работает, такое я пердолить не готов. > Задача поставлена работать именно с БД, она есть на проекте, она работает. Там небось ставят задачи и скрипты писать. > Не хранится, есть еще другие поля и очень много других данных, я сказал про одно поле только. ОЗУ нужна для других запросов Нет, озу нужна для БД. Прошли времена кэшей и высокой стоимости озу, 500гб стоит дешевле говна. > Сервер внезапно ребутнулся, как эти данные будут хранится в твоей васянской БД? Это кластер. На диск скидывается когда нужно. > Как организовать crud в твоей хуйне? > Как быть с транзакциями? STM либа. > Как со связями с другими таблицами? Есть таблица со связями индексами. > Как твоя поделка работает если писать десяток записей в секунду 24/7, будет ли она все твои деревья перепердоливать? Батчит и перепердоливает индексы. > Что если я захочу ещё одно поле добавить? Сколько угодно. > Кто эту хуйню будет поддерживать? Там 500 строчек, планирую сократить. > И еще сотни других проблем которые ты не решаешь тут, но они решены в постгресе на протяжении многих лет тысячами людей. Да и хуй с ними, нинужно. Идеальная БД жто Foundation. Но он всё ещё медленная. > Студент пиздбол ты ни дня ни работавший Да, я ни дня в интерпрайзе не работал.
>>3050523 >скоро буду писать бд новую >Там 500 строчек Как ты быстро 500 строчек накидал, не успев даже пост до конца написать лол.
А вообще мне интересно почему у сишников какая-то маниакальная тяга колхозить свое? Этот шиз эталонный пост накатал из палаты мер и весов, вместо проверенной годами БД, которая имеет довольно серьезный функционал, предлагает поделие на коленке да и еще какие-то либы натянуть, да еще весь код в 500 строк, который он запланировал и никогда не напишет На лоре гле-то под новостью о языке го тоже повылазили черти давай рассказывать как свои сервера писать круто, а в стандартной библиотеке там типа не свой код и хз как оно работает лол.
Пакетный менеджер - это нормально. Если пишешь под систему - нахуй тебе туда плеер ставить с ресодвом депенденсей? Не пользуйся вообще карго.
Ты же срать когда идешь домой - шубу не надеваешь? Хотя хуй знает, может ты еще и в раковину срешь вместо унитаза а судя по твоим постам потом еще свое дерьмо жрешь
>>3050601 > А вообще мне интересно почему у сишников какая-то маниакальная тяга колхозить свое? Этот шиз эталонный пост накатал из палаты мер и весов, вместо проверенной годами БД, которая имеет довольно серьезный функционал, предлагает поделие на коленке да и еще какие-то либы натянуть, да еще весь код в 500 строк, который он запланировал и никогда не напишет У тебя задача писать то скажет господин. Господин сказал писать на расте - ты пишешь на расте. Сказал использовать постгресс, ты киваешь головой и устанавливаешь постгресс. Господин сказал пятьсот зависимостей ставить и наблюдать пять часов за компиляцией раста - ты это делаешь.
А я пишу потому что это интересно. Интересно программировать и изобретать алгоритмы, понимаешь? Интересно создавать что-то своё, интересно создавать минималистичные архитектуры и исследователь пределы возможностей пердолинга.
Ну и конечно же интересно создавать алгоритмы которые в 700 раз эффективнее твоего кала и с лицом пепе наблюдать за тем как твоя фирма банкротится.
>>3050603 Работает на барина вечным мидлом, ещё и порвак который за барина сражается. Ну ты и куколд, чел
>>3050601 > А вообще мне интересно почему у сишников какая-то маниакальная тяга колхозить свое? Ты ещё маленький чтобы понять Когда станешь глыбой поймёшь, что наклепав своего говна который никто кроме тебя поддерживать не будет, ты становишься незаменимым в кампании со стабильной зепкой
>>3050685 Кстати да, это важно. Слышал историю из варгейминга, там три человека написали какой-то дико нетривиальный код для клиентов и никто нахуй не понимает как и почему он работает. Им даже зп повысили после такой хуйни, чтобы не сбежали, когда эта история добралась до топов. В яндексе примерно то же слышал.
Далеко не все задачи сводятся к взаимодействию с БД. И даже так: мне вот понадобилось сделать отчёты для кабанчика на основе данных из БД. И я сделал на ООП. Есть базовый класс, есть наследуемые, разные для разных типов отчётов, где по-разному реализованы некоторые методы. В одном классе один метод, в других сразу несколько. Такой код очень легко читать: для каждого типа отчёта ты видишь, как и какие методы он переопределяет, соответственно, очень легко дописывать. Я мог бы сделать и лапшу из функций, где if-ами бы разруливал всю логику, но вот проблема: у меня таких мелких задач десятки, такой код я через полгода сам не смогу прочитать и нормально править.
Похоже, что у тебя один проект, который ты постоянно держишь в памяти и помнишь в нём каждую запятую. Не удивлюсь, если это твой первый проект после лаб.
>>3050711 > Далеко не все задачи сводятся к взаимодействию с БД. Все. Вообще все. > Есть базовый класс, есть наследуемые, разные для разных типов отчётов, где по-разному реализованы некоторые методы. Преобразование данных. Просто делаешь запрос который их в нужном порядке собирает. > Такой код очень легко читать: для каждого типа отчёта ты видишь, как и какие методы он переопределяет, соответственно, очень легко дописывать. Нет, в таком коде будет 500 зависимостей и переопределений. Просто путешествуя по ссылкам ты заебешься понимать все взаимоотношения классов. > Я мог бы сделать и лапшу из функций, где if-ами бы разруливал всю логику, но вот проблема: у меня таких мелких задач десятки, такой код я через полгода сам не смогу прочитать и нормально править. Тебе не нужна никакая лапша из функций, ты просто берёшь данные с бд в правильной последовательности и формируешь отчёт. Тут ничего не нужно кроме запросов из БД. > Похоже, что у тебя один проект, который ты постоянно держишь в памяти и помнишь в нём каждую запятую. Не удивлюсь, если это твой первый проект после лаб. Нет, просто у меня просто нет никакого ООП. Каждый тип отчёта это просто запросы к хранилищу, там нет наследований, там нет переопределений, там нет ничего кроме одной функции. Просто одна функция. Не знаю даже что может быть проще одной функции и нахуя ты там выдумал какие-то ебаные классы, лол. Ты ещё макросы напиши, ну точно будет удобнее.
>>3050738 > Просто делаешь запрос Дык, я и сделал конструктор запросов на классах, который по методам собирает запрос.
>коде будет 500 зависимостей и переопределений. такое может случиться, если от кабанчика поступает слишком много новых хотелок, которые плохо согласуются с текущей архитектурой. Но даже в худшем виде это будет слабо приближаться к тому бардаку, если делать лапшой.
>не нужна никакая лапша из функций, ты просто берёшь данные с бд в правильной >просто >просто ему, блять )))
Вот небольшой пример: мне нужно выбрать топ сущностей по разным критериям X и Y. В классе я определяю: поле, по которому делать сортировку в запросе к бд, название этого поля и хинт для кабанчика, если название не раскрыло ему сути. Я хуй знает, как бы выглядело тут твоё просто, но у меня это реально просто: есть общий базовый класс, а все отличия сгруппированы в подклассах. То есть, сразу зашёл и посмотрел, что будет при таком-то варианты отчёта.
>>3050748 > Дык, я и сделал конструктор Зачем? Он не несёт никакого смысла. Всё то же самое что и с функциями. > Но даже в худшем виде это будет слабо приближаться к тому бардаку, если делать лапшой. Лапша это когда у тебя конструкторы на классах с десятками зависимостей и по этой хуйне нужно путешествовать в пятьдесят файлов. > Я хуй знает, как бы выглядело тут твоё просто, но у меня это реально просто: есть общий базовый класс, а все отличия сгруппированы в подклассах. То есть, сразу зашёл и посмотрел, что будет при таком-то варианты отчёта. Не ну если у тебя действительно класс в одном файле и всего лишь несколько функций - никаких проблем нет. ООП впринципе и работает вот в таких маленьких ситуациях, когда кода особо нет, всё просто и незамысловато. Правда оно бессмысленно в такой ситуации, ну да ладно, кому-то и говно вкусное. Проблемы начинаются когда типов отчётов 50, классов 10-15, везде всё переопределяется и наследуется.
>>3050779 >Всё то же самое что и с функциями Разница в читаемости. Классы избавляют тебя от необходимости обозревать логику с if/match/switch, об которую ломается мозг. Взял тип отчёта и пошёл смотреть только его методы.
>Лапша это когда у тебя конструкторы на классах с десятками зависимостей и по этой хуйне нужно путешествовать в пятьдесят файлов. Если всё так плохо на классах, то на функциях будет ещё хуже. Впрочем, могут быть ситуации, когда требования кабанчика пошли уж совсем в разрез с изначальной архитектурой, но тогда проще переделать архитектуру под новые требования.
Вообще, когда у тебя архитектура отражает бизнес логику кабанчика, это не прогнулся, лох, это хорошо. Нужен новый отчёт? Добавил компактный класс с 3-мя методами. Стал не нужен старый? Удалил его класс.
И да: не то, чтобы я топлю за ООП в раст треде, речь о том, что всякой абстракции своё место и на одних функциях с примитивами далеко не уедешь.
>>3050788 >Разница в читаемости. Это да. Функции читаются легко и просто, у них однозначные выводы. А в классах какое-то ебаное месиво, лапша из состояний и наследований которые везде.
>Классы избавляют тебя от необходимости обозревать логику с if/match/switch, об которую ломается мозг. Ты серьезно говоришь что switch ломает мозг меньше чем наследование разных классов из разных файлов?
> Если всё так плохо на классах, то на функциях будет ещё хуже. Нет, на функциях будут все то же что и всегда - изменение и модификация данных. Там нет ничего кроме этого. Там нет переопределений, виртуальных функций, наследований, изменения состояния которое происходит хуй знает где. Данные в одном месте. Изменения в другом месте. Всё нах.
> Удалил его класс. Найс манямирок. В ООП нельзя ничего удалять, потому что всё это чем-то и где-то и когда-то наследуется. Удалил класс? Молодец, всё приложение крашнулось. Переписывать это наследование никогда никогда не будет.
> И да: не то, чтобы я топлю за ООП в раст треде, речь о том, что всякой абстракции своё место и на одних функциях с примитивами далеко не уедешь. Ну как видишь целое ядро написали на функциях с примитивами. Даже шинда в ядре не использует ООП.
С ООП код обычно едет прямиком в парашу, после того как написали и оно своё отработало, думаю раст будет отъезжать в парашу ещё чаще чем объектный кал, с его-то синтаксисом и макросами.
>>3050817 >В ООП нельзя ничего удалять, потому что всё это чем-то и где-то и когда-то наследуется. Удалил класс? Молодец, всё приложение крашнулось. Переписывать это наследование никогда никогда не будет.
Буквально никто не делает больше трех уровней наследования, в 90% случаев не больше одного.
>как видишь целое ядро написали на функциях с примитивами чел, там виртуальная таблица на таблице
>>3050827 >Буквально никто не делает больше трех уровней наследования, в 90% случаев не больше одного. >чел, там виртуальная таблица на таблице Ебать манямирк.
>>3050936 >господина Почему ты думаешь что те кто имеет правые взгляды обязательно за господ? По мне наоборот генсеки при совке имели большее влияние на жизнь людей, а простой советский рабочий был в зависимости от директора предприятия больше чем сейчас рабочий от директора ООО "Рога и копыта". То есть при совке на работе решали где ты будешь жить, куда поедешь отдыхать и с кем будешь спать. Вся эта шиза про баринов слышна от тех кто больше всего хочет себе государственного барина и сам преклоняется перед начальством. Вообще съеби в /po/ со свой грязноштаной хуйнёй, там любят на эту тему подискутировать. Использование определенного стека технологий на определенном проекте прогонять через этот марксистский бред про баринов-эксплуататоров это конечно сильно.
>>3050954 Он ни дня не работал и не понимает что кроме него есть ещё и коллеги и задачи бизнеса которые должны приносить прибыль чтобы ему же и платить зарплату. Но начитался алгоритмов с теорией шахмат по Марксу и начинает тут бред нести.
>>3050963 > Почему ты думаешь что те кто имеет правые взгляды обязательно за господ? Потому что иерархия, любой правый будет защищать барина потому что он манямечтает как сам станет барином. Он как бы уже БАРИН, но просто не подфартило и ему приходится 10 часов своей жизни тратить на других людей. > По мне наоборот генсеки при совке имели большее влияние на жизнь людей, а простой советский рабочий был в зависимости от директора предприятия больше чем сейчас рабочий от директора ООО "Рога и копыта". То есть при совке на работе решали где ты будешь жить, куда поедешь отдыхать и с кем будешь спать. Почему мне не должно быть похуй что там было в совке, шиз? Нахуй ты эту методичку высрал? > Вся эта шиза про баринов слышна от тех кто больше всего хочет себе государственного барина и сам преклоняется перед начальством. Как видишь в этом итт треде порвачки работают на барина, а я успешный частный предприниматель. Показательно. > Вообще съеби в /po/ со свой грязноштаной хуйнёй, там любят на эту тему подискутировать. Высрал целый пост какой-то хуеты порашной и рассказывает про порашу. Всё хорошо с тобой? > Использование определенного стека технологий на определенном проекте прогонять через этот марксистский бред про баринов-эксплуататоров это конечно сильно. Ещё скажи что всё хорошо когда ты по 8 часов работаешь мидлом, а твой код и все твои алгоритмы тебе даже не принадлежат.
>>3050954 >>3050972 Никто не будет подобные системы поддерживать, кроме специалиста который это создал. 80% говнокода никогда не рефракторится и поддерживается написавшими его. Техдолг в компаниях доходит до 40%. Каждые 5 лет половина кода переписывается, потому что поддерживать или модифицировать такое старое говно становится невозможно.
Хуй знает где вы там работаете, наверное в своих манямечтах, если не в курсе про базу интерпрайаса.
>>3051027 >я успешный частный предприниматель Я вижу лол, ты наверное предприниматель как со своей БД, которую собирался написать и там всего 500 строк кода. Как бы ОООшку собрался открывать, но там у неё оборот небольшой 500 тыс. в месяц.
>Никто не будет подобные системы поддерживать, кроме специалиста который это создал. 80% говнокода никогда не рефракторится и поддерживается написавшими его. Техдолг в компаниях доходит до 40%. Каждые 5 лет половина кода переписывается, потому что поддерживать или модифицировать такое старое говно становится невозможно. Твои васянские поделки еще быстрее в негодность придут, а код тяжело поддерживать из-за его постоянных изменений, которые в известной всем коллегам экосистеме поддерживать проще чем в самописной хуйне.
>Хуй знает где вы там работаете, наверное в своих манямечтах, если не в курсе про базу интерпрайаса. Вот ты как раз в курсе только из книжек
>>3050817 >наследование разных классов из разных файлов? >В ООП нельзя ничего удалять, потому что всё это чем-то и где-то и когда-то наследуется.
Идрит, у тебя манямирок 1. Даже если из разных файлов, как в жабе, то это не так страшно. Просто привыкаешь пользоваться боковой панелькой в IDE. Конкретно у меня в моём пример всё в одном.
2. Если тебе не нужен какой-то класс, то тебе не нужно и всё, что от него наследуется, так как наследуемые классы реализуют какие-то частные случаи основного.
Классы, это не помойка для функций, это способ разделить архитектуру на блоки. Для каких-то вещей хорошо подходящий способ, для каких-то не очень. На пике примерно показано, как я их использую.
>>3051063 > Я вижу лол, ты наверное предприниматель как со своей БД, которую собирался написать и там всего 500 строк кода. Как бы ОООшку собрался открывать, но там у неё оборот небольшой 500 тыс. в месяц. Че высрал вообще? > Твои васянские поделки еще быстрее в негодность придут Там нечему приходить в негодность, код минималистичен. > а код тяжело поддерживать из-за его постоянных изменений Нормализацию делай, перестань писать объекты, вот и изменений не будет. > которые в известной всем коллегам экосистеме поддерживать проще чем в самописной хуйне. Это же не ООП которую нужно поддерживать, когда кто-то в очередной раз говнокод написал и класс удалил. Каждая функция самодостаточна, а изменения данных линейны или вообще данные неизменяемы. > Вот ты как раз в курсе только из книжек Тут не я рассказываю про ООП которое легко поддерживать, лол.
>>3051235 > 1. Даже если из разных файлов, как в жабе, то это не так страшно. Всего лишь проебёшь весь проект. > Просто привыкаешь пользоваться боковой панелькой в IDE. Открой какой-нибудь говнокод с гитхаба, увидишь что там в твоей панеле будет, лол. > Конкретно у меня в моём пример всё в одном. Это код на уровне вкатуна. > 2. Если тебе не нужен какой-то класс, то тебе не нужно и всё, что от него наследуется, так как наследуемые классы реализуют какие-то частные случаи основного. Нет, не верно. Наследования класса может происходить где угодно в системе. Ты можешь сломать что угодно. Например эти репорты может наследовать какой-то веб-интерфейс, который почему-то кто-то воткнул и сказал "эта техдолг, я пометил". Удалил класс? Молодец, переписывай пол проекта. > Классы, это не помойка для функций, это способ разделить архитектуру на блоки. > На пике примерно показано, как я их использую. Когда ты пишешь вкатунский код - да, конечно, всё заебись. Просто открой реальный проект и посмотри сколько там наследований и куда они уходят.
>>3051286 >Че высрал вообще? То что ты пиздишь, никакой ты нахуй не предприниматель, у меня даже сомнения что ты вообще хотя бы день проработал. А аналогия с БД потому что ты тут >>3050523 забавно напиздел про то как собрался писать и дальше по тексту уже 500 строк появилось. Но ты слишком тугой чтобы понять иронию, либо не запоминаешь что пишешь.
>поток бреда от вкатуна про нормально делай Не читал
>>3051290 > Но ты слишком тугой чтобы понять иронию, либо не запоминаешь что пишешь. Нет, просто эта шизофрения связана только у тебя в голове, как бы ООО 500 тысяч, что это вообще? Это всё точно ирония, а не шизофрения погорельца?
> Не читал Конечно, а то вдруг ты ещё проиграешь в аргументации, неприятно будет. Лучшее вообще на мейлча не заходи, тут неприятное постят...
>>3051295 >Нет, просто эта шизофрения связана только у тебя в голове, как бы ООО 500 тысяч, что это вообще? Это всё точно ирония, а не шизофрения погорельца? Например такая: >>3049873 >вместо предприятия просто ОООшка с 0 сотрудников и фрилансерами в серую
Открою секрет ООО вообще может быть нулевка
>проиграешь в аргументации С тобой играть как в шахматы с голубем, уронит все фигуры, насрёт на доску и полетит своим рассказывать как он всех уделал
>>3051313 > Это не сам код, это я для тебя пример набацал. Пример я могу посмотреть на гитхабе, как там наследование через пять файлов минимум проходит. > дохрена 1000+ проектов с таким подходом, как на ООП, так не на ООП. Сишных проектов дохрена с файликами по паре строчек. Так это и есть проблема ООП. Приходит сеньёр говнописака и думает что сейчас сделает лучше.
Можно и на жабе писать норм, самое знаменитое - композиция вместо наследования. Вот тут заебок, ещё бы данные нахуй высрать из классов, тогда совсем всё хорошо будет. Просто это всё непопулярно. Популярно это хуячить говнокод с наследованиями.
>>3051320 > Открою секрет ООО вообще может быть нулевка И что дальше? К чему это вообще высрал-то? > С тобой играть как в шахматы с голубем, уронит все фигуры, насрёт на доску и полетит своим рассказывать как он всех уделал Как же ты ловко меня уделал, ух! Поздравь себя с победой через самоотсос.
>>3050660 >>3050667 Даже если предположить что зависимости это ужасно плохо и надо самому всё писать чтобы хомячок с двача похвалил, то...
Там одни и те же либы (tokio, libc, parking_lot, proc-macro, log, tracing, mio, cfg-if, bitflags, rand, futures и т.д.) хуй знает сколько раз повторяются потому что разные зависимости одну и ту же либу могут хотеть в разных версиях
>Это нормально для СИСТЕМНОГО язык? >консольный плеер А этот твой плеер это точно системный софт? Если нет то к чему тогда этот заход? На т.н. системном языке, внезапно, можно и прикладной софт писать
>>3051414 > - РЯЯЯЯ РАСТ НЕ ЖС, ОН КАК СИ ТОЛЬКО ЛУЧШЕ И БЕЗОПАСНЕЕ!11 @ > ЗАВИСИМОСТЕЙ БОЛЬШЕ ЧЕМ В ЖС @ > КОМПИЛЯЕТСЯ 8 ЧАСОВ @ > В ПАКЕТАХ СБОРКИ СЛОВО UNSAFE ЗАМЕЧЕНО 624 547 РАЗА
>>3051365 >>3051452 Да не трясись ты, шизло. Не ответили ему вовремя, а он аж затрясся, бегает по треду, ищет меня. Сотрудников там нет , а я за сотрудника работаю. Что там с 500 тысячами вообще не ебу, ты таблетки не выпил, порвак? Выпей.
>>3051458 > с 500 тысячами Да согласен, невнимательно тебя прочитал, показалось что ты выразился про "погорельца" что это мало. Не внимательно читал твой бред, проехали.
> а я за сотрудника работаю Погоди так ты же соучредитель или успешный предприниматель, а тут уже работаешь.
>>3051470 > Не внимательно читал твой бред, проехали. Сильно больно, да? Пынямаю, когда-то и мне было так же, когда только на двачь пришёл, троляки, ска! >Погоди так ты же соучредитель или успешный предприниматель, а тут уже работаешь. Таково законодательство.
>>3051486 >Сильно больно, да? Нет, ваще похую, бывает ошибаюсь и в этом ничего страшного нет. Страшно когда кто-то ошибается, знает что он ошибся, но и из треда в тред продолжает на чем-то настаивать чтобы не признавать свою неправоту, вот на таких смотреть больно. Не знаешь таких?
>мне было так же, когда только на двачь пришёл, троляки, ска! Лол, пы походу до сих пор обижаешься
>Таково законодательство. Директором тебя сделали?
>>3051431 >А этот твой плеер это точно системный софт? Лол конечно же нет, этом это полноценный плеер для спотифай, который умеет текст песен находить и еще прочие плюшки-ватрушки. https://github.com/aome510/spotify-player/tree/master Там кстати виден корень всего зла в зависимостях, кое что сделать и их станет меньше.
>>3051493 >Нет, ваще похую, бывает ошибаюсь и в этом ничего страшного нет. Страшно когда кто-то ошибается, знает что он ошибся, но и из треда в тред продолжает на чем-то настаивать чтобы не признавать свою неправоту, вот на таких смотреть больно. Не знаешь таких? Нах ты оправдываешься? Я не твой барин чтобы оправдываться. Чел, перед другими людьми можно не оправдываться, а просто хуй забить. > Лол, пы походу до сих пор обижаешься Дя, я очень обижаюсь когда меня тролят. Потом не могу успокоиться и десятки постов оптравляю, мониторю треды там, спрашиваю почему мне не отвечают, представляю что кому-то неудобно. Всё так и есть. > Директором тебя сделали? Ещё и работником, вот пидоры.
>>3054866 >>3054932 Двачаю, давай танцуй, обезьяна ебучая, я в цирк просто так пришёл что ли? Давай пиздуй сюда https://crates.io/ ищи чего нибудь и потом выкладывай скриншоты
>>3055152 Только если нечитаемой лапшой писать до края экрана. С лесенками ничего не поделать, только если избавляться от всей функциональщины и писать в процедурном стиле. Не зря в настоящей функциональщине делают специальный синтаксис чтоб писать столбиком, а иначе ебанёшься. Либо можно эмулировать goto дробить код с лямбдами в переменных/отдельными функциями под каждую лесенку, чтоб например после => всегда был только одиночный вызов функции и никакого кода. Анкл Боб так и учил в чистом коде - всё что можно вынести в отдельную функцию, надо выносить. Тогда уже будет пародия на красивую функциональщину столбиком без лесенок в ад. Но тут уже надо быть немного архитектором и уметь внятно объяснять в названиях функций что она делает, чтоб не проиграть в факторио.
>>3055354 Этот шизик обычно накидывает скриншоты без ссылок, поэтому буду гадать без контекста.
> 1 скрин .unwrap() вызывает панику это как в го написать if err != nil { panic(err) } такое надо писать если ты действительно хочешь чтобы программа аварийно завершилась.
В match слишком сложная конструкция, обычно принято там немного писать. Чисто вкусовщина, но все же дурной тон
Метод new2, может быть какая-то обратная совместимость оставлена и с новым именем не парились.
Какие-то странные DisplayAttrStyle и DisplayPath, причем непонятно это что структура такая или метод по-уебански назван. Вообще для того чтобы что-то напечатать нужно имплементировать Display из стандартной библиотеки (аналог fmt.Stringer в go)
> 2 скрин Представляет из себя кодогенерицию в компайлтайме, я как понимаю тут пытаются сделать имплементацию Sync и Size для работы с многопоточностью или асинхронностью. Once нужно чтобы гарантировано вызвать его один раз не зависимо от количество потоков. А вот что именно неизвестно, что-то в выражении init которого нет на скрине, которое обернуто в Box (указатель на память в куче).
Тут скорее этот шизик наверное хочет доебаться до кодогенерации, unsafe и Box, об этих вещах он ноет тут не первый тред, но он так и бинго не составил чего хочет, лол.
>>3055187 >Анкл Боб так и учил в чистом коде - всё что можно вынести в отдельную функцию, надо выносить. Стоит ли стремиться к процедурному стилю, отбросив ооп?
>>3055484 Очень хуёвая практика, когда вместо чтения кода ты читаешь шизоидные опусы. Алсо, рекомендую всем растанам посмотреть на исходники Unreal Engine, чтоб увидеть как может выглядеть качественный низкоуровневый код на крестах, у вас реально будет шок после того что тут в тред кидают. А кода там поболее чем в ядре линукса, например.
Здравствуйте, я тут начал изучать rust (самостоятельно). Скажите, пожалуйста, для доступа к метаданным видеофайлов (интересует битрейт) нужна отдельная библиотека или можно это реализовать средствами языка rust?
>>3055595 Вот держи довольно большие куски кода, относительно высокоуровневый кусок и байтоёбство, там весь код примерно в таком стиле написан. Всё что можно обёрнуто в абстракции, методы везде очень мелкие, обычно 10-20 строк, синтаксически всё максимально просто описано и низкоуровневые вещи не лезут в высокоуровневые абстракции. Ты там нигде не увидишь чтоб, например, управление памятью соседствовало с логикой. При этом где применимо и фичи С++20 используются, нет боязни современных крестов как у гугла. Для примера как такое же байтоёбство с base64 выглядит в расте, почувствуй разницу, вот как такие письмена вообще можно за код принимать: https://docs.rs/base64/latest/src/base64/engine/general_purpose/mod.rs.html https://docs.rs/base64/latest/src/base64/encode.rs.html
>>3055881 опять дед пришел серить в тред, давно не виделись, когда ты уже поймешь что 1. пидарасам похуй на чулки, они уже пидарасы 2. на тебя никто не триггерится потому что ты уже даже не скуф, а маразматик 3. и растоёбы с тебя тут просто рофлят
придумай новые шутки или уёбывай, заебал уже со своей заезженной пластинкой в чулках тут LOL
>>3055811 > Полдня искал по интернету лучшие куски кода на плюсах > Высирает портянку на сотню строк > Смотрите на эталонный код > Точно такой же код на расте говно потому что написан в другом стиле Ясн
>>3055811 код выглядит лучше мешанины из указателей и логики, это соглашусь но в целом что здесь такого пиздатого? как выше анон высказался - выглядит как джава код, ничего "хорошего" тут я не увидел, и это явно не лучше раст когда, раст просто реализует другую парадигму. Это если я сюда щас на скале/хаскеле/окамле ФП код принесу и скажу "ляяя красота" - и буду прав, И другие аноны будут правы, когда накормят меня говном лол. Потому что никакого мерила "стандарта красоты" тут нет.
Короче пока моя теория подтверждается: плюсобляди, с явно выраженной ригидностью мышления + нежеланием обучаться или хотя бы попытаться понять подход отличный от того, который они дрочат десятилетиями - соснули.
>>3056174 >Нужно просто и понятно чтобы было >Приводит в пример кресты Уже достаточно >Первый пример код с неймингом в стиле жаба-спринг, где автору платили за количество строк >Второй - портянка из сотни строчек кода сранины из шифт операторов >Ряяя ну тут же легко читается Продолжай, мартышка, не зря мы в цирк приходим
>>3056110 Второй скриншот тоже охуенен. И красиво, и понятно. Более того, код написан так, что легко можно представить как будет выглядеть машиный код. Но это ещё не всё - оптимизатору компилятора будет легко оптимизировать эти функции.
>>3057373 Бейсик охуенен. Собираюсь подумываю написать его интерпретатор. Но на таргет платформе нет ничего кроме ассемблера. Конечно это не беда, я и на ассемблере Бейсик за недельку захуячу. Беда в том, что на таргете нет FPU. А вот написать математику с плавающей запятой на ассемблере я не возьмусь. А Бейсик без плавающей запятой нахуй не нужен.
На плюсах интерпретатор Бейсика за день написал бы. Ну ладно, за выходные.
>>3057500 Хех. Возможен деанон, но Бейсик мой первый язык, который выучил не имея компьютера по журналу "Наука и жизнь". Цикл статей "Школа начинающего программиста". Год эдак 1987. Программировал ручкой на бумаге.
Как можно не любить Бейсик???? При этом никто не заставляет на нём писать. Его можно просто любить.
>>3057251 >>3057255 Ок, пускай чувство вкуса у вас с автором этого вброса отсутствует. Но что в этом коде особенного, чего нельзя сделать на расте? Можно же по сути просто скопировать его почти один в один. Семантически ничего не изменится. Более того, машинный код в результате будет скорее всего практически идентичным, если плюсовый код компилировать шлангом. Естественно будут небольшие отличия в синтаксисе, например ! при применении макросов или обязательное использование self для полей объекта. Раст заставляет делать всё явно, и это хорошо. Иначе не понятно UE_LOG() это макрос или всё-таки функция, что будет если PreTickCommands == nullptr, где объявлены TickDelayLengthInFrames и Metronome, что будет если под Dest выделили недостаточно памяти и т.д.
>>3057853 Какое соглашение? Кого с кем и где это зафиксировано? Смотрю код линукса там повсюду container_of() применяется, который макрос и в нижнем регистре.
>>3057978 > Смотрю код линукса Поделка финского студента это как бы не образец для подражания. Посмотри хидеры Windows DDK (WDK) - вот где мощь и образец для подражания.
Есть какая-то годная статья, чтобы понять раз и навсегда ссылки, значения, .clone(), .to_owned() и прочее? Я как бы абстрактно понимаю, что это и для чего нужно, но когда пишу код возникают сложности, которые решаю обычно методом полуслепой замены одних подходов на другие. Устал спрашивать у ChatGPT, какую комбинацию ссылок и клонов нужно использовать чтобы error[E0507]: cannot move out of... error[E0521]: borrowed data escapes outside of function... уже наконец от меня отъебались.
>>3058263 Может, если кто-то сильно шарящий объяснит простыми словами вкратце где, как и в каких случаях использовать вот это все, то тоже буду очень благодарен.
>>3058263 что "вот это всё"? какой ответ ты хочешь получить? скачай книгу по расту и вдумчиво читай. На самом деле растбука достаточно, там всё понятно.
Компилируй простой код (строка-две) и дебаж lldb, я ебу что ли какие вопросы у тебя? разжевать всё и в рот положить? охуел?
Для начала сформулируй нормально что тебе непонятно.
>>3058277 Хватит жрать кактус, жри Goвно, проиграл с тебя, чепуха
Но соглашусь, если ты туповат (что нормально если ты вкатун или действительно не обделён айсикью), то лучше уж писать на го/жс, наху тебе все эти стэки/хипы/рефы/дерефы/трейты, братан?
>Когда уже начнете отличать хайп от прагматичного кодинга.
Ты так говоришь будто все хотят вкатитсья в прагматичныеsic! бля, проиграл плюсы и писать на них всю жизнь, чтобы прагматично отупеть по итогу и стать необучаемым, вонять как этот дед тут в треде возможно это ты про охуительный бейсик коненчо, мозгов больше ни на что не хватило и отрицать любую технологию за якобы её "ненужностью, хайпом, непрагматичностью", хотя по факту это просто психологическая защита ленивого деда, который отучился учитсья, обленился и отупел, агрится из-за этого на всё вокруг.
Да и что плохого в хайпе, даже если возьмем за истину, что раст это хайп что конечно же не так, хайповать 10 лет ееее, или сколько там расту? Я вот на хайпе залетел в руби в свое время, поднял нереальное количество денег, связей, опыта, фана - хайп прошел, ливнул. Вопросы? Почему это плохо? Почему у ригидных дедов так горит от того, что кто-то смеет писать на других языках, особенно на тех, которые они не одобряют?
>>3058292 Так я и говорю, что абстрактно мне все понятно, но вот на около-реальном примере, мне нужно провести code: str по такому маршруту с функциями с замыканиями:
По отдельности я понимаю принципы работы этих замыканий, clone, to_owned, to_string, и ссылки со значениями тоже понимаю, но почему оно все стакается так криво, не понимаю (опять же, по-любому есть какая-то логика, и это не криво, но я ухватить эту нить не могу). То есть я не могу один раз создать ссылку на значение (&code), а потом вести эту ссылку куда нужно. Почему в f3 я опять должен передавать ссылку? Почему я клонирую тремя разными методами? Почему если в f3 передать code, а не &code, то ошибка expected `&str`, found `String` (откуда там вообще String?)?
Прогуливаясь по вымышленному лесу, вы встречаете трех троллей, охраняющих мост. Каждый из них либо рыцарь , который всегда говорит правду, либо лжец , который всегда лжет. Тролли не пропустят вас, пока вы правильно не идентифицируете каждого как рыцаря или лжеца. Каждый тролль делает одно заявление: Тролль 1: Если я лжец, то рыцарей здесь ровно два.
Тролль 2: Тролль 1 лжёт.
Тролль 3: Либо мы все лжецы, либо хотя бы один из нас рыцарь.
>>3058375 Если передавать из f3 в f4 &code, то приходит &str. Если передавать из f3 в f4 code, то приходит String. Вроде бы логично, но откуда f3 вообще взяла String, когда в нее пришло только &str? Изначально передается только невладеющая неизменяющая ссылка.
>>3058375 >>3058391 Мне вообще в принципе не нужно нигде ни владеть значением ни изменять его, по логике мне и клонировать то его не обязательно, просто получить значение в другом месте. Чутье подсказывает, что нужно сделать один раз let code = some_text.as_str() - то есть получить ссылку на строку, а потом передавать куда угодно ее без клонирования и без ссылания. А получается, что нужно клонировать клон клона и ссылаться на ссылку. Опять же, я понимаю, что это все сделано из-за областей видимости, владения значением и прочее. Понимаю, что String, на которую ссылается &str уже может и не существовать к моменту получения значения, но я не понимаю почему где-то передается ссылка, а где-то значение, где-то нужно клонировать, а где-то нет. Какая-то неконсистентность кода получается.
>>3058481 Весь файл на 130 строк кидать стремно, а минимально-воспроизводимый аналог я не могу написать, потому что тут специфичные api вызовы. В любом случае пускай пока работает, может кто подскажет из анонов подсказку как это все правильно разворачивать.
>>3058350 Во-первых, &str - это ссылка на строковой срез, а String - это контейнер, который динамически выделяет память.
>То есть я не могу один раз создать ссылку на значение (&code), а потом вести эту ссылку куда нужно. Можешь. >Почему в f3 я опять должен передавать ссылку? Потому что в заголовке f3 ты сам написал &str
>Почему я клонирую тремя разными методами? clone, to_owned - это методы трейтов, которые нужны, чтобы работала стандартная либа, а to_string родной метод &str. Из той же серии Deref, AsRef и Borrow. Не думай об этом, короч.
>Почему если в f3 передать code, а не &code, то ошибка expected `&str`, found `String` (откуда там вообще String?)? to_owned делает из среза String. Кстати, твой код даже не соберется бнз let.
Eсть набор интов (u32) и просто инт(u32). Надо найти к какому инту из набора он ближе всего. Как написать самому понимаю, но уверен, что есть iter() в стандартной библиотеке.
>>3058350 Скинь более полный пример на play.rust-lang.org что-ли, а то непонятно в чём конкретно у тебя затык, уж больно много ты всего выкинул. Пока могу только сообщить такие факты: 1. String это вектор (Vec<T>), только для букв. Состоит из трех чисел: указатель на данные, длину данных и вместимость. Может быть произвольной длины и меняться по ходу выполнения программы. 2. str это как слайс ([T]), только для букв. Поэтому каждая такая строка по сути имеет свой собственный отдельный тип, который зависит от длины строки. Из-за этого нельзя использовать этот тип напрямую, раст не может выполнять свои гарантии не зная размеров переменных на этапе компиляции. Это так называемый dynamically sized type (DST). 3. Указатели на DST, такие как &str, в два раза больше чем указатели на обычные sized типы. Указатели на слайсы состоят из указателя на данные и их размер. Поэтому &str можно использовать напрямую. 4. Ссылки на &String и указатели &str это разные типы, но в расте есть такая фича - deref coercion. Это неявное приведение ссылки одного типа на ссылку другого типа если в функцию передан неподходящий тип и можно построить цепочку deref'ов. Если посмотреть код String, то можно увидеть, что он имплементирует Deref для Target = str. Можно написать это всё явно, например как-то так: f2(&(*code)[..]); Т.е. code у нас имеет тип String, который мы разыменовываем в слайс и берём указатель на весь слайс. Сам слайс нельзя передать просто так, см п.2. 5. move у тебя тут как-то не к месту, как раз не хватает остального кода. Он нужен для корректной работы борроу чекера в замыканиях. Если очень просто объяснить, то когда ты объявляешь замыкание раст создаёт структуру в которую помещает указатель на лямбду и кладёт рядом с ним данные для этой лямбды. Все данные по умолчанию заимствуются (т.е. передаются по ссылке), если не изменяются. Если изменяются, то будут переданы по &mut. Ну и если тебе нужно передать владение, то используется слово move. Обычно это нужно когда замыкание должно пережить переданное значение, например при создании потока. 6. Все эти to_string(), to_owned() и clone() это чуть разные способы создать копию данных. Можешь посмотреть исходники в стандартной библиотеке. to_string() создаёт пустую новую String и печатает в неё str. to_owned() клонирует вектор который внутри String и создаёт новую String на его основе. clone() делает то же самое.
>>3059040 да, чёт я проебался, мэп оборачивает итератор в Map структуру и имплементит Iterator трейт, который потом fold'ит значения применяя замыкание, ебать охуенно сделали они ленивые мэпы