Это копия, сохраненная 3 мая в 00:54.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.
Ссылка на официальный сайт: https://www.rust-lang.org/
В этом ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
IDE для Rust: https://areweideyet.com/
GUI для Rust: http://www.areweguiyet.com/
Web для Rust: https://www.arewewebyet.org/
GayDev для Rust: https://arewegameyet.rs/
Что еще есть для Rust?
- Посмотри сам: https://wiki.mozilla.org/Areweyet
Основная литература:
Rust Book(версия на русском языке): https://doc.rust-lang.ru/book/
Rust Book: https://doc.rust-lang.org/book/
Rust by Example: https://doc.rust-lang.org/rust-by-example/
The Rustonomicon(для продвинутых анонов): https://doc.rust-lang.org/nomicon/
Programming Rust: https://www.oreilly.com/library/view/programming-rust/9781491927274/
Ресурсы на русском:
https://rust-lang.ru/
Отдельное спасибо автору этого гитхаба(старому ОПу). Здесь вы сможете найти много полезной информации: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41
Предыдущий: >>2923611 (OP)
А вообще это боль, особенно если что-то с лайфтаймами, странно что до сих пор не завезли
Но он прав.
Каждый раз, когда вижу эту тему, бегу в Википедию, поттому что не различаю ваши Rust и Ruby, смотрю на синтаксис и охуеваю.
>забавную сигнатуру кто-то высрал
Не надо искать смысл там, где его нет. У него кошка по клавиатуре пробежала, а ты принял это за программу.
Этот язык надо было назвать unwrap.
Не поленился для тебя распаковать троллинг
Но ведь если ты не понимаешь что это, для чего оно нужно, то почему оно так выглядит ты тоже не сможешь понять. Альтернативы нет.
Спасибо за сэкономленое время.
Ну оно и понятно, ты же глупый ригидный скуф, которого как в универе научили писать на плюсах он так и серит везде ими. У тебя уже мозг забыл как это - учиться новому. Даже руби от раста отличить не можешь.
Это нормально, скуф
Все кроме того что ты уже знаешь - нинужно и сомнительно. Так оно обычно и начинается.
Дело не в том прав или нет, а в том что тред не успел толком появится и уже он тут как тут, сейчас чуть ниже найдет крейт с говнокодом и будет сюда постить или запостит то что макрос сгенерировал и будет жаловаться на синтаксис.
Так они и избавляют, в самой последней версии вон залили изначальную поддержку async в трейтаз.
Приводи всё к одному типу f32 или f64, операции с разными типами нельзя проводить
скуф даже сравнить нормально не может, давай ещё кобол сравни с рубями
Когда за какой-нибудь фреймворк или за сам язык возьментся кто-нибудь из FAANG, а не нищая мозила и трапики
Но на си дохуя всего написано. А что написано на расте???
Дак раст итак сейчас трогают всякие хуйавеи, амазоны и мелкомягкие
>а что тебе не нравится? раст охуенен и без паршивых фаангов
Проблема в том что дохуя библиотек, которые поддерживаются васянами и на часть из них давно положили хуй, ситуация прям как с руби
В крестах тоже нельзя, о чем ты? Там просто число без спроса приводится к нужному типу.
>Там просто число без спроса приводится к нужному типу.
Так это не в крестах. Это CPU сначала приводит тип к плавающей запятой, а затем уже затем производится арифметическую операцию. Компилятор просто это прячет.
Лучшее что случиться, это займет какую-то нишу, например как котлин мобилы, или го микросервисы, будет очередным языком для перделки.
Но в реале, любой подобный язык, который будет выпущен под крупным финансированием и у которого будет лучше читаемость кода и скорость написания, обгонит раст.
Просто посмотри как можно легко работу с ошибками и нуллами в том же зиге. И как скоупы памяти и деферы, намного проще выглядят костылей владения и лайфтаймов и как легко выглядит кодогенерация вместо макросов, как-будто рефлексия.
>зиге
Те же яйца только в профиль, чуть исправили ошибки раста, но нахуевертили своего всратого синтаксиса
Для питонорожденных есть моджо.
Но все они без крупной поддержки. Хотя я офигел что оборот зига полмиллиона долларов в год. Фонд раста публикует расходы, как они кормятся?
>Гугл
Что гугл? Любой шаг в сторону от веба и там такие же васянские пакеты. Да ещё и хостится это всё где попало, в любой момент можно устроить новый leftpad - насколько я понял, бегло погуглив, гугл не имеет репозитория для го. А с crates.io так просто не удалишь, например.
>на нём много всего написано что будут поддерживать ещё долгие годы
Кто будет поддерживать и как? Репозитория-то нет. Я тебе скажу, как: корпорация просто берёт кусок васянской либы и включает в свой проект методом Ctrl+C - Ctrl+V и там её поддерживает, периодически высирая изменения для gpl либ в виде архива в разделе corpsite.com/opensource/.
Что пидоРастам платят меньше чем ГОвночистам или перлам, например. Отсюда делаем вывод кто нужнее на рынке труда.
Надо тогда собрать статистику по потёртым постам и банам на доске, так поймём на какой язык больше уходит модерских ресурсов - т.е. кто сжирает больше всех бюджет доски.
>оборот зига полмиллиона долларов в год
>ЗП зигуна 100к в год
Вывод очевиден: зиг пилят 5 разрабов на полную ставку от спонсора, остальные сосут писос за идею.
Нет, ты не прав. Не существует операции + над типами слева int и справа float. Все арифметические операции производятся над унарными типами. Компилятор добавляет неявных преобразований типов, пока типы не будут совпадать.
Это вообще проблема языка большая, что очень много вещей происходит без ведома пользователя.
Сколько попенсорсников сосет писос у раста? И сколько там уже заброшено либ?
В нормальных языках существует. Нет никаких проблем написать реализацию сложения двух чисел. Особенно если эти типы не надо конвертить и сложение можно выполнить при компиляции.
> Это вообще проблема языка большая, что очень много вещей происходит без ведома пользователя.
Ты лучше расскажи как раст в консольку пишет, нахуя он перекодирует текст из utf-8 в кодировку консольки, даже если не просишь. На той же винде можно просто попросить консольку выводить текст в utf-8 и консолька выведет его, но в расте всё равно идёт конвертация в wide string. Единственный способ в расте вывести utf-8 в виндовую консольку - дёрнуть через ансейф winapi.
> В нормальных языках существует. Нет никаких проблем написать реализацию сложения двух чисел. Особенно если эти типы не надо конвертить и сложение можно выполнить при компиляции.
Ни в каких не существует, ты не можешь складывать числа с плавающей точкой и целые типы без конвертаций, ты чё ебанутый?
Слева от знака присваивания.
А как насчёт пикрилейтеда? Вы сосем ебанулись от долбёжки в сраку? Даже на уровне ассемблера эта операция валидна. Что за театр абсурда?
На ассемблере невалидно. Там вставляется инструкция https://www.felixcloutier.com/x86/cbw:cwde:cdqe
Это если про х86 и не углубляться.
Супер безопасность же, зато есть затенение переменной, что может привести к такой неуловимой логической ошибке, что ub покажется сказкой.
Покажешь её в расте? Даже в дебаге без оптимизаций там просто 2, т.е. он при компиляции посчитал 1 + 1 при одинаковых типах.
При этом u8 в расте занимает весь 32-битный регистр, т.е. там даже в теории не может быть сдвига знакового бита, как ты уверяешь.
У тебя запрещены имплисит касты, что не так?
> Там вставляется инструкция
Пикрилейтеды из сишки, всё ещё не вижу чтоб байт куда-то конвертировался отдельной инструкцией. Вот с float есть конверсия.
>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.
Ну и чем раст лучше?
u8 занимает регистр? Тогда очевидно конверсия тут не нужна. Именно поэтому.
Так это инструкция чтения в регистр. Я сильно сомневаюсь что есть разница между обычным mov по задержке.
Опенсорс же. Если не нравится, сделай МР. Здесь даже систему типов не надо усложнять. Тебя либо компетентно обоссут, либо даже примут.
Это перенос значения с расширением. Значения разной размерности в ассемблере складывать нельзя.
> разной размерности
Самое смешное что это только в крестах она разная, у раста там просто mov, а u8 хранится в 32 битах. В контексте х86 уже обсер с этим оправданием, там одинаковые значения с идентичными инструкциями.
Это очень частный случай, который можно подпереть таким костылём:
Если примитивное число меньшей размерности вступает в арифметические отношения с примитивным числом большей размерности и тип результата задан явно как тип соответствующий типу числа большей размерности, то автоматически кастовать число меньшей размерности к большей.
Хз, может когда-нибудь и сделают.
В плане костыль, в крестах так и работает
Забытые технологии древних.
Там перегрузку функций то не осилили. А это просто приписать постфикс к функции.
>Чел разбирается в энергетике, экономике, астрофизике и программировании. Это абсолютно точно не бумер-шизик, ага.
Хрюкни, пидор. Финка все помнит и ждет.
>Да похуй, его будут только в облаке использовать. Как до винды доберётся, так и приходите.
У меня для тебя плохие новости - винда уже переезжает в облако.
>>33760
Собственно, то о чем шла речь в предыдущем треде: https://blackpill.usite.pro/news/pederust_korporacija_microsoft_v_ocherednoj_raz_dokazyvaet_chto_oni_plokhie/2024-02-01-114
Там же первым реддит постом обоссали и в том треде тоже, но хомяки за бесплатно продолжают разносить фейл ссмщиков раста.
А почему случилось так, что у тебя целочисленные типы разной размерности?
Если допустить неявное приведение то в ситуации где выходной тип опущен, непонятно что хотел сказать программист в некоторой ситуации. То ли тебе u32 то ли u8. Это может быть симптомом какой-то проблемы в другом месте.
Приведи конкретный пример посмотреть.
>>33750
Придется это скушать. Создатели языка решили что перегрузка функции затрудняет чтение кода, путает людей.
в IDE (в меньшей степени благодаря анализатору), при чтении коммитов, в текстовом редакторе, в документации,... you name it
Это один из значительного списка аргументов против перегрузки функций. Обсуждение тут https://users.rust-lang.org/t/why-rust-doesnt-have-function-overloading/80416/23
Самый смак что нашел приходит из C# https://learn.microsoft.com/en-us/dotnet/visual-basic/reference/language-specification/overload-resolution Статья-пушка.
Мислинк. Это для VB
Вот правила для 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.
Хочу такие правила в Rust (нет)
>Приведи конкретный пример посмотреть.
>Не язык говно, это вы плохо прогаете.
У меня есть теория.
Раньше усложняли компилятор, чтобы облегчить работу программиста, теперь же чулки настолько стали сильно сжимать и мешать кровотоку, что в мозг стало мало попадать кислорода и многие технологии были забыты.
Нет никакой причины, чтобы не сделать безопасную конверсию типов, кроме как забить болт и скормить как есть, все равно сожрут.
Понимаешь, сейчас проще статью написать или на конференции рассказать почему это не нужно, чем сделать что-то. На этом половина го построено и выстрелило же.
Чувак, чтобы ты понимал, они половина того что не успели впихнули в макросы и забили, потому как надо было релизиться, а ты сидишь сейчас и пытаешься с умным видом рассказать что это не яп сырой, а тот чел неправильный код пишет.
Что там тебя напугало, там большая часть про статик поля. В раст давно классы завезли?
Я бы остерегался сравнивать раст с топ языками, там по фичастости шарп порвет твой сырой раст как тузик грелку.
У котлина вообще свой статический DLS на базе языка, у всеми любимого раста даже дефолтных аргументов нет. Но зато есть затрах с опшенами и мегакостыльные пользовательские ошибки.
Ты о чем вообще дурачок? Опшены тебе не нравятся? Да мало ли что тебе не нравится.
Иди на котлине пиши и не еби серьезным дядям тут мозг.
Проблема макак Итт в том, что они почему-то думают что в их языке все реализовано правильно, следовательно в условном расте это должно быть тоже.
Хотя по факту это просто необучаемость и старческая ригидность мышления. Вы хотите чтобы вам было удобно, а язык от вас требует времени для изучения других концептуально вещей.
Вместо того, чтобы изучить язык, открыться для других идей, мы начинаем вонять что А ВОТ В СИ КОТЛИНЕ ЖАБЕ ЭТО ЕСТЬ ХАХА СОСИТЕ ОПШЕНЫ НИНУЖНЫ. Допустим оно все в расте есть. Так и зачем тогда вам он нужен? Ведь есть уже котлин.
Безусловно есть вещи которых в расте не хватает. Но серьезно хуесосить систему типов за то, что она не позволяет проводить операции над разными типами - нонсенс.
Опять шиз с перегрузками выполз
Вот и гринтекст пошёл
Я не пойму как вы накрутили рейтинг любимого языка, если на SO доля вопросов и сторонников раста стремиться к нулю.
Как язык может быть любимым, когда нет даже базовых удобных вещей, например дефолтныех аргументов?
Как строить АПИ без перегрузок.
Зачем качать макросы, чтобы не бойлерплейтить ошибки руками?
Как могут нравится древнейшие опшены, когда есть сахар с нуллабл типами? А эти не читаемые сигнатуры простых функций? Как это нравится может?
Серьезный дядя, сними чулки!
> не позволяет проводить операции над разными типами - нонсенс
Ну если тебе не нравится пример с интами, то что скажешь про Result и Option. Это же банально неудобное говно, когда тебе всё надо в Ok оборачивать, а разные Ок не кастуются друг в друга. Вот в крестах они оба умеют кастоваться из ок-типа, просто возвращаешь значение. И эксепшены тут можно использовать - можно даже не чекать Ок там или ошибка, при обращении оно скастуется к Ок, а ошибка кинет эксепшен. Это в расте мало того что надо прописывать unwrap, так ещё и нет возможности сделать что-то с паникой выше уровнем.
>накрутили рейтинг любимого языка,
Это делается так: назови, какие языки знаешь, среди них выбери любимый. Раст на первом месте у тех, кто вообще знает раст, только и всего.
>Как строить АПИ без перегрузок.
>как вообще жить без GOTO
>Зачем качать макросы, чтобы не бойлерплейтить ошибки руками?
Чтобы сахару было больше, очевидно же. Посмотри на serde или cached, например.
>древнейшие опшены
Ты долбоёб, нулл ещё древнее, а
> сахар с нуллабл типами
это вынужденный костыль, когда у тебя уже есть куча легаси кода с нулл и надо как-то с ней жить. Что касается опшенов: в отличие от нуллбл костылей, это универсальный подход, который позволяет делать, например, как на картинке
>надо прописывать unwrap
Долбоёбушек, это сделано, чтобы при случае можно было все эти unwrap найти и нормально обработать, а не оставлять заряженное ружьишко, нацеленное на яйца, как вы, сишники, любите.
>раз в крестах есть то и в расте ДОЛЖНО быть
>будто если есть в плюсах — априори самое лучшее решение
Что и требовалось доказать.
Кому-то memcpy удобно руками вызывать и указатели складывать. Что теперь?
Кастовать опшены? охуеть вообще. Ты разберись пойди зачем они нужны и как их применять, почитай про option или error монады например. Ах да, тут же голову включать надо. Зачем? Лучше пойду проблююсь на двощах.
>>33924
Твои наллбл типы это тот же опшен с сахаром
Я не очень понимаю тряски с перегрузками вообще. Способов заебашить апи тысячи. Этому лишь бы перегрузки писать. Почитай про трейты и дженерики.
Я пишу на скале. Там можно оверлодить функции. Но никто не будет заниматься раскидыванием этого кала, когда можно просто добавить инстанс тайпкласса или написать свой тайпкласс
Уже хотел было на тебя наехать, написал пост, разбивающий твои аргументы в пух и прах, но перед отправкой решил проверить и полез сюда - https://linasm.sourceforge.net/docs/instructions/fpu.php
Ну да, FPU поддерживает арифметические операции между целыми числами и числами с плавающей запятой. Во всяком случае на x86.
>Лапшу из монад и в крестовом optional можно сделать.
Монаду error с ручным закатом солнца и в ГО можно нужно делать
>Option кастануть к bool
Итить, ты ни хуя не понял, а. Это сразу распаковка значения из структуры напрямую в мэтчинге.
мимо-манагер
Да, я нихуя не понял зачем столько много синтаксического мусора.
>Как строить АПИ без перегрузок.
Никак, не пиши на нём апи и вообще лучше не пиши код
>Зачем качать макросы, чтобы не бойлерплейтить ошибки руками
>когда есть сахар с нуллабл типами
Как сказать что ты ничего кроме хэлоуворда на расте не писал, не говоря об этом прямо лол
Я сравниваю не синтаксис, а семантику. Это разные вещи.
>неуправляемые язык с управляемым
Тут получается что ты либо в M$ работаешь, и двачуешь на перекурах. Или кроме .net никогда ничего не видел. На будущее просто. Чтобы люди тебя понимали, что ты пишешь.
Как я уже писал, это цитаты с сайта где коммитеры в Rust отвечают на вопросы таких как мы с тобой. И они утверждают что есть проблемы с перегрузкой методов в трейтах, приводя в пример C# .
Вот я сейчас нагуглил С++ https://en.cppreference.com/w/cpp/language/overload_resolution В конце там табличка такая интересная, посмотри.
>манагер
хули ты тут забыл даун? иди анализируй бёрндаун чарт
>дебилы для простого круда накрутили монады функторы и прочие залупы
>нахуя?
>следовательно всё ФП плохое
ФП для других задач, простенькие круды писать на нём смысла нет. Круды вообще писать смысла нет. Это как на ассемблере писать сайт визитку
>иди анализируй бёрндаун чарт
кекнул, а ведь правда
>ФП для других задач, простенькие круды писать на нём смысла нет. Круды вообще писать смысла нет. Это как на ассемблере писать сайт визитку
Я знаю. Я люблю ФП, но не с позиции промышленного программирования, а академического. Написал, чтобы выбирающие ФП задумолись и не пихали его, куда не стоит. ведь один раз уже напихали
на расте мне код более понятен например, но я не писал на плюсах лет 10
распаковывать Optionals так нельзя, смысл в явной и элегантной обработке отсутствия значения в том числе, иначе опшеналы смысла не имеют
https://old.reddit.com/r/rust/comments/25i544/babysteps_focusing_on_ownership_or_removing_let/
потому раст и не ФП язык;
вообще фп как дисциплина хорош тем, что оттуда можно понапиздить ништяков и немного улучшить императивную парашу чтобы меньше страдать (замыкания, некоторые монады (result, option например), паттерн матчинг, иммутабельность и прочее.
но макаки все равно будут дергать Option(x).value не ведая зачем оно вообще
Я как-то смотрел по фану курс по скалке от одного чела которого я очень уважаю, суть такова: пишется крад с использованием котов, эффектов итд. Прелюдия начиналась с того, что он пояснял за функторы и аппликативы на пальцах ЛОЛ, что отнюдь не мотивирует изучать скалу для написания крадов.
сорян зря быканул на тебя, не в настроении сегодня
токио игнорьте, я просто в существующий код вставил сниппет, поленился
я люблю раст за
- хайп (это весело)
- комьюнити, это для меня значит много, можно и похоливарить, и пообщаться, и поучаствовать в совместном проекте just for fun
- за возможность писать быстрый код без гц не отстреливая себе очко, ибо основной альтернативой тут является только цпп (no go zone)
С растом я снова почувствовал себя как в свои 13 лет когда я на паскале ПРОСТО по фану без задней мысли писал вирусню и прочие решаторы уравнений. Последний раз от кодинга я полча лкайф именно тогда.
Годы гребли выбили из меня всю спесь и я превратился в раба энтерпрайза, раст в этом смысле освобождает
Это не мусор, это сахар. Так ты можешь любой енум распаковать.
В том смысле, что Option и Result в расте работают на общих принципах, в отличие от null и nullable в других языках, которые приделаны сбоку.
Во-первых, есть if let. Как у тебя сопли из лямбд даже в джаваскрипте уже не пишут.
Во-вторых, пограничные случаи обычно проверяют вначале, чтобы не плодить лесенки из скобок. В том же сишарпе я бы сначала проверил if (a == null) и отвалился с ексепшеном, например. В расте я так сделать не могу.
> if let
Можно и его, есть разные варианты, я просто чаще так использую поскольку чаще нужно что-то получить из выражения и/или дальше что-то вызвать, а не печатать в консоль. Можно и match использовать, как в примере выше вообще размотать до конкретных значений. Короче варианты разные есть.
> Как у тебя сопли из лямбд даже в джаваскрипте уже не пишут.
В жс теперь сопли из "тегов" компонентов jsx пишут
>Во-вторых, пограничные случаи обычно проверяют вначале, чтобы не плодить лесенки из скобок.
Во-вторых всё зависит от того что тебе нужно, если надо просто проверить как ты привык в шарпе бери match, if let или вообще .is_some(). Если надо еще что-то бери методы которые есть в enum Option, там полно всякого на разные случаи жизни. Если у тебя руки из жопы и получаются лесенки из скобок или выглядит не так как в шарпе, то не бери эти методы.
> Это не мусор, это сахар.
У тебя хуита вместо сахара, если вместо простого чека опционала надо городить паттерн матчинг с нечитаемой лапшой из скобочек.
> в расте работают на общих принципах
> в других языках, которые приделаны сбоку
Тем не менее я не вижу в твоём коде этого. Ты чекаешь что в конкретном енуме лежит такой-то тип. Читающий код как должен понять с какой целью это делается? Никакими общими принципами даже и не пахнет. А для того чтобы поменять опционал на другой хотя бы на абсолютно идентичный самописный тебе надо переписывать код паттерн матчинга, потому что паттерн изменился, ведь ты чекал какую-то хуиту. Т.е. у тебя реализация этой срани лежит на конкретном типе, а не язык предоставляет инструмент. Такая же проблема, как и про то что писали тут раньше - надо разбирать типы на запчасти и собирать из них то что тебе надо, никакой консистенции в обработке ошибок, даже если брать Option/Result - нет единого способа проверить валидность значения в них. Даже дженерики не спасут, если ты захочешь чекнуть в одном месте их, потому что разные API у них.
>>34482
Проблема всё в том же - вместо простого чека ты городишь костыли. Покажи как средствами языка выразить "если опционал имеет значение, то выполнить то-то", какие ещё мапы, блять.
эталонный долбоёб итт, боже мой
>чек опционала
жопу свою чекни, о чём ты споришь вообще? Чекай как хочешь. Если тебе нравится городить ифы - чекай ифами. Читабельнее твой кал не стал. Если ты не понимаешь другой синтаксис - ты просто тупой или необучаемый, пиши как умеешь. Серьёзные мужчины любят элегантные и локаничные решения, чем в данном случае паттерн матчинг и является.
Другое дело что анон >>34435 хуйню написал с вложенными опциями, так не принято делать, но от криворукости никто не застрахован.
>Проблема всё в том же - вместо простого чека ты городишь костыли.
>паттерн матчинг
>костыль
мужики и не в курсе
Уёбывай из треда, у тебя деградация головного мозга, расскажи нам ещё про то что лучше чем while(1) для лупов ещё не придумали, олень
В фп не пишу, но во время изучения в унике мы изучали его на примере Лиспа и очень понравилось. Это будто совсем другой способ делать привычные вещи, начинаешь по-другому мыслить.
В общем как упражнение для мозга заебись, а вот как в проде с ним работать - хуй знает. Чем большая макака понимает написанное - тем лучше.
>>34591
>чтобы поменять опционал на другой хотя бы на абсолютно идентичный самописный тебе надо переписывать код паттерн матчинга
См. пик. Многое изменилось, по-твоему?
>как средствами языка выразить "если опционал имеет значение, то выполнить то-то", какие ещё мапы, блять.
То, что я показал, это пример того, как можно работать с Option. А так, да сколько угодно - можно if let, можно чекнуть на is_some()/is_ok(), полно вариантов.
Мы не спорим, а рассказываем вкатуну из шарпа про то какие варианты есть
тебе выше показали некоторые из средств языка, доступных для этого, о чём ты вообще? ЧТО ТЫ ОТ МЕНЯ ХОЧЕШЬ?
>общие принципы
про общие принципы говорил другой анон, но давай я попытаюсь тебе объяснить про них в любом случае, если твой узкий лоб тебе этого не позволяет погуглить и понять самостоятельно ты вообще программист? интересуешься чем-то кроме плюсов?:
общие принципы это про у нас есть условная монада 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)
Об этих принципах, почему-то неизвестных тебе, вероятнее всего говорил тот анон
>Проблема всё в том же - вместо простого чека ты городишь костыли. Покажи как средствами языка выразить "если опционал имеет значение, то выполнить то-то", какие ещё мапы, блять.
Тебе 3 разных варианта показали match, if let и map. Все 3 делают то что ты говоришь если есть значение, то выполняют что-то. Все это средства языка. Тебе надо напечатать значение из структуры в терминал или сделать таким же точно способом как в другом языке? Ты хочешь поныть что тут не так как ты привык? Я понять не могу тебя, если тебе надо доебаться, то есть множество других вещей до которых действительно можно доебаться
> пик
Даже не собираюсь твой высер читать, пока не покажешь как сделать чек как в крестах. То что у тебя для каждого типа свой чек не значит что в языке есть хоть какой-то функционал для этого. Вот и получается, что даже обработку ошибок не завезли, только какие-то костыли на енумах.
> Даже не собираюсь твой высер читать
Он даже не читает, я думаю рациональнее ему и подобным им шизам не отвечать. Меньше кормишь, меньше пасутся. Тем более маркер виден "ря фсё ни так как в C/C++C/C#Cobol/JS/PHP”, пусть хуй сосёт в МБР треде
> в расте или другом фп-inclined языке
Ты сейчас пошутил или что? Потому что в крестах ты так же можешь сделать вермишель из монад:
> a.transform([](auto a) { return a + 1; }).transform([](auto a) { return a + 2; })
>>34716
Т.е. я засчитываю победу крестов в контексте "общих принципов" работы с вложенными типами? Потому что всё что я увидел - пять способов использования монад для конкретного типа и ни одного примера именно изначального вопроса - проверки валидности вложенного значения средствами языка. Только сплошные маневрирования в стиле "а давайте вместо проверки кинем лямбду", заебись решение нашли просто перепрыгнув задачу. И это при том что в самом начале я нахуй посылал с мапами, которые вообще к сути вопроса не имеют отношения. Особенно забавно что после того как аргументов не осталось просто скатились в траллинг.
Как же это охуенно, что наконец-то запилили, столько лет ждали. Завтра повыкидываю нахуй все костыли #[async_trait]
В таком синтаксисе можно забыть проверить на отсутствие значения. В Расте так тоже можно, но не из коробки. И зачем?
В расте вот так. И, заметь, в расте я точно знаю, что пришло опциональное значение, которое обязательно нужно проверить.
А ты со своими плюсами взвёл курок и лихо заправил револьвер в штаны с претензией "А вы так могёте?" Слава Б-гу, нет.
Ну не 3, а 2. Конечно, недоработка с моей стороны в плане наглядности, но вот то, что ты в счёте до 3х путаешься, уже диагноз.
Ну вот те ещё один тип.
Ты реально траллишь. Ещё раз - используй разные типы монад, а не вложенных типов. Ты хоть видел что я тебе показывал? Речь про использование Option/Result в одном месте, кого вообще ебёт какой тип в них.
А, понял, о чём ты. Что ты скармливаешь Oprion, Result, просто null и непосредственно значение одной функции и "она просто работает".
Дак это ж то самое говно, которое отличает низкоуровневые языки от высокоуровневых. На ассемблере можно чары друг на друга умножать - плюсовики посрамлены и унижены. Раст просто выше уровень и не даёт тебе насрать себе же в тапок, смирись с этим.
Проблема-то в чём? Что если у тебя изменился Option на Result и надо полазить по коду и поменять распаковку? Ну да, где-то придётся, охуеть, какая проблема. А если распаковка через .map(), то даже и не придётся.
> Проблема-то в чём?
В том что у тебя нет "общих принципов" для работы с монадами. На этом все разговоры можно закончить. А ведь после этого я могу доебаться до того что bind не завезли, хотя это одна из базовых вещей в монаде.
> монады дам
> функциональный синтаксис и инструменты для работы с ними не дам
Даже в джава-говне до такого распиздяйства не додумались.
Не корми шизика, представь что это то самое злое существо из книги Алена Карра, чем меньше ты его кормишь, тем быстрее оно сдохнет
Ты совсем припизднутый? В расте в каждой монаде надо руками биндить. А в хаскеле бинд на уровне языка реализован, как и положено.
Хватит позорить растанов, из-за тебя он продолжает тут траллить, потому что с каждым разом ты всё тупее и тупее перлы выдаёшь. Наличие монадных операций ещё не делает тип монадой, с таким же успехом можно на ГО написать ручные операции и сказать что это теперь монада. По дефолту у енумов нет никаких монадных свойств, а то что ты пытаешься выдать за монады - пять ручных типов на всю std.
Ну давай разберем все тобой по частям тут написаное.
Какими свойствами должна обладать монада?
Left identity, right identity и associativity. Можешь погуглить что это такое.
Мне лень тут писать, но всеми этими качествами опшен обладает, беря в пасует весь инструментарий что я выше обозначил, можешь погуглить опять же если сам своей агрессивной головушкой думать не хочешь.
На го можно тоже написать монаду наверное. Хоть на небе, хоть на Аллахе. Удивлен? В этом нет ничего магического.
Тип это тип, монада это математическая абстракция которая может быть перенесена в язык свойствами абстракции этого языка будь то классы, типы или что-то другое.
Енам тут при чем вообще?
Что в итоге сказать хотел, брат? Ты давай сам лучше не тупи и иди образовывайся прежде чем срать в треде.
Другое дело что раст не энфорсит тебя знать про монады и писать код в таком стиле. Он просто взял лучшее/практичное из мира фп. В этом был мой тейк.
>>35215
Кыш отсюда. Что ты несешь вообще.
Паттерн делающий возможной композицию функций которые возвращают обернутые значения. В расте эту функцию выполняют option и result, их можно чейнить (композировать) и не ссать что отстрелишь себе очко.
>Что в итоге сказать хотел, брат? Ты давай сам лучше не тупи и иди образовывайся прежде чем срать в треде.
>Другое дело что раст не энфорсит тебя знать про монады и писать код в таком стиле. Он просто взял лучшее/практичное из мира фп. В этом был мой тейк.
Раунд!
Меня смущает слово "системное".
Покажите ключи компилятора.
Есть ли аналог ключа -nostdlib ?
Bare Metal Environments
Вопрос снят. Спасибо. Да, его можно использоваь для системного программирования.
А с чем можно линковать? Он умеет в ELF объектиники?
>А с чем можно линковать?
С си естественно https://doc.rust-lang.org/std/keyword.extern.html В теории можно и с си ++ через стороннюю либу https://cxx.rs/
>Он умеет в ELF объектиники?
Он умеет в LLVM объектники. Потому что сам компилятор Rust на базе LLVM.
> Какими свойствами должна обладать монада?
По классике:
- монадный тип
- юнит-операция
- бинд-операция
Ну и то что ты написал, для полного соответствия определению монады.
Вообще по факту в расте функциональщины столько же, сколько и в ванильной джаве или крестах, там тоже есть ручные типы-монады с юнит/бинд-операциями. Разница лишь в том что в расте есть паттерн-матчинг, это единственное отличие.
> Енам тут при чем вообще?
При том что в фп-языках ты можешь монадные операции над любым типом выполнять, не надо вручную их реализовывать для каждого типа, потому что они часть языка. В расте нет монад, если убрать ручные реализации из std.
>По классике:
>- монадный тип
>- юнит-операция
>- бинд-операция
Что ты высрал тут, тупица? Из кодов выложенных анонами выше непонятно что все три свойства уже удовлетворены? Или ты пиздишь тут типа "ну да я в теме, прочитал на википедии статью и щас надо показать что я ШАРЮ ЗА МОНАДЫ" ебанько.
За них шарить не надо, надо ими пользоватсья а расте ебя в рот теорию категорий, потому что ФП говно по факту для software engineering писать на ЧИСТОМ ФП перформант код - ад, хайрить тяжело, ВСЕГДА будут люди умнее тебя, которые специально усложняют код по фану и потом съебут в закат, потом приходится писать всё на джаве лол с нуля, learning curve ещё выше чем в расте, я потратил около полугода когда изучал скалу чтобы разобраться во всех этих функторах и семигруппах в котах в контексте их применения, в расте я начал писать код через 2-3 дня ленивого чтения растбука
>Ну и то что ты написал, для полного соответствия определению монады.
то что я написал это MONAD LAWS, а не просто properties; без них твоя (семантически) монадка полупокерская будет просто тупым синтаксическим сахаром который нихуя не делает.
Ручные монады или нет - до пизды абсолютно как они интегрированы в язык, если они решают проблемы, мы в раст треде и обсуждаем раст, а не "почему в хачкеле так а в расте нет?? СОСО!!", "А В КРИСТАХ-ДРИСТАХ Я МОГУ САМ У СЕБЯ СОСНУТЬ НЕ ЛОМАЯ СВОИ РЕБРА!!! КАКАЯ ГИБКОСТЬ!".
>в фп-языках ты можешь монадные операции над любым типом выполнять
И? Раст ФП язык? Вот пиздуй отсюда тогда, мы не об этом спорим вообще тут. Перечитай предыдущий параграф, мы не обсужадем ФП тут, мы обсуждаем РАСТ. И его monadic-style error and null handling.
>в расте функциональщины столько же, сколько и в ванильной джаве или крестах
А ещё в джаве и крестах есть нулы и можно на эти монады хуй забить и брать в рот у вложенных if x == null
Короче, чё ты доебался?
Мы (растаны) не будем требовать у тебя тут извинений или включение съебатора потому что по незнанке не шкварятся (а за фп и монады ты очевидно шаришь так же как и я за политику), простим тебя просто без задней мысли. Но с одним условием: харош тут пиздеть и качать лодку по левым топикам которых не знаешь и которые не имеют отношения к теме. Енамы какие-то, автоматические бинлды, вообще ахуеть.
Спроси если есть вопросы лучше - аноны пояснять тебе.
соре всем анонам итт за монадосрач, я кончил, давайте лучше за раст
>По классике:
>- монадный тип
>- юнит-операция
>- бинд-операция
Что ты высрал тут, тупица? Из кодов выложенных анонами выше непонятно что все три свойства уже удовлетворены? Или ты пиздишь тут типа "ну да я в теме, прочитал на википедии статью и щас надо показать что я ШАРЮ ЗА МОНАДЫ" ебанько.
За них шарить не надо, надо ими пользоватсья а расте ебя в рот теорию категорий, потому что ФП говно по факту для software engineering писать на ЧИСТОМ ФП перформант код - ад, хайрить тяжело, ВСЕГДА будут люди умнее тебя, которые специально усложняют код по фану и потом съебут в закат, потом приходится писать всё на джаве лол с нуля, learning curve ещё выше чем в расте, я потратил около полугода когда изучал скалу чтобы разобраться во всех этих функторах и семигруппах в котах в контексте их применения, в расте я начал писать код через 2-3 дня ленивого чтения растбука
>Ну и то что ты написал, для полного соответствия определению монады.
то что я написал это MONAD LAWS, а не просто properties; без них твоя (семантически) монадка полупокерская будет просто тупым синтаксическим сахаром который нихуя не делает.
Ручные монады или нет - до пизды абсолютно как они интегрированы в язык, если они решают проблемы, мы в раст треде и обсуждаем раст, а не "почему в хачкеле так а в расте нет?? СОСО!!", "А В КРИСТАХ-ДРИСТАХ Я МОГУ САМ У СЕБЯ СОСНУТЬ НЕ ЛОМАЯ СВОИ РЕБРА!!! КАКАЯ ГИБКОСТЬ!".
>в фп-языках ты можешь монадные операции над любым типом выполнять
И? Раст ФП язык? Вот пиздуй отсюда тогда, мы не об этом спорим вообще тут. Перечитай предыдущий параграф, мы не обсужадем ФП тут, мы обсуждаем РАСТ. И его monadic-style error and null handling.
>в расте функциональщины столько же, сколько и в ванильной джаве или крестах
А ещё в джаве и крестах есть нулы и можно на эти монады хуй забить и брать в рот у вложенных if x == null
Короче, чё ты доебался?
Мы (растаны) не будем требовать у тебя тут извинений или включение съебатора потому что по незнанке не шкварятся (а за фп и монады ты очевидно шаришь так же как и я за политику), простим тебя просто без задней мысли. Но с одним условием: харош тут пиздеть и качать лодку по левым топикам которых не знаешь и которые не имеют отношения к теме. Енамы какие-то, автоматические бинлды, вообще ахуеть.
Спроси если есть вопросы лучше - аноны пояснять тебе.
соре всем анонам итт за монадосрач, я кончил, давайте лучше за раст
https://github.com/tokio-rs/tokio/issues/6173#issuecomment-1829561084
Оно не готово ещё, там подробно расписано что работает, а что нет. Но начало положено.
Открою тебе страшный секрет: асинхронность нахуй не нужна. Она нужна только в кривом джаваскрипте, где всего один поток. Обычный пул потоков работает быстрее, чем новомодное говно с асинками. Для защиты от ддоса используются прокси, в типичном облаке на кубере между твоим сервером и интернетом будет три прокси.
> до пизды абсолютно как они интегрированы в язык
Они никак не интегрированы в язык. В ядре ОС без std как предлагаешь ими пользоваться?
> мы не обсужадем ФП тут, мы обсуждаем РАСТ
Это не я тут хвалился наличием функционалищины в расте и возможностями, которых якобы нет у других. Про то что в расте правильные монады, а в джаве/крестах нет - это тоже не мои высеры.
> А ещё в джаве и крестах есть нулы
А в расте есть ансейф, который в любой низкоуровневой либе горой навален, в том числе в std.
> Спроси если есть вопросы лучше - аноны пояснять тебе.
Уже второй день не можете пояснить как сделать if(a) для любой монады. Мне хватило бы одной строчки кода, вместо десятка шизоидных простынь текста и оправданий почему оно не нужно. Зачем это надо уже пояснено - сделать проверки до того как соберёшься использовать вложенное значение.
>unwrap
Кстати проиграно, это что получается, если я вставлю макрос для Си, который будет делать exit(1) при ненулевом результате вызванной фукнции, или возвращать результат, это же будет буквально 99% кода на пидорасте.
>>35926
Все так. Наигрался с Футурамы, к сожалению без контроля тредов и пула сложно написать гибко конкарррент апп. Но для среднего проекта с Футурамы сложнее отстрелить себе жопу. Как обычно трейдофы
> это же будет буквально 99% кода на пидорасте
Ты забыл про разворачивание стека при панике. В расте паника будет дольше чем просто exit().
>древнейшие опшены
Мой любимый пример того, насколько усложняют жизнь 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>.
t. шарпист по профессии
Добавить одну строку в шарпе или добавить три строки с матчем в расте - что же выбрать? Алсо не забудь написать unwrap, напиши его снова.
> насколько нужно изворачиваться в первом случае через 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 можно запретить на уровне компилятора, если боишься выстрелить себе в ногу.
а кто тебе запрещает отдавать управление на блоке IO? Есть куча механик как этого избежать. В условном эрланге отдельный тредпул на уровне beam (или как оно называется) для IO, там гоняется все что с ним связано чтобы акторы не лочились.
Можно реализовать шедулер который будет забирать управление при блоке ио (привет java virtual threads и горутины)
Короче варики есть
Все нормальные люди освобождают поток и оставляют коллбек/чекают прогресс операции асинхронщина это под капотом и делает. Неблокирующие операции IO есть везде. Нормальный многопоток всегда будет быстрее скакания по стеку, оставляя фрейм висеть где-то там в ожидании когда к нему вернётся выполнение.
по эрлангу мог спиздеть, сам не тестировал, читал в книжке когда эликсир тыкал, так что возможно там роль отдельного ИО пула в том чтобы тупо не забить ИО если каждый актор будет в ио биться (лимиты ядра/драйверов итд)
>а кто тебе запрещает отдавать управление на блоке IO?
Лишняя писанина, тут взял tokio и за меня уже всё что нужно сделано, все библиотеки вокруг веба заточены под асинхронщину axum, actix, sqlx, redis, lapin (для rabbitmq) везде async/await и я поверх этого буду делать свои самопальные говнорутины или использовать какой-то тред пулл и ебаться скрещивать ужа с носорогом
Я выше писал что для среднего аппа вполне себе решение.
Если проект более менее нагруженный и сложный, в том плане что не просто параллельно отрабатывает запросы а что-то гораздо сложнее типа чат сервера с лямом юзеров, где еще надо учитывать особенности цпу кешей в cpu bound hot path чтобы быстрее крутить данные - заебешься тюнить и дебажить асинк код. Наелся говна в свое время со скала футурами теми же. Переписали в итоге все на продюсер консюмер и виртуальные треды.
> Паттерн-матчинг работает даже в if, пик1.
А ведь это то, о чём мечтал шизик с крестами, ещё и приправленное чем растовик хвалился, лол.
Можно написать проверку и тут же разобрать структуру с возможностью использовать проверенное значение, все счастливы.
Я даже полез проверять, реально работает.
Слова не мальчика, но мужа.
>>36783
По-моему вы путаете 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#, которой, в свою очередь, пользуюсь я.
>Если проект более менее нагруженный и сложный
И разумеется ты на таком работаешь не последним человеком раз всё знаешь и рассказываешь тут
Да. Вопросы?
> а кто тебе запрещает отдавать управление на блоке IO?
Когда тред сам отдает управление, а не шедулер его забирает, это и есть асинхронность как бы
>>35926
> Открою тебе страшный секрет: асинхронность нахуй не нужна. Она нужна только в кривом джаваскрипте, где всего один поток. Обычный пул потоков работает быстрее, чем новомодное говно с асинками. Для защиты от ддоса используются прокси, в типичном облаке на кубере между твоим сервером и интернетом будет три прокси.
Ты походу вообще не понимаешь о чем говоришь.
Суть перфа то как раз в корутинах на множестве системных потоков, то есть когда потоки могут и сами отдать управление, и когда они шедулятся при этом. В го это горутины, например
> то есть когда потоки могут и сами отдать управление
Он прав.
А вот на тебя ещё надо повнимательнее посмотреть.
> то есть когда потоки могут и сами отдать управление
В современных системах потоки переключаются при системных вызовах. Если поток переключает ядро ОС, то значит программу написал рукожоп.
>Если поток переключает ядро ОС, то значит программу написал рукожоп.
Разумеется если это происходит вне систеного вызова.
>А в расте есть ансейф, который в любой низкоуровневой либе горой навален, в том числе в std.
Если одно и то же повторять, то когда-нибудь дойдет:
- Подчеркни слово "низкоуровневой", и подумай почему низкоуровневое это ансейф.
- Налл это идиоматично в тех языках. Ансейф - напротив, считается дурным тоном где его можно обойти (не низкоуровневый код).
- По налл никто загрепать не может, и не делает так. Потому что он может быть неявным, т.к. является нормой.
Даже если ты тролль, все равно читающий и вникающий мимокрок нас рассудит. Для него пишу, не для тебя, потому что ты и так все это знаешь.
Причем тут системные потоки, если речь про виртуальные потоки и корутины внутри абстракции языка?
> Если поток переключает ядро ОС, то значит программу написал рукожоп.
Вут? Ядро будет прерывать и переключать выполнение физическими потоками системных потоков и тебя не спросит даже. Вроде в посикс тредах можно выставить критическую секцию, чтобы в ней не было прерывания через системные вызовы, точно не помню. Но это не имеет никакого отношения к написанию высокопроизводительного веб сервиса. Там у тебя есть абстрактные виртуальные потоки, написанные поверх посикс тредов, которые в корутинах обрабатывают запросы пользователей, и как там ось переключает выполнение посикс тредов ты не думаешь
>Причем тут системные потоки, если речь про виртуальные потоки и корутины внутри абстракции языка?
Эти абстракции это уже третий уровень. Это вообще другое. Такое будет работать и без ОС.
>Ядро будет прерывать и переключать выполнение физическими потоками системных потоков и тебя не спросит даже.
Да, это называется защита от дураков и кривых рук. Это ненормальная ситуация с точки зрения ядра. Ну, может быть и нормальная, но это всё равно защита от дурака. Потому что отсутствия ввода/вывода характерно, например, в "числодробильных" задачах. Матемоделирование, короче. Но и тогда не имеет смысл переключать поток, потому что в таких задачах количество потоков устанавливают под количество ядер.
> Вроде в посикс тредах можно выставить критическую секцию, чтобы в ней не было прерывания через системные вызовы, точно не помню.
И я такого не помню. Ты наверное слышал звон, да не знаешь где он и рассказываешь про SpinLock.
> Эти абстракции это уже третий уровень. Это вообще другое. Такое будет работать и без ОС.
А ты на уровне ядра собираешься писать веб сервис, что ли? Юзер спейс и программы в нем это уже третий уровень и будет
> Такое будет работать и без ОС.
Ват
> Да, это называется защита от дураков и кривых рук. Это ненормальная ситуация с точки зрения ядра.
Нигде не видел и никогда не слышал, чтобы кто-то пытался изнутри программы объяснить оси, как ей шедулить потоки, и это был нормальный продакшен код. Это стрельба из пушки по воробьям. Общие настройки шедулинга - ок, какие-нибудь специальные риал таймовые сборки оси - ок, но пытаться переуправлять потоками ось это бред - ей лучше знать, как ей шедулить, на это потрачены миллионы человекочасов. Может какие-нибудь нфт фирмы бы стали таким заниматься, но им приходить жить в одном облаке с биржой и жить в юзер спейсе линукса
> И я такого не помню. Ты наверное слышал звон, да не знаешь где он и рассказываешь про SpinLock.
Причем тут вообще спин лок, если речь про прерывания потока со стороны оси?
И такой есть да https://stackoverflow.com/questions/2865047/can-i-prevent-a-linux-user-space-pthread-yielding-in-critical-code
А вот вообще прерывания нельзя отключить из юзер спейка, да
Проблема в том, что вы о разных вещах говорите.
Тебе говорят "у меня ошибок в коде меньше стало", а ты отвечаешь "мне неудобно так писать, и некрасиво выглядит".
Мне понравился такой ответ: В раст и так if-else возвращает значение. Не так уж трудно написать let get_my_a = if Some(foo.a) {a} else { ... не могу вернуть НИЧТО. ошибка компиляции };
Разница с тернарным оператором минимальна, при том еще и дает возможность безопасной инициализации.
Засорять лишним синтаксистом когда и так есть... зачем? Унификация без потери читаемости. При этом я не раз видел код, когда делают cond1 ? expr1: cond2 ? expr2: expr3 .. какое же это уродство! Боже упаси от тернарных операторов. Писателя не остановишь, пока перо не отберешь.
Вот еще. Когда тебе захочется вместо одного экспрешона два - в if-else это будет тривиальный перенос строки, а тернарник придется переписывать.
> Ват
Bare Metal Environments
>чтобы кто-то пытался изнутри программы объяснить оси, как ей шедулить потоки, и это был нормальный продакшен код.
Речь не об этом, а о том, что до принудительного переключения потоков почти любая программа успевает сделать системный вызов. А там его встречает планировщик.
> И такой есть да https://stackoverflow.com/questions/2865047/can-i-prevent-a-linux-user-space-pthread-yielding-in-critical-code
А это уже интересно. Да, это не спинлок. Только за всю мою мою практику не встречался с потребностью.
> Речь не об этом, а о том, что до принудительного переключения потоков почти любая программа успевает сделать системный вызов. А там его встречает планировщик.
Что за бред
Если у тебя программа упихана системным вызовами и постоянно проваливается в кернел спейс, это пиздец и очень плохо. Никто так не пишет (по возможности). Так что планировщик быстрее заберет управление у потока
>Если у тебя программа упихана системным вызовами и постоянно проваливается в кернел спейс, это пиздец и очень плохо.
Что значит "постоянно"? Ты представляешь сколько успевает сделать программа между системными вызовами? Реальная программа.
> как понять, почему тебе вернулся нулл
> невозможно полнценно выразить в системе типов шарпа (пик 3)
Совсем кукухой поехал?
>dict.Contains(key) + dict[key]
Откуда вы лезете, наркоманы? Где-то открылся портал с перлом?
Такое говно потом невозможно читать и хуй разберешь, что хотел сделать автор. То джуники напердолят абстрактных фабрик, то мамкины саентисты насрут монадами, а ты сидишь потом и разгребаешь эту шизу.
Суть в том, что асинки работают медленнее пула потоков. Я проверял на сишарпе, на го и на расте через токио, везде асинки сосут. Чемпионом оказался го, там с горутинами показало на треть меньше рпс. Можешь сам проверить, а не вестись на пиздабольство маркетологов.
Выложи результаты, чтобы перепроверить и понять в чем твоя ошибка. Так твое сообщение тонет в 100500+1 результате других подобных бенчей, которые заявляют обратное. Причем это не от компаний каких-то на рандомных сайтах, а просто на гитхабе люди тестируют.
А так ты просто Анон с двачей.
Я не встречал бенчмарки, где асинки выдают больше рпс. Маркетологи напирают на экономию памяти, но тактично "забывают" указать, что, прежде чем закончится память, ты упрешься в производительность бд или в лимит подключений на сокетах.
В расте асинки тем более нахуй не нужны. Для системного программирования есть liburing, а прикладной код на расте никто писать не будет, язык не для этого. Чулочники придумали: если код на расте будет похож на код на нодежс, то раст станет таким же популярным, как нодежс. Шизофрения как есть. Лучше бы довели до ума стандартную библиотеку, а не как сейчас 100500 либ от разных авторов и все они нерабочие.
>токио, горутины
Это неблокирующее ио с шедулером для smp, пул потоков - это чё вообще ты имеешь в виду?
Он тебе ничего не выложит
Если у тебя баунд по ИО, то асинки и тредпул должны показать примерно равную произвольность.
Кей ворд асинк делает из функции корутину. Горутины это корутины на пуле потоков. Так что у тебя там медленнее работает
И вообще тебе даже в школе должны были рассказывать, что создавать на каждое соединение к веб сервису по потоку, который будет 1 к 1 к системному, это мертвый путь.
Короче ты вообще не понимаешь, что пишешь. Тебя однопоточной нодой трахнули когда-то и ты до сих пор тупишь в терминах
Если ты сравнивал liburing с асинками на epoll, то ясен хер юринг будет быстрее. Они создавались для разного в разное время. Но фьюча - это просто стейт-машина, она к реализацию экзекутора вообще не привязана.
>>37291
>>37303
Тем не менее, асинки самые медленные. Вангую, что это связано с памятью: когда процесс загружается на ядро, линукс загружает в кэш нужные страницы, такая себе оптимизация. А процесс с корутинами начинает ебать общую память через волатайл переменные, ведь ему надо прверить таски из общей очереди. Это мои предположения, глубоко я еще не разбирался.
Плюсовик в треде? Пусть порадуется с нами.
https://foundation.rust-lang.org/news/google-contributes-1m-to-rust-foundation-to-support-c-rust-interop-initiative/
>Шарп неплохой язык, платформа говно.
А можешь сказать почему платформа говно или ты просто повторяешь древние тейки пиздаболов джавистов?
Джава тоже говно, но меньшее. Скажем, это мой опыт: если встречаю на гитхабе проект на .net , в 90% случаев на линухе хуй запустишь.
Обычно ебу шарпистов в чем прийдут. Они ребята взрослые, не бедствуют, могут и сами себя обеспечить тем, что им нравится.
Ну вот, например. Сейчас уже не актуально сагрил и убил бородатого кузнеца, сцук
https://github.com/MarkH221/DarkSoulsSaveEditor
Это Winforms. Такое без труда собиралось в Monodevelop и работало под Linux, если устрановлены необходимые библиотеки.
Уважаемо
>Monodevelop
Спасибо, попробую как-нибудь. Но джава просто собирается mvn/gradle, хватает установленной jdk.
> гугл
> плюсов
Гугл никогда не писал на нормальных плюсах, у них в гайдлайнах прям написано писать на си с классами.
> в тему переписывания с плюсов
Не вижу где это написано. Они вложились только в совместимость раста с плюсами, ни слова про то что собираются что-то переписывать. Более того, это какая-то частная инвестиция одного из владельцев гугла, а не бабла самого гугла, к разработке оно никакого отношения не имеет. Как обычно желтизну разводите, как уже было с "майки переходят на раст", а на деле там веб-макаки из субстрата что-то в облаках пердолят на микросервисах.
На примере жму/пинуса:
- в ос есть потоки
- ос потоки есть а. kernel space (которое шедулит само ядро, вытесняющий принцип многозаданости), для них нет конкретного API, вы ниче с ними сделать не можете
- b. user space: это как раз та самая хрень которую обычно имеют в виду, в жму пинусе это обычно сделано через NPTL с мапингом 1:1 к кернел треду
- потоки в конкретной среде исполнения (руби, jvm, etc). Тут где как. Где-то есть поддержка и нативных тредов (тип b) где-то реализованы свои костыли поверх тредов типа b, в простонароде их часто называют GREEN THREADS/VIRTUAL THREADS
по пунктам:
>>36939
>Когда тред сам отдает управление, а не шедулер его забирает, это и есть асинхронность как бы
Асинхронность это когда код выполняется НЕ синхронно. Главный тред может запустить операцию в другом треде и не заблокируется, будет выполнять инструкции дальше.
>Ты походу вообще не понимаешь о чем говоришь.
да, тот анон наполовину хуйню сморозил, впрочем как и ты (без негатива)
>>36968
ты вероятно путаешь так называемые зеленые (виртуальные) треды и треды ОС. У ОС тредов есть только одна гарантия - никаких гарантий.
>>36987
>Вут? Ядро будет прерывать и переключать выполнение физическими потоками системных потоков и тебя не спросит даже
вот этот все правильно говорит если под физическими потоками имеет в виду kernel threads а системными потоками = user space threads, но звучит все равно туговато
>>37003
>Эти абстракции это уже третий уровень. Это вообще другое. Такое будет работать и без ОС.
да, я недавно лупой выжег потоки на деревце. Что ты несешь?
Вот этот челик какие-то странные вещи говорит короче. ^
>>37035
>Нигде не видел и никогда не слышал, чтобы кто-то пытался изнутри программы объяснить оси, как ей шедулить потоки
всё по фактам, да
>>37173
Медленнее/быстрее, это всё зависит от кейса. Давайте постаим задачу, напишем примеры кода и выясним, хули спорить без дела
>>37215
>В расте асинки тем более нахуй не нужны. Для системного программирования есть liburing, а прикладной код на расте никто писать не будет, язык не для этого.
1. я пишу прикладной код на расте, я любой код на нём пишу, мне очень нравится. Вопросы?
2. системное программирование не всегда жму/пинус к слову, юринга может и не быть
>>37291
>И вообще тебе даже в школе должны были рассказывать, что создавать на каждое соединение к веб сервису по потоку, который будет 1 к 1 к системному, это мертвый путь.
>Короче ты вообще не понимаешь, что пишешь.
поддвачну
>>37357
>Тем не менее, асинки самые медленные
ой иди нахуй заебал уже, выложи хоть код на который ссылаешься
На примере жму/пинуса:
- в ос есть потоки
- ос потоки есть а. kernel space (которое шедулит само ядро, вытесняющий принцип многозаданости), для них нет конкретного API, вы ниче с ними сделать не можете
- b. user space: это как раз та самая хрень которую обычно имеют в виду, в жму пинусе это обычно сделано через NPTL с мапингом 1:1 к кернел треду
- потоки в конкретной среде исполнения (руби, jvm, etc). Тут где как. Где-то есть поддержка и нативных тредов (тип b) где-то реализованы свои костыли поверх тредов типа b, в простонароде их часто называют GREEN THREADS/VIRTUAL THREADS
по пунктам:
>>36939
>Когда тред сам отдает управление, а не шедулер его забирает, это и есть асинхронность как бы
Асинхронность это когда код выполняется НЕ синхронно. Главный тред может запустить операцию в другом треде и не заблокируется, будет выполнять инструкции дальше.
>Ты походу вообще не понимаешь о чем говоришь.
да, тот анон наполовину хуйню сморозил, впрочем как и ты (без негатива)
>>36968
ты вероятно путаешь так называемые зеленые (виртуальные) треды и треды ОС. У ОС тредов есть только одна гарантия - никаких гарантий.
>>36987
>Вут? Ядро будет прерывать и переключать выполнение физическими потоками системных потоков и тебя не спросит даже
вот этот все правильно говорит если под физическими потоками имеет в виду kernel threads а системными потоками = user space threads, но звучит все равно туговато
>>37003
>Эти абстракции это уже третий уровень. Это вообще другое. Такое будет работать и без ОС.
да, я недавно лупой выжег потоки на деревце. Что ты несешь?
Вот этот челик какие-то странные вещи говорит короче. ^
>>37035
>Нигде не видел и никогда не слышал, чтобы кто-то пытался изнутри программы объяснить оси, как ей шедулить потоки
всё по фактам, да
>>37173
Медленнее/быстрее, это всё зависит от кейса. Давайте постаим задачу, напишем примеры кода и выясним, хули спорить без дела
>>37215
>В расте асинки тем более нахуй не нужны. Для системного программирования есть liburing, а прикладной код на расте никто писать не будет, язык не для этого.
1. я пишу прикладной код на расте, я любой код на нём пишу, мне очень нравится. Вопросы?
2. системное программирование не всегда жму/пинус к слову, юринга может и не быть
>>37291
>И вообще тебе даже в школе должны были рассказывать, что создавать на каждое соединение к веб сервису по потоку, который будет 1 к 1 к системному, это мертвый путь.
>Короче ты вообще не понимаешь, что пишешь.
поддвачну
>>37357
>Тем не менее, асинки самые медленные
ой иди нахуй заебал уже, выложи хоть код на который ссылаешься
>Они вложились только в совместимость раста с плюсами, ни слова про то что собираются что-то переписывать.
Чел, ты...
В такие вещи вкладываются, чтобы постепенно переписывать существующий код.
> постепенно переписывать существующий код
А при чём тут плюсы? Переписывать можно и джаву на ведре, для этого как раз и будет нужна interop между растом и крестами. Как будет нормальная инфа, так и приходи, не надо фантазировать.
Пчел, 1лям это работа 9 топ программистов за год, но так как я не видел отчетов фонда раста, то скорее всего эти деньги уйдут на премию менеджерам и работу маркетинга.
да, по ссылке лям, а не лярд
Ну, был бы у раста хуёвый фаундейшн с непрозрачным менеджментом, никто бы ничего не отсыпал. Тем более, что это не первая подачка от гугла, они знают, кому дают.
повёлся, повёлся, лох -))
Мне думается, это прикормка на место в фонде. Это инвестиции на будущее, вдруг выстрелит и нужно будет залочиться на вендере.
С++ спец очень дорог в плане ресурсов и вопрос не в деньгах, а числе самих спецов и в том, что количество не увеличивается. Раст же предлагает идею, что можно посадить зумера и он начнет кодить как плюсовик 30+лет стажем, без сигфолтов.
> а именно в тему переписывания с плюсов.
А как же карбон? Его ждать на кладбище? https://killedbygoogle.com/
>пикрил
О, это же тот хуй, который малварь запихал в жсовский пакет, который по русским и беларусам пытался отработать. Ууууууу бля!
Думаю, таки да, как и дарт. Смотри: игла в яйце, яйцо в утке, утка в раст в ядре линуха, ядро линуха в андроиде. Выстраивается очень красивая схема, когда один язык для всего - от низкоуровневой системщины до, возможно утилит и сервисов. Тащить в эту схему ещё и карбон, ну как-то не очень.
Вдобавок, гугл тоже не дурак и не рассчитывает тянуть проекты уровня языка с тулингом и репозиторием чисто на своём горбу, ему нужна поддержка сообщества. Карбон, в отличие от раста, особого энтузиазма не вызвал, поэтому вот.
> Карбон, в отличие от раста, особого энтузиазма не вызвал, поэтому вот.
Лол если честно то я на него не смотрел как раз по причине того что гугл любит внезапно и без объяснения причин закрывать свои проекты. Тоже самое и с дартом, как то он особо энтузиазма не вызвал
> гугл любит внезапно и без объяснения причин закрывать свои проекты
Ну, почему же, логика у него есть. Го взлетел как раз потому, что сообщество его приняло на ура - очень не хватало простого конпелируемого языка для веб-макак. А что никому не нужно, то он закрывает. Хотя, мог бы отдать в какой-нибудь фаундейшон и ебитесь, мол, сами, как хотите.
Логика может и есть, только вот закрытие продуктов происходит внезапно и почти всегда без объяснения причин, из-за этого у гугла соответствующая репутация. С го насколько помню там помимо гугла ещё и другие участники были и целая история с plan 9 и какой-то операционкой
Хз, был пик, чем история закончилась? Наказали или теперь малварить норм в штатах?
У гугла странный подход к своим проектам, эти самые проекты не являются какой-то общей идеей, а просто работа какой-то небольшой команды, мол, глядишь случиться чудо и выстрелит.
На примере дарта, как можно было пилить замену js без гарантии, что потом vm дарта не будет встроена в хром? Сейчас же дарт и флаттер вообще конкурирует с котлином, который в самом же гугле и приняли как основной язык. То есть, зачем вставлять палки в колеса для своего же проекта?
Проект карбон, а точнее язык с полным интеропом плюсов и еще удобнее чем плюсы (чтобы был резон их брать), это мега трудная задача требующая тонну ресов и объединение чуть ли не всего гугла. В итоге они там опубликовали дорожную карту и выяснилось, у этих ребят тамвсе очень медленно идет. А в условиях отсутствия стороннего наблюдателя, получиться какая-то экзотика в дизайне как у го (они там и так вдохновились стрелками из раста, ведь рисовать стрелочки буковками - это так весело).
> как и дарт
А что с дартом? Он уже давно ушёл от гугла, они не смогут убить его своими руками, на мобилках он вполне используется. В том числе Тенцентом, который сам как гугл.
> раст в ядре линуха
Ну пока поддержка просто номинальная, по факту его там нет.
> ядро линуха в андроиде
И линукс с запозданием приходит в ведро. Обратную совместимость с большинством устройств кто будет делать? В ведре так-то много лет проходит перед перекатом куда-то. Даже на котлин лет 5 катились, хотя не было таких проблем с обратной совместимостью как будет у раста.
>давно ушёл от гугла
Далеко ли ушёл? Покажи их фаундейшн и счёт для донатов. Вообще я в него не-ве-рю. Он, по факту, прибит к флаттеру, как руби к рельсам. Расползаться в стороны ему некуда - на бэке поджимает го, на фронте жс поскакал в светлое будущее ES6/7/8/9
Гугл плюнет и дарт сдохнет. Китайцы за своим фаерволлом смогут только поддерживать унылый форк для внутреннего рынка, будет как хуавэй, который вроде жив, но на который всему миру похуй.
>линукс с запозданием приходит в ведро
Ты шо, с луны свалился? Ведро изначально на линухе, а с недавних пор там ещё и ядро унифицированное с базовым.
>по факту его там нет
Китайцы запустили спутник, управляемый линухом с обвязками на расте на уровне ядра. ну вот, тоже привлёк китайцев для аргументирования позиции
Ну, ещё гугл переписывает модуль ядра binder на расте, а этот самый binder давно (с момента унификации) в основной кодовой базе линуха. Например, он нужен для активации прослоек типа waydroid на ПК.
То есть, гугл собрался писать на расте ядерную часть андроида плюс разные прочие вещи, для которых раньше использовался С++. Карбон в схему ну не вписывается.
> прибит к флаттеру
Рынок мобилок такой, что твоему расту даже и не снилось. Как я уже писал - Тенцент пишет на нём, что уже гарантирует жизнеспособность.
> там
Там это где? В гите? На мобилках самого гугла пиксель или что сейчас, которые занимают процент рынка околонулевой? За пределами гугла никто не пилит ведро под ролинг, даже на флагманах ядра устаревшие, на бюджетках вообще годовалые.
> запустили спутник
А ещё под спутники пишут на Аде, давай тогда на неё пересаживаться.
> То есть
То есть ты фантазируешь на ровном месте, выдавая необоснованные выводы за свершившуюся реальность.
>Рынок мобилок такой
Да, да, вот только срок жизни строки кода там мизерный. Вчера она на жабе, сегодня на дарте, завтра на котлине.
>Там это где? В гите?
https://github.com/torvalds/linux/blob/master/drivers/android/binder.c
пока он на си, скоро будет на расте. Тебе этого мало? Да, этот модуль используется только при конпеляции с поддержкой андроида, но это прям мэйнлайн, то есть, гарантирует поддержку раста в ядре при настойчивой поддержке гугла.
> даже на флагманах ядра устаревшие, на бюджетках вообще годовалые.
Ну пиздец, какой аргумент. Рано или поздно все будут на новых ядрах, никуда не денутся. Или что, хочешь сказать, что сяюми с сосунгом форкнут ядро и будут упорно сидеть на сишном биндере, лишь бы не иметь дело с растом? Что-то не было с их стороны возражений.
>А ещё под спутники пишут на Аде
Ты какой-то ёбнутый. Вот есть раст, вот он используется в ядре линуха, вот пример использования. При чём тут ада? У тебя шизофазия или около, походу.
Изначально речь шла о перспективах карбона, я показал, что гугл с Торвальдсом тащат раст в ядро, а карбон не тащат, в том числе поэтому андроид допиливают на расте, а не на карбоне, из чего я сделал вывод, что карбон не больно-то нужен самому гуглу, вот и всё. Ты же развёл какой-то срач не по теме (твои агрументы по дарту ещё туда-сюда).
>Вчера она на жабе, сегодня на дарте, завтра на котлине.
> Позовчера она на жабе, вчера на дарете, сегодня на дарте, завтра обратно на котлине.
Поправил) Не знаю почему, но многие после дарта уходят обратно на котлин
> Или что, хочешь сказать, что сяюми с сосунгом
Я хочу сказать что они не будут писать две разные реализации - с растом и без. Для мобилок норма что они ещё 2-3 года получают обновы наравне с текущими моделями. Ну ок, 3-4 года после того как реально начнут массово писать на расте в ядре - это самый реалестичный вариант когда в продакшене раст на мобилках появится.
>в продакшене раст на мобилках появится
А карбон не появится, вот и весь сказ, что не опровергает мой первоначальный тейк посыл.
идём дальше
https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html
https://security.googleblog.com/2023/10/bare-metal-rust-in-android.html
раст уже в мобилках прямо сейчас, начиная 13 ведроида. Биндер ещё не переписали, но системную обвязку уже. Необязательно начинать с ядра, оказывается. Красивая схема раст в яйце, яйцо в утке, утка в ядре, в которой нет места карбону, таки вырисовывается, но не обязательно в последовательности снизу вверх.
как долго мне приходится отстаивать аргументы, подтверждающие и без того банальный факт, что карбон не нужен
> memory safe language
Это не обязательно раст, это жвм в первую очередь.
> но системную обвязку уже
Показать можешь в исходниках, лол? Пикрилейтед из текущих исходников AOSP.
Пик 1, ядро 6.7 - ни строчки на расте.
Пик 2, системные либы - на расте обёртки над куском внешнего API, 7 файлов, 1000 строк кода, ни одной строчки работающего кода.
Пик 3, SDK - ни строчки на расте.
Пик 4, основной код ведра - ни строчки на расте.
https://cs.android.com/android/platform/superproject/+/main:packages/modules/Virtualization/
зайди в любую диру, почти все на расте
плюс по мелочи раскидано https://cs.android.com/search?q=src%2F.%2B%5C.rs&sq=&ss=android%2Fplatform%2Fsuperproject:packages%2F - на данный момент 551 файл на расте
https://cs.android.com/search?q=src%2F.%2B%5C.c&ss=android%2Fplatform%2Fsuperproject:packages%2F - 790 файлов на плюсах и сишке, если искать по аналогичной маске
вообще, где-то был их стейтмент, что они начиная с 13 ведра почти весь новый системный код пишут на расте
> Android Virtualization Framework
А при чём он тут? Это даже не часть ОС ведра, не говоря уже про ядро. То речь про ядро была, то вдруг ты наскребаешь какое-то непонятное говно лишь бы показать 500 файликов.
>Это даже не часть ОС ведра
а што эта, по-твоему? Што такое ОС, по-твоему?
>То речь про ядро была
И? Ты не веришь, что гугл перепишет binder на расте, думаешь, соврали?
>лишь бы показать 500 файликов.
на расте vs 790 на сишке/++ - тебе это соотношение кажется недостаточно убедительным?
маня, ну ты просто серишь. Напомню, изначально речь шла не о том, что весь андроид уже переписан на расте - что ты почему-то пытаешься оспаривать (впрочем, не особо успешно), а о том, что карбон не нужен и гугл его, видимо, скоро закопает в пользу раста.
>ой иди нахуй заебал уже, выложи хоть код на который ссылаешься
Мне кажется, это обсуждение прямо хорошо показывает, почему всякие поползновения типо асинков плохи - челики из-за высоты абстракции/сахара нихуя не понимают, как эта параша устроена на самом деле, потом всюду трясут своим непониманием, типо как твой челик сравнивает неблок ио с тредпулами (мокрое со сладким).
Если бы был тупо луп с дерганьем шедулера (как уж он там устроен это дело второе) и вывозом неблокирующих функций, было бы куда лучше.
Мимо-зоонаблюдатель
>В такие вещи вкладываются, чтобы постепенно переписывать существующий код.
Зачем переписывать то, что работает?
Но ведь я писал асинки и виртуальные треды в вм, как я могу не знать, как они устроены
Долбоеб ты а не зоонаблюдатель.
Могу написать асинк хеллоу ворлд и сравнить его с тред пульным продюсер консбмером файл батч процессором. Потом серить везде что асинк быстрее. Понятно тебе все?
> а што эта, по-твоему?
Это виртуалька для запуска ведра, в андроид студии оно как раз используется. Ты траллишь тупостью, да? Зайди в репу AOSP, из которой этот самый андроид собирается и покажи мне код на расте.
> а о том, что карбон не нужен и гугл его, видимо, скоро закопает в пользу раста
Речь изначально была о том что раст вот прям уже скоро будет переписывать кресты, потом ты высрал что УЖЕ переписывает. Что фактически бред полнейший.
>Это виртуалька для запуска ведра
Пиздос, блять. Это AVD, а не AVF
AVF, это часть ОС, она вот прям в самой мобилке. И Bluetooth стек уже переписан на расте, по крайней мере в 14~15 ведре.
ты чё тут серишь, шизик? блокирующий ИО является проблемой как в синхронных так в асинхронных системах, чё ты сказать-то хотел мудила? Кто там где сравнивает тред пулы с ИО блокировкой? Выйди из-за комплюктера пробздись на улицу, а то уже в глаза ебёшься.
>зайди в любую диру, почти все на расте
Посмотрел исходники, педерастраст - многословная параша (из-за свистелок и перделок), тупо кал. Эти проекты точно закопают, ебало додиков, которым придётся потом это поддерживать.
>не мочь в изложение мыслей в 2к24 и просто вонять на двощах своей тупостью
ты хуже залупного герписа, пиздуй с двощей уёбок
>Если бы был тупо луп с дерганьем шедулера (как уж он там устроен это дело второе)
Ты вообще в курсе как шедулер работает? Ты хочешь заебашить бизи вейтинг и еще "шедулер дергать"? Анус себе дерни, ты ещё свои грин треды напиши иди.
>и вывозом неблокирующих функций
вызови мне неблокирующий HTTP запрос маня своим "лупом" дернув "шедулер" за анус
Молодец, продуктивно проводишь время, ещё двадцать раз напиши а потом выдай себе премию "ебанат года" LOL
> а што эта, по-твоему? Што такое ОС, по-твоему?
Непонятно используется ли этот avf на практике, ходит ли туда кто-нибудь в системе, или просто лежит параллельно, как секьюрная возможность
Ты дебил, блять? 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.
>Ты хочешь заебашить бизи вейтинг и еще "шедулер дергать"?
>вызови мне неблокирующий HTTP запрос маня своим "лупом" дернув "шедулер"
Делаешь кучу сахара @ быдло высирается в интернете с ебалом иксперда. Во поэтому всякие асинки и зло.
> AVF is shipped in Pixel 6 and 6 Pro, but isn't enabled by default. To enable it, follow the instructions below:
А ну оно по дефолту выключено. Короче это ещё пока всё в процессе наработки
поясни?
я думаю в асинках нет ничего плохого, язык должен давать как высокоуровневые абстракции так и возможность спускатсья на уровень выше.
В скале например можно ебашить всё футурами, если не нравится - перейти на уровень джава тредов и делать что хочешь как хочешь.
В расте я пока новичок, не особо понимаю чё там за асинки вообще и как они работают под капотом(пишу хеллоу консольные)
Всякий сахар уровня асинков способствуют развитию магического мышления и в этом совершенно нет необходимости, когда речь заходит про ио. Дополнительно с этим возникает негативный эффект - армия хомяков начинает сувать эти асинки в жопу, т.е. применять там, где это не нужно, и тп.
> Это работает (если включить) внутри телефона
Нет. Ты для начала должен иметь железо, которое поддерживает pKVM, потом поставить pKVM и только потом ставить на него инстансы микродроида. Т.е. это не часть ОС, это виртуалка в ведре для запуска микродроидов. По умолчанию в ведре нет этого, а поддержка pKVM на текущий момент у полутора девайсов.
Двачую. Асинки должны использоваться только если нет многопоточности. В вебе их используют только потому что жс и нода однопоточные. А использовать их в низкоуровневом языке - быть адептом ГОвна. Даже в жвм асинхронные кортутины не сильно в почёте, а на нормальном языке в принципе должно быть зашквар использовать их во все стороны просто потому что не умеешь работать с IO.
Что за верчение жопой, лол. Собирается вместе с аоспом, ставится на телефон вместе с аоспом, буквально написано, что в Андроиде 14 оно есть по дефолту, хоть и не включено.
На каких девайсах это работает мы, кстати, не знаем, потому что хз как другие вендоры используют это или не используют, разрабы аоспа только на пикселях тестят
> Т.е. это не часть ОС, это виртуалка в ведре для запуска микродроидов
Что за логика
Это виртуалка внутри оси, чтобы секьюрно компилировать приложухи. По сути песочница. Для выполнения js кода, пролетающего от браузера, в андроиде тоже есть песочница. V8 это тоже уже не часть оси? Бред не пиши
>Двачую. Асинки должны использоваться только если нет многопоточности.
Я не совсем тебя понимаю. Почему, собственно? Насколько я понимаю (на ноде не пишу) в ноде есть event loop, который "переключает" выполнение "асинков" в стиле event-machine.
Но что мешает заебашить треды и так же переключать их лол? Это просто такой выбор абстракции по сути.
Давай развёрнуто, а то я нихуя не понял.
> Это просто такой выбор абстракции по сути.
И просто способ спустить производительность в унитаз.
>зашквар использовать их во все стороны просто потому что не умеешь работать с IO
У тебя переносимость отвалилась, братан. Работай с IO на низком уровне сколько угодно, но зачем мучить жопу, если можно использовать общие наработки, делая вещи проще и переносимее? Например, для любителей uring есть https://github.com/tokio-rs/tokio-uring и https://github.com/bytedance/monoio - подключай и используй.
А если очень хочешь выебнуться низкоуровневостью, то пиши сразу в двоичных кодах.
> буквально написано, что в Андроиде 14 оно есть по дефолту
Где написано, шизоид? Найди это говно в исходниках AOSP, лол. Что там у пикселей для разработчиков напихано никого не ебёт, да и то на пикселях нет pKVM из коробки, это просто факт.
В джаваскрипте один поток. Когда делали жс, никто подумать не мог, что ебанаты через 30 лет будут писать на этом скрипте полноценные программы, а не просто показывать плашку по нажатию кнопки. Никто там ничего не переключает, просто в точке async код возвращает выполнение в вызывающий метод, а при повторном вызове продолжается с того же места. Это не переключение потоков по прерыванию, там пока один не дойдет до асинка, остальные стоят и ждут. Почему нельзя было просто сделать для нодежс виртуальную машину с многопоточностью - непонятно, у них там своя ебанутая атмосфера.
>Найди это говно в исходниках AOSP
https://android.googlesource.com/platform/packages/modules/Virtualization/
Целый день всем тредом кормим шиза говном, даже надоело
Дорого если на каждый запрос создавать новый процесс. Никто не мешает сразу нафоркать 1024 процесса и повесить их на один сокет, а дальше линукс сам сделает лоад балансинг.
>В 2024 году сервера бегут на линуксе
А в 2025 придумают новую хуйню для асинхронного доступа к ресурсам. Этому самому uring без году неделя. Что легче - раз в 3-5 лет полностью код переписывать или рантайм сменить в пару строк?
>>39530
>Никто не мешает сразу нафоркать 1024 процесса и повесить их на один сокет, а дальше линукс сам сделает лоад балансинг.
на асинках ты можешь буквально 100500 коннектов держать, а на тредах будешь послан.
Я все равно не понимаю че ты бомбишь, это просто архитектурное решение. В ноде не 1 тред. В ноде single threaded event pool, который когда лочится - берет тред из тредпула и отдает ему управление, а сам переходит к следующей таске из очереди.
https://www.digitalocean.com/community/tutorials/node-js-architecture-single-threaded-event-loop
>на асинках ты можешь буквально 100500 коннектов держать, а на тредах будешь послан.
Чего вдруг? Количество конектов не зависит от количества тредов.
> делая вещи проще и переносимее
Это не про асинхронность. Асинхронность усложняет код и вызывает баги из-за неявного control flow.
Ты всё продолжаешь траллить тупостью? Зайди в репу AOSP, а не ищи опциональные модули.
https://source.android.com/docs/setup/download/downloading
и там ссылки на https://android.googlesource.com/platform/
хуль те надо, долбоёбина? Хочешь сказать, что вот это https://android.googlesource.com/platform/packages/modules/Telephony/ - тоже не часть AOSP ? Ведь это тоже модуль. Пиздец, чувак, ну у тебя и манёвры, как спишь по ночам-то с таким неприятием реальности?
>баги из-за неявного control flow
Как мне видится, скорее проблема рантайма. Допилят / отполируют, не сцы, всё будет.
Какой же ты долбаёб. В ведре модули надо отдельно тянуть через пакетменеджер banchan и билдить. Их нет в репе AOSP.
https://android.googlesource.com/platform/packages/modules/Virtualization/+/refs/heads/simpleperf-release/docs/getting_started.md
Можешь сам качнуть исходники AOSP по своей ссылке и попробовать найти этот модуль - его нет там.
Если лень качать исходники, то вот зеркало:
https://github.com/aosp-mirror
Рассказываешь тут про раст в ведре, при этом ведро видел только на картинках в гугле. Ещё раз повторю - покажи хоть одну строчку работающего кода в AOSP или пиздуй нахуй с своим толстым троллингом.
> Как мне видится
Без разницы какой рантайм, у тебя всё равно выполнение прерывается и возвращается обратно в неизвестный кодеру момент. Ты это никак не пофиксишь, потому что это сама суть асинхронности.
Ну и наличие какого-то рантайма там где его могло бы и не быть - это лишние прослойки, усложняющие код и дающие оверхед.
В бсд челики ещё жаловались на "заразность" этого говна - довольно пердольно использовать асинхронную либу, когда ты сам не используешь в коде асинхронность, т.е. оно вынуждает делать асинхронным всё.
А тебя не кажется странным, что асинхронщина не прижилась полноценно нигде кроме жс? В шарпе очень удобная асинхронщина уже больше 10 лет есть, но открываешь любой свежий проект, даже веб, и там нет её. В джаве тоже почти никто не пишет на ней. Только в котлине её используют, но там она и выглядит не так как у всех, слишком высокоуровнево. В плюсах она появилась, но тоже полнейшая тишина, насколько я знаю её используют только в однопоточных микроконтроллерах.
Я когда-то у ГОвнарей сидел и читал много ахуительных историй про то как чтобы выучить язык надо две недели, а чтобы научиться уверенно разбираться в каше горутин большого проекта и оно работало без багов - 5+ лет.
>модули надо отдельно тянуть через пакетменеджер banchan
>тянуть
Пиздецъ.
>banchan selects individual APEX modules to be built by the Android build system.
Смотри код, болезный, он ничего не качает
https://cs.android.com/android/platform/superproject/+/master:build/make/envsetup.sh;drc=721533e0d6c558083732f6a811085d1803529b3f;l=803
он использует уже закачанное по инструкции https://source.android.com/docs/setup/download/downloading и модули уже там, они часть AOSP
какое-то кривое зеркало с протухшими репами вроде https://github.com/aosp-mirror/platform_system_bluetooth
>у тебя всё равно выполнение прерывается и возвращается обратно в неизвестный кодеру момент
по-моему, это может стать проблемой, только при flavor="current_thread" + тяжёлые вычисления в потоках. Ну или приведи реальный кейс.
> Рассказываешь тут про раст в ведре, при этом ведро видел только на картинках в гугле.
Найс троллинг, как раз ты и не скачивал аосп ни разу. Аосп это множество (больше тыщи насколько я помню) гит репозиториев, которые менеджатся через repo и манифест, который показывает куда какой репозиторий скачивать. И какой нах гитхаб, аосп через геррит ревьювится.
Скачай по инструкции и все платформ аппы и модули там будут: https://source.android.com/docs/setup/download/downloading
Вот манифест https://android.googlesource.com/platform/manifest/+/refs/heads/main/default.xml
1158 строка – путь, куда у тебя скачается Virtualization, когда ты repo sync пропишешь
Мимо разрабатывал Хармони в РФ Хуавее. Бтв уверен тут много коллег сидят
Не буду спорить, но тут есть выбор. Асинхрон в расте почти безальтернативен только при работе с http/websocket. Да и то, возможно есть синхронные варианты, я их не искал.
См. пик. Любишь унижения? Продолжаем.
https://cs.android.com/android/platform/superproject/+/main:packages/modules/Bluetooth/
>Fluoride Bluetooth stack
>Building and running on AOSP
>Just build AOSP - Fluoride is there by default.
Вкурил, нет? Bluetooth ведра зовётся Fluoride и собирается вместе с AOSP в дефолтной сборке.
Заглядываем в сорцы, ищем что-нибудь системное
https://cs.android.com/search?q=BLuetooth%5C%2F.%2B%5C.rs$&sq=&ss=android%2Fplatform%2Fsuperproject:packages%2Fmodules%2FBluetooth%2F
231 файл на расте. Например
https://cs.android.com/android/platform/superproject/+/main:packages/modules/Bluetooth/floss/hcidoc/src/parser.rs
Для сравнения https://cs.android.com/search?q=BLuetooth%5C%2F.%2B%5C.(c%7Ccc%7Ccpp)$&ss=android%2Fplatform%2Fsuperproject:packages%2Fmodules%2FBluetooth%2F - 1400 файлов остаётся на c/cpp
Короче, все новые мобилки с ведром 14+ идут с растом на борту при наличии у них bluetooth.
https://cs.android.com/android/platform/superproject/+/android14-release:packages/modules/Bluetooth/tools/rootcanal/rust/src/packets.rs
Молодец, спустя два дня наконец нашёл модуль, который включен по умолчанию везде, но всё равно обосрался.
> См. пик.
Тебе видимо самому надо глаза с мылом мыть, потому что внешние модули ставятся питон-скриптами или через пакет-менеджер при сборке. Ты зачем-то притащил скрины репы ведра, но там очевидно нет этого модуля. Ты бы хоть чекал перед тем как писать. Алсо, заебал в Code search рыться, там собрано вообще всё, в том числе и внешние модули. Склонируй уже репу AOSP и не позорься, это 5 минут времени.
>>40158
> выделяет копирайт
Тут даже комментировать не надо.
Вот ты ебанько, а. Давай тезисно.
Значит, тезис: софтварь на мобилке делится на ОС и приложения. С этим будешь спорить?
Если да, ну поспорь. Если нет, то вот это что, по-твоему:
https://cs.android.com/android/platform/superproject/+/android12L-release:frameworks/native/libs/binder/rust/src/proxy.rs
1. Часть ОС
2. Приложение
собсо, 2 стула, выбери.
>Склонируй уже репу AOSP
сам клонируй, мне диск жалко. Вот инструкция https://source.android.com/docs/setup/download/downloading
Зеркалом на гитхабе можешь подтереться, его там нет.
И что, вот прям без https://cs.android.com/android/platform/superproject/+/android14-release:packages/modules/Bluetooth/ берут и собирают?
Давай проверим
https://github.com/LineageOS/android#getting-started
а там, внезапно, тот же repo с теми же модулями и тем же https://cs.android.com/android/platform/superproject/+/main:packages/modules/Bluetooth/ , который частично уже на расте
Не устал обсираться, мань?
> AVF в отдельной репе лежит.
> Склонируй уже репу AOSP и не позорься, это 5 минут времени.
Ну я склонировал, всё есть. Хз откуда ты правда 5 минут взял, если учитывать, что сорсы 161G весят без блобов.
На ночь поставлю cloc - посмотрим сколько там раст строк от общего числа
>cloc
Не забудь исключить обвязку. Те же исходники go, которые там за каким-то лешим присутствуют https://cs.android.com/android/platform/superproject/main/+/main:prebuilts/go/linux-x86/
Ну и от раста там тоже дохрена сторонних крейтов, видать, что-то типа кеша на случай leftpad, лул.
Без истории там все равно достаточно много 60-70гб
>>40804
Ты "обвязку" никак не отключишь все равно. Аосп это 1300+ репозиториев, в том числе многие из них опенсоурсные а-ля ядро линукс. Так сделано, потому что приходится вносить патчи и в них.
Так что чисто код, написанный разрабами аоспа, никак не посмотреть. Мб если только через гит блейм по комитам не идти и не фильтровать хз как откуда разраб
Можно в макросах реализовать сишку и писать на ней. Будешь говорить всем что ты растовик и при этом будешь писать на нормальном ЯП.
Поясни?
Че все так макро боятся?
Я щас посмотрел код, хз, вроде обычный кодогенератор. Понятно что с лисп макросами не сравнить, но тем не менее.
То что в них может любая магия происходить и отдебажить баг в макросе даже Аллах не осилит. В тех же крестах макросы это антипаттерн.
>В тех же крестах макросы это антипаттерн.
Ты говоришь о макросах препроцессора, это другое.
Шаблоны же, которые больше походят на макросистему, в крестах используются повсеместно.
Тотальная магия
Сложно читать и сопровождать
Сложно дебажить
Долго компилить
Кодогенарацию можно сделать проще.
https://www.youtube.com/watch?v=Fqnwj04CQX4
после этого Го не выглядит таким говном
Ах да, RefCell еще проверяется в рантайме, а не компайлтайме.
>Тотальная магия
>Сложно читать и сопровождать
>Сложно дебажить
>Долго компилить
ПТСР от крестошаблонов? Потому что ты перечислил проблемы крестов.
А у раста не самая плохая макросистема.
>Кодогенарацию можно сделать проще.
Можно, но это тебе не лисп.
>>41890
>но макро/рефлексия неотъемлемая часть любого языка
Щито?
Шиз, я не спорю чье говно лучше, что ты возбудился. Меня спросили, я ответил. Даже нормальные растеры не отрицают проблему макросов.
Ты просто долбоёб, самый настоящий eblanus vulgaris. Твой случай не уникальный.
Как же достали уже нытики "штабы проста ссильку сделать на памить надо Rc<RefCell<i32>>!!! ТИЖИЛО"
Да иди пиши свои линкедлисты с нормальным синтаксисом в си/плюсах/где хочешь. Будто вас кто-то заставляет писать на расте, уговаривает прям. Если вы не в состоянии прочитать растбук и понять в чем суть этих абстракций - то этот язык не для вас, очевидно. Вам о другом думать надо - о ригидности своего мышления и как это исправить, а не о рефцелах.
По рефцелам и другим абстракциям "каторые слажна четать!" идея проста:
Раст гарантирует тебе безопасность при работе с памятью и тредами.
Условие только одно: пользоваться предоставленными абстракциями.
Если ты ими не пользуешься - что не проблема, unsafe это неотъемлемая часть языка - то язык тебе этого не гарантирует и ты ловишь сегфолты если у тебя кривые руки.
Дереф это трейт, который нужно имплементить, внимание, для правильного дереференса растом твоей абстракции.
МояАбстракцияСтроки.deref() превращается в указательНаСтрокуХранящуюсяВАбстракции, то есть когда ты делаешь МояАбстракцияСтроки ты получаешь собственно строку, ибо под капотом это выглядит как (МояАбстракцияСтроки.deref()) Иначе раст не поймет как твою парашу задереферить.
>после этого Го не выглядит таким говном
Как же легко макаку заставить отказаться от своих убеждений.
Во-первых: го безусловно не говно. Это инструмент, причем относительно успешно решающий бизнес задачи. Язык безусловно менее гибкий, нежели раст, но от этого ниразу не "говно", хотя мне он и не нравится.
Говно у тебя в голове, болезный.
>но макро/рефлексия неотъемлемая часть любого языка
>Щито?
Чё тебе непонятно? Дурак что ли?
В той или иной степени в любом уважающем себя языке есть средства для кодогенерации/рефлексии или хотя бы работы с препроцессором будь то руби, будь то скала, плюсы.
Если хочешь максимально тупой язык, чтобы тебя ограничивали во всём и ничего там не было лишнего - пиздуй в гоу, там только 1 го вей как можно писать правильно. но вообще даже там есть рефлексия
>Самый лучше и самый нужный, линукс перепишем!
пять минут спустя
>Что вы ноете? Не нравится есть говно, не ешьте, что вы приходите и ноете.
Я понял, спасибо.
Да-да, долбаебы обвешаются тысячами самописных макросов, а потом оракл или перл не могут переработать, потому что заебешься переделывать говномакросы, которые удобны, ага?
>когда ты делаешь МояАбстракцияСтроки ты получаешь собственно строку, ибо под капотом это выглядит как (МояАбстракцияСтроки.deref()) Иначе раст не поймет как твою парашу задереферить.
когда ты делаешь <звездочка>МояАбстракцияСтроки ты получаешь собственно строку, ибо под капотом это выглядит как <звездочка>(МояАбстракцияСтроки.deref())
Иначе раст не поймет как твою парашу задереферить.
Пофиксил себя, макаба съела звездочки
ты чё тут про перл вспомнил-то? Там без макросов минус ебало, это как раз антипример
В лиспе лучшие в мире макросы, в сравнении с лиспом макросы в любом языке априори кал. Никто не плачет там что макросы неправильные, все просто пользуются ими и кайфуют. Хотя они там выглядят как полный пиздец.
Раст в принципе сложный язык, как по твоему там должны выглядеть макросы? Или ты считаешь, что их там не должно вообще быть только потмоу что они "сложные" для тебя?
Да-да, уёбывай давай, отличную аналогию придумал, очень остроумно
ешь своё не говно, парашник
>перепишем линукс
А линукс безусловно будут дописывать на расте переписать его вряд ли получится. Потмоу что раст безопаснее и предсказуемее сишки и крестов для большей части аудитории, которая наигралась в это дерьмо в сосничестве и не прикасалась к нему никогда больше.
>все просто пользуются ими и кайфуют. Хотя они там выглядят как полный пиздец
А ты любишь пощекотать себе анус, любитель макросов
Гигов 5 на сборку зависимостей на диске. ОЗУ должно быть поебать если в один поток собираешь.
>интроспекция
Во-первых, интроспекция != рефлексия, хоть часто и применяется в одном контексте.
Во-вторых, вот и пиздуй пиши на них, чё там на вскидку? Фортран, кобол, чистый асм, наверное ещё паскаль (но тут неуверен). Флаг в руки и пиздуй, даун. Надеюсь ты найдёшь там своё счастье.
> крестошаблонов
> проблемы крестов
А при чём тут они? С шаблонами как раз нет этих проблем, их сделали для того чтобы выкинуть сишные макросы.
> у раста не самая плохая макросистема
И чем она отличается от сишных макросов? Только тем что унифицированы имена через ! и оно не протекает как min/max в сишке? Всё так же нет никакой стандартизации синтаксиса внутри макроса и там может быть хоть код SQL, всё так же невозможно дебажить их. Как было говно, так и осталось в расте.
>дебажить макросы
честно говоря я хуй знает как их дебажить даже в лиспе, где макросистема лучшая в мире
>макросы в си не отличаются от раста
Ты вообще ебанутый?
си макросы макросами называть нельзя, просто препроцессор который заменяет текст
в расте макросы понимают АСТ и работают с токенами, могут генерировать код, а не просто заменять текст
> понимают АСТ и работают с токенами
В чём принципиальная разница для тех кто потом использует их? Больше магии внутри - это наоборот хуже.
Никакой, но писать и сапортить безопаснее. Иди нахуй короче, зачем я тебе это объясняю если ты своей бошкой допереть не можешь. Спроси еще зачем обувь снимать когда заходишь домой если все равно потом убираться.
Жаль твоя мама его не знала, иначе бы обязательно натянула своему юбарю гандон и ты в итоге тут не серил бы
А теперь возвращаемся к тому, с чего начали
>но макро/рефлексия неотъемлемая часть любого языка
ЩИТО БЛЯТЬ?
Перечитай тред пиздоглазый
Я рад что тебе понравилось
А пока небольшая стори.
Такой фейл произошел со мной. Моя училка по 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 в моих программах. Я выбежал на улицу и побежал к перекрестку. Пока я соображал как перейти дорогу чтобы не удариться об машину, ЛИСПОПЕТУШОК просто перескакивал через них. Водители бросились разъезжаться в разные стороны дабы не столкнуться с ЛИСПОПЕТУШКОМ. Он нагонял меня. У меня не было выбора кроме как спрятаться в ближайшем здании. Это был детский сад. Я уже забежал в само здание садика, как ЛИСПОПЕТУШОК ворвался в него, проломив стену. Нескольких детишек он раскидал своими кривыми руками, а каких-то придавил мерзким дыханием. Но эти детишки спасли мне жизнь. ЛИСПОПЕТУШОК с каждым прыжком ко мне пробирался все ближе. Я воспользовался тем драгоценным временем, которое мне подарили эти детишки, и запрыгнул на лестницу. Оттуда по трубе я мог добраться до дерева, и уже оттуда мог залезть на крышу детского сада. Возможно, там я бы смог запросить помощи у вертолета, пролетающего мимо.
А пока небольшая стори.
Такой фейл произошел со мной. Моя училка по 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 в моих программах. Я выбежал на улицу и побежал к перекрестку. Пока я соображал как перейти дорогу чтобы не удариться об машину, ЛИСПОПЕТУШОК просто перескакивал через них. Водители бросились разъезжаться в разные стороны дабы не столкнуться с ЛИСПОПЕТУШКОМ. Он нагонял меня. У меня не было выбора кроме как спрятаться в ближайшем здании. Это был детский сад. Я уже забежал в само здание садика, как ЛИСПОПЕТУШОК ворвался в него, проломив стену. Нескольких детишек он раскидал своими кривыми руками, а каких-то придавил мерзким дыханием. Но эти детишки спасли мне жизнь. ЛИСПОПЕТУШОК с каждым прыжком ко мне пробирался все ближе. Я воспользовался тем драгоценным временем, которое мне подарили эти детишки, и запрыгнул на лестницу. Оттуда по трубе я мог добраться до дерева, и уже оттуда мог залезть на крышу детского сада. Возможно, там я бы смог запросить помощи у вертолета, пролетающего мимо.
>К сожалению, нативной реализации библиотек yt-dlp и FFmpeg для Rust нет
>Код пишется довольно медленно,
Мыши плакали, кололись, но продолжали грызть кактус
>однако компилятор предостерегает от потенциальных проблем, что делает его прекрасным выбором для создания производительного и надежного кода на века.Не случайно в настоящее время Rust решили использовать в коде ядра Linux, а Google внедряют Rust в платформу Android.
Обязательная часть при заказе статьи? Что за слащавый маркетинг пошел? Волосы шелковистее не стали?
>В итоге я принял решение разработать бэкенд на Rust с использованием веб-фреймворка Axum. Выбор этого стека обусловили впечатляющие результаты бенчмарков, где Axum обгоняет по производительности практически все фреймворки.
Теперь в этом рейтинге axum где-то вперде, что теперь на какой-то faf переходить? Или же вообще на го, шарп и V?
https://www.techempower.com/benchmarks/#hw=ph&test=plaintext§ion=data-r22
Как переписать либу с опасного языка С/С++ на безопасный Раст:
1) берём либу
2) пишем обёртку
3) готово
Для тех кто растер.
Чел тупо вынес дробилку из приложения на сервер и не упомянул об этом, при этом слащаво ратует за раст, мол как стало с ним все круто, хоть и скорость разработки упала.
Это какой-то технический сюр.
Что не так с деврелами? То недавно переписывает ядро винды, хотя там вообще не мягкие и вообще не ядро, то эта статья?
Покушать же принесли.
Чулочники просто ебанутые. Там неиронично диагноз по шизе, they/them и самовыпил в 30.
Я немного пописал на расте и мне эта хуйня очень не понравилась. Документации нет, надо лазить по исходникам и там в комментариях искать примеры. Весь код или засран Box dyn Error, или ехал unwrap через unwrap. Шиза с владением - это просто за гранью разума, в программе на сотню строк я и сам уберу мусор, особенно, когда его нет.
> Шиза с владением
Немного попердолился и всё работает без фиксов мемориликов и сегфлолтов в будущем. Не понимаю проблемы. Или просто сложно? Ну извините, уебывай назад в питон.
Но ведь всё верно пишет. Автогенерация списка API - это с трудом тянет на документацию. Я вот недавно с hickory-dns связался, так там вообще нихуя нет, сам блять разбирайся как использовать их либу, куча каких-то структур, нихуя не понятно как всё это говно связано и какие методы что делают. Ни примеров, и доков - хули ебало скривил, код же безопасный, а на остальное забить можно. Причём на docs.rs есть кусок примера, но в гите таких структур в принципе нет что они в примере используют, ахуеть теперь. Я в итоге взял первую попавшуюся сишную либу с 20-ю процедурами и сделал хуяк-хуяк всё - там всё сразу понятно было.
А раст тут причем? Я в скале тоже охуеваю от отсутствия доков к некоторым библиотекам.
В самом расте шикарная документация.
Ты о чем, маленький?
Там написано, что раньше всё делало приложение, а теперь добавился сервер. Ты просто читать не умеешь.
Его спросили как он добился снижения размера с 90мб до 10мб, он сказал что вытащили видео-дробилку с клиента на сервер.
То есть, раст там вообще не причем, но статья завуалированно намекает на достижения раста.
Ты студент? Вот когда пару лет поработаешь и столкнешься с опенсоросом, то увидишь что часто с библиотеками бывает плохо если туда не вписываются какие-нибудь спонсоры. Я с таким на разных языках сталкивался
Ну раз у тебя столько опыта, то наверное можешь не трепаться языком, а взять и показать пример где у топ языков и топ либ проблемы с доками?
>не трепаться языком
А по-другому никак, потому что это субъективное понятие. Больше языком треплешься здесь ты выдавая библиотеку с 4 сотнями загрузок как за данность в языке
>топ либ
Покажи проблемы у раста с топ либами и вообще в чём критерий топовости?
покромил
Нет, достижения у раста всё же есть.
Низкое потребление ресурсов и скорость.
Если бы я написал этот сервис на Python'e или жаве,то не вывес бы расходы на содержание облака.
мимо автор статьи
>Низкое потребление ресурсов и скорость.
Ты вроде как сказал что дергаешь через консоль нужную команду?
>Если бы я написал этот сервис на Python'e или жаве
Вот когда напишешь тогда и приноси.
Хотя не нужно, ты скорее всего не понимаешь как резервируется память в этих жабо/шарпах.
Епись теперь на расте, особенно когда придется расти и нанимать кодера, тогда прочувствуешь всю оптимизацию раста.
>Кококо, у меня столько опыта, всех переопычаю.
>Так покажи
>Пук среньк
Я все понял, молодец, возьми конфетку с полки.
Ты зачем обосрался?
Хватит серить
>Что за проблема в асинках?
Нет никаких проблем. Есть одна проблема, она называется "руки из жопы".
Они не нужны. Для джейсономешалок есть более подходящие языки, а для системных вещей токио медленное говно без задач.
Если у тебя строго один интерес и для этого подходит го, бери его.
Если хочешь один язык "для всего", то бери раст.
Такое ощущение, что у тебя просто потребность во внимании. Надеюсь ты тут не один.
А чё конкретнее-то? У раста есть все инструменты. Есть tokio, есть futures (если токио не устраивает), есть actix на базе токио. Если акторы не устраивают, можно просто сделать thread::spawn. Я не знаю чё ты пришёл сюда и жалуешься на выдуманные проблемы. Ты фьючерсы пробовал? Токио пробовал? Вот когда попробуешь тогда и приходи. А щас это просто выдуманные проблемы рукожопов.
>coloring
очередная выдуманная хуйня, это как жаловаться почему "я нем могу сделать "penis".to string ???".
Да, приходится думать иногда какие дергаешь функии, лол.
бля хуйню написал, конечно же я имел в виду "penis".toInt
ну всё, поулчается расходимся? Раст говно. В какой тред пойдём серить теперь?
Благодарю.
Очевидно в го тред, зеленные функции для слабаков!
Из-за coloring problem получается что либы с асинхронным АПИ не могут вызываться блокирующим способом ну если не затаскивать в зависимости вызывающего кода асинхронный рантайм. Несущественно по-твоему?
Да. Это несущественно.
Во-первых это возможно, используй await.
Во-вторых это как жаловаться на невозможность работы с каким-нибудь ArrayBuffer в жабе в мультитредном окружении. Надо мутекс пихать!!!!!! Ну нет...
ПРОСТО берешь либу без асинков тогда и вперёд, вопросы?
Это предъява по вонючести уровня "бойкот дженериков в го".
я во всех смыслах перекатываюсь с руби
Зачем? Не думаю, что раст не станет прикладным инструментом.
Ты делаешь тоже самое, но дольше. Твой супер код все равно будет 90% проседать на i/o. Я смотрел на размер бинаря и потребление памяти, но оказалось го делает тоже самое и не нужно костылить с Rc/Refcell и лайфтаймами.
С такой компиляцией попробуй какой-нибудь ui подвигать и шрифтами поиграться.
Хороший системный язык, для дробилок, для узких мест, но никак не прикладной.
>Твой супер код все равно будет 90% проседать на i/o
Не везде есть IO, болезный.
>размер бинаря и потребление памяти, но оказалось го делает тоже самое
..а ещё есть потребление CPU и тут мы скромно промолчим.
>..а ещё есть потребление CPU и тут мы скромно промолчим.
В конце девяностых многие писали cgi на всяких плюсах, бюджетные серваки были вообще на селеронах, и тут люди начинают вдруг писать на перл, пхп. А почему? Да потому что пинг, запросы с базы, файловое i/o пожирали всю мощь твоих плюсов, говноскрипта хватало чтобы высрать html'ку, а когда пхп стал модулем апача, плюсы вообще соснули, так как проигрывали именно по i/o и тупезне cgi технологии.
Так что срать потребление, мы по i/o стоим больше. Смешно, но раст планировали же с зелеными тредами, а теперь он нахер не нужен в прикладных задачах, когда у тебя за десяток ядер.
>В конце девяностых
Мощности CPU росли быстрее, чем стартап сына мамкиной подруги, поэтому всякое скриптовое говно и повылазило, что как ты ни пиши, через перу лет менять парк компов на х3-4 раз мощнее.
>тупезне cgi
не проблема языка и давно уже порешано тем же нжынксом.
>плюсы вообще соснули, так как проигрывали именно по i/o
ты не понимаешь, о чём пишешь. Они проигрывали по скорости ответа из-за кривости CGI. i/o, это когда у тебя висит 100500 процессов того же апача 1.3 и ждёт, когда же клиенты с 2G мобилок скачают свои гифки.
>раст планировали же с зелеными тредами
и правильно сделали, что выкинули. Иначе это был бы ешё один язык с неотключаемым рантаймом, а там и до сборки мусора недалеко.
>мы по i/o стоим больше.
стойте, хуй с вами, есть полно других задач, где это не актуально.
Опять серишь?
>а там и до сборки мусора недалеко.
Там в соседнем треде, лобстер, судя по заявлению сам расставляет лайфтаймы и когда не может накидывает Rc. Чем это отличается от того же раста, где тоже самое делает чулочник, но уже руками и через мат?
>и правильно сделали, что выкинули.
Тогда же язык многие и дропнули, людям нужен был го с вменяемым дизайном, а не враперка для плюсов.
>Чем это отличается от того же раста, где тоже самое делает чулочник, но уже руками и через мат?
Тем, что в расте управление памятью, всё-таки, ручное. Ты можешь не оборачивать в Rc, а подправить ручками.
>го с вменяемым дизайном
Много народу пользует тот же V ? https://vlang.io/compare#go а ведь это оно - бери и пользуйся. Ответ прост - без поддержки крупного корпа мелкие не рискнут писать на нём свои, как метко выразился некто, джейсономешалки.
>Много народу пользует тот же V ?
Да причем тут это, когда мы про судьбу раста.
Вместо еще одного конкурентного современного языка, получили очередной врапер с/с++ под финансированием. Причем судя по вкату рубистов и питонщиков, финансируют явно не в язык, а в поддув.
ты походу не знаешь основную фичу го и что такое зеленные треды, иди гугли уже
V это и есть удобный современный, нахрен никому не нужный конкурентный язык.
Правда, зелёные треды пока только планируют, действительно
https://github.com/vlang/v/discussions/11649
У конкурентных языков весьма узкая ниша, а геморроя из-за необходимости держать конкурентный движ заведённым, они тоже доставляют знатно. Дженерики в го неспроста так долго затаскивали.
Тоже мимо
Половина списка - говно какое-то без задач.
Другая половина не позволяют также нативно и легко их использовать, как в го
я не гошер, честно
>Дженерики в го неспроста так долго затаскивали.
Какая тут связь, зачем фантазировать? Дженерики там больше про скорость компиляции. Там идея была, что го уже весь готовый и туда больше ничего не надо, поэтому с трудом что-то продвигалось (кроме внутренних хотелок гугла, типа алиасов). Го больше напоминает внутренний язык, поэтому такой и странный и так долго пакетный менеджер рожали.
>У конкурентных языков весьма узкая ниша
А у враперов очень широкая? С 90х годов от плюсов отожрали все кто могли, а там где остался, ничего другого не нужно, потому что никто уже не будет все это легаси говно переписывать.
То что раст натягивают не на системных, а на прикладных кодеров, не плюсовиков, а рубистов, говорит об языке очень плохо (буквально агрессивный маркетинг ради доли рынка и пофиг где, главное "продать").
В любом случае даже название они получили от джавы, а не го.
>У конкурентных языков весьма узкая ниша
Если в гитхламе поставить сортировку проектов больше 1000 звезд, то у го будет 2,9К реп, у джавы для сравнения 3,4К
Причем эту позиции он занял очень давно, от чего даже я прифигел.
Узкая ниша, это не про число проектов, это про направленность. Там здоровенная часть, это различные tcp/http/upnp/etc-сервисы , а остальное, это полезные либы для написания таких сервисов. Ессно, из-за того, что куча вебмакак выучила го, они используют его для пет-прожектов. Я даже игровой движок видел, вот только надо ли оно?
>То что раст натягивают не на системных, а на прикладных кодеров
Что такое системное, а что прикладное? Раст разрабатывался под написание браузерного движка - по-моему вполне себе прикладное направление. Или всё, что не веб и не аппликухи для мобилок, это у нас системщина?
>главное "продать"
и кто же его "продаёт"? Вон, гуглу даже продали, в хром пихает, в андроид. Иллюминаты, не иначе.
>и кто же его "продаёт"? Вон, гуглу даже продали
Ну вот, ты почти понял как работает сфера b2b.
Ёбнутый шизик, везде заговоры мерещатся
>(буквально агрессивный маркетинг ради доли рынка и пофиг где, главное "продать").
Кто кому что продаёт? Ты уже тридесятый пост в тридевятом треде пишешь про маркетинг и продажи, а так и конкретики не назвал. У тебя от доработки битрикса 24 перед глазами эти лиды и воронки продаж?
Объяснял несколько раз, один даже подробно, но неудобные моменты же просто игнорятся.
Ты успешный менеджер продукта, ты кушаешь с него, ты пытаешься протолкнуть его и так по кругу. Просто раньше это крутилось среди каких-то b2b решений, теперь продуктом стал (зачем-то) язык и фонд.
Отсюда политика, движ этот чулочный, отсюда драмы и прочее херня, главное чтобы хайпавало. Понятно что если бабло идет деврелам и в маркетинг, то кодерам оно достается меньше.
Вот зачем рубисту системный язык? А ведь он из какого-то утюга услышал и не раз. И за 9 лет рупор вещает одно и тоже.
Что там в рубях была небезопасная работа с памятью?
продавать (толкать продукт) - там не просто так кавычки, но уровень интеллекта многих удивляет
>Объяснял несколько раз, один даже подробно, но неудобные моменты же просто игнорятся.
Если ты объяснял также как ниже написал, то не удивительно что тебя игнорят. Опять налил воды из базвордов. По факту можешь пояснить как происходит монетизация? Как и кому что продают? Я понимаю там оракл зарабатывает на экосистеме жабы, майкрософт вокруг шарпа, там как бы очевидная монетизация. А тут что?
Только без твоих гейских штучек и женской одежды, вижу у тебя ЛГБТ больная тема, за живое задевает. Но всё же мы говорим не о твоих внутренних проблемах
Ты такой наивный, как девочка в чулках
Манагеру поебать, откуда берутся деньги. Главное, что он получает зарплату за свой проект. Пусть проект хоть трижды убыточный, пока капает зп, для менеджера все заебись. Вон, микрософт до сих пор делает свой бесплатный браузер, который буквально никому нахуй не нужен, вот прям совсем. Как происходит монетизация - да похуй как, лишь бы зарплату платили.
> Вон, микрософт до сих пор делает свой бесплатный браузер, который буквально никому нахуй не нужен, вот прям совсем.
Это ты о каком? У меня вот этот основной и ещё пара других.
Я не понял, выходит некие менеджеры из раст фаундейшен (?) обвели вокруг пальца наивных дурачков из бигтеха которые решили попробовать себе раст затащить в свои хуитки?
мимо
> оракл зарабатывает на экосистеме жабы
На облаках и базе данных. Джава у оракла чёт на уровне самоокупаемости.
>откуда берутся деньги
>Как происходит монетизация - да похуй как, лишь бы зарплату платили.
Так откуда они берутся-то? Кто платит? Аллах даёт? Хули ты тут воду льёшь я тебя конкретно спросил как монетезируется работа маркетологов. А потом плачешь что тебя никто не слушает и что аж тушь по щекам растеклась.
> который буквально никому нахуй не нужен, вот прям совсем
Почему же он тогда выебал все остальные хромиумы, кроме самого хрома? Ты может ещё вспомнил бы бесплатный жпт-4, встроенный в винду и браузер?
Да еще и рубистов подсадили на ржавую иглу!!!
Тут всё ещё хитрее: эти менеджеры получают зарплату из кармана тех самых корпораций, которые спонсируют раст фаундейшн.
Облапошили гугл за деньги самого гугла!
Че как дети, ей-богу.
Тебе объяснили корреляцию, хай + отчисления в фонд. Там же была какая-то драма с менегерами мозилы, пацаны обмазывались премиями.
Иди отсюда, вонючка. И теорию заговора забери свою. Покажи по факту где кто кому и за что заплатил, а не фантазиями своими тут делись, идиот.
>Кококо, язык на продажу
>Так покажи кто платит
>Пук среньк
Я все понял, молодец, возьми конфетку с полки.
Процитирую одного шиза выше, возможно тебя
Ты обиделась?
постирай трусы
Нужно еще крашенные волосы, тугие чулки и не осилить хаскель. Раст это канализационный слив тех, кто хотел самоутвердиться за счет языка, но не осилил хаскель. Этакий хаскель для тупеньких.
>и правильно сделали, что выкинули. Иначе это был бы ешё один язык с неотключаемым рантаймом, а там и до сборки мусора недалеко.
Если бы
До раста я знал что такое синтаксический сахар, после раста я узнал что такое синтаксический мусор.
Ты сам-то хотя бы одну строчку на хачкеле/расте написал, или просто сидишь серишь тут в треде?
Мимо осилил скалу, перешел на раст. Харкаю в ебало тебе, ссанина бомжа.
Хаскель это ни что иное как способ ментальной мастурбации.
Если я вижу человека который не имеет математического бекграунда и чето пиздит за теорию категорий и хачкель - харкаю ему в ебало, типичный каргокультист.
Раст - практичный язык для решения реальных проблем в разных областях.
хачкель, Скала (если брать исключительно фп стек) и прочие хардкор фп языки - нахуй никому не нужны, кроме кучки задротов и пары экспеременальных отделов в банках.
- слишком абстрактны (функторы, тайпклассы, инварианты, коварианты, монады, монойды)
- сложно натягивать бизнес-задачи кабана на теорию категорий и изолировать эффекты, да ещё так, чтобы новые разрабы всё это поняли.
- тяжело дебажить
- космический порог вката даже в сравнении с растом
- слишком академично (местами даже скучно)
Неудивительно это всё говно-хардкор фп не взлетело в индустрии.
Кабаны поняли что никаких преимуществ тебе ФП не дает перед императивной джавой, косты слишком высоки.
Раст вообще другой язык, и вкатываться в него гораздо легче чем в хачкель или скалу, твой высер невалиден.
Хуй знает братишка, везде этого мусора хватает, другое дело хватит ли тебе ума чтобы понять этот мусор (пикрил). Окей в питоне, жс и прочих рубях этого нет, но мы на них и непишем.
В расте, на мой взгляд, этот мусор понять гораздо проще чем абстрактную писанину, пускай эта писанина и выглядит элегантнее.
Уже постирала трусы? Ты походу реально обиделась, раз уж начала говном кидаться
А ты сама какие языки осилила? Получилось на хаскеле хэлоуворд запустить?
В том числе. Краб у него на +-втором месте после сишечки. На расте он писал сервис для индексирования и поиска по html (вроде) докам. Бота с хачкеля переписывает на го.
Ты не понимаешь. Если тебя каждый раз заставляют проверять на NULL, то он становится безопасным.
второй скрин это скала вообще
Это другое.
>>48255
>>48288
Не представляю как вообще можно писать код, который содержит какие-то ошибки или какие-то указатели не туда. Что вы там такое нахуй программируете-то? Это как вообще?
Не понимаю, серьёзно, может на расте программируют люди которые пришли из JS и Java и по этому какие-то ошибки пишут?
Да сам не понимаю, хайп ушел, работы нет, многие компании от скалы отказываются, по причине того что СЛОЖНА и ДОРАГА, но с другой стороны если ты хороший скалист то всегда найдётся высокооплачиваемая работа в общем как и в любой области
Что тут понимать, на Котлин все перешли. До него только шкалка и была альтернативой голой жабе. Котлин нашёл идеальный баланс между императивщиной с ооп и функциональщиной, шкалка стала ненужна.
>Не представляю как вообще можно писать код, который содержит какие-то ошибки или какие-то указатели не туда.
Чтобы не было багов - нужно писать без багов.
Чтобы начать представлять как это, для начала надо просто написать что-то больше хэлоу ворда и лабораторной в 100 строк. Когда начинаешь что-то крупное писать, ещё и в команде, ещё и под воздействием внешних факторов типа дедлайнов и резких переключений между задачами, то такие ситуации будут неизбежно появляться. А когда много людей работает с репозиторием и все друг у друга черри пикают, то вероятность ошибок повышается в разы
>Не представляю как вообще можно писать код, который содержит какие-то ошибки или какие-то указатели не туда. Что вы там такое нахуй программируете-то? Это как вообще?
Вся идея раста для бизнеса, что можно посадить зумера в чулках и он будет писать код по уровню сишника с овер 20 лет стажем. Но реальность оказалось немного суровее.
> то вероятность ошибок повышается в разы
Ну тогда палю совершенно ультимативную йоба-фичу. Нужно использовать архитектуру!
Это волшебное слово избавляет от 99% всех багов и неоднозначного поведения, которое возникает из-за того что множество пользователей пишут хуйню. Сам код разбивается на маленькие-маленькие функции-модули, которые тестируются просто замечательно! Конечно же они должны быть понятными ещё.
Ядро же пишется математиками, которые дрочат математическую доказанность алгоритмов.
>>48477
> Но реальность оказалось немного суровее.
А какие в целом ошибки у этого сценария? Понятно что чулочники и фурри ничего хорошего написать не могут, но в целом, в чем обосрамс? Слышал что там ансейф в core-либах есть, а в других либах он вообще повсеместен, подвспшикнул конечно с этого, но кажется это не то.
>>48482
Доля правды в этом есть. Но тем не менее вокруг скалки довольно большое комьюнити энтузиастов, стабильные экосистемы (зио, тайпсейф), но сложность отпугнула стартапы и компании которые не могут себе позволить платить много денег за бонусы которые дает фп дает ли хуй знает на самом деле
В голос с этого архитектора.
Где же ты раньше был?
Как же мы раньше-то не додумались до этого?!
Уебывай отсюда, школьник.
Не, ну серьёзно, понятно дело что архитектура это долго и сложно. Но это всё ещё лучше раста, когда взаимоблокировка потоков буквально фича языка.
>Ну тогда палю совершенно ультимативную йоба-фичу. Нужно использовать архитектуру!
>Это волшебное слово избавляет от 99% всех багов и неоднозначного поведения, которое возникает из-за того что множество пользователей пишут хуйню. Сам код разбивается на маленькие-маленькие функции-модули, которые тестируются просто замечательно! Конечно же они должны быть понятными ещё.
Ты сначала доучись в своей шараге, найди работу и тогда снимешь свои розовые очки.
>Ядро же пишется математиками, которые дрочат математическую доказанность алгоритмов.
Я даже представил этих академиков из интела и хуявея что пишут линукс лол
>>48524
Он либо студент, либо тот кто много читает литературу, но реальный код не пишет, например какой-нибудь препод тот же Столяров он на лоре такую же шизу выдает https://www.linux.org.ru/people/Croco/profile ни на что не намекаю
Это прям в каждом посте чувствуется что шизик сидит в своих розовых очках, любит носить женское бельё далёк от реальной разработки и имеет свое идеалистическое представление о том как тут все устроено.
>тот же Столяров он на лоре такую же шизу выдает
Первый комментарий: 23.12.10 18:33:21 MSK
Хех. Так он салага.
Моя вторая регистрация на лоре на 10 лет раньше.
>Ты сначала доучись в своей шараге, найди работу и тогда снимешь свои розовые очки.
>Он либо студент, либо тот кто много читает литературу, но реальный код не пишет, например какой-нибудь препод
Да вы заебали, чулочники, я гейдев просто. В смысле не на расте пишу, а игры разрабатываю, серверные приложения всякие, ещё всё такое.
Чужих либ не использую, всё самописаное, но недавно предложили установить какую-то хуйню на расте которая статистику решает, вот сижу раздумываю нужен ли покупать чулки использовать это или нет...
>А какие в целом ошибки у этого сценария?
Просто, для примера, были попытки фронтендера жсника посадить на бэкенд и не вышло толком ничего путного, а тут вообще другой мир.
Сам по себе раст не дает возможность писать высококачественный оптимизированный код. Ну то есть нельзя взять что-то около плюсов и начать писать оптимизировано.
>серверные приложения всякие
>всё самописаное
Круто! Скажи что ты еще сам реализацию http написал? И своя база данных наверное?
Да пусть побольше гордится
> Сам по себе раст не дает возможность писать высококачественный оптимизированный код. Ну то есть нельзя взять что-то около плюсов и начать писать оптимизировано.
Хм, ну с этих позиций понятно дело что
>>48725
Да, всё это самописное, это же гейдев, тут так принято. Свой протокол с гарантированной доставкой и бд своя тоже.
Ты же не хочешь сказать для тебя проблема написать свой протокол или свою бд? А это точно тред системного языка?
Тут кто то хоть на расте пишет, или в треде внимание привлекает?
>Ты же не хочешь сказать для тебя проблема написать свой протокол или свою бд?
Написать свой васянский протокол и сделать свою колхозную БД не проблема, послушать порт и насрать в консоль вообще 3,5 строчки кода, тоже и с записью и чтением фалов. А вот сделать что-то на уровне нормальных баз данных и реализацию http - задача на долгие годы. Тут с библиотеками для clickhouse пришлось ковыряться несколько недель чтобы найти нужную и доработать для реализации нужных нам типов там была БД для хранения транзакций эфира, а сама БД разрабатывается уже несколько лет в яндексе. А про постгрес вообще молчу, там код пишут быстрее чем ты сможешь его прочитать.
У вас в гейдеве наоборот стоят другие задачи вам нужен минимальный функционал, но в приоритете быстрое время отклика. И сравнивать теплое с мягким что кто-то на бекенде не колхозит свои решения как в гейдеве, а берет готовое, это мягко говоря признак вкатуна или дегенерата. Ты весь тред это пытаешься всем доказать
Значит на ядре ты один? В том плане, что твои наивные рассуждения про то, что достаточно заебашить правильно архитектуру, а там хоть на голях сях пиши - это работает только в коллективах до 3х человек. Дальше оказывается, что каждый понимает архитектуру по-своему и понеслась.
Как раз таки в игрокале в свое время монстра и встречал
по классике никто нихуя не знал, кто писал уже пропал
>>48829
> И сравнивать теплое с мягким
Да я не сравниваю, я просто посрать сюда зашёл, кхм. Энивей, нормальная архитектура и нормальные специалисты закрывают 99% проблем с утечками памяти, а остальные проблемы есть и в расте.
> не колхозит свои решения как в гейдеве, а берет готовое
Мои сожаления потерпевшим.
>>48870
> Значит на ядре ты один?
Ето да, не спорю. В основном архитектуру должен держать в голове один-два человека, по-другому это просто не работает. Но так-то именно так это в компаниях и работает!
> это работает только в коллективах до 3х человек.
Да. Архитектор и два помощника архитектора. Или три архитектора, которые хуячат что-то гейниальное нахуй.
> Дальше оказывается, что каждый понимает архитектуру по-своему и понеслась.
Дальше все пишут свою архитектуру, а потом тесты чья архитектура лучше и почему, доказывают это с пруфами и уже по обстоятельствам.
Это да, монстры в игрокале тоже присутствуют в огромных колличествах почти все движки это тырпрайс и СОСАТЬ БЛЯДЬ БЕЗОПАСНОСТЬ СОСАТЬ НАХУЙ ПРОТЕЧКИ ААА САСААААААААААААААААААТЬ ПЕРЕЗАГРУЗКА РЕШАЕТ ВСЁ
Карлсн бля, хуле ты лыбишься, иди варенье мне принеси на своём вертолёте нахуй
>Да. Архитектор и два помощника архитектора. Или три архитектора, которые хуячат что-то гейниальное нахуй.
И вот смотри: есть линукс, гениальный Торвальдс, архитектура, куча сеньоров пилит на полную ставку. И, тем не менее, Линус так заебался с кривыми дровами, от которых не спасает даже архитектура, тесты и ревью, что он согласился на внедрение второго языка программирования в ядро - и этим языком оказался раст.
Теперь прикинь, что гениальных архитекторов, способных тащить крупные проекты, настолько мало, что платить им нужно 10 мидловых ставок, прибавь к этому то, что архитектура, это, всё же, не панацея - и ты получишь, что без раста никуда везде, где управляемыми языками не обойтись.
>Да я не сравниваю, я просто посрать сюда зашёл, кхм. Энивей, нормальная архитектура и нормальные специалисты закрывают 99% проблем с утечками памяти, а остальные проблемы есть и в расте.
Вот ты как раз с позиции гейдев разработчика смотришь на всё, одно дело когда вы выебали каждый байтик в своем коде и само собой знаете что и где у вас с памятью. Другое дело когда у тебя в приоритете бизнес-логика, большие объемы данных, где каждое неправильное число стоит довольно дорого в настоящих деньгах, а не кристаликах, плюсом ко всему много сторонних сервисов с которыми нужно взаимодействовать и всегда сжатые сроки из-за которых некоторые решения приходится делать не всегда оптимальными с точки зрения байтоёба. Раст очень помогает избежать множества ошибок если на нем нормально писать, а не как ты .unwrap() Rc<> да Box<dyn Zalupa>.
У нас разные приоритеты и разные задачи, но ты пытаешься свой гейдев распространить на другие сферы.
>Мои сожаления потерпевшим.
Ты лучше себя пожалей, каждый раз колхозить то что уже сделано другими из-за экономии каких-то наносекунд
>гениальный Торвальдс
Что в это хуйле гениального???
Везунчик - оказался в нужное время в нужном месте, харизматичный, пиздобол-зайтеник, сквернослов.
И ещё он спиздил minixfs у Таненбаума.
Стадия торга
> у Таненбаума
не получилось, у Столламана не получилось (HURD) , а у Торвальдса получилось. Как думаешь, почему? Как раз потому, что будучи программистом, он в то же время оказался неплохим менеджером и архитектором, сумевшим найти баланс между шашечками и ехать.
А такое редко, успешные инженеры-организаторы наперечёт. Илоний Маск, например. Даже Джобс не считается, он инженером не был.
Туда смысла не заглядывать, там бывает в некоторые дни десятки коммитов с тысячами строк https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/ ты это даже прочитать толком не сможешь.
А вот гит смотрел, да. Там адовый говнокод, но им пользуется весь мир.
>И вот смотри: есть линукс, гениальный Торвальдс, архитектура, куча сеньоров пилит на полную ставку.
На сколько я понимаю, там нет архитектуры в классическом понимании. Вернее есть, но это другое, там не архитектура, а набор апи, аби, плюс всякие гайды по тому как делать хорошо, а как делать нельзя, куда в текущую "архитектуру" что добавлять, а куда нет. Скорее набор рекомендаций, чем архитектура, хуй знает как это описать. Свалка говна нахуй. Для ядра это норм конечно на самом деле, если бы не кол-во говна в ядре которое нужно срочно переписать и перепроектировать, то даже заебись.
> Линус так заебался с кривыми дровами, от которых не спасает даже архитектура, тесты и ревью, что он согласился на внедрение второго языка программирования в ядро - и этим языком оказался раст.
Погоди, и как это связано? Кто-то собрался 70% ядра переписать? И он согласился на это разве не потому что его ЛГБТК+++33см травить начали?
>>48915
>Другое дело когда у тебя в приоритете бизнес-логика, большие объемы данных, где каждое неправильное число стоит довольно дорого в настоящих деньгах, а не кристаликах, плюсом ко всему много сторонних сервисов с которыми нужно взаимодействовать и всегда сжатые сроки из-за которых некоторые решения приходится делать не всегда оптимальными с точки зрения байтоёба.
Тогда такая хуйня должна писать на скриптокале. Жава там какая, жаваскрипт, может быть скала или котлин. Ну и если совсем всё сложно - ерланг или хаскель.
>У нас разные приоритеты и разные задачи, но ты пытаешься свой гейдев распространить на другие сферы.
Дя, у меня бизнес-логика находится в игровом движке, на отдельном бекенде. Работает хорошо, правда там не реалтайм, а 120герц и меньше. Зато можно выдерживать без сбоев нагрузку в 60 раз превышающую обычную. По кайфу жиесть.
> из-за экономии каких-то наносекунд
Если не экономить наносекунды, то вместо раста можно писать на жаве.
Надо новое ядро писать на расте без исторического говнокода
>линукс драйвера говнокод
Как сделана эта оценка? Какой опыт у тебя лично в разработке драйверов и вообще в писании чего-либо не в юзерспейсе?
>ряя говнокод на расте не будет говнокодом
Где пруф, что по этой причине сделали поддержку раста в дереве ядра?
>Как сделана эта оценка?
https://typeset.io/questions/what-research-papers-that-claim-linux-device-drivers-are-the-3ekhngiprx
>Где пруф
пруф хотя бы в том, что единственный, помимо обвязки, кусок кода на расте в ядре сейчас, это драйвер https://github.com/torvalds/linux/blob/master/drivers/net/phy/ax88796b_rust.rs - типа, смотрите, как надо.
>>49111
>он согласился на это разве не потому что его ЛГБТК+++33см
От ядра линуха слишком многое зависит, чтобы ЛГБТ там могли на что-то повлиять.
Гугл, вон, сразу начал биндер переписывать, он и продавил.
> ers/net/phy/ax88796b_rust.rs
> макросы
> коды ошибок
> vtable
Осталось ещё сырые указатели сделать и будет бинго. Сплошной синтаксический мусор.
> От ядра линуха слишком многое зависит, чтобы ЛГБТ там могли на что-то повлиять.
Они явно травили некоторых мейнтернеров.
> Гугл, вон, сразу начал биндер переписывать, он и продавил.
Короче кто-то продавил.
> what-research-papers-that-claim-linux-device-drivers-are-the-3ekhngiprx
> 640 real concurrency use-after-free bugs
Теперь будут баги c блокировками потоков и живыми блокировками, ведь в расте нет ничего чтобы их избежать. Даже в clang есть инструменты для этого, а растошизики на разработчиках горят с этого и рассказывают что это всё врёти и вообще нормальная ситуация.
Алсо, такие баги проще эксплуатировать, потому что целые секции ядра могут нахуй ложится.
Заебись оценка, без примеров без нихуя.
>addressing common bugs like use-after-free
Только непонятно, как пидораст будет решать подобное в кернел спейсе.
>типа, смотрите, как надо
Ты версию на си посмотри для начала, лол.
>Теперь будут баги c блокировками потоков и живыми блокировками
Раст в ядре, это не тот раст, который std, и даже не core, там дофига чего своего накостылили, в том числе https://github.com/torvalds/linux/blob/master/rust/kernel/sync/lock/mutex.rs https://github.com/torvalds/linux/blob/master/rust/kernel/sync/arc.rs
не ссы, про лочки в первую очередь подумали, как-нибудь разрулят.
>>49289
>ведь в расте нет ничего чтобы их избежать
Всё будет, не переживай. Вон, в сторонней либе уже есть
https://amanieu.github.io/parking_lot/parking_lot/deadlock/index.html
>Тогда такая хуйня должна писать на скриптокале.
Не тебе нам указывать на чём написать.
>Жава
Ты запусти для начала хэлоуворд на спринге какой-нибудь туду лист, охуеешь от количества лишних действий на пустом месте
>жаваскрипт
Я пишу и на нем тоже, он у нас второй язык, только поверх прикручиваю ts не всегда спасает, но это обычно небольшие проекты типа ботов для телеги, всякие мелкие внутренние сервисы. Писать на этом говне что-то большее настоящая боль, раст отлавливает 95% ошибок, которые я бы допустил в js еще на этапе компиляции. А ебучий npm это сборище говна, огромное количество кривых пакетов и всё написано через жопу. На нем быстро и на коленке можно только высирать реакты и небольшие проекты, которые умрут через год-другой. Плюс там память улетает в небеса, мы тупо раз в сутки перезагружаем контейнеры с js
>скала
Сложно кого-то найти, экосистема в которой нет нихуя и придется везде прикручивать жабу. Плюс на ней пишут 3,5 калеки
>котлин
Тоже неплохо, но для этого надо собирать другую команду
>ерланг
Это немного специфичная штука для высокой отказоустойчивости, там еще в плане девопса есть свои нюансы и синтаксис ебановатый, элексир в какой-то мере помогает. Для нас это не подходит.
>хаскель
Код чаще читают чем пишут, эта хуйня нечитабельна. Мы не математики.
Странно что ты не упомянул go он как раз нам тоже подошел бы, мы пилим сервисы, которые между собой общаются через кролик, нам нужно переваривать много данных и много взаимодействовать со сторонними апи, плюс вся эта хуйня типичная для веба: апи, БД, редис, иногда graphql для фронта и всё это крутится в докерах. Собственно мы занимаемся примерно тем же самым что и большинство гоферов, только на расте. В этой сфере языки похожи как 2 капли воды, а выбор именно раста это просто субъективный фактор, нравится больше чем го.
> /mutex.rs
> unsafe
> unsafe
> unsafe
> /arc.rs
> unsafe
> unsafe
> unsafe
Закашлял аш с этой хуйни.
> не ссы, про лочки в первую очередь подумали, как-нибудь разрулят.
Ну хуй знает....
> Вон, в сторонней либе уже есть
Да ебаный рот...
Да ладно это ещё нормально. я бы только импорт со звездочкой убрал и vtable . Вообще когда вижу хуёво написанную библиотеку и начинаю смотреть чем занимается автор, то в большинстве случаев оказывается какой-то сишник
>Сложно кого-то найти,
факт
>экосистема в которой нет нихуя и придется везде прикручивать жабу. Плюс на ней пишут 3,5 калеки
Зайди в скала реддит хотя бы
Экосистема любая на выбор:
- императивная
- hardcore fp (typelevel)
- practical fp (zio)
везде есть свой асинк
>прикручивать жабу
Ты везде будешь ее прикручивать, что в котлине, что в скале, что в кложе и в этом нет ничего плохого, интероп бесшовный (по крайней мере в скале), я вообще считал бы это преимуществом
мимо скалист
Проблемы? Ты в курсе что любой low level тулинг пишут ансейф? думаешь жвм написан на джаве лол и память там как-то сама выделается и освобождается для объектов? Или руби на руби?
> Не тебе нам указывать на чём написать.
А кому, блядь, ещё? Чулочникам? Ты вот серьёзно думаешь что какой-то шизик, страдающей от депрессии и десериализации личности, работающий в ядре раста, вероятно сидящий на гормонах, сможет адекватно описать существующую реальность?
> Писать на этом говне что-то большее настоящая боль, раст отлавливает 95% ошибок, которые я бы допустил в js еще на этапе компиляции.
Сколько не писал на жс, ошибок не было вообще. Не представляю, как ты можешь там ошибаться? В чем нахуй? Где? Это же примитивный язык.
> Плюс там память улетает в небеса, мы тупо раз в сутки перезагружаем контейнеры с js
А это как нахуй? У меня GC в жс не работает вообще, что вы там нахуй пишете такого? Ебать, другой мир нахуй.
> Сложно кого-то найти,
> Тоже неплохо, но для этого надо собирать другую команду
Переучить сеньёра-жабиста не проблема.
> Это немного специфичная штука для высокой отказоустойчивости, там еще в плане девопса есть свои нюансы и синтаксис ебановатый, элексир в какой-то мере помогает. Для нас это не подходит.
> Код чаще читают чем пишут, эта хуйня нечитабельна. Мы не математики.
Пиздец у вас там дримтим без математического образования.
> апи, БД, редис, иногда graphql для фронта и всё это крутится в докерах. Собственно мы занимаемся примерно тем же самым что и большинство гоферов, только на расте.
Короче как понимаю у вас там команда мидлов которые горят жопой если нужно делать что-то сложное, плюс из-за того что постоянно ебут сроками делать нужно прямо завтра, а по-другому писать никто не умеет и не хочет. Неприятная хуйня.
В такой ситуации конечно раст неплох, наверное. В ядро и архитектуру такую хуйню я бы не завёл никогда.
> Проблемы?
Проблемы будут в ядре, когда такое будет в ядре. Там, наверное, придётся вообще весь код именно так писать. Если раньше всё это было сложно понять, то теперь это говнище вообще никто не будет понимать, даже сам написавший.
> Ты в курсе что любой low level тулинг пишут ансейф?
Тогда, очевидно, никакой раст и не нужен, потому что он ничего не добавляет, только говна подкидывает.
> думаешь жвм написан на джаве лол и память там как-то сама выделается и освобождается для объектов? Или руби на руби?
Не знаю, объекты последний раз писал лет 10 назад, динамически выделял память примерно в то же время.
>А кому, блядь, ещё? Чулочникам? Ты вот серьёзно думаешь что какой-то шизик, страдающей от депрессии и десериализации личности, работающий в ядре раста, вероятно сидящий на гормонах, сможет адекватно описать существующую реальность?
Гигачады старой школы скатили в говно целый OpenGL, так и не превратили OpenCL во что-то юзабельное и придумали Perl. Так что вообще минусов не вижу.
>Сколько не писал на жс, ошибок не было вообще
Ну, если ты на этом пишешь без ошибок, то пиздуй в Калифорнию сеньором, да чего там, сразу лордом.
>Это же примитивный язык
Ты шо, ты шо, там же куча сахара. Например, есть "==" и "===" - круто, ведь, правда?
У Before юникод отвалился, но англоязычной публике простительно. Ты-то какого хрена это тащишь?
>пок пок
>кукарек
>Не знаю ничего
Ну вот и пиздуй читай книжки и практикуйся, потом возвращайся в тред.
а до всего этого были mov ah al eax и чего блядь? забери своё говно и затолкай себе его в жопу обратно
Ты думаешь это эволюция, а это деградация.
Если раньше была проблема разноцветных функций, то лайфтаймы еще добавили разноцветные типы.
Ты не понимаешь, это синтаксический сахар.
> Десериализации личности
Проиграл, это типо расхуярил личность на строку LGBT HUI HUI PENIS 666 GENDER и обратно собрать не смог?
деградация это про тебя, стареешь и становешься тупее, погугли термин такой "старческая ригидность мышления", это нормально, просто прекрати серить и иди на сишке дрочи байты, мы не против
Гигачады придумал ерланг и хаскель вообще-то. С опенгл конечно неудобно вышло.
> сеньором
Просто я пишу пять строчек в день, в сеньёры таких не берут.
> Например, есть "==" и "===" - круто, ведь, правда?
Не знаю, я разные типы никогда не сравнивал. Наверное в ООП и расте такое полезно...
странно такое слышать от тех, кто ничего сложнее клавиатуры не осилил
Типичная ситуация в комьюнити раста, не знаю даже чему ты удивляешься. Возможно они пытались разобраться в типах строки SEX, но типов оказалось слишком много..........
>erlang
хорошая технология, но в элексире опять все превернули, сделали ее веб ориентированной со своим ебучим фениксом, будет как руби, язык одного фреймворка и пары библиотек вангую
>хачкель
Ментальная мастурбация, но очень приятная
В целом соглашусь
>пишу пять строчек в день
>ни разу не ошибался
ну и што ш ты своим примером тут всем тычешь? Жс и делали с прицелом на 5 строк кода для украшения динамикой страничек васей пупкиных, ни о каком бизнесе тогда и не помышляли.
>Ты вот серьёзно думаешь что какой-то шизик, страдающей от депрессии и десериализации личности, работающий в ядре раста, вероятно сидящий на гормонах, сможет адекватно описать существующую реальность?
Не знаю кого ты там выдумал, но у нас решение писать на расте принимал соучредители он же и CTO, который сам колотит код и имеет больше 15 лет опыта, до этого писал на жабе и на плюсах, это его деньги и его ответственность. Вообще что-то мне подсказывает что как раз шизик со всеми страданиями это в первую очередь ты.
>Сколько не писал на жс, ошибок не было вообще.
Это ты похоже максимум форму "мы вам перезвоним" на жиквери писал, ошибки бывают в неожиданных местах и часто с приведением типов, там даже [] == "" тебе true выдаст, приходится поверх этого городить тайпскрипт и валидировать все json потому что со сторонних апи бывает прилетает много кривых типов и многое другое. Это постоянная ебля, когда небольшой проект это не так заметно, а когда он разрастается это пизда всему. А еще когда проект какое-то время живет, там начинают происходить всякие изменения сделанные разными людьми, вот тут у всей скриптопараши и начинается основная боль. Вот он реально полезен когда надо на коленке за 2 дня бота накидать и забыть про него.
>У меня GC в жс не работает вообще, что вы там нахуй пишете такого? Ебать, другой мир нахуй.
Бекенд уже почти избавились и чаты в телеге, оно когда работает постепенно кушает память и через несколько недель рантайма уже прилично так откусывает. Не забывай что в продакшн коде кроме своих библиотек есть много сторонних и как я выше писал npm еще та параша и ты хуй чего там отдебажишь, плюс с кодом постоянно работали разные люди.
>Переучить
>сеньёра
>не проблема
Когда у тебя бесконечность денег и времени. Но у бизнеса чаще всего это в ограниченном количестве и решения принимаются чаще в сторону упрощения кадровых вопросов, у нас вся контора всего 40 человек, такое могут себе позволить вытворять в тиньке пока по голове не получат от начальства сверху. С другой стороны ты себя еще раз перечитай, нанимать дорогого специалиста чтобы переучивать и если он по каким-то причинам уйдет повторять те же грабли, а всё это время работа будет стоять, кто в здравом уме это будет делать? В банках наигрались уже и хватит.
>у вас там команда мидлов
Да
>которые горят жопой если нужно делать что-то сложное
Всякое делаем, жопа не горит, но сложных задач связанных с еблей байтиков и разматыванием памяти нет у нас в основном работа с данными из разных источников, агрегируем и предоставляем нашим клиентам. Вот данных большие объемы и бывают тоже свои сложности, особенно когда нужно организовать поиск приходиться иногда погружаться вглубь работы с БД. Миграция с постгреса на кликхаус тоже веселая тема, предстоит тут скоро. Короче всё как у всех, в основном рутина и перекладывания джсонов, иногда встречаются сложности, мы обычная средняя команда без выебонов.
>постоянно ебут сроками делать нужно прямо завтра
Иногда бывает что-то срочно надо, но в основном работаем в спокойном темпе, есть общий дедлайн для всей команды. Чаще бывает проблемы что бизнес-логика кардинально изменилась и приходится много переделывать, вот тут как раз больше проблем может возникнуть, на расте что-то переделывать очень удобно.
>а по-другому писать никто не умеет и не хочет
По-другому это как? Ты про по-какому имеешь в виду? Ты даже кода не видел и уже рассуждаешь о том как мы там пишем лол
>В такой ситуации конечно раст неплох, наверное.
Да, раст неплох когда нужно работать с множеством сервисов, перемалывать данные и часто менять бизнес-логику
>ядро
Я говорю за себя
>Ты вот серьёзно думаешь что какой-то шизик, страдающей от депрессии и десериализации личности, работающий в ядре раста, вероятно сидящий на гормонах, сможет адекватно описать существующую реальность?
Не знаю кого ты там выдумал, но у нас решение писать на расте принимал соучредители он же и CTO, который сам колотит код и имеет больше 15 лет опыта, до этого писал на жабе и на плюсах, это его деньги и его ответственность. Вообще что-то мне подсказывает что как раз шизик со всеми страданиями это в первую очередь ты.
>Сколько не писал на жс, ошибок не было вообще.
Это ты похоже максимум форму "мы вам перезвоним" на жиквери писал, ошибки бывают в неожиданных местах и часто с приведением типов, там даже [] == "" тебе true выдаст, приходится поверх этого городить тайпскрипт и валидировать все json потому что со сторонних апи бывает прилетает много кривых типов и многое другое. Это постоянная ебля, когда небольшой проект это не так заметно, а когда он разрастается это пизда всему. А еще когда проект какое-то время живет, там начинают происходить всякие изменения сделанные разными людьми, вот тут у всей скриптопараши и начинается основная боль. Вот он реально полезен когда надо на коленке за 2 дня бота накидать и забыть про него.
>У меня GC в жс не работает вообще, что вы там нахуй пишете такого? Ебать, другой мир нахуй.
Бекенд уже почти избавились и чаты в телеге, оно когда работает постепенно кушает память и через несколько недель рантайма уже прилично так откусывает. Не забывай что в продакшн коде кроме своих библиотек есть много сторонних и как я выше писал npm еще та параша и ты хуй чего там отдебажишь, плюс с кодом постоянно работали разные люди.
>Переучить
>сеньёра
>не проблема
Когда у тебя бесконечность денег и времени. Но у бизнеса чаще всего это в ограниченном количестве и решения принимаются чаще в сторону упрощения кадровых вопросов, у нас вся контора всего 40 человек, такое могут себе позволить вытворять в тиньке пока по голове не получат от начальства сверху. С другой стороны ты себя еще раз перечитай, нанимать дорогого специалиста чтобы переучивать и если он по каким-то причинам уйдет повторять те же грабли, а всё это время работа будет стоять, кто в здравом уме это будет делать? В банках наигрались уже и хватит.
>у вас там команда мидлов
Да
>которые горят жопой если нужно делать что-то сложное
Всякое делаем, жопа не горит, но сложных задач связанных с еблей байтиков и разматыванием памяти нет у нас в основном работа с данными из разных источников, агрегируем и предоставляем нашим клиентам. Вот данных большие объемы и бывают тоже свои сложности, особенно когда нужно организовать поиск приходиться иногда погружаться вглубь работы с БД. Миграция с постгреса на кликхаус тоже веселая тема, предстоит тут скоро. Короче всё как у всех, в основном рутина и перекладывания джсонов, иногда встречаются сложности, мы обычная средняя команда без выебонов.
>постоянно ебут сроками делать нужно прямо завтра
Иногда бывает что-то срочно надо, но в основном работаем в спокойном темпе, есть общий дедлайн для всей команды. Чаще бывает проблемы что бизнес-логика кардинально изменилась и приходится много переделывать, вот тут как раз больше проблем может возникнуть, на расте что-то переделывать очень удобно.
>а по-другому писать никто не умеет и не хочет
По-другому это как? Ты про по-какому имеешь в виду? Ты даже кода не видел и уже рассуждаешь о том как мы там пишем лол
>В такой ситуации конечно раст неплох, наверное.
Да, раст неплох когда нужно работать с множеством сервисов, перемалывать данные и часто менять бизнес-логику
>ядро
Я говорю за себя
>Просто я пишу пять строчек в день, в сеньёры таких не берут.
Лол, тогда понятно почему ты рассуждаешь как вкатун
Расступись нахуй, я архитектор.
>хаскел
Так это же проект родом из академии, где его развивают между парами по гендер стадис и марксисткой теории шахмат.
>Ты шо, ты шо, там же куча сахара. Например, есть "==" и "===" - круто, ведь, правда?
Для самых извращенных можно сделать
parseInt = (n) => n + 1;
в глубине библиотеки и тогда придет пизда всему
Ну а зачем писать больше пяти строк? Вся логика вполне умещается в пять строк. Если не умещается - наблюдается проблема с абстракциями.
>>49516
> Не знаю кого ты там выдумал, но у нас решение писать на расте принимал соучредители он же и CTO,
да, точно, я вспомнил что я и есть соучредитель который принимает решения
>Вообще что-то мне подсказывает что как раз шизик со всеми страданиями это в первую очередь ты.
Это я взял из блога core разработчика раста. Он себя позиционирует как животное, кстати.
> и часто с приведением типов
Проблемы любителей объектов.
> А еще когда проект какое-то время живет, там начинают происходить всякие изменения сделанные разными людьми, вот тут у всей скриптопараши и начинается основная боль.
Нужно просто писать архитектуру в таком случае, разделение на данные и логику, всё такое.
> Бекенд уже почти избавились и чаты в телеге, оно когда работает постепенно кушает память и через несколько недель рантайма уже прилично так откусывает.
У меня чаты и бек работают с заранее выделенной памятью.
Чё тут сказать, советую навернуть https://www.dataorienteddesign.com/dodbook/ вот этого и наконец-то начать программировать, а не абстракции писать.
> С другой стороны ты себя еще раз перечитай, нанимать дорогого специалиста чтобы переучивать и если он по каким-то причинам уйдет повторять те же грабли, а всё это время работа будет стоять, кто в здравом уме это будет делать?
Подписываешь контракт на 5-7 лет и всё. Конечно, при условии что бизнес это не какая-то залупная хуйня которая обанкротится уже вчера.
> >у вас там команда мидлов
> Да
БИЛЯЯААААААААААААТЬ, не повезло, не повезло.
> у нас в основном работа с данными из разных источников, агрегируем и предоставляем нашим клиентам.
> Вот данных большие объемы и бывают тоже свои сложности, особенно когда нужно организовать поиск приходиться иногда погружаться вглубь работы с БД.
Кроме книжечки сверху ещё вот че. Можно ещё использовать ECS у меня такая хуйня на бизнес-логике работает, только S не как System, а как Sequence, последовательность задач, последовательность функций и систем. Заодно будет обеспечена тразакционность всех вычислений, что часто отсуствует в подходе с объектами. Эта хуйня как раз про работу с реляционными базами.
> Вот данных большие объемы и бывают тоже свои сложности
У меня сложность не зависит от объёма вообще. только от того говна что я там понапишу
> По-другому это как? Ты про по-какому имеешь в виду? Ты даже кода не видел и уже рассуждаешь о том как мы там пишем лол
По-другому это дата-ориентированный подходю. Вероятнее всего с таким подходом никакого раста не нужно будет.
> Да, раст неплох когда нужно работать с множеством сервисов, перемалывать данные и часто менять бизнес-логику
Компонентные архитектуры и всякие блекборды именно про это. Без раста.
Ну а зачем писать больше пяти строк? Вся логика вполне умещается в пять строк. Если не умещается - наблюдается проблема с абстракциями.
>>49516
> Не знаю кого ты там выдумал, но у нас решение писать на расте принимал соучредители он же и CTO,
да, точно, я вспомнил что я и есть соучредитель который принимает решения
>Вообще что-то мне подсказывает что как раз шизик со всеми страданиями это в первую очередь ты.
Это я взял из блога core разработчика раста. Он себя позиционирует как животное, кстати.
> и часто с приведением типов
Проблемы любителей объектов.
> А еще когда проект какое-то время живет, там начинают происходить всякие изменения сделанные разными людьми, вот тут у всей скриптопараши и начинается основная боль.
Нужно просто писать архитектуру в таком случае, разделение на данные и логику, всё такое.
> Бекенд уже почти избавились и чаты в телеге, оно когда работает постепенно кушает память и через несколько недель рантайма уже прилично так откусывает.
У меня чаты и бек работают с заранее выделенной памятью.
Чё тут сказать, советую навернуть https://www.dataorienteddesign.com/dodbook/ вот этого и наконец-то начать программировать, а не абстракции писать.
> С другой стороны ты себя еще раз перечитай, нанимать дорогого специалиста чтобы переучивать и если он по каким-то причинам уйдет повторять те же грабли, а всё это время работа будет стоять, кто в здравом уме это будет делать?
Подписываешь контракт на 5-7 лет и всё. Конечно, при условии что бизнес это не какая-то залупная хуйня которая обанкротится уже вчера.
> >у вас там команда мидлов
> Да
БИЛЯЯААААААААААААТЬ, не повезло, не повезло.
> у нас в основном работа с данными из разных источников, агрегируем и предоставляем нашим клиентам.
> Вот данных большие объемы и бывают тоже свои сложности, особенно когда нужно организовать поиск приходиться иногда погружаться вглубь работы с БД.
Кроме книжечки сверху ещё вот че. Можно ещё использовать ECS у меня такая хуйня на бизнес-логике работает, только S не как System, а как Sequence, последовательность задач, последовательность функций и систем. Заодно будет обеспечена тразакционность всех вычислений, что часто отсуствует в подходе с объектами. Эта хуйня как раз про работу с реляционными базами.
> Вот данных большие объемы и бывают тоже свои сложности
У меня сложность не зависит от объёма вообще. только от того говна что я там понапишу
> По-другому это как? Ты про по-какому имеешь в виду? Ты даже кода не видел и уже рассуждаешь о том как мы там пишем лол
По-другому это дата-ориентированный подходю. Вероятнее всего с таким подходом никакого раста не нужно будет.
> Да, раст неплох когда нужно работать с множеством сервисов, перемалывать данные и часто менять бизнес-логику
Компонентные архитектуры и всякие блекборды именно про это. Без раста.
Тогда это язык товарищей-коммунистов, некоторым из которых нравятся мужские задницы. Не вот эти вот проклятущие западные геи, а наши, русские пидорасы! Всё в порядке.
>да, точно, я вспомнил что я и есть соучредитель который принимает решения
Я вижу что ты жнец и на дуде игрец пиздабол
>У меня сложность не зависит от объёма вообще.
Ну возьми postgres собери ради эксперимента табличку с полем text, возми какой-нибудь фейкер и заберй разными фразами (имитируем описание товаров) примерно по 500-1000 символов на запись. Сделай 1000 записей и организуй полнотекстовый поиск по этому говну, не просто description LIKE '%залупа%' а норамальный description_tsvector @@ to_tsquery('залупа')
Если осили и работает, то потом попробуй прогнать скрипт до 50 млн записей в БД, этого уже будет достаточно чтобы опровергнуть твои слова.
Для скрипта можешь кстати взять js на котором ты не ошибаешься и где память не утекает)))
>Нужно просто писать архитектуру в таком случае, разделение на данные и логику, всё такое.
Простой рецепт "Как нам обустроить IT индустрию" от опытного писателя хэлловорлдов.
У тебя любая архитектура исходит из каких-то ограничений. Делаем Х, наиболее оптимальным способом У, так как Й нам точно не понадобится. Потом через полгода разработки к тебе прибегает манагер мы тут посовещались и говорит: а вот надо Й, давайте ребята, вы сможете. И ты к своему ХУ приделываешь этот Й, раздвигая очко архитектуре. И вот в таком случае скриптопараша тебе не подскажет, что может пойти не так. А норм языки, да даже вроде той же жабы - вполне могут, за это её и полюбил кровавый ынтырпрайз.
>Я вижу что ты жнец и на дуде игрец пиздабол
Ето да, не спорю. вместо предприятия просто ОООшка с 0 сотрудников и фрилансерами в серую
>Ну возьми postgres
Че я корпоблядь по твоему что ли.
>Для скрипта
Обхожу деревья на си.
>500-1000 символов на запись.
>description_tsvector @@ to_tsquery('залупа')
>Если осили и работает, то потом попробуй прогнать скрипт до 50 млн записей в БД
Так подожди, подожди. Это же всего лишь 50 гигабайт. БД хранится полностью в ОЗУ. В чем тут вообще может быть проблема? Просто ставишь VP дерево и обходишь как тебе угодно. 50 гигабайт это нихуя.
>прогнать скрипт
>Для скрипта можешь кстати взять js
Ебать вам там хуево с этими скриптами. Скрипты какие-то пишете для обхода 50 гигабайт. ПРОСТО берёшь VP дерево и ПРОСТО получаешь всё что ты там хочешь.
Просто не стоит строить архитектуру на объектах. У тебя данные хранятся. И твои говнофункции, которые отвечают за Й, Х и У. Можешь сколько угодно говнофункций написать, да всем буквально поебать что там будет понаписано и что они будут брать. Если надо, то можешь несколько функций завести и собирать с них данных. По-ебать. Ну а архитектура менеджерит все подключения, исключения, приоритеты работы, зависимости и последовательности транзакций. В идеале, конечно, ирл такого монстра заебешься писать.
Что тут может пойти не так? Вот серьёзно, что?
> И вот в таком случае скриптопараша тебе не подскажет, что может пойти не так. А норм языки, да даже вроде той же жабы - вполне могут, за это её и полюбил кровавый ынтырпрайз.
То что ты описал это и есть проблемы жабы так-то, когда говянная архитектура на объектах, которую исповедуют в тырпрайзе, постоянно переписывается и обсикается в штанишки. Просто в жабе можно на это хуй положить.
Так что наблюдаем, но не верю что он пригоден для промышленного кодинга, все еще думаю что останется как экзотика, посмотрим, я часто бываю неправ.
У тебя всё равно должны быть какая-то модель данных. Структуры, енамы, это всё.
>архитектура менеджерит все подключения, исключения, приоритеты работы, зависимости и последовательности транзакций
если у тебя функции отдельно, а архитектура со стрелочками на бумажке отдельно нарисована, то далеко такая конструкция не уедет.
> говянная архитектура на объектах,
очень хорошо подходит для коллективной разработки. Архитектор в калифорнии пишет интерфейсы, индусы пишут реализации под разные классы. Жаба потому и взлетела, что твоя лапша из функций и процедурок нежизнеспособна в таких условиях.
Это в теории классно, а ты напиши.
>Че я корпоблядь по твоему что ли.
Задача поставлена работать именно с БД, она есть на проекте, она работает.
>БД хранится полностью в ОЗУ
Не хранится, есть еще другие поля и очень много других данных, я сказал про одно поле только. ОЗУ нужна для других запросов
> В чем тут вообще может быть проблема?
Сервер внезапно ребутнулся, как эти данные будут хранится в твоей васянской БД?
Как организовать crud в твоей хуйне?
Как со связями с другими таблицами?
Как быть с транзакциями?
Как твоя поделка работает если писать десяток записей в секунду 24/7, будет ли она все твои деревья перепердоливать?
Что если я захочу ещё одно поле добавить?
Как другие будут с твоей поделкой работать?
Кто эту хуйню будет поддерживать?
И еще сотни других проблем которые ты не решаешь тут, но они решены в постгресе на протяжении многих лет тысячами людей.
>Ебать вам там хуево с этими скриптами.
Не не, скрипт только для наполнения БД, остальное исключительно средставами постгреса.
Студент пиздбол ты ни дня ни работавший
Я даже догадываюсь у кого ты учишься
для ценителей та самая цмс http://thalassa.croco.net/download/
Двачаю, вкатуны не знают о том как происходит на самом деле, что иной раз приходится кардинально всё переделывать из-за изменений бизнеслогики и никакая архитектура не спасает
>Я даже догадываюсь у кого ты учишься
>
Интернет тесен, возможно это он и есть. Но я не стал качать исходники, чтобы заценить.
> У тебя всё равно должны быть какая-то модель данных. Структуры, енамы, это всё.
Почти никаких структур не остается после нормализации так-то. Енамы только, но эт уже примитивы.
> если у тебя функции отдельно, а архитектура со стрелочками на бумажке отдельно нарисована, то далеко такая конструкция не уедет.
Вообще-то это почти что подход GraphQL, когда вместо сервера у тебя просто GraphQL стоит. Это может уехать очень, очень далеко.
>очень хорошо подходит для коллективной разработки. Архитектор в калифорнии пишет интерфейсы, индусы пишут реализации под разные классы. Жаба потому и взлетела, что твоя лапша из функций и процедурок нежизнеспособна в таких условиях.
Не, это скорее исторически так сложилось. Не обязательно объекты должны иметь именно такие нетривиальные связи, не обязательно они должна наследоваться и иметь вот всё эту хуйню. Просто когда-то зафорсили ООП как язык для манагеров, мол, АТВИЧАЮ ЧТО ПРОСТА БУДЕТ ЛЮБОЙ ИНДУС СМОЖЕТ АСИЛИТЬ!11 и каждая фирма стремилась его внедрять.
>>50037
>Это в теории классно, а ты напиши.
Да, скоро буду писать бд новую, с существующими пердолями проблемки возникают небольшие такие. Может писать не буду и заведу Foundation, ещё и с драйверами под новые диски работает, такое я пердолить не готов.
> Задача поставлена работать именно с БД, она есть на проекте, она работает.
Там небось ставят задачи и скрипты писать.
> Не хранится, есть еще другие поля и очень много других данных, я сказал про одно поле только. ОЗУ нужна для других запросов
Нет, озу нужна для БД. Прошли времена кэшей и высокой стоимости озу, 500гб стоит дешевле говна.
> Сервер внезапно ребутнулся, как эти данные будут хранится в твоей васянской БД?
Это кластер. На диск скидывается когда нужно.
> Как организовать crud в твоей хуйне?
> Как быть с транзакциями?
STM либа.
> Как со связями с другими таблицами?
Есть таблица со связями индексами.
> Как твоя поделка работает если писать десяток записей в секунду 24/7, будет ли она все твои деревья перепердоливать?
Батчит и перепердоливает индексы.
> Что если я захочу ещё одно поле добавить?
Сколько угодно.
> Кто эту хуйню будет поддерживать?
Там 500 строчек, планирую сократить.
> И еще сотни других проблем которые ты не решаешь тут, но они решены в постгресе на протяжении многих лет тысячами людей.
Да и хуй с ними, нинужно. Идеальная БД жто Foundation. Но он всё ещё медленная.
> Студент пиздбол ты ни дня ни работавший
Да, я ни дня в интерпрайзе не работал.
> У тебя всё равно должны быть какая-то модель данных. Структуры, енамы, это всё.
Почти никаких структур не остается после нормализации так-то. Енамы только, но эт уже примитивы.
> если у тебя функции отдельно, а архитектура со стрелочками на бумажке отдельно нарисована, то далеко такая конструкция не уедет.
Вообще-то это почти что подход GraphQL, когда вместо сервера у тебя просто GraphQL стоит. Это может уехать очень, очень далеко.
>очень хорошо подходит для коллективной разработки. Архитектор в калифорнии пишет интерфейсы, индусы пишут реализации под разные классы. Жаба потому и взлетела, что твоя лапша из функций и процедурок нежизнеспособна в таких условиях.
Не, это скорее исторически так сложилось. Не обязательно объекты должны иметь именно такие нетривиальные связи, не обязательно они должна наследоваться и иметь вот всё эту хуйню. Просто когда-то зафорсили ООП как язык для манагеров, мол, АТВИЧАЮ ЧТО ПРОСТА БУДЕТ ЛЮБОЙ ИНДУС СМОЖЕТ АСИЛИТЬ!11 и каждая фирма стремилась его внедрять.
>>50037
>Это в теории классно, а ты напиши.
Да, скоро буду писать бд новую, с существующими пердолями проблемки возникают небольшие такие. Может писать не буду и заведу Foundation, ещё и с драйверами под новые диски работает, такое я пердолить не готов.
> Задача поставлена работать именно с БД, она есть на проекте, она работает.
Там небось ставят задачи и скрипты писать.
> Не хранится, есть еще другие поля и очень много других данных, я сказал про одно поле только. ОЗУ нужна для других запросов
Нет, озу нужна для БД. Прошли времена кэшей и высокой стоимости озу, 500гб стоит дешевле говна.
> Сервер внезапно ребутнулся, как эти данные будут хранится в твоей васянской БД?
Это кластер. На диск скидывается когда нужно.
> Как организовать crud в твоей хуйне?
> Как быть с транзакциями?
STM либа.
> Как со связями с другими таблицами?
Есть таблица со связями индексами.
> Как твоя поделка работает если писать десяток записей в секунду 24/7, будет ли она все твои деревья перепердоливать?
Батчит и перепердоливает индексы.
> Что если я захочу ещё одно поле добавить?
Сколько угодно.
> Кто эту хуйню будет поддерживать?
Там 500 строчек, планирую сократить.
> И еще сотни других проблем которые ты не решаешь тут, но они решены в постгресе на протяжении многих лет тысячами людей.
Да и хуй с ними, нинужно. Идеальная БД жто Foundation. Но он всё ещё медленная.
> Студент пиздбол ты ни дня ни работавший
Да, я ни дня в интерпрайзе не работал.
>скоро буду писать бд новую
>Там 500 строчек
Как ты быстро 500 строчек накидал, не успев даже пост до конца написать лол.
А вообще мне интересно почему у сишников какая-то маниакальная тяга колхозить свое? Этот шиз эталонный пост накатал из палаты мер и весов, вместо проверенной годами БД, которая имеет довольно серьезный функционал, предлагает поделие на коленке да и еще какие-то либы натянуть, да еще весь код в 500 строк, который он запланировал и никогда не напишет На лоре гле-то под новостью о языке го тоже повылазили черти давай рассказывать как свои сервера писать круто, а в стандартной библиотеке там типа не свой код и хз как оно работает лол.
>решил установить консольный плеер на расте
>452 каких-то зависимостей из интернета
Это пиздец, товарищи...
Просто посмотрите на эту хуйню.
Если пишешь под систему - нахуй тебе туда плеер ставить с ресодвом депенденсей? Не пользуйся вообще карго.
Ты же срать когда идешь домой - шубу не надеваешь? Хотя хуй знает, может ты еще и в раковину срешь вместо унитаза а судя по твоим постам потом еще свое дерьмо жрешь
Напиши свой без зависимостей
> А вообще мне интересно почему у сишников какая-то маниакальная тяга колхозить свое? Этот шиз эталонный пост накатал из палаты мер и весов, вместо проверенной годами БД, которая имеет довольно серьезный функционал, предлагает поделие на коленке да и еще какие-то либы натянуть, да еще весь код в 500 строк, который он запланировал и никогда не напишет
У тебя задача писать то скажет господин. Господин сказал писать на расте - ты пишешь на расте. Сказал использовать постгресс, ты киваешь головой и устанавливаешь постгресс. Господин сказал пятьсот зависимостей ставить и наблюдать пять часов за компиляцией раста - ты это делаешь.
А я пишу потому что это интересно. Интересно программировать и изобретать алгоритмы, понимаешь? Интересно создавать что-то своё, интересно создавать минималистичные архитектуры и исследователь пределы возможностей пердолинга.
Ну и конечно же интересно создавать алгоритмы которые в 700 раз эффективнее твоего кала и с лицом пепе наблюдать за тем как твоя фирма банкротится.
>>50603
Работает на барина вечным мидлом, ещё и порвак который за барина сражается. Ну ты и куколд, чел
> А вообще мне интересно почему у сишников какая-то маниакальная тяга колхозить свое?
Ты ещё маленький чтобы понять
Когда станешь глыбой поймёшь, что наклепав своего говна который никто кроме тебя поддерживать не будет, ты становишься незаменимым в кампании со стабильной зепкой
Кабану останется только лапу сосать
Кстати да, это важно.
Слышал историю из варгейминга, там три человека написали какой-то дико нетривиальный код для клиентов и никто нахуй не понимает как и почему он работает. Им даже зп повысили после такой хуйни, чтобы не сбежали, когда эта история добралась до топов. В яндексе примерно то же слышал.
>нормализации
>GraphQL
Далеко не все задачи сводятся к взаимодействию с БД.
И даже так: мне вот понадобилось сделать отчёты для кабанчика на основе данных из БД. И я сделал на ООП. Есть базовый класс, есть наследуемые, разные для разных типов отчётов, где по-разному реализованы некоторые методы. В одном классе один метод, в других сразу несколько. Такой код очень легко читать: для каждого типа отчёта ты видишь, как и какие методы он переопределяет, соответственно, очень легко дописывать.
Я мог бы сделать и лапшу из функций, где if-ами бы разруливал всю логику, но вот проблема: у меня таких мелких задач десятки, такой код я через полгода сам не смогу прочитать и нормально править.
Похоже, что у тебя один проект, который ты постоянно держишь в памяти и помнишь в нём каждую запятую. Не удивлюсь, если это твой первый проект после лаб.
> Далеко не все задачи сводятся к взаимодействию с БД.
Все. Вообще все.
> Есть базовый класс, есть наследуемые, разные для разных типов отчётов, где по-разному реализованы некоторые методы.
Преобразование данных. Просто делаешь запрос который их в нужном порядке собирает.
> Такой код очень легко читать: для каждого типа отчёта ты видишь, как и какие методы он переопределяет, соответственно, очень легко дописывать.
Нет, в таком коде будет 500 зависимостей и переопределений. Просто путешествуя по ссылкам ты заебешься понимать все взаимоотношения классов.
> Я мог бы сделать и лапшу из функций, где if-ами бы разруливал всю логику, но вот проблема: у меня таких мелких задач десятки, такой код я через полгода сам не смогу прочитать и нормально править.
Тебе не нужна никакая лапша из функций, ты просто берёшь данные с бд в правильной последовательности и формируешь отчёт. Тут ничего не нужно кроме запросов из БД.
> Похоже, что у тебя один проект, который ты постоянно держишь в памяти и помнишь в нём каждую запятую. Не удивлюсь, если это твой первый проект после лаб.
Нет, просто у меня просто нет никакого ООП. Каждый тип отчёта это просто запросы к хранилищу, там нет наследований, там нет переопределений, там нет ничего кроме одной функции. Просто одна функция. Не знаю даже что может быть проще одной функции и нахуя ты там выдумал какие-то ебаные классы, лол. Ты ещё макросы напиши, ну точно будет удобнее.
> Просто делаешь запрос
Дык, я и сделал конструктор запросов на классах, который по методам собирает запрос.
>коде будет 500 зависимостей и переопределений.
такое может случиться, если от кабанчика поступает слишком много новых хотелок, которые плохо согласуются с текущей архитектурой. Но даже в худшем виде это будет слабо приближаться к тому бардаку, если делать лапшой.
>не нужна никакая лапша из функций, ты просто берёшь данные с бд в правильной
>просто
>просто
ему, блять )))
Вот небольшой пример: мне нужно выбрать топ сущностей по разным критериям X и Y.
В классе я определяю: поле, по которому делать сортировку в запросе к бд, название этого поля и хинт для кабанчика, если название не раскрыло ему сути. Я хуй знает, как бы выглядело тут твоё просто, но у меня это реально просто: есть общий базовый класс, а все отличия сгруппированы в подклассах. То есть, сразу зашёл и посмотрел, что будет при таком-то варианты отчёта.
> Дык, я и сделал конструктор
Зачем? Он не несёт никакого смысла. Всё то же самое что и с функциями.
> Но даже в худшем виде это будет слабо приближаться к тому бардаку, если делать лапшой.
Лапша это когда у тебя конструкторы на классах с десятками зависимостей и по этой хуйне нужно путешествовать в пятьдесят файлов.
> Я хуй знает, как бы выглядело тут твоё просто, но у меня это реально просто: есть общий базовый класс, а все отличия сгруппированы в подклассах. То есть, сразу зашёл и посмотрел, что будет при таком-то варианты отчёта.
Не ну если у тебя действительно класс в одном файле и всего лишь несколько функций - никаких проблем нет. ООП впринципе и работает вот в таких маленьких ситуациях, когда кода особо нет, всё просто и незамысловато. Правда оно бессмысленно в такой ситуации, ну да ладно, кому-то и говно вкусное.
Проблемы начинаются когда типов отчётов 50, классов 10-15, везде всё переопределяется и наследуется.
>Всё то же самое что и с функциями
Разница в читаемости. Классы избавляют тебя от необходимости обозревать логику с if/match/switch, об которую ломается мозг. Взял тип отчёта и пошёл смотреть только его методы.
>Лапша это когда у тебя конструкторы на классах с десятками зависимостей и по этой хуйне нужно путешествовать в пятьдесят файлов.
Если всё так плохо на классах, то на функциях будет ещё хуже.
Впрочем, могут быть ситуации, когда требования кабанчика пошли уж совсем в разрез с изначальной архитектурой, но тогда проще переделать архитектуру под новые требования.
Вообще, когда у тебя архитектура отражает бизнес логику кабанчика, это не прогнулся, лох, это хорошо. Нужен новый отчёт? Добавил компактный класс с 3-мя методами. Стал не нужен старый? Удалил его класс.
И да: не то, чтобы я топлю за ООП в раст треде, речь о том, что всякой абстракции своё место и на одних функциях с примитивами далеко не уедешь.
>Разница в читаемости.
Это да. Функции читаются легко и просто, у них однозначные выводы. А в классах какое-то ебаное месиво, лапша из состояний и наследований которые везде.
>Классы избавляют тебя от необходимости обозревать логику с if/match/switch, об которую ломается мозг.
Ты серьезно говоришь что switch ломает мозг меньше чем наследование разных классов из разных файлов?
> Если всё так плохо на классах, то на функциях будет ещё хуже.
Нет, на функциях будут все то же что и всегда - изменение и модификация данных. Там нет ничего кроме этого. Там нет переопределений, виртуальных функций, наследований, изменения состояния которое происходит хуй знает где. Данные в одном месте. Изменения в другом месте. Всё нах.
> Удалил его класс.
Найс манямирок. В ООП нельзя ничего удалять, потому что всё это чем-то и где-то и когда-то наследуется. Удалил класс? Молодец, всё приложение крашнулось. Переписывать это наследование никогда никогда не будет.
> И да: не то, чтобы я топлю за ООП в раст треде, речь о том, что всякой абстракции своё место и на одних функциях с примитивами далеко не уедешь.
Ну как видишь целое ядро написали на функциях с примитивами. Даже шинда в ядре не использует ООП.
С ООП код обычно едет прямиком в парашу, после того как написали и оно своё отработало, думаю раст будет отъезжать в парашу ещё чаще чем объектный кал, с его-то синтаксисом и макросами.
>В ООП нельзя ничего удалять, потому что всё это чем-то и где-то и когда-то наследуется. Удалил класс? Молодец, всё приложение крашнулось. Переписывать это наследование никогда никогда не будет.
Буквально никто не делает больше трех уровней наследования, в 90% случаев не больше одного.
>как видишь целое ядро написали на функциях с примитивами
чел, там виртуальная таблица на таблице
>Буквально никто не делает больше трех уровней наследования, в 90% случаев не больше одного.
>чел, там виртуальная таблица на таблице
Ебать манямирк.
А кабан такой глупенький, такое работает до поры до времени пока это колхозное решение не столкнется с какими-нибудь трудностями
> в реале так только мрази полные делают
То есть сишники пишущие свои базы данных и реализации http, используя функциональный говнокод
>господина
Почему ты думаешь что те кто имеет правые взгляды обязательно за господ? По мне наоборот генсеки при совке имели большее влияние на жизнь людей, а простой советский рабочий был в зависимости от директора предприятия больше чем сейчас рабочий от директора ООО "Рога и копыта". То есть при совке на работе решали где ты будешь жить, куда поедешь отдыхать и с кем будешь спать.
Вся эта шиза про баринов слышна от тех кто больше всего хочет себе государственного барина и сам преклоняется перед начальством. Вообще съеби в /po/ со свой грязноштаной хуйнёй, там любят на эту тему подискутировать.
Использование определенного стека технологий на определенном проекте прогонять через этот марксистский бред про баринов-эксплуататоров это конечно сильно.
Он ни дня не работал и не понимает что кроме него есть ещё и коллеги и задачи бизнеса которые должны приносить прибыль чтобы ему же и платить зарплату. Но начитался алгоритмов с теорией шахмат по Марксу и начинает тут бред нести.
> Почему ты думаешь что те кто имеет правые взгляды обязательно за господ?
Потому что иерархия, любой правый будет защищать барина потому что он манямечтает как сам станет барином. Он как бы уже БАРИН, но просто не подфартило и ему приходится 10 часов своей жизни тратить на других людей.
> По мне наоборот генсеки при совке имели большее влияние на жизнь людей, а простой советский рабочий был в зависимости от директора предприятия больше чем сейчас рабочий от директора ООО "Рога и копыта". То есть при совке на работе решали где ты будешь жить, куда поедешь отдыхать и с кем будешь спать.
Почему мне не должно быть похуй что там было в совке, шиз? Нахуй ты эту методичку высрал?
> Вся эта шиза про баринов слышна от тех кто больше всего хочет себе государственного барина и сам преклоняется перед начальством.
Как видишь в этом итт треде порвачки работают на барина, а я успешный частный предприниматель. Показательно.
> Вообще съеби в /po/ со свой грязноштаной хуйнёй, там любят на эту тему подискутировать.
Высрал целый пост какой-то хуеты порашной и рассказывает про порашу. Всё хорошо с тобой?
> Использование определенного стека технологий на определенном проекте прогонять через этот марксистский бред про баринов-эксплуататоров это конечно сильно.
Ещё скажи что всё хорошо когда ты по 8 часов работаешь мидлом, а твой код и все твои алгоритмы тебе даже не принадлежат.
>>50954
>>50972
Никто не будет подобные системы поддерживать, кроме специалиста который это создал. 80% говнокода никогда не рефракторится и поддерживается написавшими его. Техдолг в компаниях доходит до 40%. Каждые 5 лет половина кода переписывается, потому что поддерживать или модифицировать такое старое говно становится невозможно.
Хуй знает где вы там работаете, наверное в своих манямечтах, если не в курсе про базу интерпрайаса.
>я успешный частный предприниматель
Я вижу лол, ты наверное предприниматель как со своей БД, которую собирался написать и там всего 500 строк кода. Как бы ОООшку собрался открывать, но там у неё оборот небольшой 500 тыс. в месяц.
>Никто не будет подобные системы поддерживать, кроме специалиста который это создал. 80% говнокода никогда не рефракторится и поддерживается написавшими его. Техдолг в компаниях доходит до 40%. Каждые 5 лет половина кода переписывается, потому что поддерживать или модифицировать такое старое говно становится невозможно.
Твои васянские поделки еще быстрее в негодность придут, а код тяжело поддерживать из-за его постоянных изменений, которые в известной всем коллегам экосистеме поддерживать проще чем в самописной хуйне.
>Хуй знает где вы там работаете, наверное в своих манямечтах, если не в курсе про базу интерпрайаса.
Вот ты как раз в курсе только из книжек
>наследование разных классов из разных файлов?
>В ООП нельзя ничего удалять, потому что всё это чем-то и где-то и когда-то наследуется.
Идрит, у тебя манямирок
1. Даже если из разных файлов, как в жабе, то это не так страшно. Просто привыкаешь пользоваться боковой панелькой в IDE. Конкретно у меня в моём пример всё в одном.
2. Если тебе не нужен какой-то класс, то тебе не нужно и всё, что от него наследуется, так как наследуемые классы реализуют какие-то частные случаи основного.
Классы, это не помойка для функций, это способ разделить архитектуру на блоки. Для каких-то вещей хорошо подходящий способ, для каких-то не очень.
На пике примерно показано, как я их использую.
> Я вижу лол, ты наверное предприниматель как со своей БД, которую собирался написать и там всего 500 строк кода. Как бы ОООшку собрался открывать, но там у неё оборот небольшой 500 тыс. в месяц.
Че высрал вообще?
> Твои васянские поделки еще быстрее в негодность придут
Там нечему приходить в негодность, код минималистичен.
> а код тяжело поддерживать из-за его постоянных изменений
Нормализацию делай, перестань писать объекты, вот и изменений не будет.
> которые в известной всем коллегам экосистеме поддерживать проще чем в самописной хуйне.
Это же не ООП которую нужно поддерживать, когда кто-то в очередной раз говнокод написал и класс удалил. Каждая функция самодостаточна, а изменения данных линейны или вообще данные неизменяемы.
> Вот ты как раз в курсе только из книжек
Тут не я рассказываю про ООП которое легко поддерживать, лол.
>>51235
> 1. Даже если из разных файлов, как в жабе, то это не так страшно.
Всего лишь проебёшь весь проект.
> Просто привыкаешь пользоваться боковой панелькой в IDE.
Открой какой-нибудь говнокод с гитхаба, увидишь что там в твоей панеле будет, лол.
> Конкретно у меня в моём пример всё в одном.
Это код на уровне вкатуна.
> 2. Если тебе не нужен какой-то класс, то тебе не нужно и всё, что от него наследуется, так как наследуемые классы реализуют какие-то частные случаи основного.
Нет, не верно. Наследования класса может происходить где угодно в системе. Ты можешь сломать что угодно. Например эти репорты может наследовать какой-то веб-интерфейс, который почему-то кто-то воткнул и сказал "эта техдолг, я пометил". Удалил класс? Молодец, переписывай пол проекта.
> Классы, это не помойка для функций, это способ разделить архитектуру на блоки.
> На пике примерно показано, как я их использую.
Когда ты пишешь вкатунский код - да, конечно, всё заебись. Просто открой реальный проект и посмотри сколько там наследований и куда они уходят.
>Че высрал вообще?
То что ты пиздишь, никакой ты нахуй не предприниматель, у меня даже сомнения что ты вообще хотя бы день проработал. А аналогия с БД потому что ты тут >>50523 забавно напиздел про то как собрался писать и дальше по тексту уже 500 строк появилось. Но ты слишком тугой чтобы понять иронию, либо не запоминаешь что пишешь.
>поток бреда от вкатуна про нормально делай
Не читал
> Но ты слишком тугой чтобы понять иронию, либо не запоминаешь что пишешь.
Нет, просто эта шизофрения связана только у тебя в голове, как бы ООО 500 тысяч, что это вообще? Это всё точно ирония, а не шизофрения погорельца?
> Не читал
Конечно, а то вдруг ты ещё проиграешь в аргументации, неприятно будет. Лучшее вообще на мейлча не заходи, тут неприятное постят...
>Это код на уровне вкатуна.
Это не сам код, это я для тебя пример набацал. Видишь, как все различия по классам сгруппированы? Вот то-то же.
>Открой какой-нибудь говнокод с гитхаба, увидишь что там в твоей панеле будет, лол.
дохрена 1000+ проектов с таким подходом, как на ООП, так не на ООП. Сишных проектов дохрена с файликами по паре строчек.
>Нет, просто эта шизофрения связана только у тебя в голове, как бы ООО 500 тысяч, что это вообще? Это всё точно ирония, а не шизофрения погорельца?
Например такая:
>>49873
>вместо предприятия просто ОООшка с 0 сотрудников и фрилансерами в серую
Открою секрет ООО вообще может быть нулевка
>проиграешь в аргументации
С тобой играть как в шахматы с голубем, уронит все фигуры, насрёт на доску и полетит своим рассказывать как он всех уделал
> Это не сам код, это я для тебя пример набацал.
Пример я могу посмотреть на гитхабе, как там наследование через пять файлов минимум проходит.
> дохрена 1000+ проектов с таким подходом, как на ООП, так не на ООП. Сишных проектов дохрена с файликами по паре строчек.
Так это и есть проблема ООП. Приходит сеньёр говнописака и думает что сейчас сделает лучше.
Можно и на жабе писать норм, самое знаменитое - композиция вместо наследования. Вот тут заебок, ещё бы данные нахуй высрать из классов, тогда совсем всё хорошо будет. Просто это всё непопулярно. Популярно это хуячить говнокод с наследованиями.
>>51320
> Открою секрет ООО вообще может быть нулевка
И что дальше? К чему это вообще высрал-то?
> С тобой играть как в шахматы с голубем, уронит все фигуры, насрёт на доску и полетит своим рассказывать как он всех уделал
Как же ты ловко меня уделал, ух! Поздравь себя с победой через самоотсос.
>И что дальше? К чему это вообще высрал-то?
Да так ни к чему, для общего развития. Ну и как там ваша ОООшка с 0 сотрудниками поживает?
@
НАПИШИ САМ
@
ЭТО НОРМАЛЬНО, А ТЫ ГОВНОЕД
Понял, вопросов не имею. Вы в растолобби, видимо, все долбоебы.
>>50667
Даже если предположить что зависимости это ужасно плохо и надо самому всё писать чтобы хомячок с двача похвалил, то...
Там одни и те же либы (tokio, libc, parking_lot, proc-macro, log, tracing, mio, cfg-if, bitflags, rand, futures и т.д.) хуй знает сколько раз повторяются потому что разные зависимости одну и ту же либу могут хотеть в разных версиях
>Это нормально для СИСТЕМНОГО язык?
>консольный плеер
А этот твой плеер это точно системный софт? Если нет то к чему тогда этот заход? На т.н. системном языке, внезапно, можно и прикладной софт писать
> - РЯЯЯЯ РАСТ НЕ ЖС, ОН КАК СИ ТОЛЬКО ЛУЧШЕ И БЕЗОПАСНЕЕ!11
@
> ЗАВИСИМОСТЕЙ БОЛЬШЕ ЧЕМ В ЖС
@
> КОМПИЛЯЕТСЯ 8 ЧАСОВ
@
> В ПАКЕТАХ СБОРКИ СЛОВО UNSAFE ЗАМЕЧЕНО 624 547 РАЗА
> с 500 тысячами
Да согласен, невнимательно тебя прочитал, показалось что ты выразился про "погорельца" что это мало. Не внимательно читал твой бред, проехали.
> а я за сотрудника работаю
Погоди так ты же соучредитель или успешный предприниматель, а тут уже работаешь.
> Не внимательно читал твой бред, проехали.
Сильно больно, да? Пынямаю, когда-то и мне было так же, когда только на двачь пришёл, троляки, ска!
>Погоди так ты же соучредитель или успешный предприниматель, а тут уже работаешь.
Таково законодательство.
>Сильно больно, да?
Нет, ваще похую, бывает ошибаюсь и в этом ничего страшного нет. Страшно когда кто-то ошибается, знает что он ошибся, но и из треда в тред продолжает на чем-то настаивать чтобы не признавать свою неправоту, вот на таких смотреть больно. Не знаешь таких?
>мне было так же, когда только на двачь пришёл, троляки, ска!
Лол, пы походу до сих пор обижаешься
>Таково законодательство.
Директором тебя сделали?
>А этот твой плеер это точно системный софт?
Лол конечно же нет, этом это полноценный плеер для спотифай, который умеет текст песен находить и еще прочие плюшки-ватрушки.
https://github.com/aome510/spotify-player/tree/master
Там кстати виден корень всего зла в зависимостях, кое что сделать и их станет меньше.
>Нет, ваще похую, бывает ошибаюсь и в этом ничего страшного нет. Страшно когда кто-то ошибается, знает что он ошибся, но и из треда в тред продолжает на чем-то настаивать чтобы не признавать свою неправоту, вот на таких смотреть больно. Не знаешь таких?
Нах ты оправдываешься? Я не твой барин чтобы оправдываться. Чел, перед другими людьми можно не оправдываться, а просто хуй забить.
> Лол, пы походу до сих пор обижаешься
Дя, я очень обижаюсь когда меня тролят. Потом не могу успокоиться и десятки постов оптравляю, мониторю треды там, спрашиваю почему мне не отвечают, представляю что кому-то неудобно. Всё так и есть.
> Директором тебя сделали?
Ещё и работником, вот пидоры.
>Нах ты оправдываешься
Много чести будет, я тут на одного шиза намекаю который всех заебал лол
>Ещё и работником, вот пидоры.
Молодец, гуглить умеешь
>>54932
Двачаю, давай танцуй, обезьяна ебучая, я в цирк просто так пришёл что ли? Давай пиздуй сюда https://crates.io/ ищи чего нибудь и потом выкладывай скриншоты
Да там в первый же крейт тыкаешь и наблюдаешь пикрилейтеды, в 10 строчках которых можно бинго составлять.
Только если нечитаемой лапшой писать до края экрана. С лесенками ничего не поделать, только если избавляться от всей функциональщины и писать в процедурном стиле. Не зря в настоящей функциональщине делают специальный синтаксис чтоб писать столбиком, а иначе ебанёшься.
Либо можно эмулировать goto дробить код с лямбдами в переменных/отдельными функциями под каждую лесенку, чтоб например после => всегда был только одиночный вызов функции и никакого кода. Анкл Боб так и учил в чистом коде - всё что можно вынести в отдельную функцию, надо выносить. Тогда уже будет пародия на красивую функциональщину столбиком без лесенок в ад. Но тут уже надо быть немного архитектором и уметь внятно объяснять в названиях функций что она делает, чтоб не проиграть в факторио.
Какой же кал
Этот шизик обычно накидывает скриншоты без ссылок, поэтому буду гадать без контекста.
> 1 скрин
.unwrap() вызывает панику это как в го написать
if err != nil {
panic(err)
}
такое надо писать если ты действительно хочешь чтобы программа аварийно завершилась.
В match слишком сложная конструкция, обычно принято там немного писать. Чисто вкусовщина, но все же дурной тон
Метод new2, может быть какая-то обратная совместимость оставлена и с новым именем не парились.
Какие-то странные DisplayAttrStyle и DisplayPath, причем непонятно это что структура такая или метод по-уебански назван. Вообще для того чтобы что-то напечатать нужно имплементировать Display из стандартной библиотеки (аналог fmt.Stringer в go)
> 2 скрин
Представляет из себя кодогенерицию в компайлтайме, я как понимаю тут пытаются сделать имплементацию Sync и Size для работы с многопоточностью или асинхронностью. Once нужно чтобы гарантировано вызвать его один раз не зависимо от количество потоков. А вот что именно неизвестно, что-то в выражении init которого нет на скрине, которое обернуто в Box (указатель на память в куче).
Тут скорее этот шизик наверное хочет доебаться до кодогенерации, unsafe и Box, об этих вещах он ноет тут не первый тред, но он так и бинго не составил чего хочет, лол.
О, твоя любима тема подъехала, вижу ты не ровно дышишь к трансам и геям, давай накидывай ещё
благодарю
Мне противно от этого и это даже не смешно.
>Анкл Боб так и учил в чистом коде - всё что можно вынести в отдельную функцию, надо выносить.
Стоит ли стремиться к процедурному стилю, отбросив ооп?
>и уметь внятно объяснять в названиях функций что она делает, чтоб не проиграть в факторио.
комментарии, чел
Сильно будут полыхать трансы, геи и прочие фрики, если раст возьмут на вооружение какие-нибудь праваки?
Очень хуёвая практика, когда вместо чтения кода ты читаешь шизоидные опусы.
Алсо, рекомендую всем растанам посмотреть на исходники Unreal Engine, чтоб увидеть как может выглядеть качественный низкоуровневый код на крестах, у вас реально будет шок после того что тут в тред кидают. А кода там поболее чем в ядре линукса, например.
Скажите, пожалуйста, для доступа к метаданным видеофайлов (интересует битрейт) нужна отдельная библиотека или можно это реализовать средствами языка rust?
Смотришь описание интересующего формата и можешь сам распарсить файл. Но делать самому универсальное решение дикий гемор.
Как раз вчера прочитал ПВО Искусство легких касаний.
Праваки на Zig!
>>55595
Да но троллит, там надо запрос какой-то отправлять https://www.unrealengine.com/en-US/ue-on-github
Вот держи довольно большие куски кода, относительно высокоуровневый кусок и байтоёбство, там весь код примерно в таком стиле написан. Всё что можно обёрнуто в абстракции, методы везде очень мелкие, обычно 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
опять дед пришел серить в тред, давно не виделись, когда ты уже поймешь что
1. пидарасам похуй на чулки, они уже пидарасы
2. на тебя никто не триггерится потому что ты уже даже не скуф, а маразматик
3. и растоёбы с тебя тут просто рофлят
придумай новые шутки или уёбывай, заебал уже со своей заезженной пластинкой в чулках тут LOL
съеби
Как такому можно научиться, в software engineering это изучают?
>выглядит в расте
Наверно, сам язык тут никак не виноват, всё зависит от прогера?
А код MAME можешь заценить?
> Полдня искал по интернету лучшие куски кода на плюсах
> Высирает портянку на сотню строк
> Смотрите на эталонный код
> Точно такой же код на расте говно потому что написан в другом стиле
Ясн
На плюсах можно писать красиво, но ты принёс какую-ту лапшу в лучших традициях этнтерпрайзной жавы. Кек.
код выглядит лучше мешанины из указателей и логики, это соглашусь
но в целом что здесь такого пиздатого? как выше анон высказался - выглядит как джава код, ничего "хорошего" тут я не увидел, и это явно не лучше раст когда, раст просто реализует другую парадигму. Это если я сюда щас на скале/хаскеле/окамле ФП код принесу и скажу "ляяя красота" - и буду прав, И другие аноны будут правы, когда накормят меня говном лол. Потому что никакого мерила "стандарта красоты" тут нет.
Короче пока моя теория подтверждается: плюсобляди, с явно выраженной ригидностью мышления + нежеланием обучаться или хотя бы попытаться понять подход отличный от того, который они дрочат десятилетиями - соснули.
Нечего сказать по существу, решил доебаться до слова? Просто и понятно — это тоже не про код в стиле жавы.
>Нужно просто и понятно чтобы было
>Приводит в пример кресты
Уже достаточно
>Первый пример код с неймингом в стиле жаба-спринг, где автору платили за количество строк
>Второй - портянка из сотни строчек кода сранины из шифт операторов
>Ряяя ну тут же легко читается
Продолжай, мартышка, не зря мы в цирк приходим
Второй скриншот тоже охуенен.
И красиво, и понятно.
Более того, код написан так, что легко можно представить как будет выглядеть машиный код. Но это ещё не всё - оптимизатору компилятора будет легко оптимизировать эти функции.
Бейсик охуенен. Собираюсь подумываю написать его интерпретатор. Но на таргет платформе нет ничего кроме ассемблера. Конечно это не беда, я и на ассемблере Бейсик за недельку захуячу. Беда в том, что на таргете нет FPU. А вот написать математику с плавающей запятой на ассемблере я не возьмусь. А Бейсик без плавающей запятой нахуй не нужен.
На плюсах интерпретатор Бейсика за день написал бы. Ну ладно, за выходные.
Хех. Возможен деанон, но Бейсик мой первый язык, который выучил не имея компьютера по журналу "Наука и жизнь". Цикл статей "Школа начинающего программиста". Год эдак 1987.
Программировал ручкой на бумаге.
Как можно не любить Бейсик???? При этом никто не заставляет на нём писать. Его можно просто любить.
>>57255
Ок, пускай чувство вкуса у вас с автором этого вброса отсутствует. Но что в этом коде особенного, чего нельзя сделать на расте? Можно же по сути просто скопировать его почти один в один. Семантически ничего не изменится. Более того, машинный код в результате будет скорее всего практически идентичным, если плюсовый код компилировать шлангом. Естественно будут небольшие отличия в синтаксисе, например ! при применении макросов или обязательное использование self для полей объекта. Раст заставляет делать всё явно, и это хорошо. Иначе не понятно UE_LOG() это макрос или всё-таки функция, что будет если PreTickCommands == nullptr, где объявлены TickDelayLengthInFrames и Metronome, что будет если под Dest выделили недостаточно памяти и т.д.
https://www.youtube.com/watch?v=6bi_Qhm_gEE
А про Rust я ничего и не говорил.
>UE_LOG() это макрос или всё-таки функция,
Очевидно что это макрос, потому как есть соглашение записывать макросы в верхнем регистре.
Какое соглашение? Кого с кем и где это зафиксировано? Смотрю код линукса там повсюду container_of() применяется, который макрос и в нижнем регистре.
> Смотрю код линукса
Поделка финского студента это как бы не образец для подражания.
Посмотри хидеры Windows DDK (WDK) - вот где мощь и образец для подражания.
Похуй на тебя всем тут. Бейсик свой в жопу засунь себе. Хвастался бы еще тут тем что питон выучил или жс
Тебе виднее.
Может.
is_odd есть?
Не сможешь определиться с гендером и выпилишься в 30
Я как бы абстрактно понимаю, что это и для чего нужно, но когда пишу код возникают сложности, которые решаю обычно методом полуслепой замены одних подходов на другие.
Устал спрашивать у ChatGPT, какую комбинацию ссылок и клонов нужно использовать чтобы
error[E0507]: cannot move out of...
error[E0521]: borrowed data escapes outside of function...
уже наконец от меня отъебались.
Может, если кто-то сильно шарящий объяснит простыми словами вкратце где, как и в каких случаях использовать вот это все, то тоже буду очень благодарен.
Возьми го, зачем вы жрете кактус? Когда уже начнете отличать хайп от прагматичного кодинга.
что "вот это всё"? какой ответ ты хочешь получить?
скачай книгу по расту и вдумчиво читай. На самом деле растбука достаточно, там всё понятно.
Компилируй простой код (строка-две) и дебаж lldb, я ебу что ли какие вопросы у тебя? разжевать всё и в рот положить? охуел?
Для начала сформулируй нормально что тебе непонятно.
Хватит жрать кактус, жри Goвно, проиграл с тебя, чепуха
Но соглашусь, если ты туповат (что нормально если ты вкатун или действительно не обделён айсикью), то лучше уж писать на го/жс, наху тебе все эти стэки/хипы/рефы/дерефы/трейты, братан?
>Когда уже начнете отличать хайп от прагматичного кодинга.
Ты так говоришь будто все хотят вкатитсья в прагматичные sic! бля, проиграл плюсы и писать на них всю жизнь, чтобы прагматично отупеть по итогу и стать необучаемым, вонять как этот дед тут в треде возможно это ты про охуительный бейсик коненчо, мозгов больше ни на что не хватило и отрицать любую технологию за якобы её "ненужностью, хайпом, непрагматичностью", хотя по факту это просто психологическая защита ленивого деда, который отучился учитсья, обленился и отупел, агрится из-за этого на всё вокруг.
Да и что плохого в хайпе, даже если возьмем за истину, что раст это хайп что конечно же не так, хайповать 10 лет ееее, или сколько там расту? Я вот на хайпе залетел в руби в свое время, поднял нереальное количество денег, связей, опыта, фана - хайп прошел, ливнул. Вопросы? Почему это плохо? Почему у ригидных дедов так горит от того, что кто-то смеет писать на других языках, особенно на тех, которые они не одобряют?
Так я и говорю, что абстрактно мне все понятно, но вот на около-реальном примере, мне нужно провести code: str по такому маршруту с функциями с замыканиями:
fn f1() {
code = some_text.to_string();
move {
f2(&code);
}
}
fn f2(code: &str) {
f3(code);
}
fn f3(code: &str) {
code = code.to_owned();
move {
code = code.clone();
move {
f4(&code);
}
}
}
fn f4(code: &str) {
print(code)
}
По отдельности я понимаю принципы работы этих замыканий, clone, to_owned, to_string, и ссылки со значениями тоже понимаю, но почему оно все стакается так криво, не понимаю (опять же, по-любому есть какая-то логика, и это не криво, но я ухватить эту нить не могу).
То есть я не могу один раз создать ссылку на значение (&code), а потом вести эту ссылку куда нужно.
Почему в f3 я опять должен передавать ссылку?
Почему я клонирую тремя разными методами?
Почему если в f3 передать code, а не &code, то ошибка expected `&str`, found `String` (откуда там вообще String?)?
Так я и говорю, что абстрактно мне все понятно, но вот на около-реальном примере, мне нужно провести code: str по такому маршруту с функциями с замыканиями:
fn f1() {
code = some_text.to_string();
move {
f2(&code);
}
}
fn f2(code: &str) {
f3(code);
}
fn f3(code: &str) {
code = code.to_owned();
move {
code = code.clone();
move {
f4(&code);
}
}
}
fn f4(code: &str) {
print(code)
}
По отдельности я понимаю принципы работы этих замыканий, clone, to_owned, to_string, и ссылки со значениями тоже понимаю, но почему оно все стакается так криво, не понимаю (опять же, по-любому есть какая-то логика, и это не криво, но я ухватить эту нить не могу).
То есть я не могу один раз создать ссылку на значение (&code), а потом вести эту ссылку куда нужно.
Почему в f3 я опять должен передавать ссылку?
Почему я клонирую тремя разными методами?
Почему если в f3 передать code, а не &code, то ошибка expected `&str`, found `String` (откуда там вообще String?)?
Тролль 1: Если я лжец, то рыцарей здесь ровно два.
Тролль 2: Тролль 1 лжёт.
Тролль 3: Либо мы все лжецы, либо хотя бы один из нас рыцарь.
Какой тролль какой?
Я не понял, у тебя тип ф3 &str, почему ты удивляешься что функция не принимает String?
Если передавать из f3 в f4 &code, то приходит &str.
Если передавать из f3 в f4 code, то приходит String.
Вроде бы логично, но откуда f3 вообще взяла String, когда в нее пришло только &str? Изначально передается только невладеющая неизменяющая ссылка.
>>58391
Мне вообще в принципе не нужно нигде ни владеть значением ни изменять его, по логике мне и клонировать то его не обязательно, просто получить значение в другом месте.
Чутье подсказывает, что нужно сделать один раз let code = some_text.as_str() - то есть получить ссылку на строку, а потом передавать куда угодно ее без клонирования и без ссылания. А получается, что нужно клонировать клон клона и ссылаться на ссылку.
Опять же, я понимаю, что это все сделано из-за областей видимости, владения значением и прочее. Понимаю, что String, на которую ссылается &str уже может и не существовать к моменту получения значения, но я не понимаю почему где-то передается ссылка, а где-то значение, где-то нужно клонировать, а где-то нет. Какая-то неконсистентность кода получается.
Весь файл на 130 строк кидать стремно, а минимально-воспроизводимый аналог я не могу написать, потому что тут специфичные api вызовы.
В любом случае пускай пока работает, может кто подскажет из анонов подсказку как это все правильно разворачивать.
Во-первых, &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.
опставь rust-analyzer и всё сам увидишь
Eсть набор интов (u32) и просто инт(u32). Надо найти к какому инту из набора он ближе всего. Как написать самому понимаю, но уверен, что есть iter() в стандартной библиотеке.
Скинь более полный пример на 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() делает то же самое.
Хз, надеюсь это чем-то тебе поможет.
Скинь более полный пример на 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() делает то же самое.
Хз, надеюсь это чем-то тебе поможет.
Ну можешь как-то так сделать, если хочешь через итераторы. Но я бы не выёбывался и просто использовал обычный пролетарский for.
согласен, нахуй тут итератор, плюс мэп лишнюю коллекцию создает которую ты снова итерируешь
Коллекция создаётся когда ты вызываешь collect(). map() просто описывает, как трансформировать входные данные.
да, чёт я проебался, мэп оборачивает итератор в Map структуру и имплементит Iterator трейт, который потом fold'ит значения применяя замыкание, ебать охуенно сделали они ленивые мэпы
мимо раст ньюфаг
перекат
Это копия, сохраненная 3 мая в 00:54.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.