Это копия, сохраненная 8 февраля в 11:52.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ссылка на официальный сайт: 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
Предыдущий: >>2800762 (OP)
Омерзительный си++ с его дебильным синтаксисом. Пиши правильно.
> Омерзительный си++ с его дебильным синтаксисом лучше чем раст.
Хаха! Как смешно.
А ты смешная нейросеть, я обозначу твой лайфтайм последней буквой алфавита.
Не зря слово с++ созвучно со словом sick. Ты больной, ты же поехавший, ты осознаёшь это?
>Омерзительный си++ с его дебильным синтаксисом.
Двачаю каждый раз после работы с ним приходится мыть глаза и руки. Говно для дедов никак не помрет
Однозначно го, ибо применяется только для микрописек в вебе. Растошизики сейчас перепишут дохуя всего и сожмут анальными клещами яйца кабанов. Поддерживать же надо.
> Растошизики сейчас перепишут дохуя всего
Вы говорите об этом так, будто это что-то плохое. Переписываем. И что ты мне сделоеш? Шизиком обзовёшь? Да хоть горшком обзови. Я отбираю у тебя индустрию, а ты можешь только ржавожопить в моих тредах.
>Я отбираю у тебя индустрию, а ты можешь только ржавожопить в моих тредах.
Вот примазался к некому илитарному сообществу, присвоил чужие заслуги и теперь ты не ничтожество ебаное, а член сообщества интеллектуалистов, двигатель истории.
>Переписываем.
Еще бы этим переписанным кто-то реально пользовался. Классическое "переписывание на руст" выглядит так:
Взяли что-то известное, начали переписывать. RIIR! Анонсы по всему интернету! Такие же рустодрочеры налепили звездочек на гитхабе, нихуя нормально не работает, но все знают что это ПОБЕДА
@
Проходит время, проект явно затормаживается. Ведущий разраб уже наигрался и пилит что-то другое. Начинается важный этап в жизни проекта - придумывают CoC, лепят радужные флаги, срачи в ишшуях, банят недовольных, вот это все
@
Все, пиздец, проект сдох, забыли и забросили. Последний коммит год назад (убрали оскорбление меньшинств из комментария в коде).
@
Всем уже похуй, переписывают следующее
>Руби
Кстати довольно интересная штука для своего времени была, много на что повлиял и много чего подарил миру как сам руби, так и рельсы. Но всякие вкатуны даже не удосужились почитать о нем прежде чем писать сюда
Речь о другом идет, маня. Ты либо прикидываешься, что не понимаешь, либо реально аутист.
В ядро раст затащили, а плюсы не затащили. Плюсовикам сосать
Гугл потихоньку переписывает ведроид на расте - с каждым релизом всё больше
В месе Rusticl уже практически стал официальной реализацией OpenCL
ну и так далее. А теперь перечисли системные языки без сборщика мусора, которые появились в последние 20, да даже 30 лет и могли бы похвастаться чем-то подобным.
>Руби
Я в своё время (первых айфона и хипстеров) топил против руби, как ты сейчас против раста. Но там было отличие: руби был слишком ненамного лучше (а лучше ли?) пайтона и создавал ненужную конкуренцию в одной нише. Пайтон уже тогда был с кучей батареек, а руби ничем, кроме рельс, похвастаться и не мог. При этом руби не решал ни одной питон-специфичной проблемы, просто был чуть более модным.
Раст же на несколько голов лучше плюсов - и тулингом, и безопасностью, и макросами, и отсутствием null. Этим не могли похвастаться предыдущие убийцы сей, в вот раст может. Время пришло, Рим рушится на твоих глазах, центурион.
> Время пришло, Рим рушится на твоих глазах, центурион.
Я родился слишком поздно для великих географических открытий.
Я родился слишком рано для освоения космоса.
Но!
Я родился вовремя, чтобы своими глазами увидеть закат эпохи СИ.
>жидолобби и копрораты немного продавили язык
>ряяя закат эпохи, конец
Лол.
Пока что у языка не будет альтернативного компилятора, который можно написать за пару недель, то о замене Си даже речи идти не может. То что есть сейчас - это анальнокорпоративное трансоподелие.
Там, кстати, проект по формализации и стандарьизации раста для критических систем загнулся)
>В ядро затащили
>Гугл потихоньку
>уже практически
> RIIR! Анонсы по всему интернету!
<-- вы находитесь здесь
Ну показывай уже, не стесняйся - что там полностью переписали на руст, и мы этим пользуемся каждый день. Пока вижу только вскукареки и пуки каждый год. И каждый год одно и то же
> что там полностью переписали на руст,
Ну как же... Вот десятая версия grep, cat и ls. Мало?
> Пока что у языка не будет альтернативного компилятора, который можно написать за пару недель
Нахуй не нужон. Делаешь под свою архитектуру бекенд для llvm, описываешь в target'е и кросскомпилишь для нее свой хеловорд
> Там, кстати, проект по формализации и стандарьизации раста для критических систем загнулся)
Пруфы что загнулся сейчас здесь, в одной с тобой комнате?
>Нахуй не нужон
НИНУЖНА.
Классика, да. Язык который претендует на замену фундаментального ЯП определенно должен быть под контролем корпов и разноцветными фашистами.
>Пруфы что загнулся сейчас здесь, в одной с тобой комнате?
Ну когда коммерческий проект открывает код и прекращает разработку, то это со мной в комнате или нет?
>не понимаешь
Да как мне понять ебанатика со стокгольмским синдромом, который приходит постоянно в тред языка который он ненавидит
Причина бахмута?
>полностью
А тебе зачем полностью? Большие проекты, типа blender/inkscape/chrome, не один десяток лет пилятся, там ебанёшься всё полностью переписывать. Хватает того, что сейчас всё больше новых проектов с нуля пишется на расте, а что-то и переписывается потихоньку.
Вон, в пиндосских банках до сих пор код с КОБОЛа переписать не могут - говорит ли это о том, что КОБОЛ охуенней раста? Нет. Говорит ли это о том, что он охуенней плюсов? Да, так как в логике плюсодебила именно это и является критерием охуенности.
Вообще, само то, что у раста охуенно сделан FFI и он заточен на то, чтобы на него переписывали, это одна из киллер-фич.
> под контролем корпов и разноцветными фашистами.
И rust и llvm под лицензией apache 2, форкай сколько угодно и развивай своей армией коммунистических монохромных традиционал-патриотов, делов-то. А самопальные компиляторы в нативный код после появления llvm - удел студентов и поехавших борщехлёбов.
> Ну когда коммерческий проект открывает код и прекращает разработку, то это со мной в комнате или нет?
Все что хотели - влили в апстрим и опенсорснули, остальное пилят внутри конторы и посталяют за деньги. О полном прекращении разработки речи нет.
>>>Избавляемся от мерзкого дедовского легаси говна, переписываем все на руст
>>Покажи что-то полностью переписанное
>ебанёшься всё полностью переписывать
Ясно
>И rust и llvm под лицензией apache 2, форкай сколько угодно и развивай своей армией коммунистических монохромных традиционал-патриотов, делов-то. А самопальные компиляторы в нативн
Ты понимаешь, что даже внутри растосообщества случился раскол между шизами и создали форк под названием crab?
Язык полностью подзалупен и управляется корпами, которые current things тебе в новости про обновления компилятора пихают.
Плюс llvm не все фичи раста позволяет реализовать, ну это так, к слову.
Потихоньку переписывается. Примерно также бодро, как в 1990-е переписывали с сей на плюсы. Не всё сразу, но процесс идёт.
>форк под названием crab
Ещё более маргинальная хрень, чем был libav в своё время. Без корпов, увы, никуда. Корпы не будут доверять тому, чем не управляют. В этом плане расту нехватает своего Линуса Торвальдса, который бы вёл чёткую линию и не давал корпам превратить проект в такое же болото, в которые вырождаются все их корповские поделия.
Во всяком случае, мы живём в интересные времена. Чую, к тому моменту, когда допилят альтернативу заболоченному расту, скажем, условный vale, какой-нибудь GPT 5~6 можно будет попросить переписать все растовские крейты на эту самую альтернативу (и, более того, впоследствии апдейтить их таким же образом).
> Ты понимаешь, что даже внутри растосообщества случился раскол между шизами и создали форк под названием crab?
Вот видишь, захотели и создали, молодцы же. Не самый большой скандал в опенсорсах btw
> Язык полностью подзалупен и управляется корпами, которые current things тебе в новости про обновления компилятора пихают.
О божечки, неужели корпы забороли гениальных одиночек? Да и хуй с ними, ведь это значит, что раст нужен не только энтузиастам, но и бизнесу.
> Плюс llvm не все фичи раста позволяет реализовать, ну это так, к слову.
И это все равно больше, чем у всех вместе взятых компиляторов си, и управляемых корпами, и самопальных
А, ну то есть ты понимаешь, что в 90-е переписывая на кресты, получили еще большую кучу говнокода - но уже и на си и на си++.
А теперь к этому добавился зоопарк из скриптового софта, сортов джавы и веба.
Тогда загадка - почему ты не понимаешь, что все это останется и никто ничего особо не перепишет.
Максимум что будет - это появится еще какой-то софт на еще одной экзотической херне. И буквально через несколько лет история повторится, на поехавших рустовиков будут смотреть как сейчас на каких-нибудь рубистов. А может и хуже, вы кроме того что нетакусики, еще и душните своей повесточкой
> душните своей повесточкой
Расскажи побольше об этом. Или ссылочек подкинь. Я без подъёба, я ньюфаг в расте. Чё там за драма с повесточкой?
Короче, я сам загуглил.
Как я понял, суть токова: Есть некий Жанхейд, матёрый сишник и представитель ЛГБТБЛМ, который, сокрушался, почему на конфах по расту нет чернокожих. В руководстве фонда-раст нашлось пара правачков с яйцами, которые пидорнули Жанхейда с роли главного докладчика. Жанхейд, разумеется, поняв, что ему там не рады со своими вскудахтами про нигеров, отказался выступать. После чего все пидоры и сочувствуюшие с рёвом и соплями сбежали из фонда.
Только я не понял, почему местный набигатор обвиняет раст в повесточке? Тут ситуация ровно наоборот.
>в 90-е переписывая на кресты, получили еще большую кучу говнокода - но уже и на си и на си++
Потому и говнокода, что плюсы от говна толком не избавились, только парадигмой новой поверх намазали. А тут тебе и говна нет, и тулинг замечательный.
>буквально через несколько лет история повторится
Только, если новая херня будет настолько же лучше раста, насколько раст лучше плюсов. Если такая появится, я первый на неё переползу.
Хаять раст сейчас, это как хаять айфон в 2008 - кнопочное говно ещё шевелится, но всем уже всё понятно. "А потом выдумают телефон вообще без экрана, хи-хи-хи, ха-ха-ха".
Они даже в анонсах релизов фигачат политоту по повестке
https://blog.rust-lang.org/2020/06/04/Rust-1.44.0.html - "police brutality currently happening in the US "
https://blog.rust-lang.org/2022/02/24/Rust-1.59.0.html - "Today's release falls on the day in which the world's attention is captured by the sudden invasion of Ukraine by Putin's forces"
https://blog.rust-lang.org/2022/11/03/Rust-1.65.0.html - "Before going into the details of the new Rust release, we'd like to draw attention to the tragic death of Mahsa Amini"
Гугли что-нибудь типа rust woke movement, там будут еще посты этих поехавших
Это биомусор из мозиллы. Следи за руками:
Мозилла, будучи на пике, в начале 2010-х выкатывает FirefoxOS, Rust и Servo. А потом случается такая нездоровая хуйня. Мозилла, как некоммерческий фоундейшн, получающий деньги, в том числе, от фондов, уже тогда немного зависела от пидорасов. И в 2014 году случился скандал - за недостаточную толерантность к жопотрахам из мозиллы попёрли основателя Брэндона Эйха. После этого мозилла окончательно оказалась во власти пидорасов и сделала ставку в своём развитии не на расширение пользовательской базы браузера, а на расширение штата пидорасов, за которых щедро донатят фонды. В итоге скатилась в то, что имеем, и я даже рад, что раст эвакуировали с этой тонущей залупы.
Сейчас у меня есть надежда, что пришедшие корпы аккуратно вытеснят оставшихся выставочных пидорков, так как фонды уже не особо нужны корпы будут давать бабло за ехать, а не за шашечки.
Загуглил. Любопытно. Пикрелейтед. И я это двачую. Есть язык, а есть люди, ебанашки, которые постят повесточку и политоту в блоге. Ебанашки проживут свои 70 лет и вымрут. А язык вечен.
Гугли Concurrent modification exception
Раст безопаснее даже джавы.
Ну это помимо того, что многие алгоритмы на джаве тормознее в десятки раз.
Потому что это системный язык программирования, т.е. предполагается что на нём можно написать ОС или её компоненты. Джава требует виртуальной машины и не подходит для такой задачи.
> Поясните, зачем нужен раст в принципе?
Ну как бы тебе на пальцах обеснить. Ну смотри. Все ездили на запорожцах, а потом внезапно на рынке появились мерсы, ауди, форды. И ты такой, владелец запорожца выходишь и говоришь:
> Поясните, зачем нужен мерс в принципе? Почему просто не юзать запорожец везде? Вы скажете, запорожец жрёт бензин, но позвольте, пусть запор на МККП жрёт 300 литров бенза, да ради бога. Это константный расход, при постоянно кривых и ухабистых дорогах в моём селе. Через 10 лет у нас рассыпятся последние асфальтовые дороги, а запор будет сжирать всё те же 300 литров. Но это же вообще капля. При этом мы получаем проходимость, дырку для подлёдной рыбалки в днище, задний привод и отремонтировать можно хоть в чистом поле проволочкой и изолентой.
Читаю этот тред на лоре от 18 года и проигрываю вголосину https://www.linux.org.ru/forum/development/14669771
"виртуальная машина" в llvm - это хайповое название для IR, который появляется после парсинга/синтаксического анализа исходников фронтендом. Когда бекенд компилит IR в машинные коды, там уже нет никакой виртуальной машины.
Так это как раз всякие растоманы и хотят ездить на условной механике и без электроники, чтоб машину чувствовать и можно в гараже было вручную перебрать. Вот хочется им работать сцеплением, иметь возможность влезть в говна и с раскачки выехать из них, под горочку машинку заглушить и сэкономить байтики бензинчик, потом гордиться этим. Я же предлагаю принять технический прогресс и ездить на автомате с кучей электроники и ассистентов.
Бред.
Принцип заимствований - это автоматика невиданная доселе ни в одном языке. Это изменение в подходе к кодингу на принципиально ином уровне. Если продолжать аналогию с транспортом, раст предлагает электрический тесламобиль вместо мерса.
Чушь. Условно вы механическую коробку без синхронизаторов с двойным выжимом сцепления (язык си) хотите заменить той же механической коробкой только с синхронизатором. Тот же Столяров с ВМК говорит, что раст не нужен. А он умный дядька
И что ты с этой скоростью будешь делать? 99% задач в айтишечке сейчас IO-bound - на них и питона с головой хватает
Там где нужна скорость, а именно в умножениях матриц, там уже всё написано. И даже не на сишечке, а на фортране. Прикинь, весь современный мышелёрнинг держится на дедовских формулах в фортране, которые дёргаются из питона. Раст не нужен. Живите теперь с этим.
Ну вот сейчас обработкой и анализом аудио занимаюсь, например. Чем там 99% замнимается мне поебать ну и не 99% всё таки, ~90..95% скорее
Питухон не хочу потому что динамикодрисня даже если там найдётся подходящая либа, джавашарпы не выдадут нужный перформанс
>Прикинь, весь современный мышелёрнинг держится на дедовских формулах в фортране
Самое, блядь, смешное, что в C99 ввели т.н. VLA, чтобы бумерки могли перекатиться с фортрана, в итоге, где эти ваши VLA? Про раст вообще молчу.
Был свидетелем как в го накручивали звезды гитхабе между собой, но большая странность была это координация в выравнивании минусов на хабро-комментах.
В ру говорящем топовом чате котлина, местные токсики низводили людей пассивной агрессией и лобызались только перед друг другом.
Так что да, это странно для технических грамотных людей, то фанатики, то завуалированное развлекающиеся быдло.
> чтобы бумерки могли перекатиться с фортрана
Бумерки за это комитет с говном смешали, VLA никто не пользуется.
Да там скорее всего была группа поехавших трансов с "ДАВАЙТЕ ВСЕ НА СИ ПЕРЕПИШЕМ", ниче не напоминает лол?
> Через 10 лет у нас будут по терабайту оперативки в устройствах
Через 10 лет в абсолютном большинстве устройств будет ОЗУ столько же, сколько и сейчас - в районе пары килобайт. И раста там никогда не будет, поскольку он нафиг не нужен на устройствах, где не используется динамическая аллокация. А джава, кстати, на некоторых есть и будет в виде уродца Java Card.
>в C99 ввели т.н. VLA, чтобы бумерки могли перекатиться с фортрана
Голой сишкой в около-HPC никто не пользуется. Кроме фортрана это питон, плюсы (и CUDA), потому что там все либы и софт.
Ну и нахуя в технические анонсы релизов пихать политоту? В чем смысл?
Вот представь, какой-нибудь clickhouse в анонсе релиза навалит кринжа про Израиль и гоев. Или там про вековую дружбу Чечни и ДНР. Зачем? Чтобы что?
Я бы после таких ходов постарался держаться от проекта подальше. Хуй знает что у них там в повесточных башках творится.
Щас они просто в бложек пишут недовольные. А потом что, начнут протестваре подсовывать по гео ай пи? Что-то нет доверия к настолько социально активным ебанашкам
Это вы еще не видели крестовый поход против токсичных констант для отладки по типу DEADBEEF, DEADBABE и т.д.
>и говна нет, и тулинг замечательный
>насколько раст лучше плюсов
>как айфон в 2008
>всем уже всё понятно
Конечно понятно
Не совсем. Чел пытается выдать язык с простотой go/zig и скоростью+безопасностью раста.
Видели.
Не начнут. Там один ебанат уже подсовывал протестваре в нпм. Его так заканселили, что еще много десятилетий другим неповадно будет.
Фактически щас ждем развития ситуации с крабфорком. Если краб взлетит, то ржавопедовкам придется поупырить мел.
Даунич, ты хоть понимаешь, что это такое? Например, прилетел у тебя из сишной либы пойнтер на что-то, что должно быть цветной картиной 64х64, разраб мамой клянётся. А там черно-белая и выход за границы. Вот в таком случае оборачиваешь свой код в ансейф, сжимаешь кулачки, анус и доверяешь сишному разрабу.
Я другой анон, но кто залил говна разработчикам Redox, что память текла как сука? Снова сишники?
Память текла, это не обязательно ансейф, прикинь. В расте всего 3 способа потечь памятью, из них 2 прямо так и заявлены (leak и forget), третий - создать циклические ссылки через RC. Собственно он и есть единственный способ случайно добиться от безопасного (без ансейф) кода на расте чего-то вроде UB (если считать таковым прибитие проги по OOM).
Иии? Я же писал в предыдущем треде - тебя, долбоёба, должен волновать твой код. Те либы, которые ты используешь с 10к загрузок и выше, или написаны более умными людьми, или отсмотрены и оттестированы на 100 рядов. Если же либа непопулярная, rg unsafe crate_name в помощь.
Ебать даун.
Я старше тебя. Коммон лишп появился в 80-ых. Когда и как появился руби думаю ты сможешь сам погуглить. Ну и это, учи мемы.
> Ллвм, чел
А у нас есть ллвм тред? Я чота всерьёз задумался о написании своего конпелятора (своего языка мечты, который похож на раст, но есть отличия). Вчера глянул материалов по нему, и выглядит всё не слишком сложно.
>Ну и это, учи мемы.
Дедуль, я не знаю чего вы там в своих журналах публиковали, но сравнивать лисп и руби это как сравнивать молоток и отвертку.
Безопасный язык, который загнулся ровно тогда, когда начался раст http://cyclone.thelanguage.org/ от AT&T
В чём же дело, почему не взлетело? Да потому, что AT&T в начале 2000-х, это не мозилла в начале 2010-х, которая не просто родила из себя новый язык, но и заявила, что будет писать на нём свой новый браузер и даже показала этот самый браузер. Это был прям аргумент для старта посерьёзнее фич самого языка.
Бегло ознакомился. у него та же самая синтаксическая проблема, какая есть и у раста, и у си. Точки с запятой. Я искренне не понимаю, зачем в 2к23 точки с запятой в конце языкового токена? Мой язык мечты без точек с запятой.
> import a
>func main(str[] args) {
>for i in args {
> print("arg {i}")
>}
>int func non_void() {
>return 123
>}
Как-то так. Код со "скоупами" легко разбирается на токены без необходимости разделять их точками с запятой или \n-ами.
> import a func main(str[] args) { for i in args { print("arg {i}") } int func non_void() { return 123 }
>АНСЕЙФ
Иногда для работы с сишным говном без него никак, а так не представлю нахуя его везде пихать. У меня на проекте который уже год пилю с уже большим объемом кода всего в паре местах std::mem::transmute чтобы из циферки в БД сделать enum не расписывая всё вручную и ужасная небезопасность заключается в том что если циферка будет неправильная, то будет показан неправильный вариант enum, пизда как опасно.
Если ты пихаешь его везде это не значит все так делают
Это не наш ансейв виноватый, это ваш ансейв плохой.
У тебя там стандартная либа на ансейвах написана.
Самый быстрый веб-сервер настолько был пропитан ансейвами, что выплыло в драму, автор аж психанул и удалил репу. То есть, фанатики взяли и предъявили челу с продуктовым решением, что он слишком много юзает ансейвы, лол.
Где вообще эта грань правильных и неправильных ансейвов. Сколько можно, а сколько уже много? А может уже один ансейв делает разработку не безопасной полностью?
Почему в шарпах даже не знают, что есть ансейв и работа с указателями, а в самом безопасном языке (даже безопаснее чем шарп, как говорят сами фанатики), ансейв является частью разработки?
Си-подобный синтаксис - это вообще рак мозга. Никогда не используй си-подобный синтаксис для пет-проектов.
Скорее как шуруповерт и отвертку. Но я уже понял, что тебе виднее, чем самому Матцу.
>Матцу
Приведи хоть цитату, что он делал копию лиспа. Возможно он что-то и взял вдохновившись лиспом, например те же блоки и то что любая конструкция что-то возвращает, но в остальном он больше похож на SmallTalk, но никак на лисп.
> Почему в шарпах даже не знают, что есть ансейв и работа с указателями, а в самом безопасном языке (даже безопаснее чем шарп, как говорят сами фанатики), ансейв является частью разработки?
Те, кто выходил хоть немного за рамки крудошлепства, еще как знают.
Любой ffi в сишарпе - горы unsafe.
Stack-allocated массив в структуре - unsafe.
Zero-copy parsing - снова unsafe.
Alloc-free сетевой API - сплошной unsafe.
Я работаю на го, я хотел в пример джаву привести, но не уверен что там есть ансейв тэг. что за тригер на шарп??
Погоди, а zig сильно проигрывает в скорости/безопасности? Я думал он в туже нишу целит что и Раст, просто менее хайповый. Сам зиг не глядел, но по отзывам сложилось такое ощущение.
Когда есть возможность посчитать на гитхабе ансейвы эти языков, так врать и маневрировать не имеет смысла.
>У тебя там стандартная либа на ансейвах написана.
>Где вообще эта грань правильных и неправильных ансейвов
Нигде, если нету формального доказательства, что программа безопасна, то привет.
Проблема только том, что то формальное доказательство, с которым носится каждый растер в инете не является доказательством реального языка раста. То есть, там тупо взяли условный срез с языка в вакууме и доказали что этот формальный кусок безопасен. То что, раст не дотягивает до этого формального языка, маркетологам уже было не важно, эффект достигнут, фанатики носятся и тыкают всех в "навучную" статью.
> посчитать на гитхабе ансейвы эти языков
Это ты хорошо придумал.
Вот ансейфы в стандартных либах дотнета и раста.
Теперь правдывайся
Гугли сам, мне лень, говорю честно. Алсо, в чём вообще бугурт-то? Ты же не будешь спорить, что скриптопараши от неосиляторов популярные динамические языки (питон/руби/жс) генеалогически восходят к лишпу и фактически прост раз за разом реализуют некоторый его сабсет с нескучным синтаксисом уже четверть века как добро пожаловать снова?
А в джаве сколько?
Он где-то даже шустрее раста за счёт меньшей безопасности. Это скорее такой себе рефреш си.
Ну какое-то доказательство лучше никакого, особенно, если это стдлиб какой-нибудь, проблема в том, что этим наверное полторы калеки занимаются, вот и выходит сейф по-пидорастовски это "либы, которые ты используешь с 10к загрузок и выше, или написаны более умными людьми, или отсмотрены и оттестированы на 100 рядов", а в остальных случаях долбоёбы бегают по гитхабу и выискивают ансейф блоки: РЯЯ АНСЕЙФ.
Если сможешь вызвать ub в безопасном расте, то эту дыру прикроют в течение полугода - возможно даже выпиливанием какой-то фичи.
>Я думал он в туже нишу целит что и Раст, просто менее хайповый.
Скорее си на стероидах: указатели, маллок, фри, деструкторов нет, есть дефер как в го, ООП нет, есть интерфейсы в виде обвязки вокруг указателей на функции, вместо препроцессора и макросов - метапрограммирование на самом зиге, встроенный парсер си, поэтому можно просто инклудить хидеры.
В догонку, помню был проект Rust Belt, они находили баги в стандартной библиотеке, ещё вроде шедулер для токио (не уверен, что именно для него) тоже формально верифицировали.
Звездобол продолжает манипулировать. Я и говорю, фанатики.
Дотнет не является сишарпом, это даже знаю я. Это общий фреймворк.
А вот причина, по которой мягкие переписывают дотнет с плюсов, это показать что дотнет не просто язык, это продукт, который используют они сами и он пригоден даже для такой высокопроизводительной околосистемной херни, поэтому там ансейф будет не только в комментах.
Это яркий контраст какому-нибудь котлину, где до сих пор их главная IDE на жабе, а на котлине какие-то полу утилиты, или раст, на котором не написана не один продукт, кроме крипты, у которой волатильность жизни ровна какашке в унитазе (да и зачастую там в перемешку плюсы).
Так что да, если для системщины юзать управляемый язык, то там будет многое на ансейвах и неуправляемых API. Поэтому можешь смело брать шарп или жабу, на них живут топ флагманы и это не просто синтаксис для попила бабла, разработчики буквально делят риски этой технологии с вами на своих продуктах (у жабы там другое, openjdk, но равносильно).
Я тебе говорил конкретно продукты пишущияся на шарпах и расте, но ты тролль, потому что юзаешь чирипикинг и спорить с малолетним фанатиком себе дороже. Но я знаю, что пока ты искал, что вкинуть, ты увидел какая жопа на расте с этими ансейвами.
Он же любит С++, шарп и раст сравнивает только местный Сережа, это только его уровень компетенции.
Но ведь стандартная либа дотнета полностью написана на сишарпе, а стандартная либа раста - на расте.
Как так получилось, что в прикладном сишарпе ансейфа больше, чем в системном расте?
> в тред почему-то приходит много шизов
Так ты тред-то почитай. 99% набигающих шизов - это барнаульцы.
https://www.hylo-lang.org/
Все как вы тут любите.
Погоди. Дотнет написан на дотнете на 80%, а раст написан на расте на 99.9%. Значит ли это, что мс меньше доверяет своей платформе, чем раст фаундейшон? Или что ты там высрать хотел, я так и не понял.
Блять. Они реально издеваются над нами.
> LLVM уже переписали на раст?
https://github.com/bytecodealliance/wasmtime/tree/main/cranelift
Это троллинг такой? Почему рас и прочие хуйлоленги так сильно загаживают синтаксис? Я лучше на лишпе буду писать, чем на этой херне.
Хуита, Vale мне больше нравится. Другое дело, что эта хуита имет больше шансов хотя бы потому, что написана на swift, в отличие от vale, который на, пиздец-пиздец, с 2013 года со шкалы переписать не могут.
В любом случае обоим желаю успеха.
Думаю, в будущем синтаксис можно будет наворачивать так же легко, как сейчас моды на графон в майнкрафте. Ты видишь код в виде лиспа, кто-то в виде сей, а у кого-то питон. Тем временем, внутри это псевдокод а-ля брейнфак.
Я в будущем планирую не жить, потому что все вокруг хуета, включая меня.
А почему вы тогда с LLVM не перекатываетесь?
Значит ли это, что растовики меньше доверяют софту на расте, чем софту на С++? Или что ты там высрать хотел, я так и не понял.
LLVM - это 20 лет оптимизаций компилятора под все архитектуры, наборы команд и модели процов. Что-то подобное с нуля сейчас вряд ли кто-то напишет за вменяемое время.
Раст не написан на llvm. Всё, что делает компилятор раста - выдаёт код для оптимизирующего компилятора. А этот компилятор может быть разный - llvm/gcc/cranelift.
Раст написан на расте и транслирован в машинный код посредством llvm, это не значит, что он написан на llvm. С тем же успехом можно сказать, что swift написан на llvm. Это каким ебанатом надо быть, я поражаюсь.
> Это каким ебанатом надо быть, я поражаюсь.
Я подскажу. Это надо быть таким ебанатом, который из треда в тред заходит сюда и срёт.
> Всё, что делает компилятор раста - выдаёт код для оптимизирующего компилятора
>транслирован в машинный код посредством llvm
Как же так. Элита программирования, лучшие специалисты планеты не могут сделать нормальный транслятор в машинный код. Пользуются говном на крестах.
Бред какой-то.
Почему нельзя попросить растовиков из этого треда? Это же легко, на расте вообще все получается легко, быстро и качественно
Действительно, какая разница где выходить за пределы массива, на стеке или в куче ?
> You may need to install the Visual Studio C++ Build tools when prompted to do so.
Хотел переписать бэкенд копилятора раста на расте, но для установки раста нужно поставить 6гб билдер С++.
Да что же это твориться то?? Как тут побеждать С++, когда для раста нужно ставить сам С++.
>Действительно, какая разница где выходить за пределы массива
Ну да, ведь проверка границ массива - уникальная фича раста. Люди до этого только в 2015 году додумались.
Когда РЯЯЯ АНСЕЙФ заложен при рождении, вообще если подкинуть расто-додикам этот тейк, то им же можно будет стэк переполнить, ну, мол, братан сегодня ты ищешь ансейф блоки на гитхабе, а теперь поищи их в llvm, который конпелирует растопарашу. Богатая идея.
Ну это может и не раста проблема. Чтобы в студии что-то билдить постоянно приходится всяких тулчейнов ставить гигабайтами просто потому что.
>Хотел переписать бэкенд копилятора раста на расте, но для установки раста нужно поставить 6гб билдер С++.
Странно, что не любящие корпов и трансов противники раста пользуются виндой, а не чем-то более свободным и традиционным, ну да ладно.
Расту для формирования бинарей нужен линкер. На винде это link.exe из ms build tools, ld из msys2 или ldd из llvm. Разработчики rustup учли пожелания некоторых неопытных пользователей, и добавили самый простой способ установить линкер. 6Гб - цена невежества.
Теперь даже ты сможешь собирать бинарники на винде.
>>900768
Когда человек слишком тупой не, что для раста, даже для питона.
Алё, мань, небезопасность llvm не ебёт никого, кроме разработчиков, а они потерпят. Погугли "llvm segfault" - это оно самое. Но на качестве выдаваемого кода это никак не сказывается - оно либо отработало, либо нет.
Ещё тебе аналогия: какую-нибудь супер-современную хуйню могут делать на станках 30-летней давности просто потому, что их хватает, а новые стоят денежку и не радикально лучше при этом. Это не значит, что технологии 30-летней давности ого-го какие и надо везде только их и использовать, это луддизм ебаный.
Для совсем тупенкого поясняю: llvm, это станок, его пока хватает, на качестве продукции (софта) его отсталость пока никак не сказывается. А вот плюсы и раст.. Ну, думай так, что это тоже такие станки, на том же конвейере, вот только качество продукции на выходе уже сильно разнится.
С одной стороны да, с другой стороны однозначность, компактность и лёгкость парсинга - объективные параметры.
>ВЫ ТУПЫЕ!
>небезопасность llvm не ебёт никого
>ВЫ ТУПЫЕ!
>качество продукции на выходе уже сильно разнится
>РАСТИК ЛУЧШИЙ!!1
Понятно.
Кстати,а ты же на расте программируешь, да? Покажи свой гитхаб
Всё утро гуглю безрезультатно.
Я ожидаю примерно такой синтаксис:
> let v = Vector2::new(100.0, 500.0);
> let l = v.length(); // в результате получаем 509.9
> let n = v.nolmalized(); // в результате получаем (0.196116, 0.980581)
> let a = Vector2::new(3.0, 4.0);
> let b = Vector2::new(4.0, 5.0);
> let c = b - a; // в результате получаем (1, 1)
https://thenewstack.io/bjarne-stroustrups-plan-for-bringing-safety-to-c/
Ваша миссия на этом закончена. Вы успешно заставили стариков работать, а теперь можно и умирать.
Слишком поздно. Надо было начинать лет 10 назад, глядишь, к сегодняшнему дню всё и согласовали, к 2025 первый безопасный конпелятор бы вышел. А кроме безопасности есть же ещё макросы и тулинг. Плюс надо куда-то девать null и ООП ебаное.
Мощный старик сейчас выйдет из кабинки, плюсисты с ложками смачно это всё схавают, но вряд ли это воодушевит кого-то со стороны.
> но вряд ли это воодушевит кого-то со стороны.
Как минимум воодушевит пользоваться этим больше, чем растом лол
Разве что безопасность на легаси-говно натягивать.
>Слишком поздно.
Не, нормально. Это тоже перемога в будущем, как у растанов, аля перепишем, скоро будет, напишем, завезут и т.д. Только Страусу и комитету доверия больше. Если начали, то закончат.
Вы над чем-то серьезным вообще работаете? Если вам ТАК нужны обновления и новые фичи, то имхо, вы какую-то хуйню делаете.
Зашёл в плюсотред, увидел слово "фабрика", словил флешбек, триггернулся, проблевался, закрыл. Как же лампово всё ручками писать на ржавом, никаких фабрик фабрик фабрик фабрик фабрик фабрик фабрик.
В сипипи появиться оператор safe?
safe {
}
А если серьезно, то да, чаще прокси языки завозят в основной какие-то фичи и на этом их жизнь угасает. Тот же котлин и лум, те же нуллабл типы в других языках.
Да, пока раст юзает llvm на плюсах, это прокси язык.
Ну, грубо говоря, да.
Отличие ржавого от плюсов вт том, что если на плюсах ты не следуешь паттернам, не делаешь зарядку, не кушаешь кашку по утрам, то рано или поздно твой код превратится в жуткую лапшу и происшествие с указателем становится лишь вопросом времени.
А на расте можно писать хоть вдупелину пьяным - оно или соберётся и будет работать, или не соберётся.
Утрированно, конеш, но как-то так.
Полная хуйня. На расте тоже можно лютой жижой настрать с кучей unwrap и Arc<Mutex<Box<u8>>>, которая будет падать в панику в рантайме.
> настрать с кучей unwrap
Насирай unwrap_or
> настрать с кучейArc<Mutex<Box<u8>>>
Не боксируй, да не боксируем будешь!
>Зашёл в плюсотред, увидел слово "фабрика", словил флешбек, триггернулся, проблевался, закрыл. Как же лампово всё ручками писать на ржавом, никаких фабрик фабрик фабрик фабрик фабрик
У Си неоспоримое преимущстве нету этого говна плюсного и растопараши с трейтами и прочим ненужным говном, от которого блевать только тянет.
ахахаха
Когда я заплакал от боли, они стали ворчать, что разработанный "трейт" это нормально для раст программиста и таких плаксивых девственниц они не берут.
Зря только волосы в синий красил.
На расте можно написать так, что потом в 40 функциях будешь фиксить лайфтаймы ручками.
Язык не только замедляет разработку, так еще веселит в рефакторинге.
Все что не хватает си это просто тулинга и сахара, нахер никому ансейф не страшен, а вот эти макросы это тот еще адок.
>Все что не хватает си это просто тулинга и сахара
Ебать даун. Тупо растопидор, но с другой стороны.
>Все что не хватает си это просто тулинга и сахара, нахер никому ансейф не страшен
На этом месте хочется рассказать историю, как я фиксил один баг в этом году.
Разрабатываю прошивку на си для одного устройства. Начиная с некоторого времени оно стало падать в hardfault. Это такое состояние на ARM процессорах, при котором он не может продолжить выполнять инструкции. По некоторым причинам у нас нет особой обработки такого состояния, только сброс содержимого регистров (coredump), после чего устройство зависает.
Исследование содержимого регистров после hardfault приводило к коду обработчика одного из прерываний, который в силу специфики устройства вызывается невероятно часто и написан абсолютно корректно. Дальнейший анализ осложнялся тем, что сценария воспроизведения не было, устройству было достаточно полежать на зарядке день-два. Ах да, и из средств отладки только логи и корки. В общем, я потратил пару-тройку недель, чтобы понять где была ошибка.
Как оказалось, один из чипов на устройстве мог повиснуть при обработке очередного запроса с вероятностью примерно 0.000000386. Код, обрабатывающий такую ситуацию по таймауту (он был! хотя я и не предполагал, что он понадобится) был написан с ошибкой. В случае успешного выполнения запроса обнулялась одна переменная, а при зависании этого не происходило. При этом эта переменная несколько раз инкрементировалась и затем использовалась для индексации в одном массиве при подготовке нового запроса. Поэтому когда чип зависал и переставал отвечать на запросы, эта переменная быстренько улетала в космос, при этом корраптилась вся память ниже этого массива. Рано или поздно дело доходило до таблицы прерываний и висло уже всё устройство.
Бага глупая и тривиальная, а вот искать её было очень "увлекательно". А всего-то нужно проверять границы массива принудительно, как в расте.
>был написан с ошибкой.
А вот на расте написать логическую ошибку нельзя.
Конечно же си виноват, что кроме инкримента переменную юзали еще для чего-то, а если такая потребность была, и переменная где-то там еще изменялась - проверять не надо было.
Понимаешь, проблема в компетентности программистов, такая же шляпа будет и на расте, только писать эта кодмонки будет раза в два еще дольше. Я еще уверен что в близь железной разработки, автопроверку индексов будут отключать как-то, ибо ресурсы не бесконечны.
Ну когда у тебя 100мбайт, ты можешь абстракций себе напечь, сладких таких и сметанкой обмазаться. А когда, у тебя, сынку, 1-2кбайта памяти, тут, увы, не разгуляться, придется долбиться без абстракций, сразу в железку, поэтому и эти ваши буржуйские, зиро-хер-асбтракшен в виде проверки индексев массива, могут быть роскошью.
А то, что Алёшенька глупенький еще и проверку гуляющего индекса не сделал, так это не страшно, научиться еще мальца, за то не будет с рефакторингом месяц епстись как Сережка из соседнего отдела, да и везде клонировать структуры, или чего хуже, в Rc сувать гадости свои.
Глупо на расте писать змейку.
>Ой, карочи проще самому реализовать. Пикрелейтед.
Если тебе чисто вектора нужны. Если трансформации нужны, матрицы, кватернионы, лучше готовую брать. Но glam не советую. Хранить трансформацию в виде матрицы поворота и вектора смещения - не самая здравая идея.
Нормализацию лучше с проверкой делать, и ситуацию если длина меньше эпсилон, как-то обрабатывать: выдавать какой-то дефолтный вектор, например.
> Хранить трансформацию в виде матрицы поворота и вектора смещения - не самая здравая идея.
А вот тут поподробнее. Я на двачах слышал ровно противоположное. Что матрица трансформации это на порядок более-лучшее решение, чем квартернионы, мало того что устраняют гимбал лок эйлеровских осей, так ещё и устраняют кукую-то траблу, которую порождают квартернионы.
Требую объяснений, сударь.
швыряю перчатку в ебало
>А вот тут поподробнее.
Матрица кроме ориентации и скейла хранит еще наклон осей (skew, оси могут быть не ортогональны), если ты например, трансформацию анимируешь, то надо на каждый чих матрицу править - ортонормировать, проверять что длина векторов единичная (если скейла нет, если есть - будет копиться ошибка), если матрица 4х4, очищать нижний ряд (0 0 0 1). Матрица может неожиданно стать вырожденной, тогда ее уже никак не поправить. Т.е. в матрице слишком много лишней информации для хранения ориентации. С кватернионом все проще - нормализовал и все. Плюс физика со скейлом (особенно неюниформным) совсем не дружит, т.е. для физики нужна будет отдельный вид трансформации без скейла. Ну и матрицы будут тормознее даже без проверок, например, инверсия трансформации с кватернионом гораздо проще и быстрее. Ну и сами кватернионы идеологически проще, если их понимаешь.
Для таких вещей лучше всего подходит неиронично Ада. Там типизированные рейнджи, индексы, проверки границ на уровне типов, есть изначально и под них все заточено. В расте до new type додумались додумались только несколько лет назад. В Аде, например, изначально есть типизированные индексы для инстанса массива (так, что индекс подходит только к определенному объекту), и это там базовая база.
>Там же есть кватернионы.
Есть, но трансформации там такие. С кватернионом надо самому делать.
Хм, ясно. Опять обманули.
>А вот на расте написать логическую ошибку нельзя.
Конечно же можно. Разница в том, сколько усилий придётся потратить на её поиск и исправление. В моём случае пришлось гадать и перебирать варианты, а на проверку каждого из них уходило пару дней. При панике по принудительной проверке искомое место было бы очевидно сразу.
Справедливости ради, стоит заметить, что программы на C/C++ можно компилировать с включенными санитайзерами (-fsanitize=...), которые в том числе могут отслеживать корректность обращения к памяти в рантайме. Однако, для разработки на микроконтроллерах это мало применимо (по крайней мере я не знаю как это делать), а на десктопе это даёт существенное замедление (очень хорошо заметно на задачах с литкода, они санитайзеры принудительно включают, и по моему опыту решения на C работают примерно раза в 4 медленнее решений на Rust).
Я всё это написал, потому что не согласен с утверждением про тулинг, сахар и ансейф.
>>902689
Ну даже не знаю как прокомментировать. Хороший язык наверное. Жаль, что никому не интересен.
растобляди, какого хуя на пике легитимная операция?
хули он без вопросов сравнивает None и Some?
это ж классический джавапидорский NullPointerException, избавление от которого нам обещали
Это же синтаксический сахар. Он сравнивает два значения одного типа. Просто благодаря сахару они синтаксически кажутся разными типами. Ну это же база. Палишься.
Полная без сокращений запись выглядела бы так:
> assert!(Option<f32>::None < Option<f32>::Some(5.4));
>Жаль, что никому не интересен.
Интересен, но жирным конторам. Там лицензия на одного разраба стоит пять килобаксов в год. Хотя есть и свободная версия. Но это не хипстерский язык, конечно, не shiny new thing.
я эксперта по расту вроде из себя не корчил
какой толк тогда от этого None?
вроде обещали, что None - это аналог null и даже круче
типа если нихуя нет, а должно быть, то бьем тревогу
а тут она спокойно с ним работает вместо того, чтобы паниковать
Съехал с темы:
>>899682
>поскольку он нафиг не нужен на устройствах, где не используется динамическая аллокация.
Получается что нужен. Это первое.
Второе. Раст делает это лучше чем другие ЯП. Быстрее, (основная фишка) корректно, и чаще проще чем все остальные мейнстрим языки без Сборщика мусора и виртуальной машины. + с более современным инструментарием чем Ada. Де-факто стандартизированные: автодок, билд система, менеджер пакетов.
>типа если нихуя нет, а должно быть, то бьем тревогу
Нет, почему же? У тебя сам тип Option<f32> подразумевает возможность пустого значения, никакого
>а должно быть
дальше у тебя в коде должна быть ветка для варианта None, вот и всё. Например, дефолтное значение через unwrap_or().
Для должно есть Result<f32, Error>, где Error это любой тип, представляющий твоё видение ошибки, хоть строка. И то, это не чтобы сразу упасть, а чтобы обработать ситуацию соответствующим образом.
let a: Option<String> = None;
let b: Option<f32> = None;
let x = a == b;
Вдогонку, такой код не будет валидным, так как типы a и b разные, хоть и оба имеют значение None.
это я все знаю, unwrap, unwrap_or_else и т.д.
прокидывание этих Error'наверх через ? тоже знаю и прочее
просто растобляди рисовали другое вроде
получается, что тоже надо все руками проверять
охуительные гарантии раста
>получается, что тоже надо все руками проверять
Нет, не тоже, и не всё.
let a: Option<f32> = None;
let b: f32 = 0.5;
let x = a + b; //Не скомпилируется. Надо проверить a, а b у тебя заведомо нормален
Разница в том, что в зыках с null у тебя будет что-то вроде
var a: f32 = null;
var b: f32 = 0.5;
var x = a + b; //Скомпилируется, но не факт, что результат работы кода будет тот, который ты ожидал. Если проверять, то всё - и a и b
>с более современным инструментарием чем Ada. Де-факто стандартизированные: автодок, билд система, менеджер пакетов.
Раст и Ада в принципиально разных весовых категориях тут. У Ады SPARK, куча тулов для статического анализа и формальной верификации. Cargo - это просто несерьезно, там же реально васяны с is_even и left_pad как в pip и npm, один неловкий шаг - и у тебя куча левого говна в проекте. С нормальным подходом либы должны быть тоже формально верифицированы, с четким контролем версий и зависимостей, с воспроизводимыми билдами. У раста инфраструктура изначально под такое не заточена.
>А всего-то нужно проверять границы массива принудительно, как в расте.
То есть раст вставляет бранч в обьектный код на каждый доступ к элементу массива?
Вот эта хуйня
>В случае успешного выполнения запроса обнулялась одна переменная, а при зависании этого не происходило. При этом эта переменная несколько раз инкрементировалась и затем использовалась для индексации в одном массиве при подготовке нового запроса. Поэтому когда чип зависал и переставал отвечать на запросы, эта переменная быстренько улетала в космос, при этом корраптилась вся память ниже этого массива. Рано или поздно дело доходило до таблицы прерываний и висло уже всё устройство.
Была бы через какой-нибудь ансейф в расте, но челик-писатель скорее всего задумался бы вставить проверку из-за асейф-шейминга кек.
>Разница в том, сколько усилий придётся потратить на её поиск и исправление
Из-за затенения переменных можно неделями локализовывать ошибку.
>При панике по принудительной проверке искомое место было бы очевидно сразу.
Паника нехера не дешевая абстракция. И вообще исключения в ембеддед зло.
>можно компилировать с включенными санитайзерами
На сях есть неплохие анализаторы кода, раз на программистах сэкономили.
>То есть раст вставляет бранч в обьектный код на каждый доступ к элементу массива?
zalupa-cost-abstraction
Там еще в Rc подолбиться можно, если клонировать устал.
У шарфа всегда фолс, а вот котлин вообще не разрешает нуллабл типы сравнивать.
Кокотлин куда прогрессивнее чем супер-продуманны и любимый раст. Вот и думайте (да и вообще синтаксис опшенов говно)
>То есть раст вставляет бранч в обьектный код на каждый доступ к элементу массива?
Раст вставляет, да, а вот llvm может выкинуть когда это безопасно. Например если функция создаёт массив на стеке, пробегается по всем элементам и разрушает его, тогда проверки будут удалены. Ну а если она получает его или индекс извне (мой случай), то проверки останутся. В прошлом треде разбирал это через дизассемблер простых примеров, посмотри если интересно.
>Была бы через какой-нибудь ансейф в расте, но челик-писатель скорее всего задумался бы вставить проверку из-за асейф-шейминга кек.
Этот челик я и мне было бы банально лень использовать какую-то там ансейф функцию для такого действия. Выигрыш в производительности был бы смехотворный. Точно так же лень было вставлять ассерты в каждой функции, где использовался этот массив и его индекс.
>>902930
>Из-за затенения переменных можно неделями локализовывать ошибку.
Хз, возможно, продуктового опыта на расте у меня пока нет.
>Паника нехера не дешевая абстракция. И вообще исключения в ембеддед зло.
Полноценная паника не нужна, достаточно содержимого регистров в этот момент, а там пусть уходит в бесконечный цикл. Ну а так эмбед эмбеду рознь. В принципе для реализации исключений нужно только сгенерировать пару таблиц (extab и exidx для ARM), на 32-битном проце это 4 байта на каждую простую функцию. Да подлинковать код, который с этими таблицами работает. Производительность не затрагивается при этом, а места занимает совсем чуть-чуть больше.
>На сях есть неплохие анализаторы кода, раз на программистах сэкономили.
Конкретно мою ошибку не отловил ни один анализатор. Пробовал gcc, clang и PVS.
>было бы банально лень
Я про то, чтобы из-за упрощения и чтобы не ебаться, делать как-то через ансейф. А вообще вроде в расте нету такой straightforward, прости Б-же, штуки как сишный массив, там же какие-то присяды вроде через какую-то залупу из стд либа, как у плюсодебилов.
Почему нет? Есть тип [T; N]: https://doc.rust-lang.org/std/primitive.array.html
Для обычной индексации применяются квадратные скобки как в любом другом сиподобном языке. При этом язык гарантирует, что ты не вылезешь за пределы массива. Чтобы несейфово что-то сделать с элементами нужно его к слайсу привести и вызвать get_unchecked_mut в блоке unsafe. Т.е. чтобы сделать небезопасно, надо как следует поебаться.
>получается, что тоже надо все руками проверять
Так ты же сам свой f32 в опшен завернул, показав тем самым что он может быть None, а раз так то будь добр теперь держать оба варианта в голове в коде когда с этой переменной работаешь и соответственно делать проверки ну или .unwrap() иначе не скомпилируется
ожидание были такие, что это будет делать сам язык
вот может мне из input'а прийти или f32 или нихуя
и надо мне его сравнить с другим f32
вот приходит мне нихуя, а сравнение все равно работает
Это неотъемлемая часть раста.
Идиоматичная конструкция для раста — получение мутабельной ссылки с помощью метода get_mut() или его вариаций: https://doc.rust-lang.org/std/index.html?search=get_mut
> Идиоматичная конструкция
> get_
>>903206
> set_
Раст тут не при чём.
Сеттеры и геттеры это классика, это знать надо. Они идиоматичны глобально, для любого языка.
set(key, value)
get(key, default) - в расте второй параметр гета, дефолтное значение, переместили, а обработку таких ситуаций возложили на возвращаемое значение. Причём тут идиоматичность? Тут скорее вкусовщина.
Ты можешь написать свой Option, для которого это сравнение работать не будет. Там всё просто, на самом деле.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=8c13b8447ef743748acad43ea27c74ac
Причём impl не особо нужен, если всё делать через if let. Ещё можно From реализовать для обычного Option, там всё тоже тривиально.
> Screenshot from 2023-11-02 12-57-11.webp
Бля, глаза вытекают. И как мы раньше на белом фоне кодили?.. К хорошему быстро привыкаешь.
Что ты сделал? Т.е. там был оператор (>) для float и None. Нафиг он нужен, прост интересно?
В одном яп который похож чем-то на раст
# Some (1.) > None;;
- : bool = true
Но это с натяжкой понятно:
type sometype = White | Black;;
Black > White;;
- : bool = true
Но
# float > None;;
Error: This expression should not be a constructor, the expected type is
int -> float
Для стандартного Option реализован трейт PartialOrd https://doc.rust-lang.org/std/cmp/trait.PartialOrd.html для сравнения с типом T, поэтому сравнение валидно. Я написал свой без реализации.
То есть MyOpt ≠ Option , хотя выглядит и работает почти так же.
>Идиоматичная конструкция для раста
Это нарушение инкапсуляции. Конечно, для того примера это не важно, но раз это прям идиома, то это плохо.
Есть какая-то вечная пропасть между промышленным программированием и вот этими фантазерами новых языков, а ведь полиморфизм (хотя бы интерфейсный) и инкапсуляция это единственно что делают разработку в сотни человек менее болезненной.
Получение элемента массива по индексу - нарушение инкапсуляции? Моск не жмёт, братан?
чтобы сделать свой итератор для структуры, мне надо имплементировать трейт итератор, а конкретно метод next
вопрос такой: я правильно понимаю, что в самой структуре должен быть какой-нибудь счетчик, чтобы сохранять на каком элементе мы сейчас находимся?
а эту структуру итератора я должен делать или достаточно реализовать некст?
ага
struct a {
arr: [u8; 5],
}
let b = a { arr: [1, 2, 3, 4, 5] };
вот структура и ее экземпляр для примера
как мне получить итератор всей структуры, а не b.arr.iter?
Нужно не просто написать функцию, а явно указать, что реализуешь трейт. И помимо функций потребуется указать тип Item.
impl Iterator for MyStruct {
type Item = ???;
fn next(&mut self) -> Self::Item {
???
}
Потом можешь пользоваться
Ору. Если всё так хорошо, почему ты тут сидишь? Ах, да...
Делаешь структуру
aIterator<'a> {
parent : &'a a,
index: usize
}
Для неё реализуешь Iterator. Потом для a реализуешь IntoIterator.
ок. вернемся к тому с чего начали: где конкретно хранится состояние итератора?
как он понимает на каком элементе находится?
в next? так он каждый раз заного запускается
а хули тред то через навигатор на /pr/ не индексируется? а так пасиба
Емакса что-ли? Надо проверить нет ли чего-то личного...
Караул!
Нас ждет усиление маркетинга. И хорошие новогоднии премии.
Интересно за бабло удается получить влияние? Не думаю что мягкие добровольно садяться на чужую вендерную иглу.
Они, кстати, пытались свой форк раста запилить, но потом поняли, что не потянут.
Ещё такие мысли:
... с одной стороны, очень удобный для корпов язык, ибо контроль. На плюсах каждого васяна не проверишь, что он там понаписал, а тут поиск по unsafe + clippy дают 99% уверенности
... с другой стороны, как ни посмотришь на вакансию у корпов, так нужен пхд-олимпиадник, но вот раст, это же слишком сложно, поэтому пока осторожно
...на покупку близзард мс потратила 7 ярдов, на покупку беседки 70 ярдов, а на раст пока что 11 лимонов. К вопросу о том, какие бабки вертятся в идустрии и какой % реинвестируется в инструменты.
И как это нарушает инкапсуляцию? Ты понимаешь, что если отдаёшь куда-то голый массив, то очевидно в него могут писать и поинтить на его внутренности (и клиент в свою очередь понимает, что поинтеры могут протухнуть)?
Нету тут нарушения для раста. Мутабельная ссылка может быть только одна, при этом если это ссылка на кусочек внутреннего представления некоторого сложного типа, то это правило распространяется на все данные целиком. Это безопаснее и эффективнее любых сетеров/гетеров в конвенциональных языках. Конечно никто не мешает написать сеттер, если необходимо добавить дополнительную обработку. В случае массива это не нужно, как и в случае многих других типов из стандартной библиотеки, которые представляют из себя обёртки вокруг сырых данных.
>>905192
Бестолковая миддлота. Во первых я сразу написал, что для этого примера не имеет смысла, но плохо как идиома раста.
Но у ограниченных сработал триггер в голове и начали объяснять мне то, что я сам подчеркнул.
Не люблю учить миддлоту, но инкапсуляция это не история о приватных переменных, это сокрытие бизнес логики внутри объекта или модуля.
Будет у тебя контейнер, который сегодня отдает только ссылку, а завтра понадобиться помимо изменения значения изменить еще какое-то состояние внутри контейнера (кэш, хуешь, время записать, админа нахер послать, ивент пульнуть, лог дернуть итд). Так вот сеттер решает проблемы безболезненно для API и не поломает миллион чужого кода, а идиома раста сосет, потому что дергает кишки и самолично меняет, нарушая инкапсуляцию.
> инкапсуляция это
> это сокрытие
Инкапсуляция не сокрытие!
Инкапсуляция - это независимость кода. Когда код решает задачу без стороннего кода. Инкапсулированный модуль можно легко вытащить из одного проекта и поместить в новый проект и при этом не потребуется тащить еще кучу модулей-зависимостей.
Это инкапсуляция.
А сокрытие - это сокрытие.
Пишешь свой трейт, декларируешь там
unsafe fn set_unchecked(&mut self, index: usize, value: T)
потом имплементишь его для Vec<T> и наслаждаешься идиоматичной жизнью, продолжаешь поучать мидлов с высоты своей параши.
Ты же тупой и старый, тебе уже поздно помогать.
>Не люблю учить миддлоту, но инкапсуляция это не история о приватных переменных, это сокрытие бизнес логики внутри объекта или модуля.
Ок, но какая бизнес логика может быть у контейнеров? Ещё раз, это идиоматично только в этом случае — обёртки вокруг сырых данных. Может я конечно не то слово подобрал, когда говорил про методы вида get_mu(). Да и у меня нет продуктового опыта на расте, поэтому может я ошибаюсь насчёт распространённости таких конструкций. Но в стандартной библиотеке это повсеместно, ссылку на документацию уже писал.
Хз, в принципе про новый трейт правильно анаончик написал, при необходимости добавить сопровождающий код им можно это очень легко сделать.
Что на расте идиоматично, то на плюсах - смерть.
можно и наоборот.
>>905314
Дети ютуба. Кто-то пернул и понесло.
Как кроме сокрытие одного от другого ты изолируешь еще данные?
Поэтому инкапсуляция, это изоляция или сокрытие, что однохерственно.
Есть радиоприемник, внешний интерфейс в виде кнопок и кишки схем, само нутро. Вот это нутро будет инкапсуляцией, через внешнее управление. Но всегда сокрытие - изоляция.
Когда код независит друг от друга, это вообще модульность.
Какая же каша в бошках. Видимо чем больше смехуечков в видео, тем правее оно будет?
Еще раз инкапсуляция это разделение на изолированную внутреннюю часть, через интерфейс взаимодействия API, но достигается это всегда сокрытием первого. То есть, сокрытие это частное инкапсуляции.
Попроси чатгпт пересказать тебе видео, раз самому просмотреть внимательно до конца религия не позволяет.
Кто на раст петпроджекты не переписал - тот красоты не видал.
Ты лучше скажи как можно инкапсулировать, кроме как сокрытием?
Там какой-то хер когда-то ляпнул, пытаясь объяснить в рамках ООП, мол вот вам совокупность изолированной логики. "Не такие как все" ухватили это и начали умничать, не понимаю, что хер просто пытался так академично описать класс/объект, что это не просто сова на глобусе, а целая навучная инкапсуляция данных.
Это не как не отменяет понятия инкапсуляции в программирование - некая закрытая йоба из которой торчат ручки для управления. неожиданно это подходит и для обычных функций, но надо было продать ООП
> Ты лучше скажи как можно инкапсулировать, кроме как сокрытием?
Еще раз.
В видео всё подробно разложено на примерах. Но нет. Будем изъёбываться на двачах. Мы ж не зумеры, мы видосы не смотрим.
Возьми си-синтаксис и добавь к нему
- лайфтаймы
- дженерик-функции/структуры/енумы/контейнеры
так, чтобы это выглядело тебе по душе. Потом покажи нам.
А ещё есть лобстер, но у него питонический синтаксис. Вроде бы тоже боровчек и дженерики, но дженерики без указания типа - просто пишешь как на пике без типов, а конпелятор сам догадывается.
> питонический синтаксис
А там можно на отступах соорудить скоуп (блок), возвращающий значение?
Типа:
> let x = 10;
> let y = { x += 5; x };
Если да, то малацы, годно сделоли, батя одобряе.
Ля какие. Изобрели goto и хвастаются, что в большинстве языков это нот посибл. Канешна. За выход из внешней функции внутренним замыканием на собесах по хую линейкой стукают. Потому и нот посибл.
Так они и взяли си-синтаксис, из-за чего у раста уебищный синтаксис с кучей визуального мусора. Взять что-то нормальное (лисп-подобный или мл-подобный) они не могли, так как утята-сппшники бы не стали смотреть на раст, т.к. 95% разработчиков оценивают язык по синтаксису (и логотипу).
Это игрушечный язык для создания игрушек, типа Jai/Odin. Всё необходимое в поставке - поддержка GL, джойстика, звука, васма. Если выбирать - писать игрулю на питоне или на этом лобстере, я бы выбрал его. Ну, такую игрулю, 2D квест с элементами сурвайвл шутера, не более
Как раз тот случай, когда не надо париться "а что будет с языком и моим проектом через 10 лет?" - повыпускать патчи годик и хватит. Даже если сам лобстер загнётся, можно использовать сгенеренные cpp файлы (конпеляция через плюсы) и пересобрать из них под что там будет в будущем.
Честно говоря, я уже битый час ломаю голову, как оно там работает. В документацию лезть не хочу. Ну вот например ген это аут-параметр, так? При этом это лямбда. Внутри тейка она записана в переменную Ф? И рекурсивно вызывает себя? Пока и++ сравняется с н? после чего вернёт войд? Не понимаю в чём тут фишка? Нет, ну я понимаю, что это ленивый генератор, который запускается только по требованию. и в реале туда можно засунуть тяжёлые алгоритмы, которые есть смысл лениво вызывать. Но всё равно, суть происходящего от меня ускользает.
Выше я написал, что они переизобрели гоу-ту, но это что-то иное.
Меня почему-то тошнит от синтаксиса Си и плюсов, от раста конечно тоже не в восторге, но это меньшее из зол...
Хочешь - пишешь. Не хочешь - не пишешь. Смысл каждый находит для себя сам.
Или тебе вакансии нужны на дядю?
Ну ты как с инкапсуляцией разберёшься, про call/cc почитай, синьорный ты наш.
> 2024
> винапи
Зачем? Вопрос без троллинга. Десктоп на сабже пишут, но без интерактивной разработки и с компиляцией по полчаса это боль. Хотя тебе будет норм, крестовикам не привыкать, бгг.
Чудо, я с тобой говорю, а не с видео.
Сейчас кину тебе 11 часовое видео, поговори с ним, малолетний гений.
Он не сложный, он неудобный для больших проектов.
Там даже пользовательские ошибки нудно писать руками без обертки макросов.
Почему неудобство называют сложным я хз. Наверное чтобы отыграться на слабо, мол не хочешь писать бойлерплеты эти, значит фу, ты не осилил.
а как это? я вот нарыл что есть обертка windows-rs, через неё вроде удобнее всего... а ты что имеешь в виду?
Попробуй Slint
> писать бойлерплеты эти
Но ведь...
Но ведь именно для этого в язык сразу же завезли пакетный менеджер и коммунити-пакеты. Весь бойлерплейт будет постепенно написан и опубликован. И тебе нужно будет только ассетфлипнуть нужные крейты с удобным тебе бойлерплейтом и без задней мысли делать бизнес-логику.
>Пацаны, насколько имеет смысл писать для десктопа на расте, ковырять винапи?
Если чисто под винду - бери шарп, там формочки удобнее всего лепить. Для кроссплатформы - Qt и c++. Другие варианты - боль. Для раста нормального гуя не будет никогда, будут или биндинги или кривые либы от васянов с минимум функционала.
> или биндинги
Кстати, биндинги если уж брать, так dear imgui. Самый крутой гуй на сегодня. Просто посмотрите, какие фирмы на нём лепят формочки.
> так dear imgui. Самый крутой гуй на сегодня.
Это как раз васянка. Т.е. нет RTL тектса, интернационализации, accesibility, использования особенностей системы вроде меню на маке и т.д. Подобное на расте и так есть.
>Если чисто под винду - бери шарп, там формочки удобнее всего лепить.
А как же Compose Multiplatform на котлине
>Так вот сеттер решает проблемы безболезненно для API и не поломает миллион чужого кода, а идиома раста сосет, потому что дергает кишки и самолично меняет, нарушая инкапсуляцию.
В Джаве ты можешь сохранить объект через сеттер и продолжить им пользоваться без оглядки на то, как, он может использоваться в кишках. Буквально ни разу не слышал, что это вызывает проблемы.
>А как же Compose Multiplatform на котлине
Это же что-то вроде JavaFX и QtQuick. Для приложений в мобильном/браузерном стиле. Такое для десктопа обычно не очень подходит, потому что там нужны специфические компоненты, вроде навороченного TreeTable, нужна нормальная поддержка Drag'n'Drop, системного клипборда. Под виндой почти всегда нужна хоть минимальная интеграция с офисом (вроде сохранения отчета в docx или вставки рич текста из него же). Так-то джавовский свинг подходит почти для всего, но под него кодить очень больно.
>Это же что-то вроде
Не знает что это и высерает целую пасту как все должно быть плохо. Мы что в ответах-мейлру?
>Не знает что это и высерает целую пасту
У них на странице даже ссылки на доки нет, значит по-умолчанию говно какое-то. Тем более, что идея все еще на свинге работает.
Тогда просто начни. А что дальше? Ты же не миддлок какой-то, можешь открыть API посмотреть и даже в сорцы в редакторе пооткрывать. Накройняк пробежаться по Jetpack Compose, сравнить архитектуры, попробовать оттуда.
Потом может статьи какие найдешь, ты же не миддлок и можешь дальше одной ссылке в гугле спуститься.
Давай, ты сможешь, быть программистом это не сложно, просто изучай!
https://habr.com/ru/articles/527586/
А там, быть может и гитхаб откроешь для себя
https://github.com/JetBrains/compose-multiplatform-desktop-template
>Тогда просто начни.
Зачем? У меня есть на чем гуй писать, а это говно мне точно не понадобится ни в каком виде.
Я эту хрень, конечно не знаю, но мне хватило 5 минут пробежаться и понять что это декларативная шляпа на базе котлин (длс) и даже увлеченно проскролил ролик на ютуб.
Причем у меня сразу флешбеки как я по сорцам осваивал один из асинхронных вебсеверов и даже всплакнул, вспомнив какой на жабе был удобный тулинг в отладке, сидишь прям в реалтайме сорцы в отладке читаешь.
>Доков он в декларативной шляпе не увидел и испугался.
Ссылка на документацию - обязательная часть, если ты программный продукт продаешь. Ссылка на гитхаб, ботай сам - это несерьезный подход, как будто опенсорц от хакера Васи, а не фирма мирового уровня. До такого даже индусы не опускаются.
Джуниор потерялся без доки, плак плак, не пугайте мальчика сорцами.
90% доков, это просто текст на отвали, по типу херак херак и вуаляк. Та же основная книга-дока по расту именно из той же серии, просто тур по языку, вместо погружения в новую парадигму.
О, а можно я покормлю этого? Можно? Можнооо?
Новая парадигма в том, что после присвоения переменной она становится недействительна. Так программировать становится намного сложнее и интереснее. Как будто квест в игре разгадываешь. "Бляяя, опять боров чекер ругается! Да шош такое!"
не, я тот анон, что выше спрашивал про None < Some и итераторы
как я понимаю Rust - это тот же C++, но со свистоперделками (безопасная работа с памятью и т.д.)
типа на C/C++ ты можешь выстрелить себе в ногу, а тут ты анально огорожен от этого
поэтому я и спросил про парадигмы - что там сильно иначе?
ну если доебки borrow checker'а тянут на новую парадигму, то ок
подумал, что вдруг там есть более фундаментальные отличия, поэтому и спросил
Здесь вообще не работает ООП или попытки его эмулировать. С другой стороны, в плюсах оно тоже не работает и вообще лжепропок.
>GUI для Rust: http://www.areweguiyet.com/
> Electron + "(framework on top of it)"
- вы там совсем ебанулись?
Ну сам возьми да сделай. КТОООО ЯЯЯЯЯЯ!? САМ СДЕЛАТЬ КРАСИВЫЙ НОРМАЛЬНЫЙ УСТАНОВЩИК!?!?! Этот вопрос надо задавать непосредственно мейнтейнерам. Ты сейчас общаешься с пустотой, так как в треде нет ни одного человека из группы разработчиков раста, кто принимал бы решения делать или не делать фичу. У них на сайте есть адреса всех слак групп, почты, они непосредственно внедряют новые фичи. А мы обычные пользователи языка, не знаем почему так сделали и нам похуй.
Литерали нахуя, а главное зачем? Для бабы сраки которая консолькой пользоватсья не умеет?
>доустанавлить какие то там visual studio c++
Шта
>Для бабы сраки которая консолькой пользоватсья не умеет?
Будет красиво и приятно
>Шта
Имею в виду пикрил
Его начинали делать, но он оказался ненужОн. Тем, кто мог бы его сделать, консоль удобнее, а кому он нужен - не могут его написать лол
Вообще, выглядит как хорошая идея для пет-пректа
Мы в треде прекрасно понимаем, разработчик чего залетает к нам в тред и толсто тралит, и чем он умеет пользоваться. Но, тактично умалчиваем, посмеиваясь.
Шиза, конечно понятно что тут 1,5 шизика без работы, которым скучно и легион вкатунов, которым обязательно перезвонят, но о чем ты?
https://github.com/rust-lang/rust/blob/master/src/tools/tidy/src/style.rs#L61
Могу только сурс дать с "ПРОБЛЕМНЫМИ" константами.
Гуглится за секунду, бро.
Схуяли он раб, говноед? Каждый уважающий себя специалист должен держать свою область в чистоте и относиться с своей работе с уважением.
Представь, что ты приходишь на сеанс к стоматологу, а он тебе начинает какую-то политоту прогонять? Кому это нахуй надо?
Почему дантист, а не сразу работник реанимации.. Т.е. никому нельзя ничего кроме работы, нужно работать несмторя ни на что при любых обстоятельствах. Политика только у рабов отдельно от жизни, политка, это не приятно, это же борьба. Люди используют те методы борьбы, которые могут. Агитация, это тоже один из методов. Раб этого не понимает, он послушен, политика где-то там, господин знает как лучше и не нужно рыпаться. Ну а кто не согласен, тот не правильный раб и другим рабам следует его наказать, так?
Поехавший, ты действительно хочешь чтобы каждый человек постоянно высказывал свою политическую позицию?
Вышел по улицу, встретил дворника с женой - они тебе пояснили за Израиль и притеснения мусульман.
Зашел в магазин, одна мерчендайзерка подошла и рассказала о том что Путин ей дал денег за тугосерю, великий политик. Второй опять рассказал про Израиль.
На кассе спросили, за кого ты голосовал на предыдущих выборах, кассир_ке не понравилось что ты аполитично мямлишь, не пробила скидку.
Охранник на выходе пожелал встретить Новый Год на развалинах Фашингтона.
Водитель автобуса по громкой объявил что сегодня день памяти и скорби по Жириновскому и включил погромче его речь.
Все встреченые на улице бабы сраки останавливают тебя чтобы рассказать про хорошую пенсию и про молодца Путина.
Гопники подходят и спрашивают за какую ты партию епта, и где твой партийный знак отличия нах.
Директор управляющей компании твоего дома член ЕР, поэтому везде установлены громкоговорители и по ним круглосуточно передают важные политические новости. Вечером музыка, засыпаешь под звуки патриотических песен.
Мне кажется отлично будет
А какой ты пидор? Гороховый, судя по всему.
Пасаны. Этого отныне гороховым пидором звать будем.
Ну вот, опять, тупой блять раб. По твоему выступать против массового убийства сопоставимо с тем, что ты написал? Ты даже не знаешь что такое политика и лезешь. Ай страшно... запретить!!
Короче, поясню. Есть только один способ добиться каких-то политических действий. И как бы тебе не нравилось, это массовое социальное требование и организованное дествие которое за этим следует. Которое подразумевает что люди иногда сопрят. Но не в таком виде как ты написал, но и это тоже способ, если это действует. Но обычно это по другому, но в том числе в блогах, газетах, исскуство и т.д., не может быть совсем не навязчиво. Да блин, ты посмотри на государство, оно действует очень навязчиво, ТВ, реклама, могут силой заставить, и ты молчишь, раб. А тут ты решил повозникать и придумал таких тупых историй, которых нет или почти нет, никто тебя не дергает на улице и силой никуда не тащит.
Я понимаю, что малолетнему трансхохлу и борцуну с системой тяжело осилить такое понятие как этика, но у людей с ICQ выше хлебушка она есть, в том числе рабочая.
Попробуй припиздовать на аниме сходку и спросить у них почему они политической агитацией не занимаются. Тебя, скорее всего, обоссут или в лучшем случае пошлют на хуй, и будут правы, потому что люди пришли обсудить ОПРЕДЕЛЕННОЕ множество тем, а не заниматься копротивлением.
Также политические игры - очень сложная, грязная и мутная тема, с которой приличные люди не всегда хотят возиться. И только ты тут в агрессивной манере можешь всех рассудить, укзать кто раб, а кто нет.
Да и еще, возможно тебе не приходило этого в голову, но людям может быть похуй на массовые убийства и current thing, понимаешь? Теперь будем отменять людей из-за их моральных устроев? А не дохуя ли ты на себя взял? Легче тебе мозги выбить, как и всем истеричным крикунам из ЛГБТпедолобби. Вот скажи мне, нахуя мне политика в ченджлогах компилятора? Это как агитка в тех.паспорте машины или высказывание на пачке молока.
Да это ещё не так страшно. Давайте лучше обсудим, зачем ::? Неужели их хвалёный компилятор не может отличить компонент::неймспейса от компонента.типа? 1995 год - Delphi мог, 2023 год - Rust не смог.
> Чтобы парсить легче.
В чём лёгкость-то?
Все языковые конструкции прекрасно различимы без отдельных символов. Если стоит слово for, то за ним ожидается выражение-итератор и блок кода. Если есть символ = значит справа ожидается выражение. Не вижу проблем с этим.
Есть какой нибудь устоявшийся джентльменский набор? (Фреймворк, коннектор для бд, орм, либы для брокеров)
Мимо питонодебил, интересует что то по типу FastAPI + SQLAlchemy + pika под раст
>бэк на расте?
Зачем? 90% твоих тормозов будет в БД и i/o, остальное добивается кэшами.
Именно поэтому в нулевые люди стали пересаживаться с си на перл и пхп, потому что львиная доля тормозов была не в скриптах.
Я писал. Ну классика же - axum, serde_json, tokio. Там ничо особо и не надо. Для sql есть sqlx. Всё остальное по задачам.
мемчики, мемчики - ничего лучего для прокрастинации не придумали еще. Лень учить базу, гули мемчики, мемчики сами не нагуглятся...
>Поясни плиз за nanoserde?
Ой бля, это вообще никакой особой роли не играет. Чтобы почувствовать разницу между serde_json и nanoserde, нужно сериализовать/десериализовать json'ы по 500 мегабайт минимум. От того что ты пол-килобайта данных засериализуешь, ёпта ты сэкономишь может 1 наносекунду. От этого ты никому погоды не сделаешь. Я бы вообще не заморачивался, если только ты не работаешь с embedded и там каждый килобайт памяти на счету. Или если ты прям вообще жёсткий минималист и у тебя навязчивая параноидальная мания оптимизации. Тогда ладно.
Я тимлид вообщет. Могу себе позволить. А ты иди работай дальше, не прокрастинируй тут.
А я билл гейтс ага
>что раст эвакуировали с этой тонущей залупы.
Много стало лучше?
П.С. - где все прорывные китайские языки программирования? Ни одного не видел
Смищно.
Поинтер на поинтер в аниме стиле классно вышел, разрешишь использовать в обучающих слайдах (внутри галеры все равно)?
void* это указатель не на путоту, а на НЕВЕДОМУЮ ЕБАНУЮ ХУЙНЮ ИЗ ЧЕРНОЙ БЕСКОНЕЧНОЙ ПУСТОТЫ КОСМОСА
отнеси обратно
поясните по пику плиз
void * - это просто указатель на какую-то область памяти без привязки к типу данных, которые там находятся. так?
а что значит empty? это какое-то ключевое слово? или имя переменной?
спасибо, анон
>клонируешь проект с гитхаба
>запускаешь карго билд
>качаются сотни зависимостей
>одна из зависимостей - сишный тулчейн
>компилируется сишный тулчейн
>сишный тулчейн компилирует код на сишке
С каждым днем мы все дальше от бога...
Я в раст не за системщиной пришёл. Мне наобещали скорость. Я планировал пилить скрипты на медленном питоноподобном скриптовом языке, который при этом запускается мгновенно без компиляции и за это я плачу медленностью. А потом я планировал переписывать критичные к скорости скрипты на быстрый компилируемый язык. Мне предложили раст. Я не хотел си++. Боялся си++.
Но знаете, что я вам скажу? Изучив раст я внезапно начал понимать си++. А моя изначальная скриптовая среда, которая с медленными скриптами, она на крестах написана, и крестами идеально дополняется.
Любишь переписывать критичные к скорости части скриптов на быстрый компилируемый язык - люби и ffi'шечки собирать.
Попробуй лобстер.
✓Питонический скриптоподобный синтаксис.
✓Безопасный. Есть боров-чекер с автоматическим подсчётом ссылок.
✓Можно сразу запускать без компиляции.
✓Можно компилировать в плюсовый код.
Я наверное туповат, гуглил этого лобстера еще когда ты в прошлый раз о нем упомянул, но не выгуглил. Дай просто ссылку на их сайт, плиз.
Блять, мистика какая-то. Я точно так и гуглил, и мне выдавало не сам язык, а какой-то дизайн паттерн штоле. Блять, теперь загуглил - выдаёт язык. Что за мандела у меня тут творится? Ну да ладно. Спасибо. Пойду почитаю.
1. ты пишешь на непонятном скриптовом языке, который надо учить.
2. у каждого проекта своя билд-система
Я его тоже могу понять. Рядом город который на 50% разрушен самоходными артиллерийскими установками и прочими градами. Позиция "моя хата с краю" работает до тех пор пока до тебя не доберутся раскулачиватели20ХХ. Вот он и изливает свои опасения и боль в такой форме, в надежде что это поможет.
никогда не помогало, есть только выгода.. там, на уровне властей мира сего, в момент принятия решений
>каждого проекта своя билд-система
С одной стороны это плохо, а с другой заебись, ибо появляется свобода выбора из говен.
Тебе не придется мириться с косяками партийной системы, а можно будет взять ту, которая тебе подходит.
Надо быть полным уёбком, чтобы на языке для определённых задач писать и макросы (м4), и билд скрипты (cmake, makefile), и скрипты общего назначения (баш, схема, тикль, питон, твоя мамка).
Ох, уж эти студенты. Я ещё помню времена, когда преподавали паскаль, дак они на Вирта этого молились. Такое, немножк стадное
На С++ пишет наш регион
И все, кто с нами.
Кто на другом языке пишет -
Тот под нами.
Segmantation fault ежжи -
Ай Саул, от души...
https://youtu.be/MQzT2KQZQWI?t=40
Неточная цитата:
".. в науке консерватизм имеет более молодых почитателей из-за нежелания вступать в конфликт со своими научными руководителями."
кто не понял - это я продолжаю исследовать тему молодых-консервативных студентов-плюсистов
Блять, у меня водица байкальская из экрана замироточила.
Ой, ну теперь точно заданачу в фонд, уговорили.Чем ближе новогоднии топ премии, тем безумние графики
Порадуемся за растопидора, челик пошёл работать в очередной зумерский баттплаг.ио хотя в баттплаге работа, куда лучше.
>✓Можно сразу запускать без компиляции.
Разве это не была фишка GO на релизе что у него компилятор был практически мгновенный и можно было использовать го как скриптовой язык?
Интересно, это рост доли или по абсолютным показателям?
Если рост доли, то норм, а если по абсолютным, то, получается, что те, которые выросли меньше, чем на 27%, в относительном выражении не выросли, а просели.
ок, выключил сборку в го, ещё отличия остались? ну кроме того что об этом лобстере никто не слышал вообще
Хуй ты в жопу себе выключил, даун. Тут автоматическое управление памятью без сборщика мусора, как в расте/свифте.
Вот носятся с говном своим, не знают, куды пристроить. Да закопайте, ёпты.
>автоматическое управление памятью
Ещё со времён C+ не понимаю - людям чтоб, блядь, так трудно delete сделать когда больше не нужна им хуёвина их??? Ещё блядь указатели запретите мол СЛОЖНАААА
Вдобавок там ещё и работа с nil лучше сделана, чем в этом го сраном. Вообще, прикольный язык для маленьких проектов/на поиграться. Заточен на разработку игр (батарейки внутри языка), но никто не запрещает сделать что-то кроме.
На втором пике - стреляюще-летающий треугольник и практически весь код для него. Есть lsp для вскода, что для экзотического языка уже достижение.
А то, что у них полосок на одну больше, чем языков, никто и не заметил. Заебись график сделали.
Просто раст настолько топчик, что одна его полоска не поместилась полностью и пришлось дополнительную рисовать на новой строке.
Спасибо, я определился
Сбегал, проверил https://github.blog/wp-content/uploads/2023/11/github-top-languages-by-percentage-growth.png?w=4000 - и правда так. Поначалу уж испугался, что опеннетчики нафотошопили.
>>917087
Да, это одна из фич. Вообще, это питон, хачкель и раст в одном, пускай маленьком, но флаконе, с заточкой под игры. В этом плане у него проблема с позиционированием - это детский язых для взрослых дядь, знакомых с хэви функциональщиной.
> зачем мягкие так стали активно пиарить раст?
Он удобен и безопасен. Корпам важно чтобы кодомакаки как можно быстрее тяп-ляпали в продакшен. Раст со своей боров-принудиловкой выглядит как идеальный продукт для этого. Джуны не смогут себе стрелять в ногу. Мидлы смогут ансейфом. А сеньоры будут пиздить джунов за одно только упоминание ансейфа, а мидлов будут штрафовать за ансейф, если мидл не сможет убедительно доказать, что вот тут ансейф нужен.
По сравнению с си, где по умолчанию всё мутабельно и всё ансейфно - это просто как небо и земля.
Большая часть сишных ошибок, это код некомпетентных макак-студентов, поэтому, для прикладных задач с головой хватает управляемых языков, а там где плюсы нужны сейчас, надо реально ручками управлять, поэтому раст он не пришей к звезде рукав для рынка и именно поэтому так медленно популяризируется.
Нахер вы повторяете мантры евангелистов, достала одна и та же глупость за эту безопасность и звездежом про нулевые абстракции, есть тут ли реальные программисты? Есть ли реальные догадки почему мягкие так к расту решили пристроиться?
Это график прироста контрибьюторов, а не график вообще. Джава топчется на месте, а на груви, может, девопсы конфиги строчат - вот и вырос.
> есть тут ли реальные программисты?
Нет. Здесь только комнатные джуны, которым не перезвонили. УХАДИ.
> почему мягкие так к расту решили пристроиться?
Я уже описал почему.
Если у тебя не хватает знаний, чтобы это понять - твоя проблема.
Еще раз повторю. Майки выбрали раст не по техническим, а по организационно-комерческим причинам. Настоящие программисты™ не смогут тебе ответить на этот вопрос. Потому что вопрос лежит в сфере знаний настоящих банкиров™.
>почему мягкие так к расту решили пристроиться
потому же, почему и гугл всё больше нового кода андроида на нём пишет. Корпы давно в курсе, что те олимпиадники с кучей сертификатов, которых они принимают на работу - зачастую те ещё долбоёбы. Собственно, это видно по качеству продукции.
А раст - это
а. уже не долбоёб (куча вакансий, где раст упоминается, но кодить надо на чём-то другом)
б. худо бедно защита от того, например, что новый говнокодер не сломает ничего критичного в коде старого
>Большая часть сишных ошибок, это код некомпетентных макак-студентов поэтому, для прикладных задач с головой хватает управляемых языков
Ну, а теперь сам ответь на вопрос - а что ж оно всё сегфолтит и сегфолтит? Переписали бы на управляемые языки, или брали бы на работу только одних сеньоров - анон с двача уже давно всё решил. Иди к мелкомягким в топы, поясни, как надо. Главное, дверь с ноги открывай, а то всерёз не воспримут.
Нахер ты по два раза пишешь, тебе уже сказал, что твое шаблонно-маркетинговое мнение не нужно, зачем ты тоже самое высрал?
>а там где плюсы нужны сейчас, надо реально ручками управлять
Ну, скажем, разработка игр. Сейчас 2 пути: безопасно на # и опасно на ++ (посмотри обзоры игр - "всего пару раз вылетела" как комплимент). Раст тут удачно вклинивается между # и ++, по скорости ближе к ++.
Да и любая другая задача уровня "разработать шуструю приложуху", где сейчас используются ++.
>Ну, а теперь сам ответь на вопрос - а что ж оно всё сегфолтит и сегфолтит?
Потому что бизнес не хочет за это платить. Качественный код стоит очень дорого, а специалисты еще дороже. Эту проблему решают управляемые языки. Поэтому буквально бизнесу невыгодно оплачивать все эти сигфолты и раст никак не родит ни новых спецов из вчерашних питонистов и не сделает код качественнее чем это сделала бы жаба или шарп или го. Но он реально очень сильно замедляет разработку в сравнение с управляемыми языками.
Может мягкие хотят больше своих людей в фонд пропихнуть или хз, но точно не от внезапной победы над памятью.
600x336, 0:04
Ты в рептилоидов под кроватью тоже веришь, мань?
Тебе ж показали: раст растёт быстрее, чем пользовательская база гитхаба. То есть, новых репозиториев всё больше появляется на расте. Давай подумаем вместе:
1. Агрессивный маркетинг.
2. Фейковые репозитории.
какой стул выбираешь?
Сложно выбрать лучшее, когда ничего не знаешь.
Я вот тоже из бейсика и паскаля выбирал паскаль. А потом из бейсика, паскаля и плюсов выбирал плюсы.
>Нахер вы повторяете мантры евангелистов, достала одна и та же глупость за эту безопасность и звездежом про нулевые абстракции, есть тут ли реальные программисты? Есть ли реальные догадки почему мягкие так к расту решили пристроиться?
Потому что манагеры рулят, мантра про т.н. безопастность пидераста хорошо продаётся людям с iq воробушкаманагера.
3. Составители статистики очень хотели сделать руст хоть где-то на первом месте
Нам же методику тестирования и первичные данные не предоставят, да? Придется догадываться что этот странный график означает
4 место - HCL
5 место - TSQL
8.5 место - Makefile
Что это за херня вообще, Что этот график показывает?
> Большая часть сишных ошибок, это код некомпетентных макак-студентов,
Да-да, горы CVE, эксплуатируемых через buffer overflow и прочие проебы с указателями и памятью, в ядре linux/windows, драйверах, браузерах, БД, всяких sudo/coreutils - это все некомпетентные макаки-студенты понаписали, а другие студенты-макаки на ревью проглядели.
А потом корпы и трансы дали Линусу Торвальдсу денег на нативный пиар, шоб раст в ядро затащил, - надо же как-то агрессивный маркетинг делать
>Да-да, горы CVE, эксплуатируемых через buffer overflow и прочие проебы с указателями и памятью
То есть в растопараше этих проблем нет?
>В коде на расте их кратно меньше.
>Ну и пойнт про макак-студентов - тухлый, несите новый.
Тупо продажа говна недалёкому говну.
Но только в ряя-unsafe блоках, которых мало, которые легко ищутся и которым уделяют особое внимание на ревью.
А си-плюсовый код - один сплошной ряя-unsafe.
Ты просто не умеешь анализировать данные. 2023 - год раста и индусов - девопсов.
Раст тоже в девопсе, или что?
Если это было бы о девопсе, то го там улетел бы на луну.
А если бы о контребьютинге, то улетел бы js и петухон с их обилием реп.
Абсолютно маня график по всем сторонам.
И эта наивная попытка натягивать раст на глобус.
Прирост индии и азии, джава где-то вперде.
Ты можешь вообще уйти с треда, ты свободен.
По задачам
Если изучишь раст, сможешь лампово сидеть с нами в этом итт треде. А если изучишь шарп, придётся сидеть в том неуютном треде с теми кодомакаками. Загрустишь там, пойдёшь по чужим тредам толсто набрасывать, тебя отовсюду будут гнать ссаными тряпками, так и будешь бегать по доске неприкаянный.
> просто убедите почему ваш инструмент лучше чем другой
Слыхал про такую штуку как шахматные задачи? Когда шахматисты расставляют несколько фигур на доске и предлагают друг другу сделать мат в два хода.
Так вот. В мире айти раст - это такая шахматная задача. Сделай приложение на расте с боровчеком вместо гц и опциями вместо нуля, с кортежными энумами и типажами вместо ООП.
Раст для тех, кто устал от %язык_нейм% и хочет чего-то новенького.
> то го
Того, речь об индусах. Миллион разрабов туда, миллион сюда. В этом году пара индусских галер решили девопсить на груви - вот и скачок.
Вон, тип с го на раст переписывает, юзая только стандартную либу, даже без карго, на одном rustc
https://www.twitch.tv/videos/1965033761
>Раст для тех, кто устал от %язык_нейм% и хочет чего-то новенького.
Будто дилдак для анальной блажи рекламируешь, ей богу.
Вот сразу видно, что ты novicheque
У кого что болит, тот о том и говорит. Таким образом ещё путешествия рекламируют например, но ты сразу вспомнил дилдаки, пидор.
Детей учить самое то. На видео кружок с лучами и код для него.
Банзай, ёптыть
Какой ты токсичный. Такие нужны раст-ссобществу.
Ревнует.
https://vale.dev/comparisons
> Javascript is like a soft autumn breeze, easy and refreshing.
> Programming in Rust feels like an addictive puzzle game!
прикольный проект с интересными (пока-что нереализованными) идеями, но я с недавнего времени пилю дизайн своего языка, и скажу что со стороны у этой вали есть пробелы с дизайном
то есть он выглядит лучше си и раста, конечно, но первый он пока заменить не может, а второй набил больше фанбазу и, пусть и через анальные потуги, статически может больше, а поэтому валя только может предложить трейдофф
в целом, конечно все три говно. как всегда.
>>900287
зиг - смена шильдиков на сях, посмотрел мельком презентацию на ютабе и охуел с того как мало изменено
>inb4 столяров, царь
хех все аноны с лора сюда сдристнули, да и хорошо, тут хоть без анальных мочераторов, но и пятизвездочных не потролить конечно
>пилю дизайн своего языка
Сейчас пилить дизайн языка, это то же самое, что в 2005 пилить дизайн своего кнопочного телефона. В том плане, что сейчас ассортимент языков примерно тот же, что в 2005 кнопочных телефонов, но такое ощущение, что вот-вот сама концепция поменяется радикально.
Согласен, каждый новый язык как штамповка. Если бы думал что у меня выйдет очередной штамп - нахуй бы мне оно надо, но набираются идеи год за годом, некоторый из которых весьма как раз радикальны, поэтому в этом есть интерес для меня. Вырабатывается своя философия. Рассказывать особо не хочу -- во первых все пока довольно мутно, во вторых не охота ни с кем спорить, просто тихо слежу за новыми языками, изучаю старые, пизжу и внедряю какие-то стоящие идеи из них. Пока-что могу сказать что задизайнить все без эксперементов на железе нихуя не выйдет, буду со временем пилить мелкие прототипы что бы подробнее знать как работает железо.
> но такое ощущение, что вот-вот сама концепция поменяется радикально.
Ну сама по себе она не поменятся, только если кто-то придет и поменят (и я надеюсь ты щас не об жпт 4, я до сих пор рофлю с бурлений говн на этот счет вот только полгода назад)
>поменяется радикально.
Еще стопорит индустрию тупо то что дизайн компов застрял в 70х, и с этим трудно бороться.
Самое годное это в котлине последнии лямбды, лямбды с контекстом, да и вообще весь ДЛС котлина.
> такое ощущение, что вот-вот сама концепция поменяется радикально
Для LLVM запилят удобный ГУЙ и каждый школьник сможет запилить свой язык. Таким образом все программы будут по сути написаны на IR который ты на лету восстанавливаешь в свой любимый язык и удобно читаешь, несмотря на то, что изначально тот код был написан на каком-то языке, который ты ни разу не видел, и транслирован в IR.
а хуле я то, он первый начал
Скажи мне что это такое на пике, и как с ним бороться?
Я серьезно, потратил время на разбор старого рогалика. Не понимаю почему при чтении переменной, она у меня корраптится.
Если последним аргументом у тебя кложа в функции ее можно вызвать сразу через "{}":
А с контекстом у тебя передается объект, например аллакатор можно вызвать только в контексте кложи только так.
memScoped {
val arg = alloc<IntVar>()
val result = readValue(42L, arg.ptr)
}
У тебя тред без хейтеров тонет, тут можно даже твое очко обсуждать, треду это не повредит, а почаны синтаксису разному просвещаются.
Почти разобрался.
Как понял, компилятор хочет приводить последний экспрешн тернарного оператора (тут это "" типа const char[1]) ко второму, тут это yolo типа String.
если написать yolo ? (const char звездочка)yolo : ""
то все норм, потому что самому компилятору приводить уже не надо.
Непонятным остается вопрос. Почему он дважды освобождает yolo? Ведь он как будто тут вообще не при чем. Типа привести последний экспрешн не удалось, но освободить что-нибудь да надо...
В общем, посмотри на котлин DSL, это не какая-то магия и кодегенерация, это прям синтаксис котлина. Конечно они сперли вдохновились у груви, но у них это все на статик типах.
Если бы я делал синтаксис, то вдохновился бы такими лямбдами.
Надеюсь ты уже прочитал dcpl и pfpl и tapl?
В противном случае я ЗАПРЕЩАЮ тебе думать о создании своего языка. ведь ниша "я не знаю plt и всё равно запилю" уже занята го, бадум-тсс
Только скачал DCPL пока что. Еще год назад и подумать не мог что пиление языка это что-то чем захочу заниматься, и только с недавнего времени захотелось поизучать языковую теорию, вещи вроде plt redex, поближе понять как работает железо и.т.д. Неспеша буду почитывать всякую литературу.
>dcpl и pfpl и tapl?
Я нашел https://github.com/steshaw/plt но как понял то что ты перечислил - топ из топа, возьму на заметку.
> dcpl и pfpl и tapl?
Говно от кукаретиков-хачкелистов очкамелистов, не написавших ни одного популярного ЯП.
Все, понял. В игре самописный кэш строк.
есть более лаконичные способы узнать, что число Some(f32) входит в диапазон, не создавая новые трейты/методы? может в стандартной либе есть что-то еще?
макросы тоже предлагать не надо
Думаешь, книга, обобщающая и систематизирующая всякие штуки из языков программирования, у Брендана Эйка или Гвидо Ван Россума вышла бы лучше?
Присмотрелся, пот потёк от inout и воспоминания нахлынули. В фортране был intent у аргументов, который мог быть in, out, или inout.
Не лаконично, зато элегантно. Вот из-за чего я вкотился в раст:
if let проверяет конкретное значение, это прям равенство. А match, это именно, что мэтчинг, который более гибкий.
>поближе понять как работает железо
Всякие говно натягивать на глобус, мне кажется, это путь в никуда.
хуй знает, я серьезно спрашивал
я писал хуйню типа пика, пока не узнал, что можно просто писать enum_name as Integer, чтобы получить дефолный индекс, или вообще самому присваивать индекcы прямо в объявлении enum'a (A = 10, B=20, C=25, и т.д.)
поэтому и спросил - может тут есть тоже способы попроще, чтобы не писать if x > min && x < max {}
ну и пользуясь случаем порекомендую анонам книжку Easy Rust - кратко, сжато и по-делу, очень простой английский https://dhghomon.github.io/easy_rust/
>пикрил
>может тут есть тоже способы попроще, чтобы не писать if x > min && x < max
>не ирония
Может всё-таки ирония?
Задача: написать алгоритм, принимающий на вход строку разделенную пробелами, и длину строки в символах. Необходимо разбить исходный текст на строки и выравнять по указанной длине строки с помощью пробелов. Расстояние между словами нужно заполнять равным количеством пробелов, если же это не возможно, то добавляем еще по пробелу между словами слева направо. Если в строке помещается только 1 слово, то дополнить строку пробелами справа. Результат вернуть в виде единой строки, где полученный список равных по ширине строк склеен с помощью символа перевода строки.
Реализовать максимально производительное решение при сохранении читабельности кода, такого чтобы его можно было использовать в продакшене и поддерживать в дальнейшем.
Моё решение: https://pastebin.com/rCPk3C3X
Я прислал буквально на следующий же день. Они ДВЕ НЕДЕЛИ его проверяли и сказали пикрелейтед, мол всё плохо - нет поддержки utf8, много аллокаций и вообще мол unwrap() используешь. Хотя я только в одном месте его написал. В общем как-то так.
Они изначально прислали в таком виде, там уже были тесты. Я подумал, ну ок. Если уже есть тесты, значит надо чтобы они прошли и дело в шляпе. Оказывается неееет, это засчитали как недочёт. Кто бы знал что они обратят на это внимание.
Ммм, 68 text justification с литкода, только входные данные в другом формате. Я так сделал когда-то. Часть доёбов применима тоже, впрочем.
Неплохо, ну видишь, они сразу скажут - а чё так много unwrap()? А чё комментариев нет? А зачем ты слова сохраняешь в большой вектор? Ну и всё в таком духе.
https://stackoverflow.com/questions/68127182/c-ternary-operator-calls-copy-constructor-instead-of-move-constructor
>как с ним бороться?
https://onlinegdb.com/5BMcaaHK0
Не использовать тернарники.
Вообще, такое задание hard кста, удивительно предполагает формат живого общения. Тогда можно хоть ответить, что все unwrap() гарантировано будут успешными, а вектор на производительность никак не влияет. Хотя, я бы сейчас действительно переделал без unwrap(), лол.
Проверяется это задание полчаса от силы, так что сдаётся мне истинная причина отказа вовсе не в нём.
работает, но прямым тестом пишет, что флоат в паттернах не канает
>Задача: написать алгоритм, принимающий на вход строку разделенную пробелами, и длину строки в символах. Необходимо разбить исходный текст на строки и выравнять по указанной длине строки с помощью пробелов. Расстояние между словами нужно заполнять равным количеством пробелов, если же это не возможно, то добавляем еще по пробелу между словами слева направо. Если в строке помещается только 1 слово, то дополнить строку пробелами справа. Результат вернуть в виде единой строки, где полученный список равных по ширине строк склеен с помощью символа перевода строки.
А чё сделать-то надо?
а у тебя не пишет из-за #[warn(illegal_floating_point_literal_pattern)]
Жру говно программирую на сях уже лет 20, как-то привык к этой нагрузке. В расте их не хватает, когда используешь итераторы активно. Хочется написать красивый однострочник, а получается ебала на пол-экрана.
Тогда как никто другой должен ненавидеть непонятные однострочники конструирующие ядерный реактор и запускающие терраформирование Марса.
И комментарий в стиле "хелпер функшн"
Пример из STL
Возможно. Однако касаемо раста, по факту любой if-else в нём — это выражение с тернарным оператором. Вот только иногда его хочется записать компактнее.
Лол, да в этом и суть. Чтобы просто ЗАПИСАТЬСЯ НА ИНТЕРВЬЮ нужно сначала выполнить тестовое. То есть они даже не будут общаться, если не выполнишь задание. В моё время было по-другому: вначале общались, а потом если есть сомнение брать или не брать, давали тестовое. Сейчас найм стабильно идёт в 3 этапа. Хз, с чем связано. Может слишком много кандидатов? Я уже постил другое тестовое >>915728 там была та же история - вначале дали тестовое, а потом пригласили на собеседование. Я так подозреваю, сейчас везде такая история.
Млин.
while Some(front_word) = words.front()
А я вот через fold забабахал только что на ради интереса.
Это копия, сохраненная 8 февраля в 11:52.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.