Это копия, сохраненная 12 апреля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
async/await наконец-то в стабильной версии!
ИТТ мы можем объяснить базовые и продвинутые концепции языка, и программирования в целом, поможем вкатывающимся, подскажем что выбрать для веба, игр или, прости Абу, блокчейна.
https://www.rust-lang.org
Продолжение шапки: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41
Предыдущий тред: >>1456440 (OP)
Я правильно понял значение радужного флага? Ну всё, дизлайк, отписка...
Это же тред CoCолдов, хуле ты еще хотел.
>реал-тайм системы в вебе?
Что это вообще должно значить?
хттп и сокет либы есть
васм собирается
Хуле тебе еще надо?
Ржавые, все прошли опрос? Погнали жаловаться на дерьмовое коммьюнити в Рашке, кто ещё не голосовал.
https://blog.rust-lang.org/2019/12/03/survey-launch.html
А чо оно дерьмовое то? Или ты по даунам с оранжевой борды судишь?
Вот поэтому у Раста коммьюнити лучше, у нас нубу прямо со входа в лицо пихают Code of Conduct, в котором белым по красному написано: "Не будь мудаком, сука!".
Тебя же уже тёрли, веб-макака, одного раза не хватило?
Как же хорошо что джява разрешает быть просто мудаком! Ларри Элисон разрешает лично своим примером.
язык то ахуенный, но тут две причины:
1) дизель сырое говно, не могущее в сабселекты, скл функции, футурки, да даже чистый скл код (слишком долго серилизируется через query_row, и то там хуйня)
2) макакам проще взять какой нить go/свифт/шарпапарашу/жабапарашу, потому что мол там либ больше, а еще модно
а вот на фочанах не особо умные доебываются до синтаксиса и идиом
>дизель сырое говно
А с постгрестным крейтом как дела обстоят не знаешь?
Пока хеллоуворлды шлепаю вроде проблем не заметил, но ни в какие тонкости не вникал
приеклиалсь
ну типо ты конечно можешь юзать сырую либу без дизеля (там даже ассинк вроде есть, но лично мне не удобно, лучше бы все это завезли в дизель)
>Больше либ вообще довольно странный аргумент.
С чего бы? Если тебя либы не интересуют, возьми Standard ML, прекрасный язык, но либ для веба там почти нет.
Язык без либ - ну тип хеллоуворлды на нём писать и одноклассникам на переменке хвастаться. Я бы не стал (и не стал до 2019) в раст вкатываться без либ.
Rust - это динамически типизированный язык.
let foo = 12;
let foo = "bar";
println!("{}", foo);
Кек. C++ с auto тогда тоже динамически типизированный? У тебя пример выглядит не так, как оно выглядит в динамической типизации. Вот если бы раст позволял тебе сделать так:
let mut foo = 12;
foo = "bar";
то он был бы динамически типизированным. А ты просто создал и инициализировал новую переменную, скрыв старую.
> но либ для веба
Если для твоей конкретной задачи нет либы, то проблема и тогда не вариант. А если есть хоть одна подходящая, то нахуя еще 20 таких же надо?
Больше всего либ для веба написано на пхп, так что надо на нём.
Язык с либами, но не для веба. Что-то для веба есть, но не очень много.
принт просто цепляет ближайшую подходящую
У тебя детектор сломался, я всю жизнь в России живу, беги чинить свой гаджет.
>>541299
Но мы не пилим язык, мы пилим программы на уже готовом языке, разве нет?
ну и зачем ты с lohomori спиздил цитату трехлетней давности?
Если начать пердеж бессмысленными терминами получается руст можно назвать мультипарадихменым?
Мне кажется, что Вы не очень информированны в данном вопросе.
В бинарники с rustup никакие анальные зонды не встроены?
те кто пишут футурку обязаны её разбудить по какому-либо событию. Это может быть как повтор через определенное время как ты описал, а может быть что-то завзяанное на ОС.
В токио пробуждение ведется через мио, что по сути евент луп с оберткой над сискалами epoll / kqueue / IOCP на разных ОС, т.е. ОС уведомляет тебя о приходе новых байт. Таймер в токио вроде бы сделан на отдельном потоке.
Мимо жертва Страуструппа, могу заблуждаться
@
выскакиевает обоссаный блокнот из индуских хеллоуворлодов ака реалворлд ехампле
@
смотришь код
@
адекватное мвс
@
с тестами
@
смотришь на автора
пиздец ты голова спасибо
подлизнул
а все томушто надобыло актикс юзать
чтоб потом переписывать 2281337 строк при каждом обновлении
Ну то есть нет мозгов.
Как родная асинхронность меняет поведение, которое описал я?
Никак, это просто синтаксический сахар над футурками и вместо my_future.and_then() теперь будет две строчки с .await?, под капотом все тоже самое. Вообще сильно смущает уровень растопогромистов, среди них к тому же полно джаваскриптеров.
> Как родная асинхронность меняет поведение, которое описал я?
Используются системные асинхронные методы вместо костылей.
> Вообще сильно смущает уровень растопогромистов, среди них к тому же полно джаваскриптеров.
Двачую. Пишут на Расте, а не знают как работает асинхронность в нём.
> Двачую. Пишут на Расте, а не знают как работает асинхронность в нём.
тыже вкурсе что в расте нет стандартного рантайма для футурок?
Это что, разрабы Раста сами не знают, что у них есть, а что нет? Хотя раз на даче говорят, то я поверю.
ты разраб раста?
Рантайма нет в std либе, потому что когда его туда добавят, удалять его оттуда будет невозможно. Будет какая-то ебля, как с Infallible типом, который почти невозможно теперь поменять из инариативного енама в синоним "!", потому что на этом инфоллибле уже код понаписан; уже джва раза отменяли стабилизацию этого never-type. Разрабы не хотят такого ещё раз, поэтому и не пихают рантайм футурок в стд либу. В стандарте только await есть. Но авейтить можно только в асинхронных функциях и блоках. В итоге последнюю футурку надо как-то самому авейтить, потому что мейн функцию нельзя делать асинхронной. Так что рантайма футурок в стд либе нет.
пишу нравится вроде получается хотелось бы хотябы на 10к где смотреть вакансии??
Нет работы кроме блокчейна, но туда джунов не берут.
Найди мне. Резюме сам напишешь.
Можно как-нибудь навелосипедеть для 13+ элементов свою сохраняя синтаксис и деструктуризацию?
Сделай нормальную структу.
Таплы — это просто безымянные структуры со всеми полями в pub виде и номерами вместо имён. Если тебе надо что-то сложнее — сделай не безымянную структуру.
Тебе не похуй, кто там все эти языки и библиотеки создаёт? Может, ты ещё и шоу-бизнесом интересуешься?
> напоминаю, что создатель языка - обосранный самоучка без формального образования
> РЯЯЯ, НУЖНА КОРАЧКА, БЕЗ КОРАЧКИ ТЫ НИХТО И БЫДЛА КОДИР!1!1!1! ЫЫЫЫЫ, ЧТО БЫ СДЕЛАТЬ СВОЙ ЯЗЫК НУЖНО ЗНАТЬ ВЫСШИЙ МАТАН!1
дай угадаю, ты пишешь на говне, которое создавалось быдлокодером за неделю, а потом "улучшалось" в течение несколько десятилетий?js
Что лишь в очередной раз подтверждает, что образование в классическом понимании этого слова - переоценено. Тем более образование компьютер сайнтиста или софтваре инженера.
как по мне это подтверждает лишь то что ржавчина - хайповый хипсторский проэкт с веселыми ребятами любящими переписывать мир заново
потому что без образования по специальности хуй бы его куда взяли
а так да, челик роботает час в эйпл, мечта сбылась, хули
> хайповый хипсторский проэкт с веселыми ребятами любящими переписывать мир заново
может комуто смешно, но так оно и есть лол, и в этом нет ничего плохого, так как раст является абсолютно новым уникальным языком, дада я про Borrow Checker
>раст является абсолютно новым уникальным языком, дада я про Borrow Checker
я конечно понимаю что ты жирнишь и троллишь, но, к примеру, еще/даже в, прости господи, borland builder 3 можно было подрубить (одной галочкой) адресс санитайзер и чекер массивов и он неплохо работал
да че там говорить, в сях подобным утилиткам сколько уже лет? 30? 40?
нужны, дружок, нужны
если ты самоучка и единственное что можешь написать в графе образование своего cv это то что ты "инженер по призванию"
@
НАПИСАЛ СВОЙ ЯЗЫК ПОГРОМИРОВАНИЯ, КОТОРЫЙ СТАЛ САМЫМ ЛУЧШИМ ЯПОМ ВО ВСЕЛЕННОЙ
@
ПОЛУЧАЕТ 300ККК В НС
ПЕТЯ С ОБРАЗОВАНИЕМ
@
НАПИСАЛ СВОЮ ПАРАШУ, ОБЕРТКУ ПОД СИ И ДОБАВИЛ ТУДА ООП И ТЕМЛЕЙТЫ
@
ПОЛУЧАЕТ 300ККК В НС
ТЫ С ОБРАЗОВАНИЕМ
@
РАБОТАЕШЬ В МАКДАКЕ
ТЫ БЕЗ ОБРАЗОВАНИЯ
@
РАБОТАЕШЬ В МАКДАКЕ
https://en.wikipedia.org/wiki/Memory_debugger
в с++ builder был интегрирован boundschecker если память не изменяет
меня еще ни один язык так не доставлял советую попробовать перед тем как тут срать ребята
потому что ты не осилил шедовинг и пытаешься воевать с компелятором
переменные идут %кей<тип>% -> /валуе/
если %кей<т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);
у тя одна мутирующая переменная
потому что ты не осилил шедовинг и пытаешься воевать с компелятором
переменные идут %кей<тип>% -> /валуе/
если %кей<т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);
у тя одна мутирующая переменная
руст применяется только в системщине?
> применяется только в системщине?
Он и в системщине не ок:
https://os.phil-opp.com/first-edition/
Я вот кстати думаю, что мнение про системщину не случайно появилось. Главная страница сайта раста поддерживает это. И вопрос: насколько это соответствует действительности? Firefox вот к системщине не относится.
мимо
Ну подожди. Вот смотри - сетевые приложения на нем писать - это постоянная анальная боль, т.к. разработчики полтора фреймворка постоянно меняют весь API при каждой минорной версии. Всякие веб-сервисы и прочий энтерпрайз тоже не тянет - нет библиотек да и писать на таком низкоуровневом языке тот еще квест. Остается какие-нибудь низкоуровневые демоны и прочая системщина, которая не ходит в сеть и не работает с многопоточностью. Но тут мы узнаем, что писать многопоток на русте - это снова анальная боль, т.к. стандартная библиотека не предлагает ничего, чтобы уняло эту боль.
Это я еще не говорю о поддержке со стороны IDE. На данный момент, "лучшая" поддержка - это плагин от Jetbrains для Intellij IDEA. Но там тоже не все так гладко.
Тут всё просто.
Системный это когда
1) Может функционировать из каробки без OS - зависимой рантайм библиотеки/фич языка.
2) Имеет прямой доступ к памяти без абстракций
3) Поддерживает структуры с однозначным отображнием в память - что бы можно было разные memory-mapped регистры у какой нибудь аудиокарты теребить.
То есть только сишка?
> Ну подожди. Вот смотри - сетевые приложения на нем писать - это постоянная анальная боль, т.к. разработчики полтора фреймворка постоянно меняют весь API при каждой минорной версии.
юзай стейбл версии, хотя отчастимогу согласиться, не слабо препекло когда актикс решили на async/await перенести
> Всякие веб-сервисы и прочий энтерпрайз тоже не тянет - нет библиотек
есть
> низкоуровневом языке
значение знаешь?
> Остается какие-нибудь низкоуровневые демоны и прочая системщина, которая не ходит в сеть и не работает с многопоточностью.
???
> Но тут мы узнаем, что писать многопоток на русте - это снова анальная боль, т.к. стандартная библиотека не предлагает ничего, чтобы уняло эту боль.
ты си описываешь? в расте изподкоробки есть Arc, Mutex, Atomic, Rc, RefCell, Weak etc..
> Это я еще не говорю о поддержке со стороны IDE.
IDE - нинужно, есть сублайм с rust enchancment
> На данный момент, "лучшая" поддержка - это плагин от Jetbrains для Intellij IDEA. Но там тоже не все так гладко.
сорта говна
просто напиши своё
К чему все эти отрицания? Ведь библиотек нет, а те что есть не позволяют писать типичные проекты с той же скоростью, которые предоставляют мейнстримовые языки.
На счет IDE ты зря. Ты же не малолетний дебил, который пишет на джаваскрипте? Rust - язык со строгой статической типизацией. Тут IDE как раз нужна с хорошей поддержкой все языковых конструкций и фишками присущими любой нормально IDE - автокомплит, подсветка некорректного кода, дебаг и еще много чего.
Т.е. область применения этого Раста довольно узкая. На сайте пишут о встроенных проектах, сетевых сервисах и консольных утилит, но здесь он начисто сливает какого-нибудь Python или Go. Ну и хваленная производительность достигается через unsafe, который превращает твой надежный Rust в какую-нибудь сишку.
> К чему все эти отрицания? Ведь библиотек нет, а те что есть не позволяют писать типичные проекты с той же скоростью, которые предоставляют мейнстримовые языки.
ты тот самый долбаеб который подключает всякие крудопомои типо restdjango или как его там?
> На счет IDE ты зря. Ты же не малолетний дебил, который пишет на джаваскрипте?
на этой параше тоже приходитсья писать, но только для браузера
> Rust - язык со строгой статической типизацией. Тут IDE как раз нужна с хорошей поддержкой все языковых конструкций и фишками присущими любой нормально IDE - автокомплит, подсветка некорректного кода, дебаг и еще много чего.
в сублайме есть все кроме дебаггера, для дебага есть RR в терминале
> Ну и хваленная производительность достигается через unsafe, который превращает твой надежный Rust в какую-нибудь сишку.
весь сейв код это ансейв, следовательно что тебе мешает использовать ансейв код если оно нужно? но поверь, твое веб говно будет и без ансейф кода работать в пять раз быстрее аналогичного пиздоно говна
Предметная область раста так и не определена. Попытка усидеть на нескольких стульях ни к чему не приведет. Веб пишут на гоу, питоне, джава, сишарпе, скала. Распределенные системы - эрланг, скала (акка), джава. Сетевые демоны - гоу, питон. Консольщина - питон, гоу.
Системщина и ебмеддед - си и плюсы.
Одно радует, что в расте очень дружелюбная атмосфера и принят CoC, если вы понимаете о чем я.
Ребята не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не Чикатило и даже не архивы спецслужб. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте что тут писалось. Я вполне понимаю что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь пытливых - стоп. Остальные просто не найдут.
типо двачую, но с одной закрытой мелкоборды для прогеров
Если он будет писать код, то он станет кодером. Чтобы стать прогером, надо прогать!
Зачем ты себе анус-то дернул, дружище?
Ну так маляр норм бабло зарабатывает
>медленная параша
>>551743
>нет, на этой параше пишут 40 летние долбаебы, работающие в 100летней шааге и которые ничего кроме жвм говна в своей жизни не видели
Лол, чего ты сразу не сказал, что ты никогда не работал программистом. Гоу с питоном у него медленные, лiл! На скале у него никто не пишет!
> Гоу с питоном у него медленные, лiл!
так и есть. макака, плес
> На скале у него никто не пишет!
пишут всякое говно вот и вывод, бекенд парашу на этом писать уж точно не следует
Ты такой странный. Ты же понимаешь, что удел раста - это ебать байты за мелкий прайс? Т.е. ничего полезного ты не делаешь. Пилишь поди какие-нибудь никому ненужные сетевые сервисы, которые гоняют байты туда-сюда.
бля, макака тролит, спешите видеть
пиздуй уже денечку зарабатывать, зачем ты тратишь время на каких то задротов, которые учат расты/си? не забудь еще семью зависти, так как так проще, а потом на свою жалкую 100тысяс рублей жс макакой платить за детей
боже, какой же ты колхозник. умриблятьсосвоимблевотнымЛилом
норм
с ебанутыми требованиями - питон, раст и экселлент инглишем за 150к деревянных
А что не так? Это тебе же не тормознутый веб пилить на джаве. Или какие-нибудь унылые веб-сервисы на гоу. Тут кедром по низам фонит!
Хз, не слежу. Но когда краем глаза смотрел, там в основном говно разной степени твердости летало из стороны в сторону.
Ты же понимаешь чем чек в рантайме отличается от чека не этапе компиляции?
Нет тут точно все дебилы из го треда собрались.
на этапе компиляции в крестах и си (в отладочной версии) программы тулза динамического анализа кода (которая в том числе будет делать проверки границ, другие проверки неправильной работы с дин памятью) будет делать свои интристики в исходный код, так же возможно придется линковаться со специализированной отладочной версией стандартной библиотеки
далее чтобы проверить работу естественно приходится запускать программу, в идеале прогонять ее через тесты
блядь, а как еще можно проверить работу с динамическим (заранее неизвестным на этапе компиляции, как по размеру так и где и как будет выделено) выделением памяти? чудес не бывает
другое дело что утилиты статического анализа тоже могут поймать часть ошибок работы с теми же самыми массивами выделяемыми на стеке (тк размер их известен на этапе компиляции, утилита стат анализа просто может это посчитать), так же на этапе статического анализа можно отловить и часть явных ошибок работы с памятью - к примеру отсутствие пары new-delete или перепутанные delete и delete[]
что поражает в раст-коммьюнити (если смотреть со стороны) - это их заносчивая самоуверенность что они делают какие-то вещи в первый раз
хотя в экосистемах других языков этот инструментарий уже существует не десятилетиями, а поколениями даже
>что поражает в раст-коммьюнити (если смотреть со стороны) - это их заносчивая самоуверенность что они делают какие-то вещи в первый раз
>хотя в экосистемах других языков этот инструментарий уже существует не десятилетиями, а поколениями даже
Си\С++ - это стандарт в вакууме.
Настроить среду для разработки - работа для отдельного плачиваемого специально обученного айтишника.
Раст объединяет в одном цельном проекте накопленный десятилетиями опыт.
Си - суперсложное говно которое вне огромной корпоративной инфраструктуры не поддерживаемо.
С темже успехом можно сказать что С# ничего нового не делает.
Ничто е ново под лучной. Хорошо делай хорошо будет.
я-то на расте продолжаю делать формочки и чуствую себя замечательно
кто вообще в 2020 учит языки че сложного в наченании писать на расте?? ты или тролб или совсем тупой не осилятор бро
>наченании писать на расте
Подобные языки изучаются минимум год до момента, когда ты сможешь написать какую-нибудь незамысловатую консольную утилиту. Ну и формочки клепать на расте - это такое. Быстрее всего это делается на питоне, плюсах (кьют) или каком-нибудь сишарпе.
ну если ты тут будешь неделями срать так не прочитав 4 главу гайда для груднечков о том почему foo = 1 и foo = "foo" две разные переменные может и год
Причем тут 4 глава каких-то грудничков? Такие языки как Haskell, Rust, Scala, Clojure, Erlang - изучаются годами. Т.е. ты тратишь буквально минимум год на изучение языка, перед тем как написать хоть что-нибудь удобавримое. А ведь для работы нужно еще знать такие вещи как систему сборки, библиотеки и фреймворки. В итоге ты гробишь несколько лет, а потом обнаруживаешь, что работы на этих языках или нет, или нужны матерые спецы с минимум 3 годами коммерческого опыта в этих языках и фреймворках.
>Такие языки как Haskell, Rust, Scala, Clojure, Erlang - изучаются годами
>Т.е. ты тратишь буквально минимум год на изучение языка
т.е. ты сделал вывод из своего же никак не обоснованого пука
Ну ты же АЙС!
Это не закрытая борда!
Ну то есть на этапе компеляции в крестах нихуя не проверяется, чекай на этапе выполнения.
> let foo = "oaeu";
> println!("{}", foo);
> let foo = "bar";
> println!("{}", foo);
> у тя одна мутирующая переменная
ты забыл про bounds/scoped упомянуть
>>552743
да и сообственно вопрос, что это за хуйню ты высрал?
никакие мутабельные переменные там не появляются, а уж тем более &str и String, так как первое это просто референс, а второе хуита из std, которая никаких магических типажей не умеет, что бы прямо во время комплементации чето там мутить, статичная параша заменится другой, но не перезапишется
пруф:
```
fn main() {
let a = 5;
let aref = &a;
let a = 6;
println!("{}", a);
println!("{}", aref);
}
```
Ты прав я ошибался спасибо большое что поправил
> Почему компелюктуор не может перевести это в мутацию
потому что на это могут ссылаеться референсы и никто всерьез не будет задумываться о том что, какой нить вася сдумает в одном и том же скоупе создавать переменную с одинаковым именем, и одинаковым типом, если можно просто перезапистью
есть какойнебудь гайд как дописать компилятор чтобы оно нормально это мутировало??
Мимо, я крестопетушок.
Разница в том что твой баунд чекер в быдлере покажет тебе проблему только когда она случится в рантайме, в русте борочекер на этапе компиляции вроде как должен не допускать юз афтре фри, дабол фри и т.д., границы динамических массивов проверяются так же в рантайме.
>Си - суперсложное говно которое вне огромной корпоративной инфраструктуры не поддерживаемо.
охуел сука как уебу, куда проще си то?
Не он, но думаю имелось ввиду сложность написания безопасной и не текущей программы.
Хелло ворлд и лаба1 не считаются.
В идеале разве не так должно быть?(
А ты сам попробуй мозгом проделать оптимизацию, и поймешь какой сложности стоит задача.
Что ты там мутатить собрался? Закидывается переменная куда надо, вызывается call, хуита твоя выводится, закидывается следующая и ещё раз проход.
Попробуй цикл какой-нибудь высрать, может найдешь что тебе надо.
Есть ли под раст нормальная IDE уровня Visual Studio, внутри которой и компиляция и отладка, и выделение ошибок?
>Есть ли под раст нормальная IDE
>внутри которой и компиляция и отладка, и выделение ошибок?
Есть https://intellij-rust.github.io/
>уровня Visual Studio
Хз что это за уровень такой.
>С первых страниц начал охуевать от того, что они там всё предлагают делать в командной строке.
Пиймав зумера. Бедные дети, на шинде сидят, пиздос.
Наоборот, в консоли намного удобнее и быстрее же. Пока неповоротливая IDE запустится и прогрузится, пока найдёшь, где в менюшках скрыты нужные кнопки, успел бы 10 раз в виме написать код, ввести нужные команды, исправить ошибки в коде и перейти к следующей главе. Большие проекты в консоли писать тяжело, но для обучения - самое то.
>охуел сука как уебу, куда проще си то?
Чисто синтаксис например ублюдочный.
Сколь ни будь сложная программа - сплошной ад и баги уровня переполнение стека\буфера, которые почему-то необнаруженные по 20 лет остаются, несмотря на все "крутые" анализаторы кода и прочий "инструментарий".
Речь идёт о процессе создания и поддержки ПО.
А чисто синтаксически и семантически, тот же паскаль проще например.
Я уже не говорю про лисп.
Хотелось бы чтобы был threadDelay(100) параллельно ему читался инпут
Если инпут вошел за 53мс, threadDelay ждал бы еще 47
И если тред делей закончился без инпута, то уже следующий цикол и прошлый инпут наверное сбросить?
Нормальный синтаксис! Если он такой ублюдочный, почему тогда куча других языков его переняла? А? А?! Шах и мат, антисишник!
Не в синтаксисе дело, а в том, что сишка слишком много вещей не проверяет, а молча разрешает
Чтобы ввести нужные команды, сначала надо изучить команды командной строки. Порог входа повышается. А ещё там в оф. книге про баш-скрипты упоминают сходу...
Выглядит как этакий фейс контроль на входе в илитный руст-клуб, обычных людей отпугивают сразу одним своим видом, макакам типа меня дают постоять в очереди, потратить часы своего времени, но внутрь всё равно не пускают. Просочиться дают лишь ноулайферам миллениалам-красноглазикам.
Обучение без точек останова, без мгновенного подчёркивания ошибок - это развлечение для тех, у кого дохуя времени.
>неповоротливая IDE запустится и прогрузится
VS с решарпером действительно грузится долго. Только нахуя мне её закрывать. Я комп раз в 2 месяца перезагружаю. VS висит себе открытой всё время.
Пиздец ты беспомощный.
Ну, ты сам видишь, какой у раста контингент. Если "хочешь стать человеком", возьми плюсы, от них больше проку. Ну или питон/жабу.
А никак, лол. В крестах сборка проекта и управление зависимостями - полный пиздец. Один из старейших языков, а ничего толкового до сих пор нет.
Впрочем, что-то имеется. Но доминирующего решения нет.
А модули то уже завезли, или по прежнему надо с ифдефами ебаться?
хз мне просто одиноко решил о себе что-то написать
320x240, 0:24
>Если он такой ублюдочный, почему тогда куча других языков его переняла? А? А?!
Потому что Си продвигала Американская Радиотехническая Корпорация?
На своих дексах, после чего интел был "вынужден" переобуться и начать выпускать Си процессоры, которые теперь везде.
Потому же, почему и виндовс такая популярная.
Кроме очевидных империалистических интересов американской промышленности, есть мнение, что си продвигался именно в виду своей ублюдочности, чтобы только крупные корпорации могли осиливать сложные проекты.
Так например первый 32хбытных процессор интела был заточен под модулу и аду, заточен для работы с объектами, умел безопасно управлять памятью, и имел функционал позволяющий минимумом усилий реализовывать ОС.
>Не в синтаксисе дело, а в том, что сишка слишком много вещей не проверяет, а молча разрешает
Дело в том, что сишка говно.
И синтаксически, и семантически.
И Си процессоры RISC(ARM RISC-V) x86(который внутри тот же риск) - говно.
А С++ - это говно в кубе.
Любопытно. Маркетинг, в общем.
А почему тогда возможно написать компилятор модулы/ады для x86, если он "си процессор"? Синтаксис - это ведь всего лишь про то, ставить фигурные скобки или begin/end, например. А то, на какой архитектуре будет крутиться полученная программа - другой вопрос. Сишка ведь не прибита гвоздями к x86. Если бы была архитектура, скажем, с аппаратной сборкой мусора, то ничего не мешало бы написать компилятор сишки и для неё. Или нет?
>А почему тогда возможно написать компилятор модулы/ады для x86, если он "си процессор"?
Потому что Тьюринг Полная архитектура?
>Синтаксис - это ведь всего лишь про то, ставить фигурные скобки или begin/end, например. А то, на какой архитектуре будет крутиться полученная программа - другой вопрос. Сишка ведь не прибита гвоздями к x86
Еще как прибита.
Да, чисто теоретически любой тьюринг полный ЯП можно "скомпилировать" для любой тьюринг полной системы, но это зачастую непрактично.
>Если бы была архитектура, скажем, с аппаратной сборкой мусора, то ничего не мешало бы написать компилятор сишки и для неё. Или нет?
Зависит от архитектуры.
У Си программ, чисто синтаксически, есть требование доступа ко всему объёму памяти. А без указателей это уже не Си.
Но ты конечно можешь эмулировать любой код.
Но как бы, вся суть Си в том, что это такой продвинутый ассемблер, причём очень конкретный ассемблер.
> Американская Радиотехническая Корпорация
шо? каво?
> Си процессоры
Я конечно НЕ УВЕРЕН, но вроде бы процессоров, для которых C является аппаратным языком - нет, как-то обычно C в какой-нибудь язык ассемблера компилируется.
> Кроме очевидных империалистических интересов американской промышленности, есть мнение, что си продвигался именно в виду своей ублюдочности, чтобы только крупные корпорации могли осиливать сложные проекты.
А, кхм, ясно. Нам нужна своя, революционная и контримпериалестическая индустрия ПеКа.
> первый 32хбытных процессор интела умел безопасно управлять памятью
Опять же, Я МОГУ ОШИБАТЬСЯ, но первым 32-битным CPU от интел был 80386, который (как и современные процессоры) x86?
Короче, ты какой-то вообще больной, не пиши сюда больше.
> Я конечно НЕ УВЕРЕН, но вроде бы процессоров, для которых C является аппаратным языком - нет, как-то обычно C в какой-нибудь язык ассемблера компилируется.
Где-то я слышал, что современные процессоры затачивают именно для эффективного выполнения кода, скомпиленного из C. Наверное, речь про это, но я не до конца понимаю, как это вообще возможно, может, речь про соглашения о вызовах функций, которые как-то аппаратно оптимизируются.
мимо
Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров.
>Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров.
В принципе, если бы Си в свое время догадался забанить невыровненный доступ к памяти (ну или разрешил только через костыли), то наши процы были бы в пару раз проще.
Но это всё, что приходит в голову, лол.
>Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров.
В мире победивших Си процессоров на рынке массового компьютинга - да.
А вообще, нет.
У тебя есть задачи которые нужно решать, под них разрабатывается железо.
>шо? каво?
Чет я попутал. Речь о Digital Equipment Corporation шла.
https://en.wikipedia.org/wiki/Digital_Equipment_Corporation
>>554366
>Звучит странно, обычно это компиляторы/части программ подгоняют под конкретные фишки процессоров
У нас точно системного программирование тред?
В котором знатокки сишки и аппаратных архитектур?
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.
Для тех кто в танке, речь идёт о Си компиляторах.
В Си нету никакого управления памятью и контроля доступа как явлений.
В Си и Си процессорах ограниченная поддержка рекурсии.
Это так, с ходу, самое очевидное.
Как именно, и зачем, ты собираешься писать на си под стековые процы или тегированную память вообще непонятно.
Си имеет смысл только как обёртка над очень конкретным и очень скудным набором команд.
Си код a = c + b буквально означает захуярить b и c в регистры, послать команду ADD, и результат захуярить в память по конкретному адресу.
> контроля доступа
Ну да. И защищённый режим - чисто программная абстракция.
> ограниченная поддержка рекурсии
Конечно, ведь у других архитектур сегменты резиновые.
> захуярить в регистры
А на 100 переменных - 100 регистров и тысячи вариантов mov.
Потому что у тебя там константы. Ты хоть через жопу переподвыподвернись, но константы не перезаписываются, потому что они — константы. Вот если ты напишешь так:
let mut a = 5;
a += 1;
let a = a + 1;
То конпель тебе просто замутирует уже существующую переменную в последнем let.
Процессоры не затачивают под языки выше уровня 10101010010111100. Даже асм для процессора высокоуровневый, ему сразу байты подавай, а в асме ты сперва строчки пишешь, чтобы в байты потом превратить. Сишка так быстра только из-за gcc, где оптимизации под каждый отдельный процессор. Тогда почему же почти все языки кроме си и крестов юзают LLVM, спросишь ты? Потому что удобнее. Выбирая между микрооптимизациями GCC и удобством LLVM, где и относительная простота написания компилятора, и кроссплатформенность без ебли, ленивые людишки выбирают последнее. К тому же, новые версии раста выходят каждые шесть недель, там просто времени нет на каждый плюх в код компилятора ебаться с GCC. Мы же не каждые три года новую версию выпускаем, как некоторые.
>В Си и Си процессорах ограниченная поддержка рекурсии.
У тебя есть запеченный процессор с конкретным количеством регистров, ограниченным количеством памяти и ограниченным размером стека. Как ты некую неограниченную рекурсию собрался делать?
>ты собираешься писать на си под стековые процы
Также, как работают компиляторы Си на существующих стековых процессорах.
> тегированную память
А это вообще вредная херня. Динамик диспатч на уровне примитивных команд, вообще офигеть. Ты как это конвееризировать собрался, если не знаешь, какую операцию выполняешь на каждом шаге?
Вкатываюсь в хеллоуворлды на ассемблере чтобы понять че происходит
Мне все еще кажется что после всех оптимизаций мутеть одну фегню эффективнее чем двигать поинторы но хз
Господи, прочитайте уже, что такое Single Static Assignment. На уровне ЛЛВМ вообще нет понятия мутабельной переменной.
Смотри, есть такая строчка: `let s = "qwerty";`. Теперь давай посмотрим на тип переменной `s`. Она имеет тип `&'static str`. Эта ссылка состоит из двух usize переменных — указателя и длины. А теперь следи за руками: те данные, на которые указывает эта ссылка, являются константой. Они хардкорно записаны в исполняемый файл (например, .exe) и подгружаются в кеш при запуске программы. Ты не можешь их поменять, потому что не можешь. Поменять ты можешь только саму ссылку, чтобы она указывала на какую-то другую строку с другими длиной и адресом. Но откуда ты узнаешь адрес и длину? Тебе их надо либо прочитать, либо посчитать. А потом куда-нибудь записать. Но чтобы записать эти два новых usize элемента в твою f, тебе надо помнить положение f в стеке. Так что там почти похуй, перезаписывать старое или пихать новое.
длинуто ты откудо берешь? на сколько я помню &str указывает на саму строку, а не ее длину, соотвественно что-бы подсчитать длину, тебе нужно пройтись по всей строке в поисках '\0'
>Ты как это конвееризировать собрался
У вас конвейер головного мозга 4той стадии. Вы непоправимо больны Си парадигмой.
Хочешь поняшимся в попчески?
ЖС-тред дальше, родненький.
Ня!
Ну так он выше заливает, что си чуть ли не интерпретируется процессором напрямую.
Оно работает но какие-то лаги на драг енд дропе чяднт
Крайне сложно представить себе реальный проект в котором писать Rust было бы экономически оправдано. Вся структура языка заточена на то, чтобы вынуждать человека указывать достаточно низкоуровневые подробности не тогда, когда это действительно нужно, а ПОСТОЯННО. Исключение где Rust может быть реально полезен могут составлять только Embedded и hard real-time системы. Однако это капля в море разрабатываемого софта. На Rust нельзя написать ни одной программы, не имея хорошего понимания lifetime & ownership. Это автоматически делает его очень сложным. Так же стоит отметить очень свобразный апострофо-кавычечный синтаксис Rust значительно усложняющий написание кода. D в этом отношении гораздо проще и универсальнее. К тому же в D есть режим betterC позволяющий использовать ручное управление памятью и сводящий 80% преимуществ Rust к нулю.
Что значит слово Rust?
коррозия; ржавчина
моральное разложение; коррупция, продажность
вредное влияние безделья, бездеятельности (на характер, способности)
ухудшаться, портиться, притупляться, вырождаться (от бездействия)
притуплять, ослаблять (память, ум)
томиться от безделья
портить, развращать, разлагать
>вынуждать человека указывать достаточно низкоуровневые подробности
Так-то это одна из причин, почему на него перекатываются, лол
> Крайне сложно представить себе реальный проект в котором писать Rust было бы экономически оправдано.
с чего бы? представь себе такой хайлоад сервер, где каждая наносекунда важна, и всякая поебот на типо жаба с ее конченым GC там нн будут даже рассматривать. из вариантов:
С - неподойдет, nuff said.
C++ - у него был шанс, но изза ебаннутых бесполезных абстракций, отсуствия нормального ADT и прочей непродуманной хуйни он не подошел.
Rust - имеет хороший рантайм футурок от tokio, нормальный ADT изподкоробки, удобный и продуманный std, идеальная парадигма контроля памяти ownership, скорость исполнения иногда превосходит си, при том на си нет допустим веб говна, а на расте как нехуй делать, вывод: раст является САМЫМ ОПТИМАЛЬНЫМ РЕШЕНИЕМ ДЛЯ ВЕБ СЕРВИСА
пруф в виде актикса загуглите сами web frameworks benchmark
Спорить с жирной пастой бессмысленно, но всё же я скажу, что любой убогий язык, на котором есть куча либ, в миллионы раз лучше прекраснейшего языка, на котором нет ничего. Где хотя бы D-тред?
?????что
Захардкожено то, что не должно.
>Где хотя бы D-тред?
Ультра годноту прилюдно обычно не обсуждают.
В sn, например, одни графоманские пасты.
В sci нет тредов про эфир.
В math нет арийской математики.
В spc нет тредов про лунный заговор.
В ra нет тредов про БТГ.
В re нет треда про реализм.
как только начинает течь кровь, ты больше не ребенок
ты женщина
и можешь иметь дело с мужчинами
Стоит того?
Может есть подобные опенсорсные проекты?
Cлишком много модных баззвордов вместе. Не взлетит.
Надеюсь, с блокчейном и нейронками?
Как вникнуть во владение? Ебусь уже несколько дней, но всё равно не могу написать хоть что-то сложнее хелоуворда из-за этого
Показывай код и сообщение компилятора.
> We're likely going to be writing a few new fun parts of Reddit in Rust
Кажется что все разговоры о том, взлетел ли раст или нет, можно оставить в прошлой декаде.
Столько раз это постили, и ещё ни разу никто не написал, что эти шприцы означают.
>обогнал
>хуй знает на каком железе, хуй знает с какой конфигурацией, хуй знает на каких бенчмарках
ну растодебилы, ну тупые
На одинаковом.
Так, блять. Ржавчина же заявлена как системный язык. Какого хуя это говно не компиляет нормально под Win XP? Это просто ебень какая-то. И нахуй он нужен, если требования к ОС жёстче, чем у какого-нибудь дотнета?
>дотнет
дотнет это вообще интерпритируемая житопараша
>пытается что-то закомпилить под труп
>пытается вообще под шиндусы
установи сначало нормальную ос, твои шиндус проблемы тут никому не интересны
> нормальную ос
Ну и нахуй тогда все эти "системные языки" нужны? Можно сразу брать какой-нибудь "нормальный язык", которому нужно "нормальное железо", например жаба или питон. Системные языки на то и есть, что должны быть максимально неприхотливыми, как сишка. Тогда при чём тут вообще сабж? Получается, раз он не решает свои задачи, у нет нет области применения?
мимо
>Системные языки на то и есть, что должны быть максимально неприхотливыми
Ну так он максимально неприхотлив — к железу, что от системного языка и нужно. А нахуя кому-то допиливать компилятор и рантайм ради депрекейтед даже самим микрософтом системы — я хз.
>Получается, раз он не решает свои задачи, у нет нет области применения?
Кстати, а последний сишный компилер от майкрософта хотя бы поддерживает эту XP? (нет)
Вот и подумай что ты сам сейчас высрал.
Разумеется, легче думать, что раз кто-то что-то там задепрекейтил, то сразу же у всех волшебным образом апгрейднется железо. И нечего поддерживать не надо, 100% пользователей - айтишники, которые могут с этим справиться сами. И кроссплатформенность никому не нужна, одни проблемы от неё, пусть все на винде 10 сидят.
> А нахуя кому-то допиливать компилятор и рантайм ради депрекейтед даже самим микрософтом системы — я хз.
Вот с таким отношением энтерпрайз никогда на это не перейдет. Проще писать на нормальном языке, чем апгрейдить ОС и железо ради ржавчины, лол. А это говно только и будет использоваться анальными корпорациями, которым надо продавать новый продукт, а не поддерживать старый. Раст даже в опенсорсе не в почёте, его из libre-систем выпиливают как блоб, ведь карго не умеет в офлайне собирать и тянет с проприетарных серверов неизвестно что. Разве что в бсд напердолили груду костылей, чтоб заставить это говно собираться без интернета.
> Кстати, а последний сишный компилер от майкрософта хотя бы поддерживает эту XP? (нет)
Предпоследний поддерживает в 2017 студии. Раст никогда не поддерживал.
Да это и не только на Винде, например ржавчина не поддерживает на Линуксе ядра ниже 3.9. Никто не будет тратить кучу денег ради апгрейда под какой-то там ЯП. Вот тот анон правильно написал, это ничем не отличается от апгрейда железа под жабу. Тот же сегмент POS до сих пор на половину работает на Windows XP Embedded или даже старше. Если у кого-то есть хотя бы какая-то часть таких машин, то Раст сразу автоматом идёт нахуй.
>ведь карго не умеет в офлайне собирать
[dependencies]
yobalib = { path = "Disc:/yobafolder" }
что ты несешь содомит? растодевы не будут тратить время и силы на поддержку старой параши, ибо на старом железе оно будет овердолго компилиться.
Сам хоть пробовал так собрать рандомную репу с гитхаба?
ну окей... что мешает установить линуксы?
Так, а как связана поддержка и написание нового софта, мань? Сиди меси своё легаси на сях старых стандартов, нахуя тебе там раст?
Для софта, юзаемого офисным планктоном, он действительно нахуй не нужен, а на сервере шиндовс используют только те, кто повёлся на хайп с дотнетом, и у них там свой мир, где мс пилит свой раст, лол.
>Разумеется, легче думать, что раз кто-то что-то там задепрекейтил, то сразу же у всех волшебным образом апгрейднется железо
Ну так у этих оставшихся за бортом пользователей и нет выбора, кроме как обновляться или идти нахуй. Поддержка XP дропнута больше 5 лет назад, любая уязвимость и все дружно идут нахуй в случае отказа от обновления.
>>563012
>Вот с таким отношением энтерпрайз никогда на это не перейдет
А нахуй энтерпрайзу раст-то, додик? Много системных штук твой энтерпрайз делает? Я что-то ни одной не видел.
>Проще писать на нормальном языке, чем апгрейдить ОС и железо ради ржавчины, лол.
Ещё раз — это нихуя не добровольный процесс, вот прям совсем. То, что на твоём заводе юзают XP — не от адекватности явно.
>А это говно только и будет использоваться анальными корпорациями, которым надо продавать новый продукт
В случае с сишным софтом почти всегда легче выкинуть нахуй и переписать с чистого листа, чем ебаться с поддержкой костылей для железа и систем которые используют полтора додика.
Так забавно наблюдать, как красноглазый аутист пытается изворачиваться чтобы не признавать практичности этого подхода, лол.
>Предпоследний поддерживает в 2017 студии
Ну, последняя версия плюсового компилятора для XP — 2012, причём его вместе со старым рантаймом надо докачивать в инсталяторе отдельно и настраивать проект для сборки. Блядь, даже мс, сидящая на 80% на легаси говне уже пытается убрать это депрекейтед говно подальше от себя.
>Никто не будет тратить кучу денег ради апгрейда под какой-то там ЯП
А их кто-то спрашивал? Либо они будут тратиться сейчас, либо потом программисты на си будут получать как ппрограммисты на коболе, а с учётом багов и уязвимостей которые прилипнут за всё это время, издержки энивэй будут выше если не обновлятся, я хз чем ты недоволен.
>Вот тот анон правильно написал, это ничем не отличается от апгрейда железа под жабу
В случае жабы апгрейд железа даёт только немного перформанса, а в случае древнего говна, которому настолько дохуя лет, что на нём не заводится ядро старше 3.9, это даст вот прям дохуя перформанса и ещё кучу других плюшек вроде облегчения поддержки и меньшего штата кодеров для поддержки этой хуйни, правда вот как это посчитать или объяснить кому-то до того, как такая проблема ударит по бюджету — непонятно.
>Тот же сегмент POS до сих пор на половину работает на Windows XP Embedded или даже старше
Ииии... Нахуя тебе там раст? В смысле, на старых кассах, которые и без того работают? В твоих мухоёбинсках где такая куча такой старой залупы, ей даже в сеть смотреть не нужно. А в дсах сплошь и рядом новые терминалы, в которых и paypass, и прочие атрибуты пост-бумерской эпохи есть, и работают они уже не на XP.
Так, а как связана поддержка и написание нового софта, мань? Сиди меси своё легаси на сях старых стандартов, нахуя тебе там раст?
Для софта, юзаемого офисным планктоном, он действительно нахуй не нужен, а на сервере шиндовс используют только те, кто повёлся на хайп с дотнетом, и у них там свой мир, где мс пилит свой раст, лол.
>Разумеется, легче думать, что раз кто-то что-то там задепрекейтил, то сразу же у всех волшебным образом апгрейднется железо
Ну так у этих оставшихся за бортом пользователей и нет выбора, кроме как обновляться или идти нахуй. Поддержка XP дропнута больше 5 лет назад, любая уязвимость и все дружно идут нахуй в случае отказа от обновления.
>>563012
>Вот с таким отношением энтерпрайз никогда на это не перейдет
А нахуй энтерпрайзу раст-то, додик? Много системных штук твой энтерпрайз делает? Я что-то ни одной не видел.
>Проще писать на нормальном языке, чем апгрейдить ОС и железо ради ржавчины, лол.
Ещё раз — это нихуя не добровольный процесс, вот прям совсем. То, что на твоём заводе юзают XP — не от адекватности явно.
>А это говно только и будет использоваться анальными корпорациями, которым надо продавать новый продукт
В случае с сишным софтом почти всегда легче выкинуть нахуй и переписать с чистого листа, чем ебаться с поддержкой костылей для железа и систем которые используют полтора додика.
Так забавно наблюдать, как красноглазый аутист пытается изворачиваться чтобы не признавать практичности этого подхода, лол.
>Предпоследний поддерживает в 2017 студии
Ну, последняя версия плюсового компилятора для XP — 2012, причём его вместе со старым рантаймом надо докачивать в инсталяторе отдельно и настраивать проект для сборки. Блядь, даже мс, сидящая на 80% на легаси говне уже пытается убрать это депрекейтед говно подальше от себя.
>Никто не будет тратить кучу денег ради апгрейда под какой-то там ЯП
А их кто-то спрашивал? Либо они будут тратиться сейчас, либо потом программисты на си будут получать как ппрограммисты на коболе, а с учётом багов и уязвимостей которые прилипнут за всё это время, издержки энивэй будут выше если не обновлятся, я хз чем ты недоволен.
>Вот тот анон правильно написал, это ничем не отличается от апгрейда железа под жабу
В случае жабы апгрейд железа даёт только немного перформанса, а в случае древнего говна, которому настолько дохуя лет, что на нём не заводится ядро старше 3.9, это даст вот прям дохуя перформанса и ещё кучу других плюшек вроде облегчения поддержки и меньшего штата кодеров для поддержки этой хуйни, правда вот как это посчитать или объяснить кому-то до того, как такая проблема ударит по бюджету — непонятно.
>Тот же сегмент POS до сих пор на половину работает на Windows XP Embedded или даже старше
Ииии... Нахуя тебе там раст? В смысле, на старых кассах, которые и без того работают? В твоих мухоёбинсках где такая куча такой старой залупы, ей даже в сеть смотреть не нужно. А в дсах сплошь и рядом новые терминалы, в которых и paypass, и прочие атрибуты пост-бумерской эпохи есть, и работают они уже не на XP.
>ведь карго не умеет в офлайне собирать и тянет с проприетарных серверов неизвестно что
Бля, какой же это рарный вин. Пакетный менеджер что-то откуда-то тянет, посоны! Он же не для того нужен-то!
>>563081
Там ты же это, за линупсы там, против пропиетарщины, опенсурс все дела. В чём проблема тянуть всё руками и редактировать конфиги когда стянул и проверил? Юникс-вэй жеж. Ты кстати довно в ядро заглядывал? Телеметрии не запихнули случайно?
Эх, бля, вот гнойные пидорасы, как с жавой и досом всех объебали! Поленились, сука, крестьянам поддержку запилить!
Ох, блять.
> Я что-то ни одной не видел.
Ты его вообще видел?
> В случае с сишным софтом почти всегда легче выкинуть нахуй и переписать с чистого листа, чем ебаться с поддержкой костылей для железа и систем которые используют полтора додика.
Только в твоём манямирке, где софт пишется за месяц, а клиенты готовы тратить миллионы на ненужное им железо, которое и сейчас нормально работает.
> А их кто-то спрашивал?
Скорее кодеры пойдут новую работу искать. Вот их уж точно не будут спрашивать, хотят они под древнее железо писать или нет. Я уже видел один прецедент, въехавший на рынок с модным комбайном на дотнете и жидко обосравшийся от отсутствия клиентов с железом под их говно. А потрачено на разработку было несколько лет.
> ей даже в сеть смотреть не нужно.
Налоговая уже два года как ебёт за такое. Хотя за МКАДом всё возможно...
> А в дсах сплошь и рядом новые терминалы, в которых и paypass, и прочие атрибуты пост-бумерской эпохи есть, и работают они уже не на XP.
Это ты из головы взял? Большинство банкоматов на XP, половина ДС на говне мамонта сидят, которое даже семёрку не вытянет. До сих пор DOS используется в POS, если ты не в курсе. Ты удивишься, но эту срань поддерживают в 2020 и даже апдейтят под новые законы. Никто не будет тратить деньги на новое железо, переучивание персонала, покупку софта и обслуживание его просто потому что какие-то пердолики решили не делать нормальную совместимость. Ты вообще в курсе во сколько встанет только обновление 1000 машин под свежую ОС? Кто за это платить будет? Кто обновлять будет?
> paypass
Какое отношение эквайринг имеет к ОС?
И зачем туда лезть то? Работает как-то, ну и заебись, даже если с дохуя правильной сишкой или чем угодно туда лезть, то оно всё равно будет никому там нахуй не нужно. Пусть спокойно отгнивает. И хп, и дос, и коболы всякие.
>Какое отношение эквайринг имеет к ОС?
Какое отношение POS имеет к ОС?
>Ты его вообще видел?
Системный софт? Да дохуя. Но делается обычно не теми компаниями, которые называют "энтерпрайзом".
>а клиенты готовы тратить миллионы на ненужное им железо, которое и сейчас нормально работает.
Ну просто проебут на поддержке больше, как и те, что не захотели слезать с коболо, но мне лично похуй, а тебе?
>Скорее кодеры пойдут новую работу искать
Ну, я из такой галеры сам съебал бы, благо что выбора дохуя.
>Налоговая уже два года как ебёт за такое. Хотя за МКАДом всё возможно...
Ну я не с 1С работаю (видимо, в отличие от кое кого), прости, не знал таких подробностей.
>Ты удивишься, но эту срань поддерживают в 2020 и даже апдейтят под новые законы. Никто не будет тратить деньги на новое железо, переучивание персонала, покупку софта и обслуживание его просто потому что какие-то пердолики решили не делать нормальную совместимость
Ты удивишься, но что налоговая, что почта сидят на новом софте (с этих двух парашах я сам был свидетелем этого). Правда, железо-то почти никто не обновлял, ибо деньги видимо ушли на жоповозки и жопогрейки главных кабанчиков, и клерки люто хейтят всю эту новую хуйню, лол.
>Ты вообще в курсе во сколько встанет только обновление 1000 машин под свежую ОС? Кто за это платить будет? Кто обновлять будет?
Ну как кто? Клиенты.
MACROS![a,b,c,d]
трабл в том, что эти abcd у меня лежат в векторе v, а реально их не 4, а гораздо больше. Может кто подскажет, как развернуть вектор вовнутрь макроса значениями, если их число заведомо известно? Скажем, для 9 значений чтоб можно было написать что-то типа такого:
MACROS![unroll_nine![v]]
что ни делаю - всё какая-то хуйня получается.
$foo:tt вместе со скобочками не пробовал? Хотя я не понимаю, нахуя надо анроллить вектор в переменные. Чего тебе от этой фигни надо? Есть же remove() и swap_remove().
Вообще, рекурсивные макросы такое себе, там же потолок низенький на рекурcию. В залуп никак не превращается?
В общем, рассказывай, нахуя тебе анроллить вектор, тут без примера не разберёшься.
Ты же понимаешь, что без кода ты беспруфный кукарек?
> #![allow(dead_code)]
> #![allow(unreachable_code)]
Сигнатура файла в формате .rs блеать. Какой вообще смысл по умолчанию это запрещать, если все всё равно в начале каждого файла пишут директивы для выключения этих запретов? Почти как в перле с его use strict/use warnings.
Лол, но нет. unused_imports под use super::*; в тестах или в автореф макросах, но никак не на весь файл. Дед код никогда не разрешал, а анричебл только однострочные паники или ретёрны после бесконечного лупа, так, на всякий случай.
> ещё ни разу никто не написал, что эти шприцы означают.
Зумера... Гугли box plot или "ящик с усами". Это классика, школьник, это знать надо!
Спасибо.
Ты это как вычислил?
Есть ли в rustc какие-то оптимизации кода в духе С-шного -march=native?
Всё равно лучше, если код опирается на всякие SSE2 и прочее подобное
Давно пора.
Но ты их можешь на расте писать.
Ты случайно не из тех, кто считает, что "скрипты" могут быть написаны только на интерпретируемом языке?
скрипт это сценарий, интерпретируемый интерпретатором
растс компилирует код в машинный код исполняемый процессором
Можно, пиши.
Но лучше сперва попиши на хачкеле, после него функционально будешь на чём угодно писать.
А сколько должно пройти, чтобы найти работу на плюсах?
Я знаю несколько таких человек, один еще учится в маге.
А говорили, что на крестах джуны не нужны. Что там дядьки старые 10-20 лет опыта.
Да мне просто интересно, откуда в плюсах появляется новая кровь тогда, если там все сразу миддлы. Вот умрут все миддлы и сениоры от старости, кто их говно поддерживать будет? А новое писать?
Гу как же. Поступают в аспирантуру в говноНИИ, набираются формального опыта и идут в норм конторы.
Расскажи подробней. Какой фреймворк, если используешь. npm и прочие webpack'и юзаешь?
actix-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
>
Бежал бы ты с актикса. Мейнтейнер необучаемая микрософто-обезьяна. Мало ему было прошлого раза, так он опять устроил хуйню с "ваш патч скучный".
Но вообще меня интересует, пишет ли кто под WASM на расте.
Проиграл с необучаемого. Туда ему и дорога, тащем-та.
Жаль на гитхабе нельзя минусовать.
>А говорили, что на крестах джуны не нужны. Что там дядьки старые 10-20 лет опыта.
Старые дядьки хотят много денег, их увольняют, или сами уходять.
А дерьмокод высерать нужно.
Так что спрос на студентиков в крестах большой, в дьмогеймдев в основном.
Я как вспоминаю одну геймдев контору, в которую я не прошёл собез, так страшно становиться, какой-то бомжатник, зп днищенские, хрюша ебнутая, всё в каком-то полумраке, офис холодный.
Правда была как минимум одна хорошая контора, чисто внешне, тепло уютно, правда она филиал какой-то европейской. И в то время, в 2012, они уже во всю набирали жаваскрипт девелоперов.
Типичная поделка крестопрограммистов это например МИР ТАНКОВ, которому виндовс рунртайм длл нужен, даже представлять страшно какой там дерьмокод внутри.
https://github.com/actix/actix-web/issues/5
Вот, пожалуйста! Отличный пример коммьюнити раста - набежало сэжэвэ и начало ныть, мол "а чего это ты удалил проект, ммм?!!! ты подставляешь коммьюнити!!!! а ну вертай все взад!!!".
Хорошо же.
Пердаком дева можно греть целую планетарную систему теперь.
А если этот омежка вернёт проект, то это шин вообще будет. Одни плюсы, бомбит и работает бесплатно.
Ну шо почаны, время оценивать что там высрал мс.
На первый взгляд там больше раста концепций из pony напиздили.
Суть в следующем: "Наша команда Immunant любит Rust и активно работает над C2Rust — фреймворком миграции, берущим на себя всю рутину миграции на Rust."
Я офигел, это же автоматическое воровство кода растом в промышленных масштабах! В комментах кто-то проверил:
$ find ~/prog/ioq3 -name ".rs" | xargs cat | grep unsafe | wc -l
9241
$ find ~/prog/ioq3 -name ".rs" | xargs cat | grep fn | wc -l
9740
В переводе с баша на русский: в коде 9740 функций, из них 9241 - unsafe.
https://tsar1997.blogspot.com/2019/12/blog-post.html#comments
А можно пользоваться растом и либами, но шоб без таких говноедов?
Вон как в джавке - пошел и скачал с мавена.
>мавена
только если будешь свой плагин писать, не прописывай 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.
Ебанутые фанатики, поборники ЦЕЛЬНОСТИ развалят раст к хуям.
вижу ансейф
@
тригерюсь
Хз, я там в подробности не вникал, но если нет очень конкретных причин использовать унсейф, то делать этого очевидно ненужно.
Я привык байтоебить мне лень ваш раст изучать - это не весомая причина.
Как я понял, при использовании этой библиотеки может возникать неопределённое поведение, что есть гроб кладбище пидор.
Подобная хуйня как раз одна из тех проблем с которыми раст призван бороться.
Потому что маленький кусочек дерьмокода может скомпрометировать целый огромный стек.
Я хоть не любитель раста, но в восторге что погнали санными тряпками говнокодера, который делал продукт ради бенчмарков. У гоферов бы такое комьюнити.
Мое уважение
А теперь по теме. Стало очевидно, что оставив возможность unsafe раставчане тупо оставили окно в С++. Теперь нельзя быть уверенным, что в очередном йоба-проекте, очередной йоба-разработчик не захочет говнить unsafe кодом.
Вы потенциально оставили дверь черного хода открытой.
Мои поздравления
Ну и помойка же хабр.
Автор мудила, да.
А с унсейвом там не то. Дело не в том что там унсейв как таковой, а унсейв там ломающий компилятор, тоесть там 'хак', который в любой момент может начать приводить к сломанному коду на выходе.
Автор использует этот хак чтобы срать буквально сишкой уже.
Это не преднамеренный функционал, это неверное его использование.
То, что /pr/ лютая параша с больными людьми, автоматически не означает, что я не должен его читать.
Несомненно.
Но это не отменяет факт, что хабр всегда был вторичной парашей для недалёкого быдла, а сейчас это просто форум с посредственными переводами англоязычных статей.
>Но это не отменяет факт, что хабр всегда был вторичной парашей для недалёкого быдла
Илитарий закукарекал.
Хабр это пока что лучший ресурс по АйТи на русском языке. Не согласен? Назови альтернативы (спойлер: ты не сможешь)
Любой программист по умолчанию теперь должен учить английский? А как же русская школа программирования, вот это все?
Вот зачем ты сделал меня грустить?
А в чём проблема-то? Ну класс и класс.
>>577241
>Забавно что эти как раз таки и смогу сделать что-то годно и юзер-френдли.
В-е-н-д-о-р-л-о-к. Даже при игре в опенсурс, однохуйственно там и рантайм лучше будет на винде, и фичи по требованию мс будут моментально попадать в язык минуя коммунити (как у эпла с последним свифтом), итд.
>Чет не нашел. Там рили хотят ООП или просто типы?
https://tutorial.ponylang.io/types/classes.html
Наследования в том же пони нет, у них в примерах тоже. Это типы, на какой-то хуй названные классами. Очередной триумф парадигмы над практичностью, шо.
Тебе и собаку не проблема.
>В-е-н-д-о-р-л-о-к.
Выбирайся уже из криокамеры, дотнет 5 будет полностью кроссплатформенный (смотри в новостях), то есть net core станет основным. Есть годный typescript, vscode.
Что что, а мягкие умеют делать инструмент для разработчиков (и да, по тестам уже сейчас net core в достойном топе)
Ну и asp net это полноценный фреймворк, а не костылевариение типа actix обидчивого ноунейма
Чет зажевало картинку.
Вставляй им подлянку в виде unsafe
Одаренным только в хаскель.
Свой собственный.
Какой ЯП? Свой проект лучше всего, конечно же. Заодно гит освоишь в полной мере.
>Какой ЯП?
Было глупо это спрашивать в Rust-треде, наверное. В свое оправдание скажу то, что я промахнулся мимо МВП-треда.
Вкатывайся в актикс.
Хз, не сижу на хабре. Но видел, что наши программисты пилят компиляторы какие-то, лекции о нужности языка делают и тд. Только выглядит это всё плачевно на фоне того же vlang, который создал один человек. Будто не могут нормальный кроссплатформенный компилятор написать.
>Rust тред
>редкие упоминания единичный либ
>тонна бессмысленного пердежа
На расте перестали писать в топ либах unsafe?
>vlang
Реально годная штука, может попишу чего-то на нем когда-то. Спасибо, анон!
А вообще, было бы интересно увидеть объединенный тред альтернативных продолжений/переосмыслений C (Nim, D, V, Fantom, Cyclone, Pike - тысячи их).
Чел, перечитай моё сообщение, вендорлок там не в том смысле используется, лол.
Когда ещё те хипстеры в конце 2000-х - начале 2010-х вовсю рубили на рельсах, уже тогда я предрекал руби ненужность и даже немножк его хейтил. Почему? Да потому, что ещё один питон, только с кучерявым синтаксисом. А питон тем и хорош, что это такой единый скриптовый язык для всего, с кучей батареек.
Вот эти все альтернативные языки примерно о том же - не взлетят, покуда не предоставят принципиальных отличий от уже имеющихся. Вот когда появится такая тема:
прогеры всего мира: "Боже, как мы заебались с проблем-нейм, половина рабочего времени на неё уходит"
авторы нового языка: "Чуваки, ай-да к нам, у нас есть решение для проблем-нейм"
тогда можно паковать манатки. А до тех пор никто не будет валить на эти языки с языков с коммьюнити и кучей готовых либ.
Руби более продвинут, чем унылый высер Гнидо Обоссуна.
Пердон взлетел потому что это легкая встраиваемся параша, которую может взять любой человек, даже не являющийся программистом и напердолить быдлоскрипт по фасту. Приблизительно по той же причине, например, рнр был сверхпопулярным языком в вебе.
Не знаю о каких принципиальных отличиях ты говоришь. Принципиально есть несколько парадигм, несколько систем типов, конкурентных моделей, видов полиморфизма и все. Все остальное это детали, а не что-то принципиальное.
>рнр был сверхпопулярным языком в вебе.
Его популярность была в том, что не надо было писать веб на сях или перле, при этом ты писал как на упрощенных сях.
Ну и конечно удобная реализация на хостинга.
Питон в те года выглядел как нонейм с экзотических синтаксисом и экзотическими проблемами поехавшего одиночки, до версии 3 было далеко, а пхп уже с 5 версии стал вменяемым (питон и с 3 версии не особо стал адекватным).
Сейчас питон имеет тучу всяких фишек, но все как-то через одно место, через грязные фантазии Гвидо, видимо.
Лол, модератор пост про опенсорс пятого шарпа потер. Какого-то ущербного сюда привели. хороший повод сленять отсюда
Python + C (~80% / 20%)
мимокрокодил, не понимающий какое удовольствие писать все время на низкоуровневом языке
Ада?
>Руби более продвинут
но он не настолько продвинут относительно питона, как раст относительно сей/плюсов. Т.е., он не решает каких-то настолько принципиальных проблем , чтобы на него вот прям массово повалили.
>легкая встраиваемся параша
не легче lua, не в этом дело.
Ада не на аде писала.
Ну еб вашу мать. Только решил на работе начать проект на актиксе - на следующий его снесли. Только начал проект на варпе - актикс вернулся. Пидоры хотя варп очень даже неплох на самом деле
Брать для работы и бизнеса низкокачественные продукты, каких-то херов, которые то обижаются то не обижаются и пишут код чисто под бенчмарки почти как на си?
Это все что может дать раст за эти годы, этот кустарный уровень производства?
Даже го со встроенным http выглядит не так ущербно.
Посто в раст набежало крестовиков и сидебилов у которых и гото это норм. Это было неизбежно видимо. Пройдёт время и они переварятся. Бугурты и профиты со всякими артиксами это хорошо, значит сообщество живое и активное.
>>579223
Кстати, это всё вскрывает истинную суть байтоёбов, сишников и крестовиков, они просто неумеют в структурированное программирование. Дело не в контроле байтиков, а в том что эти овощи вообще не думают о пробллемах вроде ошибок доступа к памяти, когда высирают очередную лапшу. Отсюда столько багов с выходом за границы буфера блядь в 3жды переаудитином ссл или любой другой ключевой либой.
> Брать для работы и бизнеса низкокачественные продукты, каких-то херов, которые то обижаются то не обижаются и пишут код чисто под бенчмарки почти как на си?
Well, обычно при выборе либы я смотрю на количество звездочек/коммитов в репозиторий, а не на треды на реддите. Возможно стоит пересмотреть свой подход.
> которые то обижаются то не обижаются
А мы же помним еще про left pad, да? Думаю тут проблема не конкретного языка все таки.
> Это все что может дать раст за эти годы, этот кустарный уровень производства?
Ну да. Без нормального использования в продакшене нихуя и не появится. Причем так, чтобы сами конторы коммитили обратно в open source.
> Даже го со встроенным http выглядит не так ущербно.
Как жаль, что сам язык хуевый.
> benchmark
> hello world
> в растокоде используется макрос, который оверхуилядр раз перевыделяет память
авторитарно...
> > benchmark
> > hello world
Ты бы хоть разобрался ради чего он.
> > в растокоде используется макрос, который оверхуилядр раз перевыделяет память
Напиши свой пример.
> Напиши свой пример.
системкол + статик
кстати интересный факт, в том же бенче в сикоде используется не printf, а puts
Какая нахуй разница в 0.0000000000001 наносекунду, если на расте можно писать безопасный код, в отличие от Си?
Железо сейчас куда мощнее, чем в 70ых, эти 0.00000000001 наносекунды не имеют никакого значения даже в хард РТ проектах, если тебе при этом дается буст в 300% в плане безопасности.
дальше то что? в примере си использует вывод статичной строки через puts, пока раст раскладывает твой println в еще дохуилен аллокаций, строк и прочего...
если коротко: было бы куда честнее использовать в си printf или в расте еще дописать функцию для вывода
Systemcalls.
скриптопараша и гц не годятся для системного программирования, в скриптопараше не находят бинарные уязвимости
>скриптопараша и гц не годятся для системного программирования, в скриптопараше не находят бинарные уязвимости
У скриптопараши и GC основная проблема - это проблема Мюнгхаузена, что бы написать на них операционную систему нужно что бы операционная система уже была написана, а вовсе не проблемы с производительностью.
Слышал, что rust сложный. На уровне C++, а в некоторых моментах сложнее. Миф? Правда не сложнее Си?
println! в паре с opt-level=s, а чувак ещё и удивляется. Просто какое-то уёбище, которое смогло выучить три команды на ассемблере пытается что-то кому-то доказать, но не может даже элементарно прочитать, что делают команды компилятору и почему раст по дефолту импортит std prelude, а в эмбеддед надо указывать #![no_std]. Вот когда у этого долбоёба стек переполнится, он охуеет это дебажить, а любой белый растер сразу узнает что случилось из ошибки. И вместо того, чтобы дебажить ассемблерный код и проблемы с памятью, в расте остаются только проблемы логики, которые изи ловятся юнит-тестами. К тому же в любой программе сложнее хелловорда компилятор оптимизирует лучше долбоёбов-ассемблероёбов, которые даже в кроссплатформенность не могут.
Ну, у Си сложность в вылавливании утечек, выходы за границы, UB и тд. Но синтаксиз не сложный. А у rust что? Подумываю для embedded вариант, но отпугивали мифы о сложности.
Смотри, есть две стороны сложности: сложно в обучении и сложно в бою. Раст сложен в обучении: сразу и борроу чекер и очень-ёбаный-рот-ты-не-можешь-сам-превратить-мне-i32-в-i64-почему-я-должен-сам-это-указывать-ебучий-ты-раст? сильная типизация, и деление на safe-unsafe, которое невозможно понять, не имея глубокого понятия UB. Но потом, когда ты ебошишь либу или программу, ты понимаешь, какие проблемы могут вылезти и почему они могут вылезти, поэтому они не вылезают, пока ты не обосрёшься с usnsafe'ом в своём коде или кто-то другой не обосрётся с ансейфом в либе, которую ты юзаешь.
В си наоборот — выучил пару типов (инты, були, указатели), пошёл кодить. Но потом ты охуеешь, когда у тебя вылезет UB, а ты не знаешь, что такое UB и почему на одном компьютере твоя программа выполняется, а на другом крашится. В итоге ты вместо пары недель на обучение тратишь по дню на каждый новый баг. В итоге через четырнадцать багов ты проебёшь времени больше, чем на обучение по книжкам раста. А багов будет много.
В крестах кроме тех же проблем, которые есть в си, ещё есть проблемы OOP, проблемы с тем, что вместо std либы надо учить boost и другие best-libs, которые ещё хуй найдёшь, ещё проблемы с линковкой, которые тоже охуеешь дебажить. Ещё в крестах надо учить best-practices, но ты не узнаешь про эти бест-практисы, если тебе кто-то другой не подскажет.
А вот в расте все эти бест-практисы в книгах и учебниках уже есть. К тому же в расте вместо OOP, который часто убивает производительность (намного чаще и намного сильнее, чем ты думаешь), система трейтов. Трейты позволяют и множественное наследование и всякие другие вкусные штуки. Ещё есть макросы. Макросы сложны, но просто невероятно охуенны, когда ты научишься их писать. Они даже позволяют делать то, что нельзя пока что делать другим способом:
https://github.com/dtolnay/case-studies
А кто мешает юзать что-то одно, пока не выучишь другое? Пока не выучишь итераторы, не юзай функциональщину. Пока не хочешь лезть в лоу-левел, не юзай императивщину. Но вот если ты делаешь функцию по типу
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| {/.../});
В общем, для неких вещей надо чётко понимать, что они могут и как работают. А так я не понимаю твоих претензий. Функциональщина удобна на хай-лвл кодинге, а императивщина на лоу-лвл.
Потому что в D ничего нет, есть только ебля и GC.
Нет никакой разницы с современными плюсами. Кроме разве что той, что плюсовый компилятор тебя не бьёт по рукам за проёбы, и использует их для оптимизации собранного бинаря.
А Nim?
> Раст сложен в обучении
Нет.
>>579797
>Слышал, что rust сложный. На уровне C++, а в некоторых моментах сложнее. Миф? Правда не сложнее Си?
Если ты на Си НЕ кодил, то тебе будет сильно проще чем если ты уже матёрый Си кодер.
О сложности раста говорят Си мартышки, очевидно, которые просто не могут переобучиться.
Они думают что это будет как Си, а это совсем не как Си.
>На уровне C++
С++ - помойка, нет ни одного компилятора реализующего стандарт, и нет 2х компиляторов реализующих одно и то-же подмножество стандарта.
>Но синтаксиз не сложный.
У Форта совсем простой, и че, думаешь легко учиться на форте писать?
О, очередной даунич сравнивает абсолютно разный код. Тащемта ничего не мешает тебе также дернуть низкоуровневую сишную функцию из раста, да, и будет прям как в си https://lifthrasiir.github.io/rustlog/why-is-a-rust-executable-large.html .
Понятно. Как раз в Си не вкатывался. Буду ржаветь.
ну, тебе не обьязательно проверять длину массива, если ты используешь вектор то можешь на нем .get(idx) применить и получить опциональное значение
Так значит этот .get уже содержит проверку на индекс с условием возврата опционального значения. Но ведь я могу точно так же и в C++ написать функцию которая проверит индекс и вернет опциональное значение. Так в чем тогда заключается эта супер безопасность раста? Допустим вот такой псевдокод:
vector array;
array.reseize(10);
a = array[228]; //228 было введено пользователем и неизвестно при компиляции
a.field1 = 1488;
В С++ такой код крашнет программу, а что будет в расте?
а, ну безопасность как раз таки не в твоих массивопарашах (олсо там просто панику вызовет при попытке индексировать массив за пределами, почему хз), а в бороучекере и строгих правилах передачи ресурсов.
Если коротко: у переменной может быть только один овнер, который если захочет позволит давать доступ к свой памяти (Rc, RefCell, Arc, Mutex etc). Вообщем на расте куда проще писать код в том плане, что компилятор тебя пошлет нахуй, если ты захочешь сделать к примеру глобальную переменную между потоками, так как такая переменная не будет иметь типаж Send
>Вообщем на расте куда проще писать код в том плане, что компилятор тебя пошлет нахуй, если ты захочешь сделать к примеру глобальную переменную между потоками, так как такая переменная не будет иметь типаж Send
ну это имеется в виду любое, что Send типажа не имеет, к примеру любой примитивный тип, строчки.
А еще раст четко определяет лайфтаймы у референсов, тут нельзя как в си параше выделить поинтер и запихать его в овер9001 йоба структур, которые будут до конца жизни программы вертеться. если конечно изначальная переменная не статична
Так в С++ есть же unique_ptr, shared_ptr, weak_ptr которые все это реализуют и ограничивают владение.
Высосано из пальца.
>нет ни одного компилятора реализующего стандарт,
Как понять что растомразь пиздит? Она открыла рот.
Так он же сам блять заюзал move семантику и передал ресурс другой переменной. Если бы он написал auto stolen = orig компилятор его бы тоже нахуй послал.
А в этом случае почему не посылает? Спокойно компилирует, потом вываливает сегфолт. Это норма?
Не норма, но крестовикам что ни пихни, они скажут "Мы так не пишем!" Гении ебаные не ошибаются никогда.
Ну да, то что дефолтный компилятор это не детектит хуево конечно, но есть же различные санитайзеры которые обнаруживают это.
А вот сейчас бы язык, в котором такой санитайзер прям сразу был, полезная ведь штука. Вот бы кто-нибудь сделал.
ну у меня поэтому и появилась идея тоже самое в своем пулреквесте сделать) как раз таки на тот момент мадоку досматривал
>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
Анон, помоги, иначе придется выкатываться из этого злоебучего говна, все нервы мне уже сжег обоссанный компилятор
self.client возвращает референс, а не значение. Ты не можешь собрать референсы в Box, потому что Box может жить вечно, а твои референсы живут только пока живёт &mut self.
Точнее, не self.client, а весь чейн, который начинается с self.client. Этот чейн возвращает референс с лайфтаймом как у &self, ты этот референс пихаешь в вектор, а потом пытаешься вернуть из функции эти референсы на временно созданные внутри функции итемы.
>>587794
Я вчера примерно после третьей банки пива так и подумал, но спасибо, что смог это вербализовать, потому что у меня кроме "бля" и "пиздец" слов не было, настолько я преисполнился в своем сознании. Как же хорошо в Питоне было, сидишь, обмазываешься строками как хочешь...
Теперь надо понять как эту хуету вылечить.
И да, ты можешь как-то оценить тот код из бенчмарка, который я скинул выше? Почему он работает? Там же в https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/Rust/actix/src/db_pg.rs#L114-L116
примерно то же самое происходят - берется self и его мемберы, пихаются в вектор, а вектор потом внутри футуры разматывается. Футура, в свою очередь, уже в хуй пойми какой зоне видимости.
Сажа из говнотреда приклеилась, извените
Хуйня в том, что в моем коде, который вызывает ошибку, тоже значения вроде бы пихаются: https://pastebin.com/jpGaM6Sw
Я не вижу твоего определения PgConnection, а потому не могу ничего сказать. Весь нужный код дайте, пожалуйста.
https://pastebin.com/TqZEWfAJ
Client и без Box тоже не работает, я уже от безысходности перебором начал решения искать, изначально Box не было.
Есть подозрение, что проблема в query_one()
https://docs.rs/tokio-postgres/0.5.2/tokio_postgres/struct.Client.html#method.query_one
Там четыре лайфтайма в функцию заходит. И это грустно. А так да, вроде как всё заовненное выходит.
Я правильно тебя понял, что без распердоливания кода в tokio-postgres у меня выхода нет?
>>588521
>>588172
Короче, спасибо тебе, анон. Я нихуя не доволен результатами расследования, так как пришлось въебать кучу документации, тем не менее ты помог сдвинуться с мертвой точки. Родина тебя не забудет.
Более детальные ответы я смог найти здесь:
https://users.rust-lang.org/t/lifetime-of-object-captured-in-future-a-solution/13663
https://users.rust-lang.org/t/help-with-static-lifetime-on-self-when-using-async/31482
Но ведь Мадока это кино для взрослых.
>еву
Это как "Ромео и Джульетту" сравнивать с современными любовными высерами для чтения в поездах и залах ожидания. Немного утрирую, но суть та же.
а теперь извинись за мадоку
В хром завезли поддержку DWARF. А значит отлаживать WASM должно быть гораздо легче.
Компилируется не так же долго и хуево, как кресты?
Что там за особенность одиночной записи и множественного чтения объекта? Как полагаю, это и есть то самое, чому раст типа безопасен.
>раст типа безопасен
Весь раст построен на unsafe, лол. О какой безопасности ты говоришь? Все бенчмарки, где раст рвет гоу, джава и дотнет - это просто авторы фреймворков и библиотек выдрачивали перформанс, переписывая проект на ансейф, лул.
Ну ты берешь крейт с асинхронным получением мультипарта, получаешь Stream<Bytes>, и пишешь сырые байты в память/файл как угодно.
> эти байты надо раскодировать, ибо картинка сжата
ну то есть я представляю это как то так:
есть парсер png со всякими адам7, deflate и прочей жестью, оно на вход получает поток байтов и валидирует их, попутно обновляет состояние, кидает ошибку если нужно.
ну то есть обычный такой future::poll, вот только такого я увы не в image, не в png не нашел, даже просто закидывание байт без асинхронности, только если целиком все и сразу...
Ну заверни в нужный декодер свой стрим, оно будет налету декодировать твой deflate. А по поводу валидации - я не знаю формат твоих картинок, но вполне модет быть, что нельзя ничего валидировать, пока оно не будет все в памяти. Или пиши свою очень сложную хуиту, которая будет нлету проверять структуру байт.
100.
https://github.com/image-rs/inflate
вот, в том же image всё уже есть. В самом низу пример - он уже готов для асинхронности. Распаковал пачку байт - передал другому потоку на запись, а в текущем потоке продолжаешь распаковку.
А теперь признавайся - полюбас или тестовое делаешь, или по работе.
Заебала жаба, возьмите меня к себе.
То есть все очень плохо?
Ну, вот собрался ты свою распаковывалку deflate потока писать. Берёшь и без задней мысли хуяришь прямо на диск всё, что там нараспаковывалось в inflate - а там терабайт нулей. Эт во-первых.
А во-вторых, извлекать поток прямиком на запись ещё и бессмыссленно, т.к. ФС всё равно будет буферизировать данные в памяти и только потом скидывать на физический носитель сразу крупными пачками.
Проще и безопаснее принять данные, валидировать, а уж потом куда-то там писать или не писать.
В пнг вроде зипа нет.
Зачем картинки читать вообще на сервере?
Стандартные либы не имеют этих защит?
>>597278
>Ну, вот собрался ты свою распаковывалку deflate потока писать.
Нет спасибо.
>Берёшь и без задней мысли хуяришь прямо на диск всё, что там нараспаковывалось в inflate - а там терабайт нулей. Эт во-первых.
Ну тип элементарная проверка соответствия размера распакованного с указанным в метаданных.
>Проще и безопаснее принять данные, валидировать, а уж потом куда-то там писать или не писать.
Наверное. Думаю все же стримить в файл сразу разумнее, случаи невалидности по определению будут крайне редки. Лишние буферы раздувать то же не самая хорошая идея..
> Наверное. Думаю все же стримить в файл сразу разумнее, случаи невалидности по определению будут крайне редки. Лишние буферы раздувать то же не самая хорошая идея..
так прямо on the fly не ? получил с мультипарта данные, завалидировал, загрузил куда надо, еще и успеешь сохранить части тамбнейла на диск
> В пнг вроде зипа нет.
> Зачем картинки читать вообще на сервере?
тамбнейлы
> Стандартные либы не имеют этих защит?
ну кто знает...
>так прямо on the fly не ? получил с мультипарта данные, завалидировал, загрузил куда надо, еще и успеешь сохранить части тамбнейла на диск
Я немного не пони о чем ты.
превью картинки, исходная допустим 1024х1024, а тебе нужно отобразить уменьшенную версию 256х256
>превью картинки, исходная допустим 1024х1024, а тебе нужно отобразить уменьшенную версию 256х256
Да, это понимаю. Я твоей фразы в принципе не понял. Что ты конкретно предлагаешь? Или спрашиваешь у меня?
> Что ты конкретно предлагаешь
асинхронно читать байтики из мультипарта...
то есть в идеале, при получении, сохранять их в файл и еще раскодировать, что бы на основе их на лету создавать превью картинки
>еще и успеешь сохранить части тамбнейла на диск
Смысл распаковки, обработки и записи на лету есть только для больших данных, типа видео, например - вот там разрешаю, делай. А тамбнейлы твои всё равно будут копиться в памяти и фактически писаться на диск по мере накопления буфера на запись. И без разницы, где именно будут копиться данные - в памяти твоей программы, или в буфере ФС.
Твой тамбнейл всё равно ни кому не дался, пока не будет сохранён полностью - тут ты и в раннем начале записи ничего не выигрываешь. Только переусложнишь код и создашь лишнюю нагрузку.
> А тамбнейлы твои всё равно будут копиться в памяти
не будут, мы будем доставать байтики, уменьшать в n раз и сохранять на диск, хотя словарь будем хранить полностью как я понимаю
> Только переусложнишь код и создашь лишнюю нагрузку.
ну почему же? скорость до клиента маленькая, и если подумать, то когда приходят байтики ты просто часть обрабатываешь и наслаждаешься. в итоге можно аж секунды времени сохранять для каждого запроса
>в итоге можно аж секунды времени сохранять для каждого запроса
У тебя накладные расходы на асинхронное взаимодействие "поток распаковки" -> "поток тамбнейла" отожрут процессорного времени куда больше, чем ты сэкономишь по сравнению со сжатием сразу готовой картинки. Хотя, для очень больших картинок возможно будет смысл резать их порциями по ~1МБ
>>597350
>доставать байтики, уменьшать в n раз и сохранять на диск
я так понимаю, знаний о том, как устроены современные ФС, у тебя нет от слова совсем.
>я так понимаю, знаний о том, как устроены современные ФС, у тебя нет от слова совсем.
Но ведь современные фс сделаны специально так, чтобы не нужно было знать, как они устроены..
Если пытаешься в наносекунды, то надо.
Лан, распишу подробнее. Современные ФС (и не очень современные) не пишут байтик сразу на физический носитель как только тебе это приспичило - сперва операции на запись копятся в кеше в оперативе.
Отсюда первый вывод: в плане экономии памяти нет разницы - что ты будешь сразу писать по байтику (по сути в кеш в оперативе, а не на диск), что создашь тамбнейл и захуячишь его на запись целиком.
Второй вывод: это не имеет смысла также в плане сохранения оригинальной картинки, так как крайне редко никогда тебе будут аплоадить что-то, превышающее по размеру кеш на запись.
Третий вывод: это также бессмысленно в плане балансировки нагрузки, так как она у тебя и так будет равномерной за счёт множества клиентов. Скорее наоборот: чутка сгладив пики ты добавишь +5% нагрузки на ЦП собственно алгоритмом сглаживания этих самых пиков.
разве только, если ты будешь запускать борду на ардуине с ограничением в 1 подключенного клиента - вот там такое пригодится.
я тебе советую не страдать хуйнёй и отложить такие тонкие оптимизации на потом. Вот потом можно будет сделать чисто ради вау эффекта: например, чтобы новый пост с тамбнейлом начинал прогружаться ещё до того, как у отправителя поста его картинка загрузится на сервер. Ну и обновление треда по вебсокетам, ессно. Но чтобы в этом был смысл, нужно дохуя юзеров, а тебе до этого как до луны.
> Лан, распишу подробнее. Современные ФС (и не очень современные) не пишут байтик сразу на физический носитель как только тебе это приспичило - сперва операции на запись копятся в кеше в оперативе.
> Второй вывод: это не имеет смысла также в плане сохранения оригинальной картинки, так как крайне редко никогда тебе будут аплоадить что-то, превышающее по размеру кеш на запись.
ой не пизди, сам файл идет по хттп, медленно пиздец, хранить это все в озу будет идиотизмом, ровно как и загружать с диска в память
ну и кстати, насчет тамбнейла: у меня загрузи/сделай тамбнейл/выгрузи после сохранение оригинала занимает пол секунды, и это только на одну картинки (юзал image крейт)
> Третий вывод: это также бессмысленно в плане балансировки нагрузки, так как она у тебя и так будет равномерной за счёт множества клиентов. Скорее наоборот: чутка сгладив пики ты добавишь +5% нагрузки на ЦП собственно алгоритмом сглаживания этих самых пиков.
то есть ты предлагаешь ждать ебучий мультипарт пару минут, что бы потом начать по полной загружать потоки, плодить процессы, вместо того, что бы во время загрузки генерировать тамбнейл или что?
> Ну и обновление треда по вебсокетам, ессно.
костыль же, чем это лучше запроса получению постов, чей номер выше последнего поста по таймеру?
кстати, тот чел >>599473 не я а борду я пишу
>хранить это все в озу будет идиотизмом
писать побайтово сразу на физический носитель - вот это идиотизм. Слава б-гу, современные ФС этим не страдают.
>предлагаешь ждать ебучий мультипарт пару минут, что бы потом начать по полной загружать потоки
справедливо только в случае однопоточной работы - я же не зря ардуину упомянул. А если у тебя единовременно аплоадятся 10~1000 картинок, то нагрузка будет размазываться и так, без всякого извлечения из мультипарта на лету.
>чем это лучше запроса получению постов, чей номер выше последнего поста по таймеру?
>занимает пол секунды
ну вот ты сам себе и ответил - твои эти сэкономленные полсекунды ничего не играют на фоне таймера в 15 сек. А экономить полсекунды есть смысл только при попытке максимально увеличить отзывчивость боды - тогда уже юзай вебсокеты - чтобы у юзера прям на лету всё было.
извлекать мультипарт на лету есть смысл - только чтобы сэкономить память на его хранении. Но писать тамбнейл на лету никакого смысла нет - я об этом.
> писать побайтово сразу на физический носитель - вот это идиотизм. Слава б-гу, современные ФС этим не страдают.
то есть если я начну загружать 50 миб , и сразу сейвить на диск, оно будет все это в памяти хранить, ты ничего не перепутал.
лучше закинь пруф на примере с ext4
загугли про vfs_cache_pressure и ext4 write cache
это всё, кстати, можно отключить и писать, действительно, напрямую - но ценой снижения скорости и ресурса HDD.
А как именно ты хочешь генерировать шейдеры? В расте есть два способа автоматизировать что-что во время компиляции: процедурные максросы, которые превращают расто-подобный псевдокод в растовый код (можно даже С++ встраивать, пикрил) и build.rs-скрипт, который по сути является отдельной программой (для него даже отдельные зависимости указывать можно), выполняемой до компиляции, где можно генерировать какой-нибудь код.
Это копия, сохраненная 12 апреля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.