Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.async/await наконец-то в стабильной версии!ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.https://www.rust-lang.orgПродолжение шапки: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41Предыдущий тред: >>1456440 (OP)
>>1539675>реал-тайм системы в вебе?Что это вообще должно значить?хттп и сокет либы естьвасм собираетсяХуле тебе еще надо?
>>1539530 (OP)Ржавые, все прошли опрос? Погнали жаловаться на дерьмовое коммьюнити в Рашке, кто ещё не голосовал.https://blog.rust-lang.org/2019/12/03/survey-launch.html
>>1539868Вот поэтому у Раста коммьюнити лучше, у нас нубу прямо со входа в лицо пихают Code of Conduct, в котором белым по красному написано: "Не будь мудаком, сука!".Тебя же уже тёрли, веб-макака, одного раза не хватило?
>>1539884Как же хорошо что джява разрешает быть просто мудаком! Ларри Элисон разрешает лично своим примером.
>>1540469язык то ахуенный, но тут две причины:1) дизель сырое говно, не могущее в сабселекты, скл функции, футурки, да даже чистый скл код (слишком долго серилизируется через query_row, и то там хуйня)2) макакам проще взять какой нить go/свифт/шарпапарашу/жабапарашу, потому что мол там либ больше, а еще модноа вот на фочанах не особо умные доебываются до синтаксиса и идиом
>>1540578>дизель сырое говноА с постгрестным крейтом как дела обстоят не знаешь?Пока хеллоуворлды шлепаю вроде проблем не заметил, но ни в какие тонкости не вникал
>>1540600ну типо ты конечно можешь юзать сырую либу без дизеля (там даже ассинк вроде есть, но лично мне не удобно, лучше бы все это завезли в дизель)
>>1540700>Больше либ вообще довольно странный аргумент. С чего бы? Если тебя либы не интересуют, возьми Standard ML, прекрасный язык, но либ для веба там почти нет.
>>1540716Язык без либ - ну тип хеллоуворлды на нём писать и одноклассникам на переменке хвастаться. Я бы не стал (и не стал до 2019) в раст вкатываться без либ.
>>1539530 (OP)Rust - это динамически типизированный язык.let foo = 12;let foo = "bar";println!("{}", foo);
>>1540724Кек. C++ с auto тогда тоже динамически типизированный? У тебя пример выглядит не так, как оно выглядит в динамической типизации. Вот если бы раст позволял тебе сделать так: let mut foo = 12;foo = "bar";то он был бы динамически типизированным. А ты просто создал и инициализировал новую переменную, скрыв старую.
>>1540716> но либ для вебаЕсли для твоей конкретной задачи нет либы, то проблема и тогда не вариант. А если есть хоть одна подходящая, то нахуя еще 20 таких же надо?Больше всего либ для веба написано на пхп, так что надо на нём.
Кто в 16 лет не мечтал запилить свой язык программирования, который наконец-то позволит писать всё и сразу, у того нет сердца. А кто и в 40 лет продолжает этим заниматься — у того нет мозгов.
>>1541438У тебя детектор сломался, я всю жизнь в России живу, беги чинить свой гаджет.>>1541299Но мы не пилим язык, мы пилим программы на уже готовом языке, разве нет?
Насколько же все-таки охуенны боровы с шедувенгамиЕсли начать пердеж бессмысленными терминами получается руст можно назвать мультипарадихменым?
Я правильно понимаю что runtime постоянно запускает поочередно .poll на всех футурках с определенным блочащим интервалом скажем N футурок раз в 5ms. Или там что-то серьезнее? Хочу вкатится в tokio
>>1544754спасибо за четкий и полный ответ, чего только ожидать от 90000iq погромистов 300к в нс на сосаке>>1544761но тут же написанно только про само разделение на треды, как оно запускает футурки по очереди?
>>1544841те кто пишут футурку обязаны её разбудить по какому-либо событию. Это может быть как повтор через определенное время как ты описал, а может быть что-то завзяанное на ОС.В токио пробуждение ведется через мио, что по сути евент луп с оберткой над сискалами epoll / kqueue / IOCP на разных ОС, т.е. ОС уведомляет тебя о приходе новых байт. Таймер в токио вроде бы сделан на отдельном потоке.Мимо жертва Страуструппа, могу заблуждаться
гуглеш прожекты на рокете@выскакиевает обоссаный блокнот из индуских хеллоуворлодов ака реалворлд ехампле@смотришь код@адекватное мвс@с тестами@смотришь на авторапиздец ты голова спасибоподлизнул
>>1545924а все томушто надобыло актикс юзатьчтоб потом переписывать 2281337 строк при каждом обновлении
>>1544983Как родная асинхронность меняет поведение, которое описал я?Никак, это просто синтаксический сахар над футурками и вместо my_future.and_then() теперь будет две строчки с .await?, под капотом все тоже самое. Вообще сильно смущает уровень растопогромистов, среди них к тому же полно джаваскриптеров.
>>1546115> Как родная асинхронность меняет поведение, которое описал я?Используются системные асинхронные методы вместо костылей.> Вообще сильно смущает уровень растопогромистов, среди них к тому же полно джаваскриптеров.Двачую. Пишут на Расте, а не знают как работает асинхронность в нём.
>>1547065> Двачую. Пишут на Расте, а не знают как работает асинхронность в нём.тыже вкурсе что в расте нет стандартного рантайма для футурок?
>>1547116Это что, разрабы Раста сами не знают, что у них есть, а что нет? Хотя раз на даче говорят, то я поверю.
>>1547312Рантайма нет в std либе, потому что когда его туда добавят, удалять его оттуда будет невозможно. Будет какая-то ебля, как с Infallible типом, который почти невозможно теперь поменять из инариативного енама в синоним "!", потому что на этом инфоллибле уже код понаписан; уже джва раза отменяли стабилизацию этого never-type. Разрабы не хотят такого ещё раз, поэтому и не пихают рантайм футурок в стд либу. В стандарте только await есть. Но авейтить можно только в асинхронных функциях и блоках. В итоге последнюю футурку надо как-то самому авейтить, потому что мейн функцию нельзя делать асинхронной. Так что рантайма футурок в стд либе нет.
реалбно ли вкатиться через rust пишу нравится вроде получается хотелось бы хотябы на 10к где смотреть вакансии??
Туплы ведь как и в остальных языках просто вручную вговнокоженные структуры с прикрученым сахаром изкоропки?Можно как-нибудь навелосипедеть для 13+ элементов свою сохраняя синтаксис и деструктуризацию?
>>1549867Таплы — это просто безымянные структуры со всеми полями в pub виде и номерами вместо имён. Если тебе надо что-то сложнее — сделай не безымянную структуру.
напоминаю, что создатель языка - обосранный самоучка без формального образования, гордо называющий себя "инженером по призванию", который пару лет поигрался со своим язычком, потом решил что выгорел, пару лет еще поболтался как говно в проруби в мозилле, занимаясь непойми чем, а потом и вообще свалил в эйпл делать свифт
>>1551229Тебе не похуй, кто там все эти языки и библиотеки создаёт? Может, ты ещё и шоу-бизнесом интересуешься?
>>1551229> напоминаю, что создатель языка - обосранный самоучка без формального образования> РЯЯЯ, НУЖНА КОРАЧКА, БЕЗ КОРАЧКИ ТЫ НИХТО И БЫДЛА КОДИР!1!1!1! ЫЫЫЫЫ, ЧТО БЫ СДЕЛАТЬ СВОЙ ЯЗЫК НУЖНО ЗНАТЬ ВЫСШИЙ МАТАН!1дай угадаю, ты пишешь на говне, которое создавалось быдлокодером за неделю, а потом "улучшалось" в течение несколько десятилетий?js
>>1551229Что лишь в очередной раз подтверждает, что образование в классическом понимании этого слова - переоценено. Тем более образование компьютер сайнтиста или софтваре инженера.
>>1551488как по мне это подтверждает лишь то что ржавчина - хайповый хипсторский проэкт с веселыми ребятами любящими переписывать мир заново
чуваки, вы понимаете что раст для него был лишь ебаным пет-проектом, хитрым планом по сути, как получить известность и устроится уже на нормальные бабки в топовую фирмупотому что без образования по специальности хуй бы его куда взялиа так да, челик роботает час в эйпл, мечта сбылась, хули
>>1551523> хайповый хипсторский проэкт с веселыми ребятами любящими переписывать мир зановоможет комуто смешно, но так оно и есть лол, и в этом нет ничего плохого, так как раст является абсолютно новым уникальным языком, дада я про Borrow Checker
>>1551526>раст является абсолютно новым уникальным языком, дада я про Borrow Checkerя конечно понимаю что ты жирнишь и троллишь, но, к примеру, еще/даже в, прости господи, borland builder 3 можно было подрубить (одной галочкой) адресс санитайзер и чекер массивов и он неплохо работалда че там говорить, в сях подобным утилиткам сколько уже лет? 30? 40?
>>1551529нужны, дружок, нужныесли ты самоучка и единственное что можешь написать в графе образование своего cv это то что ты "инженер по призванию"
ВАСЯ БЕЗ ОБРАЗОВАНИЯ@НАПИСАЛ СВОЙ ЯЗЫК ПОГРОМИРОВАНИЯ, КОТОРЫЙ СТАЛ САМЫМ ЛУЧШИМ ЯПОМ ВО ВСЕЛЕННОЙ@ПОЛУЧАЕТ 300ККК В НСПЕТЯ С ОБРАЗОВАНИЕМ@НАПИСАЛ СВОЮ ПАРАШУ, ОБЕРТКУ ПОД СИ И ДОБАВИЛ ТУДА ООП И ТЕМЛЕЙТЫ@ПОЛУЧАЕТ 300ККК В НСТЫ С ОБРАЗОВАНИЕМ@РАБОТАЕШЬ В МАКДАКЕТЫ БЕЗ ОБРАЗОВАНИЯ@РАБОТАЕШЬ В МАКДАКЕ
>>1551534https://en.wikipedia.org/wiki/Memory_debuggerв с++ builder был интегрирован boundschecker если память не изменяет
хз я пишу мне по кайфу балдежные структуры с енумами которые крути хоть в ооп хоть в адт абстракции к боровам которые дают писать имутабельно понимая во что оно скомплюктируется со всеми движениями в памяти еще и скорость околосишная и биндов уже миллиард с развивающимся васмом меня еще ни один язык так не доставлял советую попробовать перед тем как тут срать ребята
>>1551550потому что ты не осилил шедовинг и пытаешься воевать с компеляторомпеременные идут %кей<тип>% -> /валуе/если %кей<т1>% не совпадает с такимже %кей% но %<т2>% старый %кей% дропается и создается новая переменная let foo = 1; let foo = "bar"; println!("{}", foo);foo<string> это отдельная переменная никак не относящаяся к первойну и плюс у тебя foo<number> никак не используется и откинулось бы в любом случае let foo = 1; println!("{}", foo + 1); let foo = "bar"; println!("{}", foo);тут просто 2 разные переменные никак не относящиеся друг к другу let foo = 1; let foo = "bar"; println!("{}", foo + 1); println!("{}", foo);тут просто кто-то насрал себе в штаны если совпадает и новое /валуе/ ты просто перезаписываешь переменнную (очевидно если ты пишешь имутабельно на момент компеляции оно оптимизирует в мутацею) let foo = "oaeu"; println!("{}", foo); let foo = "bar"; println!("{}", foo);у тя одна мутирующая переменная
>>1551638> применяется только в системщине? Он и в системщине не ок:https://os.phil-opp.com/first-edition/
>>1551650Я вот кстати думаю, что мнение про системщину не случайно появилось. Главная страница сайта раста поддерживает это. И вопрос: насколько это соответствует действительности? Firefox вот к системщине не относится.мимо
>>1551650Ну подожди. Вот смотри - сетевые приложения на нем писать - это постоянная анальная боль, т.к. разработчики полтора фреймворка постоянно меняют весь API при каждой минорной версии. Всякие веб-сервисы и прочий энтерпрайз тоже не тянет - нет библиотек да и писать на таком низкоуровневом языке тот еще квест. Остается какие-нибудь низкоуровневые демоны и прочая системщина, которая не ходит в сеть и не работает с многопоточностью. Но тут мы узнаем, что писать многопоток на русте - это снова анальная боль, т.к. стандартная библиотека не предлагает ничего, чтобы уняло эту боль.Это я еще не говорю о поддержке со стороны IDE. На данный момент, "лучшая" поддержка - это плагин от Jetbrains для Intellij IDEA. Но там тоже не все так гладко.
>>1551654Тут всё просто.Системный это когда1) Может функционировать из каробки без OS - зависимой рантайм библиотеки/фич языка. 2) Имеет прямой доступ к памяти без абстракций3) Поддерживает структуры с однозначным отображнием в память - что бы можно было разные memory-mapped регистры у какой нибудь аудиокарты теребить.
>>1551659> Ну подожди. Вот смотри - сетевые приложения на нем писать - это постоянная анальная боль, т.к. разработчики полтора фреймворка постоянно меняют весь API при каждой минорной версии.юзай стейбл версии, хотя отчастимогу согласиться, не слабо препекло когда актикс решили на async/await перенести> Всякие веб-сервисы и прочий энтерпрайз тоже не тянет - нет библиотек есть> низкоуровневом языкезначение знаешь?> Остается какие-нибудь низкоуровневые демоны и прочая системщина, которая не ходит в сеть и не работает с многопоточностью. ???> Но тут мы узнаем, что писать многопоток на русте - это снова анальная боль, т.к. стандартная библиотека не предлагает ничего, чтобы уняло эту боль.ты си описываешь? в расте изподкоробки есть Arc, Mutex, Atomic, Rc, RefCell, Weak etc..> Это я еще не говорю о поддержке со стороны IDE. IDE - нинужно, есть сублайм с rust enchancment> На данный момент, "лучшая" поддержка - это плагин от Jetbrains для Intellij IDEA. Но там тоже не все так гладко.сорта говна
>>1551669К чему все эти отрицания? Ведь библиотек нет, а те что есть не позволяют писать типичные проекты с той же скоростью, которые предоставляют мейнстримовые языки.На счет IDE ты зря. Ты же не малолетний дебил, который пишет на джаваскрипте? Rust - язык со строгой статической типизацией. Тут IDE как раз нужна с хорошей поддержкой все языковых конструкций и фишками присущими любой нормально IDE - автокомплит, подсветка некорректного кода, дебаг и еще много чего.Т.е. область применения этого Раста довольно узкая. На сайте пишут о встроенных проектах, сетевых сервисах и консольных утилит, но здесь он начисто сливает какого-нибудь Python или Go. Ну и хваленная производительность достигается через unsafe, который превращает твой надежный Rust в какую-нибудь сишку.
>>1551674> К чему все эти отрицания? Ведь библиотек нет, а те что есть не позволяют писать типичные проекты с той же скоростью, которые предоставляют мейнстримовые языки.ты тот самый долбаеб который подключает всякие крудопомои типо restdjango или как его там?> На счет IDE ты зря. Ты же не малолетний дебил, который пишет на джаваскрипте? на этой параше тоже приходитсья писать, но только для браузера> Rust - язык со строгой статической типизацией. Тут IDE как раз нужна с хорошей поддержкой все языковых конструкций и фишками присущими любой нормально IDE - автокомплит, подсветка некорректного кода, дебаг и еще много чего.в сублайме есть все кроме дебаггера, для дебага есть RR в терминале> Ну и хваленная производительность достигается через unsafe, который превращает твой надежный Rust в какую-нибудь сишку.весь сейв код это ансейв, следовательно что тебе мешает использовать ансейв код если оно нужно? но поверь, твое веб говно будет и без ансейф кода работать в пять раз быстрее аналогичного пиздоно говна
>>1551676Предметная область раста так и не определена. Попытка усидеть на нескольких стульях ни к чему не приведет. Веб пишут на гоу, питоне, джава, сишарпе, скала. Распределенные системы - эрланг, скала (акка), джава. Сетевые демоны - гоу, питон. Консольщина - питон, гоу.Системщина и ебмеддед - си и плюсы.Одно радует, что в расте очень дружелюбная атмосфера и принят CoC, если вы понимаете о чем я.
>>1551716> Веб пишут на >гоу, питоне, сишарпемедленная параша>джава, скалнет, на этой параше пишут 40 летние долбаебы, работающие в 100летней шааге и которые ничего кроме жвм говна в своей жизни не видели> Системщина и ебмеддед - плюсы.пиздеж, плюсы нужны только для десктопа и игрулек>>1551720кьючую
>>1551745Ребята не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не Чикатило и даже не архивы спецслужб. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте что тут писалось. Я вполне понимаю что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь пытливых - стоп. Остальные просто не найдут.типо двачую, но с одной закрытой мелкоборды для прогеров
>>1551743>медленная параша>>1551743>нет, на этой параше пишут 40 летние долбаебы, работающие в 100летней шааге и которые ничего кроме жвм говна в своей жизни не виделиЛол, чего ты сразу не сказал, что ты никогда не работал программистом. Гоу с питоном у него медленные, лiл! На скале у него никто не пишет!
>>1551769> Гоу с питоном у него медленные, лiл!так и есть. макака, плес> На скале у него никто не пишет!пишут всякое говно вот и вывод, бекенд парашу на этом писать уж точно не следует
>>1551780Ты такой странный. Ты же понимаешь, что удел раста - это ебать байты за мелкий прайс? Т.е. ничего полезного ты не делаешь. Пилишь поди какие-нибудь никому ненужные сетевые сервисы, которые гоняют байты туда-сюда.
>>1551784бля, макака тролит, спешите видетьпиздуй уже денечку зарабатывать, зачем ты тратишь время на каких то задротов, которые учат расты/си? не забудь еще семью зависти, так как так проще, а потом на свою жалкую 100тысяс рублей жс макакой платить за детей
в "моем круге" одна вакуха, хехс ебанутыми требованиями - питон, раст и экселлент инглишем за 150к деревянных
>>1551902А что не так? Это тебе же не тормознутый веб пилить на джаве. Или какие-нибудь унылые веб-сервисы на гоу. Тут кедром по низам фонит!
>>1552130Хз, не слежу. Но когда краем глаза смотрел, там в основном говно разной степени твердости летало из стороны в сторону.
>>1551542Ты же понимаешь чем чек в рантайме отличается от чека не этапе компиляции?Нет тут точно все дебилы из го треда собрались.
>>1552139на этапе компиляции в крестах и си (в отладочной версии) программы тулза динамического анализа кода (которая в том числе будет делать проверки границ, другие проверки неправильной работы с дин памятью) будет делать свои интристики в исходный код, так же возможно придется линковаться со специализированной отладочной версией стандартной библиотекидалее чтобы проверить работу естественно приходится запускать программу, в идеале прогонять ее через тестыблядь, а как еще можно проверить работу с динамическим (заранее неизвестным на этапе компиляции, как по размеру так и где и как будет выделено) выделением памяти? чудес не бываетдругое дело что утилиты статического анализа тоже могут поймать часть ошибок работы с теми же самыми массивами выделяемыми на стеке (тк размер их известен на этапе компиляции, утилита стат анализа просто может это посчитать), так же на этапе статического анализа можно отловить и часть явных ошибок работы с памятью - к примеру отсутствие пары new-delete или перепутанные delete и delete[]что поражает в раст-коммьюнити (если смотреть со стороны) - это их заносчивая самоуверенность что они делают какие-то вещи в первый разхотя в экосистемах других языков этот инструментарий уже существует не десятилетиями, а поколениями даже
>>1552221>что поражает в раст-коммьюнити (если смотреть со стороны) - это их заносчивая самоуверенность что они делают какие-то вещи в первый раз>хотя в экосистемах других языков этот инструментарий уже существует не десятилетиями, а поколениями даже Си\С++ - это стандарт в вакууме.Настроить среду для разработки - работа для отдельного плачиваемого специально обученного айтишника.Раст объединяет в одном цельном проекте накопленный десятилетиями опыт. Си - суперсложное говно которое вне огромной корпоративной инфраструктуры не поддерживаемо.С темже успехом можно сказать что С# ничего нового не делает.Ничто е ново под лучной. Хорошо делай хорошо будет.
>>1551784я-то на расте продолжаю делать формочки и чуствую себя замечательнокто вообще в 2020 учит языки че сложного в наченании писать на расте?? ты или тролб или совсем тупой не осилятор бро
>>1552345>наченании писать на растеПодобные языки изучаются минимум год до момента, когда ты сможешь написать какую-нибудь незамысловатую консольную утилиту. Ну и формочки клепать на расте - это такое. Быстрее всего это делается на питоне, плюсах (кьют) или каком-нибудь сишарпе.
>>1552348ну если ты тут будешь неделями срать так не прочитав 4 главу гайда для груднечков о том почему foo = 1 и foo = "foo" две разные переменные может и год
>>1552353Причем тут 4 глава каких-то грудничков? Такие языки как Haskell, Rust, Scala, Clojure, Erlang - изучаются годами. Т.е. ты тратишь буквально минимум год на изучение языка, перед тем как написать хоть что-нибудь удобавримое. А ведь для работы нужно еще знать такие вещи как систему сборки, библиотеки и фреймворки. В итоге ты гробишь несколько лет, а потом обнаруживаешь, что работы на этих языках или нет, или нужны матерые спецы с минимум 3 годами коммерческого опыта в этих языках и фреймворках.
>>1552360>Такие языки как Haskell, Rust, Scala, Clojure, Erlang - изучаются годами>Т.е. ты тратишь буквально минимум год на изучение языкат.е. ты сделал вывод из своего же никак не обоснованого пука
>>1551554> let foo = "oaeu";> println!("{}", foo);> let foo = "bar";> println!("{}", foo);> у тя одна мутирующая переменнаяты забыл про bounds/scoped упомянуть
>>1552759>>1552743да и сообственно вопрос, что это за хуйню ты высрал?никакие мутабельные переменные там не появляются, а уж тем более &str и String, так как первое это просто референс, а второе хуита из std, которая никаких магических типажей не умеет, что бы прямо во время комплементации чето там мутить, статичная параша заменится другой, но не перезапишется
>>1552772пруф:```fn main() { let a = 5; let aref = &a; let a = 6; println!("{}", a); println!("{}", aref);}```
>>1552772>>1552775Почему компелюктуор не может перевести это в мутацию в случае с let foo = "a";println!("{}", foo);let foo = "b";println!("{}",foo);в эквивалентlet mut foo = "a";println!("{}", foo);foo = "b";println!("{}",foo);Разве одна мутирующая не будет эффективнее?((
>>1552813> Почему компелюктуор не может перевести это в мутациюпотому что на это могут ссылаеться референсы и никто всерьез не будет задумываться о том что, какой нить вася сдумает в одном и том же скоупе создавать переменную с одинаковым именем, и одинаковым типом, если можно просто перезапистью
>>1552221Мимо, я крестопетушок.Разница в том что твой баунд чекер в быдлере покажет тебе проблему только когда она случится в рантайме, в русте борочекер на этапе компиляции вроде как должен не допускать юз афтре фри, дабол фри и т.д., границы динамических массивов проверяются так же в рантайме.
>>1552237>Си - суперсложное говно которое вне огромной корпоративной инфраструктуры не поддерживаемо.охуел сука как уебу, куда проще си то?
Мля все равно не могу понять чего компеляктору с О3 сложно понять что я говнокожу и просто мутнутьВ идеале разве не так должно быть?(
>>1553537Что ты там мутатить собрался? Закидывается переменная куда надо, вызывается call, хуита твоя выводится, закидывается следующая и ещё раз проход. Попробуй цикл какой-нибудь высрать, может найдешь что тебе надо.
Начал ради интереса читать про раст-бук на оф. сайте. С первых страниц начал охуевать от того, что они там всё предлагают делать в командной строке.Есть ли под раст нормальная IDE уровня Visual Studio, внутри которой и компиляция и отладка, и выделение ошибок?
>>1553794>Есть ли под раст нормальная IDE >внутри которой и компиляция и отладка, и выделение ошибок?Есть https://intellij-rust.github.io/>уровня Visual StudioХз что это за уровень такой.>С первых страниц начал охуевать от того, что они там всё предлагают делать в командной строке.Пиймав зумера. Бедные дети, на шинде сидят, пиздос.
>>1553794Наоборот, в консоли намного удобнее и быстрее же. Пока неповоротливая IDE запустится и прогрузится, пока найдёшь, где в менюшках скрыты нужные кнопки, успел бы 10 раз в виме написать код, ввести нужные команды, исправить ошибки в коде и перейти к следующей главе. Большие проекты в консоли писать тяжело, но для обучения - самое то.
>>1553190>охуел сука как уебу, куда проще си то?Чисто синтаксис например ублюдочный.Сколь ни будь сложная программа - сплошной ад и баги уровня переполнение стека\буфера, которые почему-то необнаруженные по 20 лет остаются, несмотря на все "крутые" анализаторы кода и прочий "инструментарий".Речь идёт о процессе создания и поддержки ПО.А чисто синтаксически и семантически, тот же паскаль проще например.Я уже не говорю про лисп.
Может есть какая-нибудь удобная либа для контроля I/O?Хотелось бы чтобы был threadDelay(100) параллельно ему читался инпутЕсли инпут вошел за 53мс, threadDelay ждал бы еще 47
>>1553910И если тред делей закончился без инпута, то уже следующий цикол и прошлый инпут наверное сбросить?
>>1553906Нормальный синтаксис! Если он такой ублюдочный, почему тогда куча других языков его переняла? А? А?! Шах и мат, антисишник!Не в синтаксисе дело, а в том, что сишка слишком много вещей не проверяет, а молча разрешает
>>1553853Чтобы ввести нужные команды, сначала надо изучить команды командной строки. Порог входа повышается. А ещё там в оф. книге про баш-скрипты упоминают сходу...Выглядит как этакий фейс контроль на входе в илитный руст-клуб, обычных людей отпугивают сразу одним своим видом, макакам типа меня дают постоять в очереди, потратить часы своего времени, но внутрь всё равно не пускают. Просочиться дают лишь ноулайферам миллениалам-красноглазикам.Обучение без точек останова, без мгновенного подчёркивания ошибок - это развлечение для тех, у кого дохуя времени.>неповоротливая IDE запустится и прогрузитсяVS с решарпером действительно грузится долго. Только нахуя мне её закрывать. Я комп раз в 2 месяца перезагружаю. VS висит себе открытой всё время.
>>1553917Ну, ты сам видишь, какой у раста контингент. Если "хочешь стать человеком", возьми плюсы, от них больше проку. Ну или питон/жабу.
>>1553930А никак, лол. В крестах сборка проекта и управление зависимостями - полный пиздец. Один из старейших языков, а ничего толкового до сих пор нет.
>>1553912>Если он такой ублюдочный, почему тогда куча других языков его переняла? А? А?!Потому что Си продвигала Американская Радиотехническая Корпорация?На своих дексах, после чего интел был "вынужден" переобуться и начать выпускать Си процессоры, которые теперь везде.Потому же, почему и виндовс такая популярная.Кроме очевидных империалистических интересов американской промышленности, есть мнение, что си продвигался именно в виду своей ублюдочности, чтобы только крупные корпорации могли осиливать сложные проекты.Так например первый 32хбытных процессор интела был заточен под модулу и аду, заточен для работы с объектами, умел безопасно управлять памятью, и имел функционал позволяющий минимумом усилий реализовывать ОС.>Не в синтаксисе дело, а в том, что сишка слишком много вещей не проверяет, а молча разрешаетДело в том, что сишка говно.И синтаксически, и семантически.И Си процессоры RISC(ARM RISC-V) x86(который внутри тот же риск) - говно.А С++ - это говно в кубе.
>>1554234Любопытно. Маркетинг, в общем.А почему тогда возможно написать компилятор модулы/ады для x86, если он "си процессор"? Синтаксис - это ведь всего лишь про то, ставить фигурные скобки или begin/end, например. А то, на какой архитектуре будет крутиться полученная программа - другой вопрос. Сишка ведь не прибита гвоздями к x86. Если бы была архитектура, скажем, с аппаратной сборкой мусора, то ничего не мешало бы написать компилятор сишки и для неё. Или нет?
>>1554298>А почему тогда возможно написать компилятор модулы/ады для x86, если он "си процессор"?Потому что Тьюринг Полная архитектура?>Синтаксис - это ведь всего лишь про то, ставить фигурные скобки или begin/end, например. А то, на какой архитектуре будет крутиться полученная программа - другой вопрос. Сишка ведь не прибита гвоздями к x86Еще как прибита.Да, чисто теоретически любой тьюринг полный ЯП можно "скомпилировать" для любой тьюринг полной системы, но это зачастую непрактично.>Если бы была архитектура, скажем, с аппаратной сборкой мусора, то ничего не мешало бы написать компилятор сишки и для неё. Или нет?Зависит от архитектуры.У Си программ, чисто синтаксически, есть требование доступа ко всему объёму памяти. А без указателей это уже не Си.Но ты конечно можешь эмулировать любой код.Но как бы, вся суть Си в том, что это такой продвинутый ассемблер, причём очень конкретный ассемблер.
>>1554234> Американская Радиотехническая Корпорацияшо? каво?> Си процессорыЯ конечно НЕ УВЕРЕН, но вроде бы процессоров, для которых C является аппаратным языком - нет, как-то обычно C в какой-нибудь язык ассемблера компилируется.> Кроме очевидных империалистических интересов американской промышленности, есть мнение, что си продвигался именно в виду своей ублюдочности, чтобы только крупные корпорации могли осиливать сложные проекты.А, кхм, ясно. Нам нужна своя, революционная и контримпериалестическая индустрия ПеКа.> первый 32хбытных процессор интела умел безопасно управлять памятьюОпять же, Я МОГУ ОШИБАТЬСЯ, но первым 32-битным CPU от интел был 80386, который (как и современные процессоры) x86? Короче, ты какой-то вообще больной, не пиши сюда больше.
>>1554354> Я конечно НЕ УВЕРЕН, но вроде бы процессоров, для которых C является аппаратным языком - нет, как-то обычно C в какой-нибудь язык ассемблера компилируется.Где-то я слышал, что современные процессоры затачивают именно для эффективного выполнения кода, скомпиленного из C. Наверное, речь про это, но я не до конца понимаю, как это вообще возможно, может, речь про соглашения о вызовах функций, которые как-то аппаратно оптимизируются.мимо
>>1554360Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров.
>>1554366>Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров. В принципе, если бы Си в свое время догадался забанить невыровненный доступ к памяти (ну или разрешил только через костыли), то наши процы были бы в пару раз проще. Но это всё, что приходит в голову, лол.
>>1554366>Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров. В мире победивших Си процессоров на рынке массового компьютинга - да.А вообще, нет.У тебя есть задачи которые нужно решать, под них разрабатывается железо.
>>1554354>шо? каво?Чет я попутал. Речь о Digital Equipment Corporation шла.https://en.wikipedia.org/wiki/Digital_Equipment_Corporation>>1554366>Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоровУ нас точно системного программирование тред?В котором знатокки сишки и аппаратных архитектур?https://en.wikipedia.org/wiki/Reduced_instruction_set_computer>In the mid-1970s, researchers (particularly John Cocke) at IBM (and similar projects elsewhere) demonstrated that the majority of combinations of these orthogonal addressing modes and instructions were not used by most programs generated by compilers available at the time.>Some aspects attributed to the first RISC-labeled designs around 1975 include the observations that the memory-restricted compilers of the time were often unable to take advantage of features intended to facilitate manual assembly coding, and that complex addressing modes take many cycles to perform due to the required additional memory accesses.Для тех кто в танке, речь идёт о Си компиляторах.
>>1554434В Си нету никакого управления памятью и контроля доступа как явлений.В Си и Си процессорах ограниченная поддержка рекурсии.Это так, с ходу, самое очевидное.Как именно, и зачем, ты собираешься писать на си под стековые процы или тегированную память вообще непонятно.Си имеет смысл только как обёртка над очень конкретным и очень скудным набором команд.Си код a = c + b буквально означает захуярить b и c в регистры, послать команду ADD, и результат захуярить в память по конкретному адресу.
>>1554693> контроля доступаНу да. И защищённый режим - чисто программная абстракция.> ограниченная поддержка рекурсииКонечно, ведь у других архитектур сегменты резиновые.> захуярить в регистрыА на 100 переменных - 100 регистров и тысячи вариантов mov.
>>1552813Потому что у тебя там константы. Ты хоть через жопу переподвыподвернись, но константы не перезаписываются, потому что они — константы. Вот если ты напишешь так:let mut a = 5;a += 1;let a = a + 1;То конпель тебе просто замутирует уже существующую переменную в последнем let.
>>1554360Процессоры не затачивают под языки выше уровня 10101010010111100. Даже асм для процессора высокоуровневый, ему сразу байты подавай, а в асме ты сперва строчки пишешь, чтобы в байты потом превратить. Сишка так быстра только из-за gcc, где оптимизации под каждый отдельный процессор. Тогда почему же почти все языки кроме си и крестов юзают LLVM, спросишь ты? Потому что удобнее. Выбирая между микрооптимизациями GCC и удобством LLVM, где и относительная простота написания компилятора, и кроссплатформенность без ебли, ленивые людишки выбирают последнее. К тому же, новые версии раста выходят каждые шесть недель, там просто времени нет на каждый плюх в код компилятора ебаться с GCC. Мы же не каждые три года новую версию выпускаем, как некоторые.
>>1554693>В Си и Си процессорах ограниченная поддержка рекурсии.У тебя есть запеченный процессор с конкретным количеством регистров, ограниченным количеством памяти и ограниченным размером стека. Как ты некую неограниченную рекурсию собрался делать?>ты собираешься писать на си под стековые процыТакже, как работают компиляторы Си на существующих стековых процессорах.> тегированную памятьА это вообще вредная херня. Динамик диспатч на уровне примитивных команд, вообще офигеть. Ты как это конвееризировать собрался, если не знаешь, какую операцию выполняешь на каждом шаге?
>>1555310Вкатываюсь в хеллоуворлды на ассемблере чтобы понять че происходитМне все еще кажется что после всех оптимизаций мутеть одну фегню эффективнее чем двигать поинторы но хз
>>1555310Господи, прочитайте уже, что такое Single Static Assignment. На уровне ЛЛВМ вообще нет понятия мутабельной переменной.
>>1555360Смотри, есть такая строчка: `let s = "qwerty";`. Теперь давай посмотрим на тип переменной `s`. Она имеет тип `&'static str`. Эта ссылка состоит из двух usize переменных — указателя и длины. А теперь следи за руками: те данные, на которые указывает эта ссылка, являются константой. Они хардкорно записаны в исполняемый файл (например, .exe) и подгружаются в кеш при запуске программы. Ты не можешь их поменять, потому что не можешь. Поменять ты можешь только саму ссылку, чтобы она указывала на какую-то другую строку с другими длиной и адресом. Но откуда ты узнаешь адрес и длину? Тебе их надо либо прочитать, либо посчитать. А потом куда-нибудь записать. Но чтобы записать эти два новых usize элемента в твою f, тебе надо помнить положение f в стеке. Так что там почти похуй, перезаписывать старое или пихать новое.
>>1555463длинуто ты откудо берешь? на сколько я помню &str указывает на саму строку, а не ее длину, соотвественно что-бы подсчитать длину, тебе нужно пройтись по всей строке в поисках '\0'
>>1555465Нет, size_of::<&str>() выдаст тебе в два раза больше, чем size_of::<usize>(). Говорю же, длина с указателем там хранится. А вот как оно считается при загрузке в кеш — хуй знает. Но вроде должно тоже по длине брать данные.>>1555466Пожалуйста.
>>1555469https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=8843e2bf37928dc1a67ed6beea520d94Ня?
>>1555356>Ты как это конвееризировать собралсяУ вас конвейер головного мозга 4той стадии. Вы непоправимо больны Си парадигмой.
Не понимаю как до 0.5 обновить поменял инит и вызов нью на простое импл дефолт и поменял билд на билдер и финиш рун на билд енд старт Оно работает но какие-то лаги на драг енд дропе чяднт
Чем D лучше Rust?Крайне сложно представить себе реальный проект в котором писать Rust было бы экономически оправдано. Вся структура языка заточена на то, чтобы вынуждать человека указывать достаточно низкоуровневые подробности не тогда, когда это действительно нужно, а ПОСТОЯННО. Исключение где Rust может быть реально полезен могут составлять только Embedded и hard real-time системы. Однако это капля в море разрабатываемого софта. На Rust нельзя написать ни одной программы, не имея хорошего понимания lifetime & ownership. Это автоматически делает его очень сложным. Так же стоит отметить очень свобразный апострофо-кавычечный синтаксис Rust значительно усложняющий написание кода. D в этом отношении гораздо проще и универсальнее. К тому же в D есть режим betterC позволяющий использовать ручное управление памятью и сводящий 80% преимуществ Rust к нулю.Что значит слово Rust? коррозия; ржавчина моральное разложение; коррупция, продажность вредное влияние безделья, бездеятельности (на характер, способности) ухудшаться, портиться, притупляться, вырождаться (от бездействия) притуплять, ослаблять (память, ум) томиться от безделья портить, развращать, разлагать
>>1556347>вынуждать человека указывать достаточно низкоуровневые подробности Так-то это одна из причин, почему на него перекатываются, лол
>>1556347> Крайне сложно представить себе реальный проект в котором писать Rust было бы экономически оправдано.с чего бы? представь себе такой хайлоад сервер, где каждая наносекунда важна, и всякая поебот на типо жаба с ее конченым GC там нн будут даже рассматривать. из вариантов:С - неподойдет, nuff said.C++ - у него был шанс, но изза ебаннутых бесполезных абстракций, отсуствия нормального ADT и прочей непродуманной хуйни он не подошел.Rust - имеет хороший рантайм футурок от tokio, нормальный ADT изподкоробки, удобный и продуманный std, идеальная парадигма контроля памяти ownership, скорость исполнения иногда превосходит си, при том на си нет допустим веб говна, а на расте как нехуй делать, вывод: раст является САМЫМ ОПТИМАЛЬНЫМ РЕШЕНИЕМ ДЛЯ ВЕБ СЕРВИСАпруф в виде актикса загуглите сами web frameworks benchmark
>>1556347Спорить с жирной пастой бессмысленно, но всё же я скажу, что любой убогий язык, на котором есть куча либ, в миллионы раз лучше прекраснейшего языка, на котором нет ничего. Где хотя бы D-тред?
>>1556402>Где хотя бы D-тред?Ультра годноту прилюдно обычно не обсуждают.В sn, например, одни графоманские пасты.В sci нет тредов про эфир.В math нет арийской математики.В spc нет тредов про лунный заговор.В ra нет тредов про БТГ.В re нет треда про реализм.
>>1556454как только начинает течь кровь, ты больше не ребенокты женщина и можешь иметь дело с мужчинами
>>1539530 (OP)Как вникнуть во владение? Ебусь уже несколько дней, но всё равно не могу написать хоть что-то сложнее хелоуворда из-за этого
https://www.reddit.com/r/rust/comments/ehup6r/reddit_on_rust/> We're likely going to be writing a few new fun parts of Reddit in Rust
>>1562214>обогнал>хуй знает на каком железе, хуй знает с какой конфигурацией, хуй знает на каких бенчмаркахну растодебилы, ну тупые
>>1539530 (OP)Так, блять. Ржавчина же заявлена как системный язык. Какого хуя это говно не компиляет нормально под Win XP? Это просто ебень какая-то. И нахуй он нужен, если требования к ОС жёстче, чем у какого-нибудь дотнета?
>>1562649>дотнетдотнет это вообще интерпритируемая житопараша>пытается что-то закомпилить под труп>пытается вообще под шиндусыустанови сначало нормальную ос, твои шиндус проблемы тут никому не интересны
>>1562684> нормальную осНу и нахуй тогда все эти "системные языки" нужны? Можно сразу брать какой-нибудь "нормальный язык", которому нужно "нормальное железо", например жаба или питон. Системные языки на то и есть, что должны быть максимально неприхотливыми, как сишка. Тогда при чём тут вообще сабж? Получается, раз он не решает свои задачи, у нет нет области применения?мимо
>>1562917>Системные языки на то и есть, что должны быть максимально неприхотливымиНу так он максимально неприхотлив — к железу, что от системного языка и нужно. А нахуя кому-то допиливать компилятор и рантайм ради депрекейтед даже самим микрософтом системы — я хз.>Получается, раз он не решает свои задачи, у нет нет области применения?Кстати, а последний сишный компилер от майкрософта хотя бы поддерживает эту XP? (нет)Вот и подумай что ты сам сейчас высрал.
>>1562953Разумеется, легче думать, что раз кто-то что-то там задепрекейтил, то сразу же у всех волшебным образом апгрейднется железо. И нечего поддерживать не надо, 100% пользователей - айтишники, которые могут с этим справиться сами. И кроссплатформенность никому не нужна, одни проблемы от неё, пусть все на винде 10 сидят.
>>1562953> А нахуя кому-то допиливать компилятор и рантайм ради депрекейтед даже самим микрософтом системы — я хз.Вот с таким отношением энтерпрайз никогда на это не перейдет. Проще писать на нормальном языке, чем апгрейдить ОС и железо ради ржавчины, лол. А это говно только и будет использоваться анальными корпорациями, которым надо продавать новый продукт, а не поддерживать старый. Раст даже в опенсорсе не в почёте, его из libre-систем выпиливают как блоб, ведь карго не умеет в офлайне собирать и тянет с проприетарных серверов неизвестно что. Разве что в бсд напердолили груду костылей, чтоб заставить это говно собираться без интернета.> Кстати, а последний сишный компилер от майкрософта хотя бы поддерживает эту XP? (нет)Предпоследний поддерживает в 2017 студии. Раст никогда не поддерживал.Да это и не только на Винде, например ржавчина не поддерживает на Линуксе ядра ниже 3.9. Никто не будет тратить кучу денег ради апгрейда под какой-то там ЯП. Вот тот анон правильно написал, это ничем не отличается от апгрейда железа под жабу. Тот же сегмент POS до сих пор на половину работает на Windows XP Embedded или даже старше. Если у кого-то есть хотя бы какая-то часть таких машин, то Раст сразу автоматом идёт нахуй.
>>1563012>ведь карго не умеет в офлайне собирать[dependencies]yobalib = { path = "Disc:/yobafolder" }
>>1563012что ты несешь содомит? растодевы не будут тратить время и силы на поддержку старой параши, ибо на старом железе оно будет овердолго компилиться.
Что не так с обSerde? Делаю структуру с вектором других структур, в поле с вектором толкаю вектор из пары элементов и что я вижу? В жсон-выхлопе только первая структура. При этом в консоли компилятор ничего не говорит, ему норм. Неужели постоянно в этой кривой поделке такое будет? И как мне накостылить нормальную сериализацию?
>>1562985Так, а как связана поддержка и написание нового софта, мань? Сиди меси своё легаси на сях старых стандартов, нахуя тебе там раст?Для софта, юзаемого офисным планктоном, он действительно нахуй не нужен, а на сервере шиндовс используют только те, кто повёлся на хайп с дотнетом, и у них там свой мир, где мс пилит свой раст, лол.>Разумеется, легче думать, что раз кто-то что-то там задепрекейтил, то сразу же у всех волшебным образом апгрейднется железоНу так у этих оставшихся за бортом пользователей и нет выбора, кроме как обновляться или идти нахуй. Поддержка XP дропнута больше 5 лет назад, любая уязвимость и все дружно идут нахуй в случае отказа от обновления.>>1563012>Вот с таким отношением энтерпрайз никогда на это не перейдетА нахуй энтерпрайзу раст-то, додик? Много системных штук твой энтерпрайз делает? Я что-то ни одной не видел.>Проще писать на нормальном языке, чем апгрейдить ОС и железо ради ржавчины, лол.Ещё раз — это нихуя не добровольный процесс, вот прям совсем. То, что на твоём заводе юзают XP — не от адекватности явно.>А это говно только и будет использоваться анальными корпорациями, которым надо продавать новый продуктВ случае с сишным софтом почти всегда легче выкинуть нахуй и переписать с чистого листа, чем ебаться с поддержкой костылей для железа и систем которые используют полтора додика.Так забавно наблюдать, как красноглазый аутист пытается изворачиваться чтобы не признавать практичности этого подхода, лол.>Предпоследний поддерживает в 2017 студииНу, последняя версия плюсового компилятора для XP — 2012, причём его вместе со старым рантаймом надо докачивать в инсталяторе отдельно и настраивать проект для сборки. Блядь, даже мс, сидящая на 80% на легаси говне уже пытается убрать это депрекейтед говно подальше от себя.>Никто не будет тратить кучу денег ради апгрейда под какой-то там ЯПА их кто-то спрашивал? Либо они будут тратиться сейчас, либо потом программисты на си будут получать как ппрограммисты на коболе, а с учётом багов и уязвимостей которые прилипнут за всё это время, издержки энивэй будут выше если не обновлятся, я хз чем ты недоволен. >Вот тот анон правильно написал, это ничем не отличается от апгрейда железа под жабуВ случае жабы апгрейд железа даёт только немного перформанса, а в случае древнего говна, которому настолько дохуя лет, что на нём не заводится ядро старше 3.9, это даст вот прям дохуя перформанса и ещё кучу других плюшек вроде облегчения поддержки и меньшего штата кодеров для поддержки этой хуйни, правда вот как это посчитать или объяснить кому-то до того, как такая проблема ударит по бюджету — непонятно.>Тот же сегмент POS до сих пор на половину работает на Windows XP Embedded или даже старшеИиии... Нахуя тебе там раст? В смысле, на старых кассах, которые и без того работают? В твоих мухоёбинсках где такая куча такой старой залупы, ей даже в сеть смотреть не нужно. А в дсах сплошь и рядом новые терминалы, в которых и paypass, и прочие атрибуты пост-бумерской эпохи есть, и работают они уже не на XP.
>>1563012>ведь карго не умеет в офлайне собирать и тянет с проприетарных серверов неизвестно чтоБля, какой же это рарный вин. Пакетный менеджер что-то откуда-то тянет, посоны! Он же не для того нужен-то!>>1563081Там ты же это, за линупсы там, против пропиетарщины, опенсурс все дела. В чём проблема тянуть всё руками и редактировать конфиги когда стянул и проверил? Юникс-вэй жеж. Ты кстати довно в ядро заглядывал? Телеметрии не запихнули случайно?
>>1563100Эх, бля, вот гнойные пидорасы, как с жавой и досом всех объебали! Поленились, сука, крестьянам поддержку запилить!
>>1563450Ох, блять.> Я что-то ни одной не видел.Ты его вообще видел?> В случае с сишным софтом почти всегда легче выкинуть нахуй и переписать с чистого листа, чем ебаться с поддержкой костылей для железа и систем которые используют полтора додика.Только в твоём манямирке, где софт пишется за месяц, а клиенты готовы тратить миллионы на ненужное им железо, которое и сейчас нормально работает.> А их кто-то спрашивал? Скорее кодеры пойдут новую работу искать. Вот их уж точно не будут спрашивать, хотят они под древнее железо писать или нет. Я уже видел один прецедент, въехавший на рынок с модным комбайном на дотнете и жидко обосравшийся от отсутствия клиентов с железом под их говно. А потрачено на разработку было несколько лет.> ей даже в сеть смотреть не нужно. Налоговая уже два года как ебёт за такое. Хотя за МКАДом всё возможно...> А в дсах сплошь и рядом новые терминалы, в которых и paypass, и прочие атрибуты пост-бумерской эпохи есть, и работают они уже не на XP.Это ты из головы взял? Большинство банкоматов на XP, половина ДС на говне мамонта сидят, которое даже семёрку не вытянет. До сих пор DOS используется в POS, если ты не в курсе. Ты удивишься, но эту срань поддерживают в 2020 и даже апдейтят под новые законы. Никто не будет тратить деньги на новое железо, переучивание персонала, покупку софта и обслуживание его просто потому что какие-то пердолики решили не делать нормальную совместимость. Ты вообще в курсе во сколько встанет только обновление 1000 машин под свежую ОС? Кто за это платить будет? Кто обновлять будет?> paypassКакое отношение эквайринг имеет к ОС?
>>1563501И зачем туда лезть то? Работает как-то, ну и заебись, даже если с дохуя правильной сишкой или чем угодно туда лезть, то оно всё равно будет никому там нахуй не нужно. Пусть спокойно отгнивает. И хп, и дос, и коболы всякие.
>>1563501>Какое отношение эквайринг имеет к ОС?Какое отношение POS имеет к ОС?>Ты его вообще видел?Системный софт? Да дохуя. Но делается обычно не теми компаниями, которые называют "энтерпрайзом".>а клиенты готовы тратить миллионы на ненужное им железо, которое и сейчас нормально работает.Ну просто проебут на поддержке больше, как и те, что не захотели слезать с коболо, но мне лично похуй, а тебе?>Скорее кодеры пойдут новую работу искатьНу, я из такой галеры сам съебал бы, благо что выбора дохуя.>Налоговая уже два года как ебёт за такое. Хотя за МКАДом всё возможно...Ну я не с 1С работаю (видимо, в отличие от кое кого), прости, не знал таких подробностей.>Ты удивишься, но эту срань поддерживают в 2020 и даже апдейтят под новые законы. Никто не будет тратить деньги на новое железо, переучивание персонала, покупку софта и обслуживание его просто потому что какие-то пердолики решили не делать нормальную совместимостьТы удивишься, но что налоговая, что почта сидят на новом софте (с этих двух парашах я сам был свидетелем этого). Правда, железо-то почти никто не обновлял, ибо деньги видимо ушли на жоповозки и жопогрейки главных кабанчиков, и клерки люто хейтят всю эту новую хуйню, лол.>Ты вообще в курсе во сколько встанет только обновление 1000 машин под свежую ОС? Кто за это платить будет? Кто обновлять будет?Ну как кто? Клиенты.
Анонзы, такой трабл. Есть, короч, макрос, которой рекурсивный. Ну, тип, такойMACROS![a,b,c,d]трабл в том, что эти abcd у меня лежат в векторе v, а реально их не 4, а гораздо больше. Может кто подскажет, как развернуть вектор вовнутрь макроса значениями, если их число заведомо известно? Скажем, для 9 значений чтоб можно было написать что-то типа такого:MACROS![unroll_nine![v]]что ни делаю - всё какая-то хуйня получается.
>>1564050$foo:tt вместе со скобочками не пробовал? Хотя я не понимаю, нахуя надо анроллить вектор в переменные. Чего тебе от этой фигни надо? Есть же remove() и swap_remove().Вообще, рекурсивные макросы такое себе, там же потолок низенький на рекурcию. В залуп никак не превращается?В общем, рассказывай, нахуя тебе анроллить вектор, тут без примера не разберёшься.
>>1566063> #![allow(dead_code)]> #![allow(unreachable_code)]Сигнатура файла в формате .rs блеать. Какой вообще смысл по умолчанию это запрещать, если все всё равно в начале каждого файла пишут директивы для выключения этих запретов? Почти как в перле с его use strict/use warnings.
>>1566467Лол, но нет. unused_imports под use super::*; в тестах или в автореф макросах, но никак не на весь файл. Дед код никогда не разрешал, а анричебл только однострочные паники или ретёрны после бесконечного лупа, так, на всякий случай.
>>1562210> ещё ни разу никто не написал, что эти шприцы означают.Зумера... Гугли box plot или "ящик с усами". Это классика, школьник, это знать надо!
Можно ли на расте писать в функциональном стиле? На работе плюсы+питон выдался перерыв, и я в какой-то момент от безделья загорелся функциональщиной: чистые функции, ссылочная прозрачность, вот это все. Раст с его запретами на кучу мутабельных ссылок и временами жизни пока что для меня выглядит как идеальный кандидат под это дело. Сам сложнее калькулятора ничего на нем не писал, да и тот скопипастил будучи студентотой два года назад.
>>1574034Ты случайно не из тех, кто считает, что "скрипты" могут быть написаны только на интерпретируемом языке?
>>1574103скрипт это сценарий, интерпретируемый интерпретаторомрастс компилирует код в машинный код исполняемый процессором
>>1574098Можно, пиши.Но лучше сперва попиши на хачкеле, после него функционально будешь на чём угодно писать.
>>1574151А сколько должно пройти, чтобы найти работу на плюсах?Я знаю несколько таких человек, один еще учится в маге.
>>1574191Да мне просто интересно, откуда в плюсах появляется новая кровь тогда, если там все сразу миддлы. Вот умрут все миддлы и сениоры от старости, кто их говно поддерживать будет? А новое писать?
>>1574209Гу как же. Поступают в аспирантуру в говноНИИ, набираются формального опыта и идут в норм конторы.
>>1574792actix-web для бекенда, репа: https://github.com/3beyond/3beyondдля фронта вуе с нпм/вебпаком и всем вытекающем
> Issue history summary:> > Found by Shnatsel> Closed as harmless to users by fafhrd91> Proven harmful to users by Nemo157 and reopened by JohnTitor> Fixed and closed by fafhrd91> Proven unfixed and proposed new patch by Nemo157> New patch commented "this patch is boring" by fafhrd91> Issue is deleted> Fix is reversed by fafhrd91, issue still present>
>>1574884Бежал бы ты с актикса. Мейнтейнер необучаемая микрософто-обезьяна. Мало ему было прошлого раза, так он опять устроил хуйню с "ваш патч скучный".Но вообще меня интересует, пишет ли кто под WASM на расте.
>>1575656да я думаю найти похожие фреймы с поддержкой multipart и типо того, хотя actix-web будет довольно таки сложно заменить>>1575630ну напишем еще 10 фреймворков
>>1574191>А говорили, что на крестах джуны не нужны. Что там дядьки старые 10-20 лет опыта.Старые дядьки хотят много денег, их увольняют, или сами уходять.А дерьмокод высерать нужно.Так что спрос на студентиков в крестах большой, в дьмогеймдев в основном.Я как вспоминаю одну геймдев контору, в которую я не прошёл собез, так страшно становиться, какой-то бомжатник, зп днищенские, хрюша ебнутая, всё в каком-то полумраке, офис холодный.Правда была как минимум одна хорошая контора, чисто внешне, тепло уютно, правда она филиал какой-то европейской. И в то время, в 2012, они уже во всю набирали жаваскрипт девелоперов.Типичная поделка крестопрограммистов это например МИР ТАНКОВ, которому виндовс рунртайм длл нужен, даже представлять страшно какой там дерьмокод внутри.
>>1539530 (OP)https://github.com/actix/actix-web/issues/5Вот, пожалуйста! Отличный пример коммьюнити раста - набежало сэжэвэ и начало ныть, мол "а чего это ты удалил проект, ммм?!!! ты подставляешь коммьюнити!!!! а ну вертай все взад!!!".
>>1576185Хорошо же.Пердаком дева можно греть целую планетарную систему теперь.А если этот омежка вернёт проект, то это шин вообще будет. Одни плюсы, бомбит и работает бесплатно.
https://github.com/microsoft/veronaНу шо почаны, время оценивать что там высрал мс.На первый взгляд там больше раста концепций из pony напиздили.
Недавно чисто случайно увидел статью: https://habr.com/ru/post/483142/Суть в следующем: "Наша команда Immunant любит Rust и активно работает над C2Rust — фреймворком миграции, берущим на себя всю рутину миграции на Rust."Я офигел, это же автоматическое воровство кода растом в промышленных масштабах! В комментах кто-то проверил:$ find ~/prog/ioq3 -name ".rs" | xargs cat | grep unsafe | wc -l9241$ find ~/prog/ioq3 -name ".rs" | xargs cat | grep fn | wc -l9740В переводе с баша на русский: в коде 9740 функций, из них 9241 - unsafe.https://tsar1997.blogspot.com/2019/12/blog-post.html#comments
>>1576501А можно пользоваться растом и либами, но шоб без таких говноедов?Вон как в джавке - пошел и скачал с мавена.
>>1576507>мавенатолько если будешь свой плагин писать, не прописывай artifactId как maven-<plugin>-<name>. швятой COPYRIGHT INFRINGEMENT же.
>What sews resentment is being repeatedly dismissive of serious problems, as we're seeing with this hackish use of 'unsafe' features - that's an attitude that diminishes the self-worth of others.Ебанутые фанатики, поборники ЦЕЛЬНОСТИ развалят раст к хуям. вижу ансейф@тригерюсь
>>1576679Хз, я там в подробности не вникал, но если нет очень конкретных причин использовать унсейф, то делать этого очевидно ненужно.Я привык байтоебить мне лень ваш раст изучать - это не весомая причина.Как я понял, при использовании этой библиотеки может возникать неопределённое поведение, что есть гроб кладбище пидор.Подобная хуйня как раз одна из тех проблем с которыми раст призван бороться.Потому что маленький кусочек дерьмокода может скомпрометировать целый огромный стек.
https://habr.com/ru/post/484436/Я хоть не любитель раста, но в восторге что погнали санными тряпками говнокодера, который делал продукт ради бенчмарков. У гоферов бы такое комьюнити.Мое уважениеА теперь по теме. Стало очевидно, что оставив возможность unsafe раставчане тупо оставили окно в С++. Теперь нельзя быть уверенным, что в очередном йоба-проекте, очередной йоба-разработчик не захочет говнить unsafe кодом.Вы потенциально оставили дверь черного хода открытой.Мои поздравления
>>1576221Забавно что эти как раз таки и смогу сделать что-то годно и юзер-френдли.>>1576282> classЧет не нашел. Там рили хотят ООП или просто типы?
>>1577237Ну и помойка же хабр.Автор мудила, да.А с унсейвом там не то. Дело не в том что там унсейв как таковой, а унсейв там ломающий компилятор, тоесть там 'хак', который в любой момент может начать приводить к сломанному коду на выходе.Автор использует этот хак чтобы срать буквально сишкой уже.Это не преднамеренный функционал, это неверное его использование.
>>1577293То, что /pr/ лютая параша с больными людьми, автоматически не означает, что я не должен его читать.
>>1577288Несомненно. Но это не отменяет факт, что хабр всегда был вторичной парашей для недалёкого быдла, а сейчас это просто форум с посредственными переводами англоязычных статей.
>>1577296>Но это не отменяет факт, что хабр всегда был вторичной парашей для недалёкого быдлаИлитарий закукарекал.Хабр это пока что лучший ресурс по АйТи на русском языке. Не согласен? Назови альтернативы (спойлер: ты не сможешь)
>>1577302Любой программист по умолчанию теперь должен учить английский? А как же русская школа программирования, вот это все?
>>1576282А в чём проблема-то? Ну класс и класс.>>1577241>Забавно что эти как раз таки и смогу сделать что-то годно и юзер-френдли.В-е-н-д-о-р-л-о-к. Даже при игре в опенсурс, однохуйственно там и рантайм лучше будет на винде, и фичи по требованию мс будут моментально попадать в язык минуя коммунити (как у эпла с последним свифтом), итд.>Чет не нашел. Там рили хотят ООП или просто типы?https://tutorial.ponylang.io/types/classes.htmlНаследования в том же пони нет, у них в примерах тоже. Это типы, на какой-то хуй названные классами. Очередной триумф парадигмы над практичностью, шо.
>>1577453>В-е-н-д-о-р-л-о-к.Выбирайся уже из криокамеры, дотнет 5 будет полностью кроссплатформенный (смотри в новостях), то есть net core станет основным. Есть годный typescript, vscode. Что что, а мягкие умеют делать инструмент для разработчиков (и да, по тестам уже сейчас net core в достойном топе)
>>1577562>Какой ЯП?Было глупо это спрашивать в Rust-треде, наверное. В свое оправдание скажу то, что я промахнулся мимо МВП-треда.
>>1577580Хз, не сижу на хабре. Но видел, что наши программисты пилят компиляторы какие-то, лекции о нужности языка делают и тд. Только выглядит это всё плачевно на фоне того же vlang, который создал один человек. Будто не могут нормальный кроссплатформенный компилятор написать.
>>1577589>vlangРеально годная штука, может попишу чего-то на нем когда-то. Спасибо, анон!А вообще, было бы интересно увидеть объединенный тред альтернативных продолжений/переосмыслений C (Nim, D, V, Fantom, Cyclone, Pike - тысячи их).
>>1577658Когда ещё те хипстеры в конце 2000-х - начале 2010-х вовсю рубили на рельсах, уже тогда я предрекал руби ненужность и даже немножк его хейтил. Почему? Да потому, что ещё один питон, только с кучерявым синтаксисом. А питон тем и хорош, что это такой единый скриптовый язык для всего, с кучей батареек.Вот эти все альтернативные языки примерно о том же - не взлетят, покуда не предоставят принципиальных отличий от уже имеющихся. Вот когда появится такая тема:прогеры всего мира: "Боже, как мы заебались с проблем-нейм, половина рабочего времени на неё уходит"авторы нового языка: "Чуваки, ай-да к нам, у нас есть решение для проблем-нейм"тогда можно паковать манатки. А до тех пор никто не будет валить на эти языки с языков с коммьюнити и кучей готовых либ.
>>1577828Руби более продвинут, чем унылый высер Гнидо Обоссуна.Пердон взлетел потому что это легкая встраиваемся параша, которую может взять любой человек, даже не являющийся программистом и напердолить быдлоскрипт по фасту. Приблизительно по той же причине, например, рнр был сверхпопулярным языком в вебе. Не знаю о каких принципиальных отличиях ты говоришь. Принципиально есть несколько парадигм, несколько систем типов, конкурентных моделей, видов полиморфизма и все. Все остальное это детали, а не что-то принципиальное.
>>1577996>рнр был сверхпопулярным языком в вебе.Его популярность была в том, что не надо было писать веб на сях или перле, при этом ты писал как на упрощенных сях.Ну и конечно удобная реализация на хостинга.Питон в те года выглядел как нонейм с экзотических синтаксисом и экзотическими проблемами поехавшего одиночки, до версии 3 было далеко, а пхп уже с 5 версии стал вменяемым (питон и с 3 версии не особо стал адекватным).Сейчас питон имеет тучу всяких фишек, но все как-то через одно место, через грязные фантазии Гвидо, видимо.
>>1577665Лол, модератор пост про опенсорс пятого шарпа потер. Какого-то ущербного сюда привели. хороший повод сленять отсюда
Ну че токсики, как поживаете? Уже научились как правильно писать на rust? Подготовили свои анусы попенсорц проекты?
>>1578217Python + C (~80% / 20%)мимокрокодил, не понимающий какое удовольствие писать все время на низкоуровневом языке
>>1577996>Руби более продвинутно он не настолько продвинут относительно питона, как раст относительно сей/плюсов. Т.е., он не решает каких-то настолько принципиальных проблем , чтобы на него вот прям массово повалили.>легкая встраиваемся парашане легче lua, не в этом дело.
>>1578759Ну еб вашу мать. Только решил на работе начать проект на актиксе - на следующий его снесли. Только начал проект на варпе - актикс вернулся. Пидоры хотя варп очень даже неплох на самом деле
>>1579075Брать для работы и бизнеса низкокачественные продукты, каких-то херов, которые то обижаются то не обижаются и пишут код чисто под бенчмарки почти как на си?Это все что может дать раст за эти годы, этот кустарный уровень производства?Даже го со встроенным http выглядит не так ущербно.
>>1579174Посто в раст набежало крестовиков и сидебилов у которых и гото это норм. Это было неизбежно видимо. Пройдёт время и они переварятся. Бугурты и профиты со всякими артиксами это хорошо, значит сообщество живое и активное.
>>1579174>>1579223Кстати, это всё вскрывает истинную суть байтоёбов, сишников и крестовиков, они просто неумеют в структурированное программирование. Дело не в контроле байтиков, а в том что эти овощи вообще не думают о пробллемах вроде ошибок доступа к памяти, когда высирают очередную лапшу. Отсюда столько багов с выходом за границы буфера блядь в 3жды переаудитином ссл или любой другой ключевой либой.
>>1579174> Брать для работы и бизнеса низкокачественные продукты, каких-то херов, которые то обижаются то не обижаются и пишут код чисто под бенчмарки почти как на си?Well, обычно при выборе либы я смотрю на количество звездочек/коммитов в репозиторий, а не на треды на реддите. Возможно стоит пересмотреть свой подход.> которые то обижаются то не обижаютсяА мы же помним еще про left pad, да? Думаю тут проблема не конкретного языка все таки.> Это все что может дать раст за эти годы, этот кустарный уровень производства?Ну да. Без нормального использования в продакшене нихуя и не появится. Причем так, чтобы сами конторы коммитили обратно в open source. > Даже го со встроенным http выглядит не так ущербно. Как жаль, что сам язык хуевый.
Раст - убийца си и крестов. Скриньте, через лет 10 весь системный софт будут писать на нем, и огромная часть проблем (бинарные эксплуатации тащемта) уйдет в историю, так как уж больно мощный импакт у таких атак. А софт, написанный неговнокодером на расте, заовнить практически нереально, все типы переполнений и гуляющих указателей идут строго нахуй. Хз чего вы ополчились против ржавого
Новичку без бэкграунда вкатиться в раст чуть менее чем нереально, да? Ну в смысле синтаксис очень сложный?
>>1579421> benchmark> hello world> в растокоде используется макрос, который оверхуилядр раз перевыделяет памятьавторитарно...
>>1579429> > benchmark> > hello worldТы бы хоть разобрался ради чего он.> > в растокоде используется макрос, который оверхуилядр раз перевыделяет памятьНапиши свой пример.
>>1579432> Напиши свой пример.системкол + статиккстати интересный факт, в том же бенче в сикоде используется не printf, а puts
>>1579421Какая нахуй разница в 0.0000000000001 наносекунду, если на расте можно писать безопасный код, в отличие от Си?Железо сейчас куда мощнее, чем в 70ых, эти 0.00000000001 наносекунды не имеют никакого значения даже в хард РТ проектах, если тебе при этом дается буст в 300% в плане безопасности.
>>1579524дальше то что? в примере си использует вывод статичной строки через puts, пока раст раскладывает твой println в еще дохуилен аллокаций, строк и прочего...если коротко: было бы куда честнее использовать в си printf или в расте еще дописать функцию для вывода
>>1579527скриптопараша и гц не годятся для системного программирования, в скриптопараше не находят бинарные уязвимости
>>1579560>скриптопараша и гц не годятся для системного программирования, в скриптопараше не находят бинарные уязвимости У скриптопараши и GC основная проблема - это проблема Мюнгхаузена, что бы написать на них операционную систему нужно что бы операционная система уже была написана, а вовсе не проблемы с производительностью.
>>1579605Слышал, что rust сложный. На уровне C++, а в некоторых моментах сложнее. Миф? Правда не сложнее Си?
>>1579421println! в паре с opt-level=s, а чувак ещё и удивляется. Просто какое-то уёбище, которое смогло выучить три команды на ассемблере пытается что-то кому-то доказать, но не может даже элементарно прочитать, что делают команды компилятору и почему раст по дефолту импортит std prelude, а в эмбеддед надо указывать #![no_std]. Вот когда у этого долбоёба стек переполнится, он охуеет это дебажить, а любой белый растер сразу узнает что случилось из ошибки. И вместо того, чтобы дебажить ассемблерный код и проблемы с памятью, в расте остаются только проблемы логики, которые изи ловятся юнит-тестами. К тому же в любой программе сложнее хелловорда компилятор оптимизирует лучше долбоёбов-ассемблероёбов, которые даже в кроссплатформенность не могут.
>>1579824Ну, у Си сложность в вылавливании утечек, выходы за границы, UB и тд. Но синтаксиз не сложный. А у rust что? Подумываю для embedded вариант, но отпугивали мифы о сложности.
>>1579797Смотри, есть две стороны сложности: сложно в обучении и сложно в бою. Раст сложен в обучении: сразу и борроу чекер и очень-ёбаный-рот-ты-не-можешь-сам-превратить-мне-i32-в-i64-почему-я-должен-сам-это-указывать-ебучий-ты-раст? сильная типизация, и деление на safe-unsafe, которое невозможно понять, не имея глубокого понятия UB. Но потом, когда ты ебошишь либу или программу, ты понимаешь, какие проблемы могут вылезти и почему они могут вылезти, поэтому они не вылезают, пока ты не обосрёшься с usnsafe'ом в своём коде или кто-то другой не обосрётся с ансейфом в либе, которую ты юзаешь.В си наоборот — выучил пару типов (инты, були, указатели), пошёл кодить. Но потом ты охуеешь, когда у тебя вылезет UB, а ты не знаешь, что такое UB и почему на одном компьютере твоя программа выполняется, а на другом крашится. В итоге ты вместо пары недель на обучение тратишь по дню на каждый новый баг. В итоге через четырнадцать багов ты проебёшь времени больше, чем на обучение по книжкам раста. А багов будет много.В крестах кроме тех же проблем, которые есть в си, ещё есть проблемы OOP, проблемы с тем, что вместо std либы надо учить boost и другие best-libs, которые ещё хуй найдёшь, ещё проблемы с линковкой, которые тоже охуеешь дебажить. Ещё в крестах надо учить best-practices, но ты не узнаешь про эти бест-практисы, если тебе кто-то другой не подскажет.А вот в расте все эти бест-практисы в книгах и учебниках уже есть. К тому же в расте вместо OOP, который часто убивает производительность (намного чаще и намного сильнее, чем ты думаешь), система трейтов. Трейты позволяют и множественное наследование и всякие другие вкусные штуки. Ещё есть макросы. Макросы сложны, но просто невероятно охуенны, когда ты научишься их писать. Они даже позволяют делать то, что нельзя пока что делать другим способом:https://github.com/dtolnay/case-studies
>>1579870А кто мешает юзать что-то одно, пока не выучишь другое? Пока не выучишь итераторы, не юзай функциональщину. Пока не хочешь лезть в лоу-левел, не юзай императивщину. Но вот если ты делаешь функцию по типуfn foo<T>(iter: impl Iterator<Item=T>, other: impl Iterator<Item=T>) -> T { for _ in iter.zip(other) {/ do thing /}}То тут надо уже знать, что такая штука хуёво раскладывается для Chain итераторов, и надо вместо этого писать iter.zip(other).for_each(|a, b| {/.../});В общем, для неких вещей надо чётко понимать, что они могут и как работают. А так я не понимаю твоих претензий. Функциональщина удобна на хай-лвл кодинге, а императивщина на лоу-лвл.
>>1579870Нет никакой разницы с современными плюсами. Кроме разве что той, что плюсовый компилятор тебя не бьёт по рукам за проёбы, и использует их для оптимизации собранного бинаря.
>>1579852> Раст сложен в обученииНет.>>1579797>Слышал, что rust сложный. На уровне C++, а в некоторых моментах сложнее. Миф? Правда не сложнее Си? Если ты на Си НЕ кодил, то тебе будет сильно проще чем если ты уже матёрый Си кодер.О сложности раста говорят Си мартышки, очевидно, которые просто не могут переобучиться.Они думают что это будет как Си, а это совсем не как Си.>На уровне C++С++ - помойка, нет ни одного компилятора реализующего стандарт, и нет 2х компиляторов реализующих одно и то-же подмножество стандарта.
>>1579841>Но синтаксиз не сложный.У Форта совсем простой, и че, думаешь легко учиться на форте писать?
>>1579421О, очередной даунич сравнивает абсолютно разный код. Тащемта ничего не мешает тебе также дернуть низкоуровневую сишную функцию из раста, да, и будет прям как в си https://lifthrasiir.github.io/rustlog/why-is-a-rust-executable-large.html .
Поясните, что такого безопасного делает раст, чего не может C++? Допустим у меня есть динамический массив на 10 элементов, и идет доступ к нему по индексу введенному пользователем. Пользователь вводит 1000 и программа соответственно крашится. Как от этого защищает раст? Компилятор ведь не может предугадать, что введет пользователь. Да, он может вставить проверку на размер этого массива, но что если дальнейшие инструкции программы зависят от этого самого элемента?
>>1580802ну, тебе не обьязательно проверять длину массива, если ты используешь вектор то можешь на нем .get(idx) применить и получить опциональное значение
>>1580802Если ебашить unafe { .get_unchecked }, то никаких отличий.А если делать так >>1580821 то проверка вставится сама собой. Не только на размер массива, но и в куче других случаев.
>>1580821Так значит этот .get уже содержит проверку на индекс с условием возврата опционального значения. Но ведь я могу точно так же и в C++ написать функцию которая проверит индекс и вернет опциональное значение. Так в чем тогда заключается эта супер безопасность раста? Допустим вот такой псевдокод:vector array;array.reseize(10);a = array[228]; //228 было введено пользователем и неизвестно при компиляцииa.field1 = 1488;В С++ такой код крашнет программу, а что будет в расте?
>>1580828а, ну безопасность как раз таки не в твоих массивопарашах (олсо там просто панику вызовет при попытке индексировать массив за пределами, почему хз), а в бороучекере и строгих правилах передачи ресурсов.Если коротко: у переменной может быть только один овнер, который если захочет позволит давать доступ к свой памяти (Rc, RefCell, Arc, Mutex etc). Вообщем на расте куда проще писать код в том плане, что компилятор тебя пошлет нахуй, если ты захочешь сделать к примеру глобальную переменную между потоками, так как такая переменная не будет иметь типаж Send
>>1580835>Вообщем на расте куда проще писать код в том плане, что компилятор тебя пошлет нахуй, если ты захочешь сделать к примеру глобальную переменную между потоками, так как такая переменная не будет иметь типаж Sendну это имеется в виду любое, что Send типажа не имеет, к примеру любой примитивный тип, строчки.А еще раст четко определяет лайфтаймы у референсов, тут нельзя как в си параше выделить поинтер и запихать его в овер9001 йоба структур, которые будут до конца жизни программы вертеться. если конечно изначальная переменная не статична
>>1580835Так в С++ есть же unique_ptr, shared_ptr, weak_ptr которые все это реализуют и ограничивают владение.
>>1580162>нет ни одного компилятора реализующего стандарт,Как понять что растомразь пиздит? Она открыла рот.
>>1580865Так он же сам блять заюзал move семантику и передал ресурс другой переменной. Если бы он написал auto stolen = orig компилятор его бы тоже нахуй послал.
>>1580873А в этом случае почему не посылает? Спокойно компилирует, потом вываливает сегфолт. Это норма?
>>1580876Не норма, но крестовикам что ни пихни, они скажут "Мы так не пишем!" Гении ебаные не ошибаются никогда.
>>1580876Ну да, то что дефолтный компилятор это не детектит хуево конечно, но есть же различные санитайзеры которые обнаруживают это.
>>1580889А вот сейчас бы язык, в котором такой санитайзер прям сразу был, полезная ведь штука. Вот бы кто-нибудь сделал.
>>1585292ну у меня поэтому и появилась идея тоже самое в своем пулреквесте сделать) как раз таки на тот момент мадоку досматривал
У кого-нибудь есть актуальные (2020 года) примеры actix-web + tokio-postgres? Как я понял, они в очередной раз переписали все и я на всех примерах ем говно ведрами.>error[E0495]: cannot infer an appropriate lifetime for autoref due to conflicting requirementsДа пошел ты нахуй, сука-мразь.
>>error[E0495]: cannot infer an appropriate lifetime for autoref due to conflicting requirementsМеня эта хуета в край доебала. Я даже пример из интернета не могу запустить: https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/Rust/actix/src/db_pg.rs#L107-L131Вот такая ошибка вываливается у меня:https://pastebin.com/dxsFizTqАнон, помоги, иначе придется выкатываться из этого злоебучего говна, все нервы мне уже сжег обоссанный компилятор
>>1587428self.client возвращает референс, а не значение. Ты не можешь собрать референсы в Box, потому что Box может жить вечно, а твои референсы живут только пока живёт &mut self.
>>1587794Точнее, не self.client, а весь чейн, который начинается с self.client. Этот чейн возвращает референс с лайфтаймом как у &self, ты этот референс пихаешь в вектор, а потом пытаешься вернуть из функции эти референсы на временно созданные внутри функции итемы.
>>1587795>>1587794Я вчера примерно после третьей банки пива так и подумал, но спасибо, что смог это вербализовать, потому что у меня кроме "бля" и "пиздец" слов не было, настолько я преисполнился в своем сознании. Как же хорошо в Питоне было, сидишь, обмазываешься строками как хочешь...Теперь надо понять как эту хуету вылечить.И да, ты можешь как-то оценить тот код из бенчмарка, который я скинул выше? Почему он работает? Там же в https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/Rust/actix/src/db_pg.rs#L114-L116примерно то же самое происходят - берется self и его мемберы, пихаются в вектор, а вектор потом внутри футуры разматывается. Футура, в свою очередь, уже в хуй пойми какой зоне видимости.
>>1588172Хуйня в том, что в моем коде, который вызывает ошибку, тоже значения вроде бы пихаются: https://pastebin.com/jpGaM6Sw
>>1588186Я не вижу твоего определения PgConnection, а потому не могу ничего сказать. Весь нужный код дайте, пожалуйста.
>>1588521https://pastebin.com/TqZEWfAJClient и без Box тоже не работает, я уже от безысходности перебором начал решения искать, изначально Box не было.
>>1588589Есть подозрение, что проблема в query_one()https://docs.rs/tokio-postgres/0.5.2/tokio_postgres/struct.Client.html#method.query_oneТам четыре лайфтайма в функцию заходит. И это грустно. А так да, вроде как всё заовненное выходит.
>>1588598>>1588521>>1588172Короче, спасибо тебе, анон. Я нихуя не доволен результатами расследования, так как пришлось въебать кучу документации, тем не менее ты помог сдвинуться с мертвой точки. Родина тебя не забудет.Более детальные ответы я смог найти здесь:https://users.rust-lang.org/t/lifetime-of-object-captured-in-future-a-solution/13663https://users.rust-lang.org/t/help-with-static-lifetime-on-self-when-using-async/31482
>>1585300>>1585292Лет через надцать подросшее поколение кодеров будущего будет клясть на чём свет стоит старпёров-зумеров с их протухшими мемасиками и отсылочками в коде.А может и раньше, эти анимы выходят и забываются со страшной скоростью.
>>1590870>евуЭто как "Ромео и Джульетту" сравнивать с современными любовными высерами для чтения в поездах и залах ожидания. Немного утрирую, но суть та же.
https://developers.google.com/web/updates/2019/12/webassemblyВ хром завезли поддержку DWARF. А значит отлаживать WASM должно быть гораздо легче.
есть ли либы типо image для асинхронного чтения картинок? нужно из мультипарта сейвить картинку и ее тамбнейл на лету, как такое сделать асинхронео в image или png крейтах я хз
Хочу запилить маленький веб сервис потоковой музыки/видео. Думаю вкатиться в раст, много слышал про него, да и сам по себе внешне нравится язык.Компилируется не так же долго и хуево, как кресты?Что там за особенность одиночной записи и множественного чтения объекта? Как полагаю, это и есть то самое, чому раст типа безопасен.
>>1594049>раст типа безопасенВесь раст построен на unsafe, лол. О какой безопасности ты говоришь? Все бенчмарки, где раст рвет гоу, джава и дотнет - это просто авторы фреймворков и библиотек выдрачивали перформанс, переписывая проект на ансейф, лул.
>>1593923Ну ты берешь крейт с асинхронным получением мультипарта, получаешь Stream<Bytes>, и пишешь сырые байты в память/файл как угодно.
>>1594181> эти байты надо раскодировать, ибо картинка сжатану то есть я представляю это как то так:есть парсер png со всякими адам7, deflate и прочей жестью, оно на вход получает поток байтов и валидирует их, попутно обновляет состояние, кидает ошибку если нужно.ну то есть обычный такой future::poll, вот только такого я увы не в image, не в png не нашел, даже просто закидывание байт без асинхронности, только если целиком все и сразу...
>>1594181Ну заверни в нужный декодер свой стрим, оно будет налету декодировать твой deflate. А по поводу валидации - я не знаю формат твоих картинок, но вполне модет быть, что нельзя ничего валидировать, пока оно не будет все в памяти. Или пиши свою очень сложную хуиту, которая будет нлету проверять структуру байт.
>>1593923https://github.com/image-rs/inflateвот, в том же image всё уже есть. В самом низу пример - он уже готов для асинхронности. Распаковал пачку байт - передал другому потоку на запись, а в текущем потоке продолжаешь распаковку.
>>1594915А теперь признавайся - полюбас или тестовое делаешь, или по работе.Заебала жаба, возьмите меня к себе.
Здравствуйте растияне. Как выглядит ситуация на данный момент в плане популярности этого языка? Вырасла ли она за последние годы или осталась прежней? Я слышал, что бэкенд Дискорда на Раст переписали.
>>1597262Ну, вот собрался ты свою распаковывалку deflate потока писать. Берёшь и без задней мысли хуяришь прямо на диск всё, что там нараспаковывалось в inflate - а там терабайт нулей. Эт во-первых.А во-вторых, извлекать поток прямиком на запись ещё и бессмыссленно, т.к. ФС всё равно будет буферизировать данные в памяти и только потом скидывать на физический носитель сразу крупными пачками.Проще и безопаснее принять данные, валидировать, а уж потом куда-то там писать или не писать.
>>1597277В пнг вроде зипа нет.Зачем картинки читать вообще на сервере?Стандартные либы не имеют этих защит?>>1597278>Ну, вот собрался ты свою распаковывалку deflate потока писать.Нет спасибо.>Берёшь и без задней мысли хуяришь прямо на диск всё, что там нараспаковывалось в inflate - а там терабайт нулей. Эт во-первых.Ну тип элементарная проверка соответствия размера распакованного с указанным в метаданных.>Проще и безопаснее принять данные, валидировать, а уж потом куда-то там писать или не писать. Наверное. Думаю все же стримить в файл сразу разумнее, случаи невалидности по определению будут крайне редки. Лишние буферы раздувать то же не самая хорошая идея..
>>1597288> Наверное. Думаю все же стримить в файл сразу разумнее, случаи невалидности по определению будут крайне редки. Лишние буферы раздувать то же не самая хорошая идея..так прямо on the fly не ? получил с мультипарта данные, завалидировал, загрузил куда надо, еще и успеешь сохранить части тамбнейла на диск> В пнг вроде зипа нет.> Зачем картинки читать вообще на сервере?тамбнейлы> Стандартные либы не имеют этих защит?ну кто знает...
>>1597308>так прямо on the fly не ? получил с мультипарта данные, завалидировал, загрузил куда надо, еще и успеешь сохранить части тамбнейла на дискЯ немного не пони о чем ты.
>>1597313превью картинки, исходная допустим 1024х1024, а тебе нужно отобразить уменьшенную версию 256х256
>>1597329>превью картинки, исходная допустим 1024х1024, а тебе нужно отобразить уменьшенную версию 256х256Да, это понимаю. Я твоей фразы в принципе не понял. Что ты конкретно предлагаешь? Или спрашиваешь у меня?
>>1597333> Что ты конкретно предлагаешьасинхронно читать байтики из мультипарта...то есть в идеале, при получении, сохранять их в файл и еще раскодировать, что бы на основе их на лету создавать превью картинки
>>1597308>еще и успеешь сохранить части тамбнейла на дискСмысл распаковки, обработки и записи на лету есть только для больших данных, типа видео, например - вот там разрешаю, делай. А тамбнейлы твои всё равно будут копиться в памяти и фактически писаться на диск по мере накопления буфера на запись. И без разницы, где именно будут копиться данные - в памяти твоей программы, или в буфере ФС.Твой тамбнейл всё равно ни кому не дался, пока не будет сохранён полностью - тут ты и в раннем начале записи ничего не выигрываешь. Только переусложнишь код и создашь лишнюю нагрузку.
>>1597345> А тамбнейлы твои всё равно будут копиться в памятине будут, мы будем доставать байтики, уменьшать в n раз и сохранять на диск, хотя словарь будем хранить полностью как я понимаю
>>1597345> Только переусложнишь код и создашь лишнюю нагрузку.ну почему же? скорость до клиента маленькая, и если подумать, то когда приходят байтики ты просто часть обрабатываешь и наслаждаешься. в итоге можно аж секунды времени сохранять для каждого запроса
>>1597353>в итоге можно аж секунды времени сохранять для каждого запросаУ тебя накладные расходы на асинхронное взаимодействие "поток распаковки" -> "поток тамбнейла" отожрут процессорного времени куда больше, чем ты сэкономишь по сравнению со сжатием сразу готовой картинки. Хотя, для очень больших картинок возможно будет смысл резать их порциями по ~1МБ>>1597350>доставать байтики, уменьшать в n раз и сохранять на дискя так понимаю, знаний о том, как устроены современные ФС, у тебя нет от слова совсем.
>>1597368>я так понимаю, знаний о том, как устроены современные ФС, у тебя нет от слова совсем. Но ведь современные фс сделаны специально так, чтобы не нужно было знать, как они устроены..
>>1599473Лан, распишу подробнее. Современные ФС (и не очень современные) не пишут байтик сразу на физический носитель как только тебе это приспичило - сперва операции на запись копятся в кеше в оперативе.Отсюда первый вывод: в плане экономии памяти нет разницы - что ты будешь сразу писать по байтику (по сути в кеш в оперативе, а не на диск), что создашь тамбнейл и захуячишь его на запись целиком.Второй вывод: это не имеет смысла также в плане сохранения оригинальной картинки, так как крайне редко никогда тебе будут аплоадить что-то, превышающее по размеру кеш на запись.Третий вывод: это также бессмысленно в плане балансировки нагрузки, так как она у тебя и так будет равномерной за счёт множества клиентов. Скорее наоборот: чутка сгладив пики ты добавишь +5% нагрузки на ЦП собственно алгоритмом сглаживания этих самых пиков.разве только, если ты будешь запускать борду на ардуине с ограничением в 1 подключенного клиента - вот там такое пригодится.я тебе советую не страдать хуйнёй и отложить такие тонкие оптимизации на потом. Вот потом можно будет сделать чисто ради вау эффекта: например, чтобы новый пост с тамбнейлом начинал прогружаться ещё до того, как у отправителя поста его картинка загрузится на сервер. Ну и обновление треда по вебсокетам, ессно. Но чтобы в этом был смысл, нужно дохуя юзеров, а тебе до этого как до луны.
>>1600096> Лан, распишу подробнее. Современные ФС (и не очень современные) не пишут байтик сразу на физический носитель как только тебе это приспичило - сперва операции на запись копятся в кеше в оперативе.> Второй вывод: это не имеет смысла также в плане сохранения оригинальной картинки, так как крайне редко никогда тебе будут аплоадить что-то, превышающее по размеру кеш на запись.ой не пизди, сам файл идет по хттп, медленно пиздец, хранить это все в озу будет идиотизмом, ровно как и загружать с диска в памятьну и кстати, насчет тамбнейла: у меня загрузи/сделай тамбнейл/выгрузи после сохранение оригинала занимает пол секунды, и это только на одну картинки (юзал image крейт)> Третий вывод: это также бессмысленно в плане балансировки нагрузки, так как она у тебя и так будет равномерной за счёт множества клиентов. Скорее наоборот: чутка сгладив пики ты добавишь +5% нагрузки на ЦП собственно алгоритмом сглаживания этих самых пиков.то есть ты предлагаешь ждать ебучий мультипарт пару минут, что бы потом начать по полной загружать потоки, плодить процессы, вместо того, что бы во время загрузки генерировать тамбнейл или что?> Ну и обновление треда по вебсокетам, ессно.костыль же, чем это лучше запроса получению постов, чей номер выше последнего поста по таймеру?кстати, тот чел >>1599473 не я а борду я пишу
>>1600324>хранить это все в озу будет идиотизмомписать побайтово сразу на физический носитель - вот это идиотизм. Слава б-гу, современные ФС этим не страдают.>предлагаешь ждать ебучий мультипарт пару минут, что бы потом начать по полной загружать потокисправедливо только в случае однопоточной работы - я же не зря ардуину упомянул. А если у тебя единовременно аплоадятся 10~1000 картинок, то нагрузка будет размазываться и так, без всякого извлечения из мультипарта на лету.>чем это лучше запроса получению постов, чей номер выше последнего поста по таймеру?>занимает пол секундыну вот ты сам себе и ответил - твои эти сэкономленные полсекунды ничего не играют на фоне таймера в 15 сек. А экономить полсекунды есть смысл только при попытке максимально увеличить отзывчивость боды - тогда уже юзай вебсокеты - чтобы у юзера прям на лету всё было.извлекать мультипарт на лету есть смысл - только чтобы сэкономить память на его хранении. Но писать тамбнейл на лету никакого смысла нет - я об этом.
>>1600568> писать побайтово сразу на физический носитель - вот это идиотизм. Слава б-гу, современные ФС этим не страдают.то есть если я начну загружать 50 миб , и сразу сейвить на диск, оно будет все это в памяти хранить, ты ничего не перепутал.лучше закинь пруф на примере с ext4
>>1601050 загугли про vfs_cache_pressure и ext4 write cacheэто всё, кстати, можно отключить и писать, действительно, напрямую - но ценой снижения скорости и ресурса HDD.
Анончик, для питона есть такая штука - mako. Годный темплейтный движок, может в циклы и условия прям внутри темплейта. Есть ли что-то подобное для раста? Желательно, чтобы поддерживал работу на этапе конпеляции - буду шейдеры им генерить.
>>1602362А как именно ты хочешь генерировать шейдеры? В расте есть два способа автоматизировать что-что во время компиляции: процедурные максросы, которые превращают расто-подобный псевдокод в растовый код (можно даже С++ встраивать, пикрил) и build.rs-скрипт, который по сути является отдельной программой (для него даже отдельные зависимости указывать можно), выполняемой до компиляции, где можно генерировать какой-нибудь код.