Вы видите копию треда, сохраненную 6 октября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
https://www.rust-lang.org
Учить
> Оф. книга, она же растбук
https://doc.rust-lang.org/book/
https://rustbyexample.com/
> Очень хорошая книга, отлично зайдет после растбука:
http://shop.oreilly.com/product/0636920040385.do
> Список интересных проектов
https://github.com/rust-unofficial/awesome-rust
Писать
> IDE
https://areweideyet.com/
> Вебня
http://www.arewewebyet.org/
> Игры
http://arewegameyet.com/
> Etc
https://wiki.mozilla.org/Areweyet
Новости
> Компиляция всего, что произошло за неделю
> Иногда постят вакансии
https://this-week-in-rust.org/
> Сколько вешать в лайках
https://github.com/trending/rust
Старый тред тонет тут >>1154517 (OP) (OP)
семантика перемещения
гарантированная безопасность памяти
потоки без гонок данных
обобщение через типажи
сопоставление с образцом
вывод типов
маленькая среда исполнения
эффективный FFI
Если ты не знаешь что такое многопоточность, то думать про гонки тебе еще очень рано.
Кыш блять
Прости, я совсем не понял смысл того, что ты приложил этот линк.
Возможно это из-за того, что я длительное время программирую на С/С++ и потому мне все эти вещи кажутся логичными и сами собой разумеющимися. Но, ИМХО, взглянув поверхностно на листинг кода С ты сразу поймёшь что он делает.
Да ты что?
Ну ка, взгляни поверхностно вот сюда и расскажи что тут происходит: https://github.com/gcc-mirror/gcc/blob/master/liboffloadmic/runtime/offload_target.cpp#L157
Так и думал, что такая хуйня начнётся. Но ставил на то, что ты вытянешь что-нибудь из линуксового ядра. Само собой, чтобы понимать что делает, надо будет изучать контекст. Не хочу тратить на это своё время.
Зубодробительные куски кода, больше смахивающие на обфусцированные, можно сделать на любом языке и с любым синтаксисом. Поэтому мое предыдущее предложение было о том, что чтобы понять код на С нужно меньше знать С, а больше понимать написанный алгоритм.
Мань ну что за чушь ты несешь?
Ты знаешь си, и очевидно читать код на си тебе проще.
С хуя ты решил что ты должен сразу понять код на неизветсном тебе языке? Открой еще код на хаскеле и удивляйся тому, что там тебе вообще ничего не понятно.
Вот хотя бы https://vilhena.wordpress.com/2010/07/04/quicksort-haskell-vs-c/
Ладно, возможно ты и прав.
>>28370
Да, реализацию быстрой сортировки на хаскеле видел и в две строчке. Можешь считать меня отбитым, но для понимания алгоритма мне ближе будет код на С. И мы ведь обо всём об этом говорим в рамках системного программирования, потому что С для чего-то большего вряд ли уже нужен.
Ты путаешь жопу с пальцем.
Что хаскель, что раст позволяют описывать именно алгоритм, потому что в этом можно сказать вся суть функционального подхода. В случае с сишкой ты просто чуть более удобно пишешь инструкции для проца о том как байты гонять туда сюда.
>Rust - невероятно быстрый язык
По сравнению с питоном?
>для системного программирования
>без segfault'ов
Ахахах, ложь, для системного нужен unsafe, а значит будет тот же segfault, никаких плюсов тут нет.
>абстракции с нулевой стоимостью
Строки в utf8, всякие типажи плохо влияют на память, итд. Такие абстракции может и есть, но в большинстве...
>семантика перемещения
В С ненада (имхо), а в плюсах есть
>гарантированная безопасность памяти
Лул, но вот только его разработчики считают что например такая вещь как утечка памяти, это довольно безопасно.
>потоки без гонок данных
Неплохо.
>вывод типов
Имхо ухудшает читаемость кода.
>маленькая среда исполнения
По сравнению с питоном?
>эффективный FFI
Да вполне обычный.
>Rust - невероятно быстрый язык
По сравнению с питоном?
>для системного программирования
>без segfault'ов
Ахахах, ложь, для системного нужен unsafe, а значит будет тот же segfault, никаких плюсов тут нет.
>абстракции с нулевой стоимостью
Строки в utf8, всякие типажи плохо влияют на память, итд. Такие абстракции может и есть, но в большинстве...
>семантика перемещения
В С ненада (имхо), а в плюсах есть
>гарантированная безопасность памяти
Лул, но вот только его разработчики считают что например такая вещь как утечка памяти, это довольно безопасно.
>потоки без гонок данных
Неплохо.
>вывод типов
Имхо ухудшает читаемость кода.
>маленькая среда исполнения
По сравнению с питоном?
>эффективный FFI
Да вполне обычный.
https://medium.com/@saschagrunert/a-web-application-completely-in-rust-6f6bdb6c4471
Какой смысл делать unsafe-мод в языке, если это нарушает безопасность? Почему нельзя сделать unsafe-мод безопасным?
Ёбаный пиздец.
Что значит сделать безопасным? unsafe просто отключает некоторые проверки конпелятора, а значит и гарантии безопасности, которые эти проверки и дают. Он не делает автоматом код небезопасным, безопасность зависит от программиста.
>unsafe просто отключает некоторые проверки конпелятора
А вот нахуя их отключать, чтобы писать низкоуровневые вещи?
Нужно конкретные случаи смотреть.
Компилятор не всегда может понять что код безопасный. unsafe означает не "небезопасный", а то что безопасность кода гарантируется программистом.
>Компилятор не всегда может понять что код безопасный
Ну так сделайте компилятор нормальный, хуле.
Иначе какой смысл этого языка, кроме того, что он еще не такой перегруженный как кресты
> Ну так сделайте компилятор нормальный, хуле.
Это невозможно, поскольку подобная безопасность зачастую условлена особенностями операционной системы, сторонних библиотек или даже процессора. Например программируя для микроконтроллера, ты можешь знать, что работать определённым образом с областью памяти по адресу X безопасно, но компилятор-то об это не знает. Потому ты и используешь unsafe-блок.
Это уже к производителя процессоров/операционных систем.
> его разработчики считают что например такая вещь как утечка памяти, это довольно безопасно.
Пруф?
Пруф?
>currently working on the Swift team at Apple
То Хоар, то этот. Там что, всю наиболее толковую растовскую команду яблочники скупили, чтобы работать над конкурирующим языком программирования? Тогда неудивительно, что раст перестал серьёзно развиваться.
Еще Слава тоже у них работает, реально крутая команда. Не понимаю, почему они до сих пор не пытаются захватить рынок языков. Свифт действительно неплохая попытка натянуть нормальный язык на привычное говнарям си-подобное говно.
>раст перестал серьёзно развиваться.
4.2
Алсо, раст - это скорее конкурент го, шарпу, джаве и в некоторых случаях рубипитонам. Оба они конечно конкурируют с крестами, но на самом деле отлично ужились бы вместе, у них немного разные ниши.
Да и к тому же он был VOLUNTEER, ну то есть просто слал патчи видимо, в самой команде его не было.
Тебя не смущает название файла?
Да, люди ебанутые и иногда пишут странную хуйню, и этот тест проверят что странная хуйня работает как надо.
Все предъявы итт по поводу "ебанутого синтаксиса" от недалекости. А любой лисп по вашему вообще хуйня для инопланетян? А хаскель и прочие идрисы?
Есть конкретные вопросы, типа "почему фича X использует такой синтаксис, а не такой"?
Идрис это же пару стпелочек для хипстеров, что там понимать в синтаксисе?
> Быстрый
Да, быстрый
> unsafe
В си у тебя segfault может выпасть непонятно когда и где
В расте достаточно отдебажить unsafe куски чтобы они правильно исполняли "контракт"
> Влияют на память
Вообще не ебет, по памяти до программ на джаве ещё далеко, а по времени они действительно с нулевой или околонулевой стоимостью, в некоторых местах лучше си. Кстати чтобы на си написать как на расте нужно изъебнуться, а на расте как на си почти без проблем.
> Семантика перемещения
В расте она нативная и более эффективная и понятная, чем в крестах
> Утечки
Их уж поменьше чем в си где каждая библиотека предлагает по-своему очищать память и это точно безопаснее чем дважды юзнуть free. И вообще сам язык заставляет думать о том что пишешь, а не о том куда бы байтик перегнать
> Маленькая среда исполнения
По сравнению с почти любыми языками
> Вывод типов
Уж получше чем void
Мне кажется что все, кто думает "зачем нам другие языки, на сишке же все то же самое только быстрее работает" просто никогда не писали ничего сложнее laba1.cpp
Как что-то может быть быстрее си? Он же "самый низкоуровневый из всех высокоуровневых"
мимо иду в свой питонотред
Лол, да я просто накидываю. В первых двух бенчмарках он там быстрее си. Ну видимо компилятор более эффективно накомпилял, бывает. Так-то они все примерно на одном уровне конечно, ну и синтетические бенчмарки - это конечно сферический такой показатель.
А вообще, низкоуровневый\высокоуровневый не значит быстрый\медленный, ортогональные вещи.
>В чём его преимущество и недостатки перед Си?
В начале книги сказано http://shop.oreilly.com/product/0636920040385.do
Я на 100 всегда ставлю. 80 слишком мало. Ну и отступы - 2 пробела.
Погоди, а если твоя функция возвращает Result, то зачем ты везде пишешь unwrap, если можно писать ? и потом уже чекать ошибку
Автор поста отвечает!
>Да, быстрый
Ты блять предложение прочетай умник. там написанно что он сверхбыстрый
>В расте достаточно отдебажить unsafe куски чтобы они правильно исполняли "контракт"
В С/C++ можно наделать абстракций, а куски отладить.
>в некоторых местах лучше си
Хоп! Пойман на пиздеже! Ты еще скажи что быстрее машинного кода. Раст это как минимум си + оверхед по своей сути, ничего глобально нового оптимизирующего там нет, разве что компилятор хуже.
>Кстати чтобы на си написать как на расте нужно изъебнуться, а на расте как на си почти без проблем.
Примеров не будет?
>Вообще не ебет
Ды питон тогда лучше взять, лол.
>В расте она нативная и более эффективная и понятная, чем в крестах
А почему в плюсах она не нативная и менее эффективная?
>Их уж поменьше
Речь не об этом, можем вспомнить тогда уж шел скрипты, там память не течет тоже.
>И вообще сам язык заставляет думать о том что пишешь
Особенно я люблю думать о лайфтаймах и прочей хуйне, да.
>По сравнению с почти любыми языками
Блять, ну давай исключений наделаем, Perl самый быстрый!!!! по сравнению с почти любым языком. скриптовым, ну и кроме парочки там... ну а так быстрый!!! Ты же сам сравниваешь с сишкой постоянно, а тут начинаешь "ну и что, поменьше python/etc.... "
>Уж получше чем void
Ты видишь что я пишу вообще, лол? Ты блять с Сишкой чтоль говоришь? Она блять не живая, ты конечно можешь но зачем цитировать куски моих фраз? А void это отличная штука.
Автор поста отвечает!
>Да, быстрый
Ты блять предложение прочетай умник. там написанно что он сверхбыстрый
>В расте достаточно отдебажить unsafe куски чтобы они правильно исполняли "контракт"
В С/C++ можно наделать абстракций, а куски отладить.
>в некоторых местах лучше си
Хоп! Пойман на пиздеже! Ты еще скажи что быстрее машинного кода. Раст это как минимум си + оверхед по своей сути, ничего глобально нового оптимизирующего там нет, разве что компилятор хуже.
>Кстати чтобы на си написать как на расте нужно изъебнуться, а на расте как на си почти без проблем.
Примеров не будет?
>Вообще не ебет
Ды питон тогда лучше взять, лол.
>В расте она нативная и более эффективная и понятная, чем в крестах
А почему в плюсах она не нативная и менее эффективная?
>Их уж поменьше
Речь не об этом, можем вспомнить тогда уж шел скрипты, там память не течет тоже.
>И вообще сам язык заставляет думать о том что пишешь
Особенно я люблю думать о лайфтаймах и прочей хуйне, да.
>По сравнению с почти любыми языками
Блять, ну давай исключений наделаем, Perl самый быстрый!!!! по сравнению с почти любым языком. скриптовым, ну и кроме парочки там... ну а так быстрый!!! Ты же сам сравниваешь с сишкой постоянно, а тут начинаешь "ну и что, поменьше python/etc.... "
>Уж получше чем void
Ты видишь что я пишу вообще, лол? Ты блять с Сишкой чтоль говоришь? Она блять не живая, ты конечно можешь но зачем цитировать куски моих фраз? А void это отличная штука.
Полный пиздец, любой файл из Mojolicious (а оно на Perl, который считается нечитабельным), будет читабельнее и красивее.
Так еще бля лучше, вм и емакс еще хуже! Во первых в баре бесполезные кружки вместо циферок у воркспейсов, во вторых надписи и иконки не выравненны по вертикали, в третьих тень налазит на панель, а должно быть наоборот, в четвертых хуево все видно, хули одноцветно? В пятых хули внизу не выравненно у емакса выделение? В шестых меня заебало, ну хуйня же, хз что тебе понравилось тут, ну если допилить нис будет, мне тож нравилось пока на превьюшку смотрел.
>бесполезные кружки вместо циферок у воркспейсов
Я не представляю, каким аутистом надо быть, чтобы циферки были полезны. Вот нахуя тебе циферки?
>надписи и иконки не выравненны по вертикали
С чего ты взял? Вроде по центральной линии выровнены как раз. Или ты не про кружки это уже?
>тень налазит на панель, а должно быть наоборот
Схуяли наоборот? Панель - это негатив спейс, кури хиги аппла.
>хули одноцветно
Ну пиздец, а тебе надо радугой? За этим к скалистам
>хули внизу не выравненно у емакса выделение
Вот это кстати реально параша, на юникодных символах его так распидорашивает. Но я так понимаю чтобы это решить надо перепиливать все шрифты, это не имаксовая проблема.
>Я не представляю, каким аутистом надо быть, чтобы циферки были полезны. Вот нахуя тебе циферки?
Нахуя кружки, убирай их, пора бы уже запоминать где ты окна открываешь, аутист склерозный
>С чего ты взял? Вроде по центральной линии выровнены как раз. Или ты не про кружки это уже?
Ты че слепой, я те пишу тект и иконки, ты блять на кружках текст видишь, или рядом? Тогда иди нахуй, хуйло!
>Схуяли наоборот? Панель - это негатив спейс, кури хиги аппла.
А хули у них тень как я хочу? Потому что блять панель она перед фоном, ебать ты довен, тралируешь чтоль меня? Ды я те с вертухи в печень дам, сразу блять поймешь с кем базаришь чепушило
>Ну пиздец, а тебе надо радугой? За этим к скалистам
Нет блять, я хочу чтоб текст можно было читать
>>31290
Чмокаю в щечку но кулак летит в почку
Ну так и чего ж не импортировали?
Нахуя ты сравниваешь с питоном, если раст быстрее даже большинства компилируемых языков, типа haskell, swift, go? Компилятор генерирует почти тот же код что и сишный, весь твой "оверхед" и "рантайм" это проверка границ массива и unwind, ну и да, компилятор пока что не так хорош как gcc. В бенчмарках раст иногда оказывается быстрее. А в реальной жизни разница будет минимальна, если не в пользу раста за счёт удобных абстракций. let b = a.into_iter().map().filter().map().filter(), и иди ебись хотя бы с этим на си.
А насчёт move-семантики в c++, там нельзя перемещать сам объект, только вызывать move-конструктор или использовать ссылку, по сути это оверхед.
>типа haskell, swift, go?
Блять, ебать у тебя компилируемые языки, аххаха, сука, я аж проиграл. Они не сильно далеко от интерпретируемых, питон тоже компилировать можно, и яву.
>это проверка границ массива и unwind
Да много чего еще, я уже писал, и че? Я же говорю си + оверхед.
>В бенчмарках раст иногда оказывается быстрее
Хошь в моих бенчмарках си будет быстрее всегда?
>А в реальной жизни
В маня-мире твоем разве что, на чем там пишут высокопроизводительные системы? Плюсы и сишка.
>и иди ебись хотя бы с этим на си
type_t b = filter(map(into_iter(a)));
Че, без точки не мыслишь уже? Я уверен такая хуита нужна только потому что раст ограничивает мышление подобной хуитой, а в сишке такое не нужно будет и решится одним циклом. Видел долбаеба недавно которому нужно было из сишки исключения кидать в виде heap-allocated строк, ну не дебил ли? Можно было просто enum из кодов заебашить, хуйня эти ваши абстракции, в математику идите с ними и там ебитесь.
Что-то я погуглил и не нашел нормальной либы которая мне сделает filter(map(iter())) как в расте, дак ещё и без выведения типов тебе придется void f(void) юзать, но оно же тебе не нужно и в c++ auto просто так добавили.
Ты можешь писать как хочешь.
Пишут на си, что-то пишут на расте. Приведи пример твоего компилируемого языка не из 20 века как си и фортран, с чем ты хочешь сравнивать. Кроме крестов.
>дак ещё и без выведения типов тебе придется void f(void) юзать
От ебанутый, ты понимаешь что Си это язык с широкими возможностями? Он блять примитивен но это не такая ограниченная параша как раст.
>Ты можешь писать как хочешь.
Уебывайте на вашей лодке капитан
>Пишут на си, что-то пишут на расте.
А че там нормального на расте пишут?
>не из 20 века
Ахаха, обидно что твой язычок 21 века унижает сишка из 60х? Пиздец, а давай наоборот, давай сравним первый компилятор сишки, и компилятор раста из 60х годов, ну епта, показывай исходники, будем собирать под эмулятором PDP-11.
Ды я смысл и так понял, даже не обратил внимание
Кароче давай я до вечера пятницы придумаю задачку
Что-нибудь на матрицы
На выходных или сколько тебе нужно времени напишешь на си
Погоняем тесты и бенчмарки, сравним количество кода
Ды мне пиздец влом, еслиб я знал фортран и матан то матрицы бы с тобой порешал, а так лучше в каэсочку поиграю
> Фортран
Ну а представь что ты не лабу профессору пишешь, а видеоигру или бизнес-логику
У нас как-то была лаба - написать сетевой чатик, только чтоб нормально работал, т.е. треды там, поллы, шифрование поверх tcp. Так вот писать на C это боль.
Фортран бест язык для матриц же, интель его пиздец как оптимизирует. Лабу я никогда не писал так как школу не заканчивал даж.
Писал борду на сишке, мне понравилось, разве что не смог подобрать нормальную либу для шаблонизатора и въебал lua, так как лень чет было.
>Си это язык с широкими возможностями
Тогда почему за последние 10 лет на этом языке не появилось ни одного нового крупного проекта?
>ни одного нового крупного проекта?
все современные проекты ориентированны на маркетинг, там нет технологий
>Ну а представь что ты не лабу профессору пишешь, а видеоигру
То я беру и качаю godot/unity/ue4.
> или бизнес-логику
То я вдумчиво изучаю требуемой конфигурации 1с предприятие и пытаюсь понять, нужно ли изобретать велосипед.
>Хошь в моих бенчмарках си будет быстрее всегда?
А хочешь в моих бенчах всегда быстрее будет раст?
Технологии есть. В любом случае, людям не хочется начинать новый крупный проект на небезопасном языке, с которым большую часть времени придётся тратить на исправление багов вместо развития.
>gtk, python, tarantool, да куча всего, смысл перечислять.
Перечисленные тобой проекты появились более 10 лет назад. Перечитай ещё раз вопрос.
Ну вообще все вызовы через FFI считаются unsafe. Сделай свои safe-абстракции над функциями xorg'а и работай с ними.
gtk3 - 2011, python3 - 2008, tarantool - 2008. Да хуй знает, я новым ничем не пользуюсь, ну разве что uTox какой нить, но он не особо крупный.
>gtk3 - 2011, python3 - 2008
Речь о новых проектах, а не о новой мажорной версии старого проекта.
>tarantool - 2008
А месяц? 10 уже стукнуло.
>uTox какой нить, но он не особо крупный
Соглашусь.
>Нахуя кружки, убирай их
Эм, у меня нет никаких кружков. Ты в порядке? Цепочку постов перечитай, аутист склерозный.
>я те пишу тект и иконки
Кружки - это и есть иконки, мимоКО. Алсо, успокоительных прими.
>А хули у них тень как я хочу?
Шизофазия.
>Нет блять, я хочу чтоб текст можно было читать
Дислексия во взрослом возрасте не лечится, анончик, уже поздно.
>На клык хочешь?
Так ты хуйню какую-то пишешь. Раст сопоставим с С, судя по бенчам там разницы около 3-7%, где между ними. Если хочешь это опровергнуть, то напиши свои бенчи и скинь исходники в тред, что бы аноны могли оценить насколько ты оптимально их написал. Или уползай под шконарь сразу.
gtk3 полностью переписали же, питон хз.
>>31824
Ага, а Java обгоняет С++ на некоторых тестах, а хесель быстрее С на некоторых тестах, а питон.. ну такого я еще не слышал. Выше уже расписали что раст = си + оверхед, на си можно всегда написать быстрее, особенно учитывая gcc vs rustc.
>>31789
>Эм, у меня нет никаких кружков
Я про твой анальный кружок
>Кружки - это и есть иконки, мимоКО. Алсо, успокоительных прими.
Текст ты там где видешь хуйло? Кого ты из себя строишь, ты бы у меня на районе кони шаркнул, ты че аще быкуешь дегенерат современного образования? Ты против меня сявка и штрих позорный, ты не разбираешься не в чем и никогда не разберешься даже в своей жизни!
>Шизофазия.
>Дислексия
Долбоебия у тебя, понял пидор, а теперь брысь под лавку!
>>31796
А ты прям полон сил? Ну давай пиши тесты, потом будем оптимизировать версии.
Можно написать быстрее
Вот только сколько ты будешь ебаться с кодом чтобы достичь того же уровня производительности и функционала
>того же уровня производительности
Ты ебанутый? Выше растеры сами пишут что раст кое где обгоняет сишку, по случайности написанного кода.
Ты блять уже пишешь будто сишка интерпретируемая хуйня с которой надо ебаться чтоб к расту приблизиться.
>gtk3 полностью переписали же
Во-первых, это не так. Во-вторых, даже если бы было так, то многие проекты в процессе своего развития переписывались до неузнаваемости по сравнению с изначальной версией (Initial release), но это не делает их новыми.
Ну могли бы и язык сменить, поломали ж совместимость, я больше про это. Ну похуй, забей.
Сам спросил, сам отвечу:
wayland
Initial release: 30 September 2008
systemd
Initial release: 30 March 2010
>Ага, а Java обгоняет С++ на некоторых тестах, а хесель быстрее С на некоторых тестах, а питон.. ну такого я еще не слышал.
Дурик, а джава у вас без гц идет что ли, что бы её с сями сравнивать?
>Выше уже расписали что раст = си + оверхед
Мне твои мантры не интересны. Вот тебе пруфы из реального мира.
https://www.techempower.com/benchmarks/#section=data-r16&hw=ph&test=plaintext
https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/rust.html
Раст это безопасные кресты, постепенно приближающиеся к С. При этом, на самом С крупный проект сделать не реально.
>Раст это безопасные кресты, постепенно приближающиеся к С
Еще бы с такими-то требованиями, лол. Попробуй погонять свои тесты на машине не первой свежести, может вся разница и вылезет. Хуею с этих индусов.
мимо
Это стандартное современное железо. Пруфы гони, что на старом железе хуже работать будет.
>джава у вас без гц идет что ли, что бы её с сями сравнивать?
А раст у нас без оверхеда? Ты че сука тролишь? Да ди нахуй чмошник, в рот тя ебал
в расте еще ща напишут абстракций хуже питона будет
>Вот тебе пруфы из реального мира.
>https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/rust.html
>https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-rust-3.html (один из 2 двух примеров где раст "выигрывает")
>По ссылке раст почти везде сливает, даже и по 5 секунд.
>При этом, на самом С крупный проект сделать не реально.
Собственно только матанопетух не осиливший сишку и мог такую хуйню нести, не удивлен. А теперь подумай/посчитай
сколько строк в windows/linux.
И еще один вопрос, какого хуя программа на ~50 строк уже весит 5мб? Из зависимостей есть только bufstream. Релиз версия билда весит столько же.
Есть теоретическая задача написать игровой движок уровня UE4, так вопрос в том, почему на Rust лучше/хуже писать чем на С/С++, каковы преимущества/недостатки Rust в этом проекте вы видите, например как скорость разработки, подверженность непонятным багам, скорость выполнения инструкций, многопоточность и т.д?
Мне реально интересно и хочется узнать ваше мнение.
Ты будешь писать и поддерживать его один, потому-что никто больше не знает Раст. Никому он нахуй так же будет не нужен, т.к. никто не знает Раст.
> Никому он нахуй так же будет не нужен, т.к. никто не знает Раст
Тот же юнити на цпп, а сами игоры на шарпе/жс.
В няшной все просто — если ты точно знаешь, что пришло время освободить память, то делаешь free и не ломаешь голову.
А как тут быть, если используешь какой-нибудь RefCell, а он затупил и начал течь?
RefCell сам по себе не затупит и течь не начнёт. Memory leaks в safe Rust возможны, только если ты наделаешь циклических ссылок в Rc/Arc или сделаешь mem::forget. Ещё один вариант - это если ты проебёшься с FFI, но это уже unsafe.
Напишите в шапку раз это такая платина. Ну и проблема с glibc никуда не делась, а эта проблема была первостепенной для меня.
>Напишите в шапку раз это такая платина
Для Go, где тоже толстые бинарники, так и сделали https://2ch.hk/pr/res/1159767.html (М)
Лучше на C или С++, так как для них куча библиотек, и куча документации к этим библиотекам, и все вопросы давно решены.
Плюсы раста, ну пожалуй в cargo, иии ну хз, мб если те язык больше нравится, то еще это.
>игровой движок уровня UE4
Задай себе вопрос: через сколько лет он устареет?
Мне кажется, что Rust лучше выбирать для долгоживущих проектов.
Это тот момент, когда движок придётся практически полностью переписывать для соответствия современным реалиям. Если ты не планируешь этого делать, то можешь обойтись и без раста.
Мне кажется это уже не будет проблемой языка. Проблема раста (по крайней мере для гейдева), что там
1) только совсем недавно появились средства для работы с SIMD и они ещё не до конца оптимизированы.
2) совсем нет аналога constexpr из C++. Появится только ближе к концу года.
3) совсем нет инлайн ассемблера. Даже интрисиков.
Но макросы там - это конечно вещь. С ними даже рефлексию можно замутить (так например работает serde - библиотека для (де)сериализации).
Частично. Можно использовать билд-скрипты (которые тоже пишутся на расте), но это уже скорее выглядит как костыль. Да и с организацией кода будут проблемы.
Некоторые и игори полностью на них писали: https://jguegant.github.io//jguegant.github.io/blogs/tech/meta-crush-saga.html
Это простой блог на гитхабе, там даже js не нужен. Он просто генерировал игру, которая в зависимости от действий пользователя выдаёт определённый файл с состоянием игры, написанным на C++. Затем файл инклюдится в проект и игра компилируется вновь с учётом этого состояния. Затем бинарник снова запускается и цикл игры продолжается.
> файл с состоянием игры, написанным на C++
Впрочем конкретно там не C++, а просто строка с символами, которую в компил-тайме разбирают constexpr функции.
Это все классно и замечательно. Но можно не хитровыебанный пример?
А примеры реального применения то есть?
>Задай себе вопрос: через сколько лет он устареет?
С 1999 только молодеет - выкинули UnrealScript, прикрутили блюпринты, грофон стабильно увеличивают.
>Это тот момент, когда движок придётся практически полностью переписывать для соответствия современным реалиям.
Но анрил как раз полностью соответсвует современным реалиям - как по части фич графония (круче только в инхаус-движках именитых фирм вроде юбисофта и сидипроджект), так и по части инструментария -взрослый редактор сцен, анимаций, уровней и всего прочего.
На "актуальных языках" (кстати, сколько их там было, убийц крестов за все эти годы с выхода Unreal?) - в основном поделки уровня "я сделял по туториалу DirectX свой школофреймворк и обзову его движком". Немного у них правда получилось в жанре говнопесочниц - ну, когда полный фрактал отсоса (жабка + хуёвый код на ней) и графоний уровня PS1, требующий топ пекарню, чтобы со всеми наворотами играть стал нормой.
К слову, есть и удачные примеры, на чистом сисярпе без юньки и с достаточно норм перфомансом при таких-то фичах написана Space Engineers:
https://github.com/KeenSoftwareHouse/SpaceEngineers
>Мне кажется, что Rust лучше выбирать для долгоживущих проектов.
Мне кажется, ты не совсем понимаешь, что такое игровой движок.
Современный игровой движок это в первую очередь инструментарий для людей, к программированию или не причастных (левел-дизайнеры, моделлеры и художники), или причастных очень косвенно (скрипт-программеры, геймдизайнеры, тестировщики).
Уже во вторую очередь - это реализация современных фич - грофоний, физика, и, самое главное, чтобы всё это было производительно и при этом прозрачно и не требовало усилий со стороны персонажей, описанных выше.
Открою тебе секрет - игры пишут не программисты. Максимум - это штат скрипт кодерков, максимум пара байтоёбов, спешащих на помощь, когда дело касается профайлинга и оптимизации и всё. На 90% игра делается силами сценаристов, художников, геймдизайнеров, моделлеров, музыкантов итд.
И вот создать хотя бы такой же толковый инструмент для этих 90% ты не осилишь.
> Photoshop
> Задай себе вопрос: через сколько лет он устареет?
> Мне кажется, что Rust лучше выбирать для долгоживущих проектов.
>Открою тебе секрет - игры пишут не программисты. Максимум - это штат скрипт кодерков, максимум пара байтоёбов, спешащих на помощь, когда дело касается профайлинга и оптимизации и всё. На 90% игра делается силами сценаристов, художников, геймдизайнеров, моделлеров, музыкантов итд.
Исключение - именитые студии, которые либо внутренние студии сони и майкрософта, которым нужно пилить "лицо платформы", либо пацанчики - пионеры графония. Там да, байтоебов уже чуток побольше, потому что готового еще не изобрели.
> Game studio Ready At Dawn switching to Rust for all new development
https://twitter.com/AndreaPessino/status/1021532074153394176
>кстати, сколько их там было, убийц крестов за все эти годы с выхода Unreal
Два (сисярп и ди).
>А раст у нас без оверхеда? Ты че сука тролишь? Да ди нахуй чмошник, в рот тя ебал
>в расте еще ща напишут абстракций хуже питона будет
Ты совсем долбоёб сравнивать оверхед в виде дополнительных проверок и оверхед в виде гц? Не, ну точно же долбоёб. В расте благодаря его проверкам можно сделат оптимизации компилятора, на которые пока что положен болт. Раст вполне сможет со временем перегнать С, а вот джава никогда.
>По ссылке раст почти везде сливает, даже и по 5 секунд.
Он 5 секунд слил только в 1 тесте. Во всех остальных раст отстает на доли секунд. А теперь вспоминаем, что при этом у них ещё нихуя не оптимизированный компилятор.
>Собственно только матанопетух не осиливший сишку и мог такую хуйню нести, не удивлен. А теперь подумай/посчитай
>сколько строк в windows/linux.
А еще давай посчитаем сколько человекочасов это заняло. садись два
>Ты совсем долбоёб сравнивать
Де я сравниваю хуйло ты ебаное? Иди нахуй чмошник, мать твоя шлюха сегодня хуем подавится
>Раст вполне сможет со временем перегнать С
Блять ебанутый, пиздец какой же ты поехавший, сейчас просто разъебу тебя и пойду отдыхать, с таким долбаебом смысла нет разговаривать просто
>Он 5 секунд слил только в 1 тесте.
А я писал что во всех? Не, знаешь что, иди ты нахуй
>Де я сравниваю хуйло ты ебаное? Иди нахуй чмошник, мать твоя шлюха сегодня хуем подавится
Так ты же кукарекашь, мол у раста ОВЕРХЕД, и он НАМНОГО медленнее С. Увы, реальность ссыт тебе в глаза, где раст не только на равне с С но и имеет потенциал стать быстрее.
>Блять ебанутый, пиздец какой же ты поехавший
У тебя врети?
>По ссылке раст почти везде сливает, даже и по 5 секунд.
>Значительно сливает только в 1
>КУКАРЕКУ! А я писал что во всех?
Ясно все с тобой.
А ещё студиям может быть выгодно тем, что:
1) Софт на расте сложнее взломать.
2) Даже если исходники доступны, то конкурентам сложнее будет скопипастить код, ибо для этого придётся сначала вникнуть в новый язык.
>1) Софт на расте сложнее взломать.
Принцип неуловимого Джо?
>2) Даже если исходники доступны, то конкурентам сложнее будет скопипастить код, ибо для этого придётся сначала вникнуть в новый язык.
Вы пропустили драму с WestWorld / Fallout Shelter?
Что бы сделать "новую" игру достаточно жпеги заменить и всего делов то.
>Софт на расте сложнее взломать.
И чем же? крякеры так-то один хер в скомпилированном бинарнике копаются, им хуч си, хуч раст, хуч поцкаль - совершенно однохуйственно.
> Даже если исходники доступны, то конкурентам сложнее будет скопипастить код, ибо для этого придётся сначала вникнуть в новый язык.
> то конкурентам сложнее
> ААА-студии
Порву шаблоны - они друг с другом и наработками делятся и помогают в проектах. И годноту регулярно на GDC и Siggraph выкладывают. Нет у них конкурентов, тупо по причине денег, которых у других нет, чтобы делать подобные проекты. Это в мелком софтонаебизнесе возня и ворование "laba1.cpp" друг у друга, у крупных ребят уже всё это давно пройдено.
>Обсуждение языка программирования Rust.
>Выложил системные требования одноименной игры.
>Мама, смотри, я троллю /pr.
>Сейчас напишу дяденьке что он школьник, вдруг ему будет так же обидно как и мне!
>>34599
Кукарекает твой батя петух под шконкой, блять конечно медленнее, но я же не говорю что это блять как питон, так что иди нахуй, быдло
>где раст не только на равне с С но и имеет потенциал стать быстрее
Жава быстрее, я в тестах видел, иногда обгоняет плюсы! Ряя!212 D-Lang убица крестов, подумаешь оверхед в виде GC, быстрее я скозал!2121 Мам скажи им, я нихочу осознавать сваю ниправоту!21212
>Ясно все с тобой.
Хуйло безглазое, прочитай еще раз, я сказал что раст сливает и по 5 секунд, ты блять там где видишь хотя бы "сливает в паре тестов по 5 сек"? А нигде, ты понимаешь что ты хуйло и никто по сравнению со мной, и пытаешься на какой то хуете выкрутиться, но выкрутиться может только твоя мать на моем хуе
>Суровый чувачок!
Ряяяя, программисты должны не поднимать ничего тяжелее ложки, и по 18 часов в день сидеть за монитором.
> Основатель игровой студии
> Выглядит как орк третьего уровня с INT = 2.5
> Самая известная игра студии - говнокинцо The Order: 1886
> Обвинил во всех проблемах C++ и собирается переходит на Rust
Все сходится.
> блять конечно медленнее
Настолько медленнее, что они практическим одинаковы. Одно с легкостью заменяется другим без каких либо дробеков.
>>34884
>Жава быстрее, я в тестах видел, иногда обгоняет плюсы!
Нет дурич, разрабы компилятора раста говорили что в нем возможны оптимизации, которые в С невозможны.
>Хуйло безглазое, прочитай еще раз, я сказал что раст сливает и по 5 секунд
Даун еще раз, значительно сливает он только в 1 тесте. Во всех остальных на равне.
>Во всех остальных на равне.
Ты че уебок, каждый может зайти и посмотреть как твой раст хуяст сливает сишке, усе иди нахуй даже такому чмошнику отвечать не буду, нахуй нужно.
Программист-бодибилдер — редкое явление.
Но, видимо, он уже сам не программирует, а только руководит программистами.
Смысл проверок в расте заключается в том, что во-первых они явные, а во вторых компилятор не даст тебе забить хуй на их обработку без unsafe:
https://play.rust-lang.org/?gist=77e39f7df2fa278650a11783359a4acf&version=stable&mode=debug&edition=2015
Некоторые проверки можно перенести из компил-тайма в рантайм. Тот же RefCell позволяет обойти borrow-checker и все проверки времени жизни переменной проводятся во время выполнения программы.
И это тоже.
Вообще весь спор в треде про то что раст на хуй целых пизда десятых секунды медленее сишки настолько бессмысленный что просто пиздец.
Если прокладка между монитором и креслом считает себя настолько умной и не совершающей ошибок, то конечно можно дальше писать на сишке. Лично я хочу чтобы либо компилятор проверял за меня большую часть вещей (раст, хаскель, ...), либо чтобы стратегия обработки ошибок была построена так, что вообще похуй что сломается (эрланг).
>в половине тестов в 1.5 раза медленнее
Ну и где эта половина? Ты даже считать не научился, а лезешь за низкоуровневые языки тереть.
Если не перекроешь каждый пост тебя что, мамка не похвалит. Давай, назови меня ещё раз школьником. На большее у тебя ума не хватит.
Нет никаких проблем с производительностью. Есть требования делать сразу 100k rps.
Все, ты уползти решил? Ну ладно, мой тебе совет быть более гибким. Язык не понацея, а инструмент, если он устарел, то его стоит закопать и перейти на более совершенные технологии.
Свежих новостей вам в ленту:
https://this-week-in-rust.org/blog/2018/07/24/this-week-in-rust-244/
А то что там для Си несколько реализаций отличающихся в производительности в несколько раз тебя не смутило. Тестирование на алгоритме длиной в пару сотен строк - так себе показатель.
думаю, через 2-3 года перекачусь в раст на удалёнку. как раз вакансий побольше будет
Не перекатишься. Rust используют не для написания говна для GC, на нем пишут системный код, а он нихуя не твоя Java, извини. Вангую перекатишься в Go. Как раз и вакансий побольше будет.
Ну уже немного больше получилось. 100к в худшем случае. В среднем 500k rps.
ты правда думаешь, что я не понимаю различий раста и джавы и областей их применения? мне и хочется писать системный код, вот что опять за школьная дикриминация по языкам?
Ты понимаешь насколько это ортогонально написанию веба? Если да, то вперде – увлекательный мир аллокаторов, ассемблерных инструкций и дрочьбы на архитектуры.
>Как раз и вакансий побольше будет.
Если смотреть на динамику сегодня, то через 2-3 года на делфи вакансий будет больше, чем на го
Ахах, блять я говорил что отвечать не буду, но ахаха, пиздец какой то, вон раст сливает везде, хули тебе еще надо? Мдаа
Так блин, в этом и суть, будут же выбирать инструмент где все лучше, гцц например а не шланг, заметь там еще и оптимизации, и march=native. Какой смысл тестировать просто код?
Не извращайся, а попробуй скомпилить регексы как программу под dos/4g с вводом-выводом через консоль и запускать в бровзере на dosbox под emscripten. Рад был помочь, если что.
А если серьезно, то маленькие бинарники возможны только без стандартной библиотеки, и то будешь избегать полиморфизма и трейтов, страдая хуже крестьянина.
Как раз обычный бинарник с итераторами и всякими функциями из std довольно мало весит, это все regex. Идея была написать лексер+парсер (переписать с перла), но чет перехотелось.
Растовское довольно мало - это для фронтэнда вообще-то запретительное дохуя:
>leap@beaver-box:~/Workspace/learn.rust/hello$ rustc +nightly --target wasm32-unknown-unknown hello.rs -C lto -C opt-level=3 -C debuginfo=0
>leap@beaver-box:~/Workspace/learn.rust/hello$ ls -la hello.wasm
>-rwxrwxr-x 1 leap leap 390811 Jul 28 16:05 hello.wasm
Эти ~400кб еще ведь компилироваться должны. У юзера пердак взорвется быстрее, чем типичная мобилка 2013-14 г.в. перемолет два десятка мегабайт байт-кода. Кроме того, сам язык способствует раздуванию кода: каждый трейт, каждое статически разрешимое применение полиморфизма для него повод сделать специализированную под еще один тип копию методов (т.н. мономорфизация - то, из-за чего, например, кресты имеют больше жирка, чем сишечка).
Wasm тоже то ещё говно. На числодробилках он часто бывает медленнее чем даже чистый js (была где-то демо-страница с фильтрами видео - там wasm отставал часто на треть). Да и чтение спецификаций навевает мысли, что 1) без среды js его использовать не получится; 2) в статических компиляторах авторы не разбираются нихуя, ибо вместо абстрактного SSA с кучей атрибутов в помощь оптимизатору там какой-то галимый байт-код уровня курсача в заборостроительном вузе.
Я через wasm-gc прогонял, там около 150 КБ было на несложную программу.
Насчёт компиляции хуй знает, по идее должно же быть быстрее того же asm.js, для того он и создавался вроде.
Ну и ни о каком полиморфизме речь не шла, у меня был юзкейс прогнать бинарные данные и заюзать пару структур данных, но видимо проблема в крейтах, не особо оптимизированных в плане размера экзешника, а писать самому долго выйдет.
Си для этого видимо лучше подходит.
Да, я глянул на получившийся код, там действительно 150кб и наберется, остальное - что-то похожее на таблицу символов (которую debuginfo должен был убрать, не?). Такой объем уже вполне вписывается в типичный (больной ожирением) сайт. Но все же от хеллоуворлда я ожидал примерно вдесятеро меньшего объема =(
Про asmjs я так понял, что он даже напрямую, без специального рантайма, в ближайшее время будет иногда обгонять wasm, т.к. в обычный движок js просто вбухано куда больше бабла.
> Такой объем уже вполне вписывается в типичный (больной ожирением) сайт.
Суть в том, что JS использует regex-парсер встроенный в движок браузера, а код на wasm тащит свой собственный. Как вариант можно использовать ffi, но тогда толку от wasm не будет. И да, переход на си тут погоды не сделает, ведь регекс парсер на си тоже будет весить дохуя.
Вообще сейчас wasm - это оочень узкоспециализированная хуёвина. Вот когда добавят как минимум API для прямого доступа к DOM, тогда уже и можно весть хоть какую-то речь о замене js.
Ну, можно подковать блоху и сделать свой компилятор регулярок сразу в код, работающий со стандартными типами. А еще можно варить свою сталь и ковать свои гвозди, чувствуя себя первопроходцем :) А так, даже API ждать не надо - все разумные кейсы (состоящие в использовании нативного кода в вебе) уже покрыты с достаточным удобством и эффективностью emscripten-ом, я сам года три назад писал бота для игры, отгадывая примитивные капчи tesseract-ом под js, а еще раньше играл в демку на unreal engine. Шарить код между клиентом и сервером заманчиво, но на практике не получается - из применений такого подхода в продакшене я знаю только фреймворк meteor, и он неудобное тормознутое говно. Короче, даже доведи мазила его до совершенства, wasm не особо нужен.
> сделать свой компилятор регулярок сразу в код, работающий со стандартными типами
На расте такой кстати был. И размер у него был обычно больше чем у простого парсера, поскольку размер зависит от количества регулярок и пропорционально увеличивается.
> emscripten-ом
Ну, wasm это его дальнейшее развитие. В движке Firefox, например, и emscripten, и wasm выполняет один компилятор. Отличаются только парсеры.
> И размер у него был обычно больше чем у простого парсера
Ну, размер уже от прямоты рук зависит. Большинство регулярок можно заменить парой строк кода, так что раздуть ими код еще надо постараться. А если увязать регулярки с системой типов, то можно, например, сразу парсить числа в int-ы и проверять вменяемость регулярок на этапе компиляции.
>В движке Firefox, например, и emscripten, и wasm выполняет один компилятор.
Ты, наверное, asmjs имеешь ввиду. В прошлом году была статься от мазилы, называлась "why webassembly is faster than asm js", там про движок не было, зато указывалось, что wasm быстрее asmjs в среднем на 5%, но при этом парсится быстрее "на порядок". Если учесть, насколько прожорливее за последние десять лет стали браузеры, меня такие цифры не впечатляют совсем, особенно учитывая отсутствие поддержки wasm старыми браузерами. Так что мне мазила со своим хайпом про wasm очень сильно напоминает Тома Сойера и его забор.
Haskell
Пока Раст уступает Сишечке только в работе с интринсиками (simd и т.п.), ядрёными низкоуровневыми деталями типа выравнивания в структурах и простоте создания компиляторов. В остальном всё намного лучше: безопасная работа с памятью; высокоуровневый код с околонулевой стоимостью абстракций (напр. можно сделать целую цепочку из filter/fold/map над итераторами и она часто будет по скорости 1 в 1 как написанный на циклах вручную код); единая система сборки с менеджером зависимостей, позволяющая в большинстве случаев сделать git clone/cargo build и сразу получить рабочий бинарник; продуманная модульная система, позволяющая с самого начала писать код в виде независимых модулей, которые потом можно вынести в отдельных крейт, не меняя кода; хорошая поддержка пространств имен, позволяющая реэкспорт для создания нескольких версий интерфейсов (т.е. можно делать API v1/v2/v3, ссылающийся на одни и те же реализации методов).
По сравнению с Петоном: менеджер зависимостей гораздо удобнее (не надо загаживать систему всякими site и прочей поеобтой); система типов гораздо сложнее и иногда (в начале изучения - очень даже часто) требует перепахивать непродуманный код, но при этом помогает ловить ошибки, избавляя от необходимости тривиальных модульных тестов; полная статическая компиляция, избавляющая от идиотии с опечатками в именах переменных; Юникод поддерживается в виде utf8 и не ебет мозги с ошибками перекодировки, всплывающими в рантайме. Из минусов - это все-таки компилируемый язык, и быстро накатать программку в двадцать строк не получится, придется расшаркиваться с указанием зависимостей и т.п.
RLS пилят.
> только в работе с интринсиками
Активно добавляют. И то, и другое. В ночнушке уже даже интрисики для cortex-m появились, такие же как и в Си - ARM C Language Extensions, он же ACLE.
> выравнивания в структурах
Уже давно есть.
[repr(C)] - для совместимости с Си.
[repr(align(..))] - для выравнивания.
Кстати, по-умолчанию (т.е. в структурах где не указано [repr(C)]) раст перемещает внутренности, чтобы они занимали меньше всего места.
> идиотии с опечатками в именах переменных
Зато есть идиотия с неявным перекрытием переменных. Т.е. когда пишешь.
let foo = 1;
...
// Здесь foo == 1
...
let foo = 2;
...
// А здесь уже foo == 2
...
С их любовью к явности могли бы и добавить какой-нибудь кейворд для явного перекрытия.
Годно расписал, анон, сохрани на пастебин для будущей шапки!
>let foo = 1;
>...
>let foo = 2;
Я конечно дико извиняюсь, но что здесь неявного? Это довольно часто используется (не только в расте, вообще во всех языках с лексическим скоупом), так что добавлять по умолчанию варнинг для таких вещей было бы не очень удобно, имхо. Может линтеры спасут отца русской демократии?
Да, интринсики делают, но в rust 2018 оно не попало, к сожалению. Насчет элайнмента я имел ввиду более сложные случаи (см. статью "Unsafe Zig is Safer than Unsafe Rust") - такое легко получается, если писать кодеки и архиваторы.
Еще огорчение вызывает отсутствие фиксированного ABI, мы не можем, подобно Маленькиммягким, сделать Rust 2018 Runtime Redistributable, чтобы тем самым сократить объем кода в присутствии стандартных библиотек и позволить обновлять рантайм независимо от приложений.
>>37970
А я бы сказал, что это даже удобно: если ты не курильщик, у тебя методы все равно помещаются на экране, так что можно делать "let num = "4.2e1"; let num = num.parse::<i64>();" и не плодить новые имена. Язык все равно не позволит тебе читать неиспользуемую переменную, так что мало разницы, есть перед приваиванием let или нет.
> Я конечно дико извиняюсь, но что здесь неявного?
Именно то, что компилятор перекрывает переменную, при этом неважно хочешь ли ты этого или нет. Ещё веселее начинается, когда пишешь что-то вроде
let foo = ...
...
{
...
let foo = ...
...
}
...
> Может линтеры спасут отца русской демократии?
Спасут, но сама фича кажется достаточно вредной. Забавно, кто-то недавно создавал тред на реддите с критикой этой же фичи, так растофанаты сразу назвали его "плохим программистом", а необходимость этой фичи оправдывали тем, что им лень придумывать имена для переменных.
> Еще огорчение вызывает отсутствие фиксированного ABI
Это у всех низкоуровневых языков такая хуйня, в том числе у С/С++. Просто последние релизятся реже.
Как раз C это пример фиксированного ABI, учитывая, что все остальные языки его используют, чтобы договариваться между собой. У D он тоже фиксированный, у C++ он фиксированный в пределах одного вендора. Это ведь не так сложно, на самом деле - определить правила построения имен символов и документировать таблицы типов и виртуальных методов. В определенных пределах можно поддерживать даже трейты с шаблонами, заменив мономорфизацию (т.е. подстановку кода) на непрямой вызов методов трейтов и шаблонов через указатели. И это НУЖНО, т.к. пока даже систему плагинов в приложении сделать нельзя без написания интерфейса в стиле C.
Спасибо за развёрнутый ответ.
>неважно хочешь ли ты этого или нет
В смысле? Раз ты явно создаешь другую переменную с тем же именем, значит ты явно хочешь перекрыть предыдущий биндинг. Так lexical scope работает.
>Ещё веселее начинается, когда пишешь что-то вроде
Не вижу ничего веселого, обычный паттерн - перекрыть глобальный (в данном контексте) биндинг локальным. Иногда очень удобно, но злоупотреблять не стоит. Опять же, это везде так работает.
>Спасут, но сама фича кажется достаточно вредной.
Ну мне было бы неприятно, например, срефакторить кусок кода из одного места в отдельную функцию и внезапно обнаружить, что он не компилится потому что где-то в области видимости есть какая-то другая переменная с тем же именем. Это как бы нарушает лексический скоуп, глобальное состояние начинает влиять на твой конкретный кусок кода. Теперь нельзя просто написать let foo = 42 - надо перед этим проверить всю программу на отсутствие "foo" в том же скоупе. Это же пиздец. Глобальное состояние - это плох. Все должно быть локальным по максимуму.
Ага, и в пределах версии конпелятора. В линуксмирке пакетный менеджер скачает нужный редист, а в винде обычно либо вместе с программой распространяют библиотеки, либо установщик нужной версии редиста.
>>38001
> Раз ты явно создаешь другую переменную с тем же именем
Я могу случайно создать переменную с тем же именем. Никакой явности тут нет.
Да, признаю, тупанул - микрософт разбаловал меня!
>>38001
> внезапно обнаружить, что он не компилится потому что где-то в области видимости есть какая-то другая переменная с тем же именем
Контрпример - если вставляешь код между определением переменной и ее использованием, можно тихо сломать программу. Но ебланы, пишущие не помещающиеся на экране методы, и без этого найдут способ прострелить себе ногу.
>>38005
Когда-то кто-то сделал такой же аргумент про присваивания, хлопнул дверью и ушел придумывать функциональное программирование. Ведь ты уже сказал, что var1 = 1, а теперь говоришь, что var1 = 2, ты что, вруша?
> Ведь ты уже сказал, что var1 = 1, а теперь говоришь, что var1 = 2, ты что, вруша?
Т.е. вся твоя аргументация по сути представляет из себя
> ебланы, пишущие не помещающиеся на экране методы
Ты прям как те реддитохомячки, у тебя тоже все вокруг - неправильные программисты.
> микрософт разбаловал меня!
Выпуском редистов каждые два года (этьо если не считать сервис паки к ним)? Ну-ну.
>Я могу случайно создать переменную с тем же именем.
А еще ты можешь случайно запустить ядерные ракеты по Калифорнии. В чем проблема-то, але? Если ты создашь другой биндинг с тем же именем, то в этом биндинге будет ровно то, что ты в него положил. Потому что ты его как бы создал. Явно. Если ты при этом по тому же имени хочешь одновременно обращаться еще и к глобальному биндингу, то у тебя шизофрения. ЯВНАЯ
>>38009
>ебланы, пишущие не помещающиеся на экране методы, и без этого найдут способ прострелить себе ногу.
this
Нет, я не иду на принцип, а просто не вижу разницы между "let хуемое = 1" и "хуемое = 1" в контексте возможности прострелить себе ногу. Если б я считал себя д'Артаньяном, я бы обитал в C++-треде и славил искусство боя этим благородным обоюдоострым клинком без рукояти.
Ну а не писать в методах простыни - это, блять, как спускать после себя воду в унитазе, так что не надо. Каждый хуев раз, когда мне приходилось работать с простынями, я мечтал поймать их авторов и завязать им руки в охотничий узел.
>>38014
Строго говоря говоря, меняется стандартная библиотека, а структура vtbl и схема именования живет уже лет двадцать. Но да, совместимость получается в пределах версии, признаю ошибку. MS обещает совместимость только для C (а GCC, бородатая пидорасина, её нарушает, когда из функции возвращаются struct-ы).
Если умеешь в раст и говоришь по английски, кидай линк на гитхаб, мы хайрим на раст.
Конечно ошибочно. Если ты хочешь изучать алгоритмы, а не еблю с байтами, то хаскель это лучший выбор.
Оставь написание оптимизированной версии квиксорта бородатым дядям. Во-первых большая часть нужного уже написана, а во-вторых есл ипрограммирование тебе нужно как прикладной навык, то тебе ни разу в жизни не придется писать сортировку вручную.
>Пока Раст уступает Сишечке только в работе с интринсиками (simd и т.п.), ядрёными низкоуровневыми деталями типа выравнивания в структурах и простоте создания компиляторов.
Лично я не пользуюсь растом из-за отсутствия нужных мне библиотек. На Си я сейчас могу написать нужное быстрее, так как там уже есть готовые библиотеки, которые проверены временем и хорошо документированы.
Каких например?
Для раста ещё нет обучающей литературы, по которой можно начать с нуля. Существующая литература рассчитана на тех, кто уже программирует на другом языке, знает про указатели и т.п. К тому же есть потребность в переписывании сишных библиотек на раст.
Ну так Раст - не язык хеллоуворлдов. Пока ты пишешь тонкие обертки над парой-тройкой больших качественных библиотек - всё кажется збс, а потом вдруг обнаруживаешь себя в болоте, где квакают три системы сборки на разных версиях autotools, две cmake (одна из них древнией версии с кучей локальных скриптов), один ядреный makefile на две тысячи строк и дирижирует всем твой хипстерский meson, скрипт сборки которого нифига не похож на милоту из туториала. Это не говоря уже о полной жопе с согласованием типов данных, когда вдруг обнаруживаешь, что какая-то библиотека написана из расчета, что int у тебя unsigned и имеет ширину 32 бита, а выравнивание идет строго по 8 байт. И обнаружишь ты это в рантайме, когда твою софтину хватит segfault из-за срыва стека сразу на выходе из функции. С Растом такой хуйни не бывает - любой вменяемый проект на нем собирается одним и тем же cargo, не привязан к одной архитектуре и добавляется к проекту парой строчек в dependencies.
>>38286
Рокетсаенс, да. Я вот прочитал статью "Pointers Are Complicated, or: What's in a Byte?", поежился и почувствовал, будто перейдя на Раст увернулся от падающего на меня ведра с помоями.
>а потом вдруг обнаруживаешь себя в болоте, где квакают три системы сборки на разных версиях autotools, две cmake (одна из них древнией версии с кучей локальных скриптов), один ядреный makefile на две тысячи строк и дирижирует всем твой хипстерский meson
Откуда столько? Почему из репов либы не ставишь?
Это утрированно, но не так что бы очень. Была одна либа на cmake, два разных проекта на autotools походу разных версий (у них разные аргументы на кросскомпиляцию), один кустарный make-проект, всё это использовалось в проекте на старой версии cmake и я по частям переводил все это на meson, чтобы хоть как-то работало. Репы не использовал потому это должно было кросс-компилироваться под mingw-w64, а у крестовых пакадж-менеджеров (conan, vcpkg, buckaroo) репозитории пусты, как магазины при социализме.
Братишь, основы программирования это хаскель и схема. А си и ассемблер это основы байтоебли под конкретное железо.
Тыскозал? То есть через списки и монадки новичку станет понятно как работает процессор и оперативная память?
Новичек хочет быть программистов, а не схемотехником.
99% прикладных программистов хуй клали на то как работает ОС, не то что проц.
Если он новичок, пускай учится использьзовать алгоритмы и структуры данных абстрактно, а не думать о пейджфолтах.
Эх, сейчас бы с помощью си изучать, как работает процессор и память...
Начинать надо с основ. Ты вот понимаешь как работает молекула? Как ионы и позитроны крутятся на орбитах? Как Глюоны и кварки влияют на свойства проводимости? Нет? Тогда ты хуёвый программист и ничего не поймёшь. Начинай с этого, пото углубляйся в химию фоторезиста, потом изучай процессоры и только потом Ассемблер. А уже после С, С++ и только затем раст. Иначе ты нихуя не поймёшь.
Не собрал свой процессор - не программист.
Да ты одинэсник, я посмотрю. Лепишь свои сраные молекулы на мутную каменюку субстрата, и еще все сроки еще просераешь. Настоящий программист потратил день на написание волновых функций - и был свет!
Если по теме, то перед Растом действительно рекомендуется промышленно пососать кактусца, потратив хотя бы полгода на резьбу по говну мамонта в виде легаси проектов на C+, чтобы не возникало вопросов, почему язык такой мнительный и почему нельзя хуяк-хуяк, как в Петоне. В любом случае, Раст в первую очередь низкоуровневый язык, и без хотя бы поверхностного знания крестов в системном программировании делать нечего.
По хаскелю больше книжек для вкатывальщиков, плюс там нет срачей на тему "раст нинужен".
Не совсем правда. В раст можно вкатываться со стороны хаскеля и пользоваться функциональными абстракциями без байтоебли и unsafe. Для бытовых задач этого за глаза.
Оно не окупится для бытовых задач - мало библиотек и много кропотливой работы по слежению за переменными, ненужной в языках с GC (и я гадаю, а не должен ли следить за лайфтаймами компилятор). Для mission critical тоже не то, там традиционно рулит spark и формальная верификация. Имхо, основные применения - всякие сетевые сервисы, игры, тяжелый прикладной софт - всё то, где нужны где-то 90% надежности и производительности.
Я это и имел ввиду под бытовыми задачами. За лайфтаймами и так компилятор следит, не понял что ты хотел сказать.
Я хотел сказать, что раз уж компилятор делает escape analysis, то он мог бы сам назначать лайфтаймы. Я пока просто не могу из головы придумать ситуацию, когда явное указание лайфтайма убережет меня от ошибки в коде.
Ну и бытовые задачи для большинства из нас, по моему впечатлению - это формочки виндовые шлепать да сайтики настраивать =) Раст привлекает как раз тем, что он позволяет хардкор типа вусмерть оптимизированных библиотек со встроенным jit-ом и метапрограммами, для ширпотреба он overkill.
> Я хотел сказать, что раз уж компилятор делает escape analysis, то он мог бы сам назначать лайфтаймы.
Ты просто путаешься. Лайфтаймы там нужны не для объектов, а для ссылок. Компилятор не может знать сколько ссылка (т.е. грубо говоря указатель) должен жить.
fn foo<T>(x: &'a T, y: &'b T) -> T
Компилятор тут не может сам угадать что ты пытаешься сделать.
>fn foo<T>(x: &'a T, y: &'b T) -> &T
Быстрофикс.
Вообще плюшки типа NLL потихоньку завозят, так что чем дальше в лес, тем умнее уомпилятор.
Допустим у тебя есть JSON и ты хочешь десериализовать его в объекты. Но в жсоне много строковых данных и было бы неплохо эти строки не копировать, а в объектах просто вместо строк оставлять умные указатели (внутри которых будет указатель на начало строки и длина строки, в расте это именуют слайсом) на оригинальную строку жсона. И когда удалится последний объект с указателем, удалять и оригинальную строку. Таким образом можно сделать zero-copy десериализацию (ценой правда хранения полного жсона в памяти).
И, кстати, серде уже так умеет. А время жизни десериализованных структур отслеживается как раз встроенными в раст лайфтаймами. https://serde.rs/lifetimes.html
>>39229
Да, извините, я туплю, по другому-то не получается позволить переменной пережить свой скоуп, не используя GC =/ Просто думал терминами функций а-ля C, когда время жизни динамической переменной чаще всего определялось в контексте, где она создана, напр. когда контролы на форме делаются членами класса и прибиваются со всеми потомками в деструкторе. А вот с лямбда-функциями так же не получится :(
Это называется reference counting, анон (: Я по твоей ссылке сходу понял только что зачем-то простую концепцию присыпали эльфийскими рунами. Но я обязательно разберусь, спасибо за пищу для размышлений.
> Это называется reference counting, анон
А раст может делать это без счётчика ссылок (точнее счётчик ссылок работает во время компиляции). Тупо отслеживая время жизни переменных и прописывая код уничтожения куда надо.
Ты дурак? Rc (вместе с RefCell) используются как ангалог растовских лайфтаймов и borrow-checker'а в рантайме. А я тебе про компил-тайм говорю.
Феерически идиотское решение. Когда в java объясняются immutable strings, как раз такой пример приводят, когда объясняют, что увлекаться ими не стоит. Когда ты что-то парсишь, последнее, что тебе надо - это привязанный, как слон за хобот, исходный жсон - что случится, если ты не копировал результат, а взял его из парсера. Это не говоря уже о том, что таких результатов может быть много, и они могут быть шрапнелью раскиданы по приложению.
> Феерически идиотское решение.
Так никто не заставляет. Можно объявить структуру как со слайсами и лайфтаймами, так и с нормальными строками и использовать по надобности.
Ну и другой пример: у жсона есть куча строк, но тебе нужна всего одна. Тогда для десериализации делаешь структуру со слайсами, а нужную строку после десериализации копируешь, а оригинальную структуру (с жсон-строкой) удаляешь. Тут уже увеличение перформанса будет сразу видно и никаких подводных камней.
То есть это такой способ обойти чекер лайфтаймов, который как раз и защищает от скрытых утечек памяти в этом случае =) И ты в любом случае скорее ограничишь весь кустарный парсинг одним скоупом и возьмешь просто слайсы от данных, а не всю эту тряхомудию. Я могу представить, что мне потребуются указатели внутрь данных, но я в любом случае объединю их в один объект, к его лайфтайму и привяжу данные.
> То есть это такой способ обойти чекер лайфтаймов
Дядя, ты дурак. Повторюсь, лайфтаймы используются для ссылок. При копировании с ссылки в новую строку какие там лайфтаймы были у ссылки побоку. У новой строки будет своё время жизни. Вся суть в том, чтобы копировать только одну, нужную строку, вместо копирования КАЖДОЙ строки внутри жсона.
> Это не говоря уже о том, что таких результатов может быть много, и они могут быть шрапнелью раскиданы по приложению.
> быть шрапнелью раскиданы по приложению.
Это словарное определение говнокода.
Я это знаю. Вся эта херомудия нужна, чтобы грохнуть исходные данные ровно когда исчезнет последняя ссылка внутрь, учитывая, что эта ссылка может быть выведена за пределы скоупа (т.е. обычных & недостаточно), я правильно понимаю?
>Почему хеллоуворлд на расте такой жирный?
4.6 MB, хотя смотря с чем сравнивать, например, первая версия операционной системы колибри весит почти в два раза меньше в распакованном виде https://archive.kolibrios.org/f/releases/kolibri_0.1.0.0_src.zip
>Разработчики браузеров давно не считают.
И правильно делают. Нищеброды-ретрограды на телегах и с калькуляторами вместо ПК должны страдать. Потому что нормальному человеку проще раз в два года выкинуть свой некробук на устаревшем железе, купить новый и начать пользоваться новым продуктом, чем по три года ждать продукт байтоебли и ещё два года доведения его до стабильного состояния.
Опять быдлокодерам с народом не повезло.
Здесь мнения обычно варьируются от "раст отличный язык для веб-приложений" до "писать веб на расте будет только поехавший кретин".
Веб уровня веб-сервера (как нжинкс например), либо какая-то ресурсоемкая обработка или необходимость обработать 300кк запросов в наносекунду (какие-нибудь счетчики статистики или другие метрики, апи, в общем ниша go) как по мне вполне ок. Но когда пытаются на расте сделать какие-то рельсы https://rocket.rs/ с шаблонизаторами, хтмлем и прочим, то ощущение что что-то пошло не так и не туда. Вряд ли это когда-нибудь принесёт какой-то профит, разве что если с веб-макаки перекатываешься, возможно стоит попробовать с веба и начать, но тоже сомнительно.
я не >>43285
По-моему суть в том, чтобы УВЕЛИЧИТЬ УНИВЕРСАЛЬНОСТЬ - ну типа вот взял какой-нибудь крестовик раст и сразу опа, может и сайтики писать, и никакие руби ему учить ненужно. Ну то есть ничего плохого в этом точно нет, пусть даже на убийцу рор оно и не претендует.
Пиздец, получается у нас рост мощности железа идёт, а новых высот в области ПО нет, ибо вместе с ростом железа придумывают всё более новые языки для ещё более простой разработки и более хуёвого результата
Заебали
У нас почти весь бекэнд на расте.
Юзаем actix + actix-web.
До этого для бэка я юзал пыху, го, ноду. И по сравнению с растом, это все говно без души. Наш главный наркоман еще очень тащится от эрланга и хаскеля для этих целей, но это уж слишком непрактично как-то.
Новый ноут раз в два года - это значит ты, анон, из каждых двух лет месяц горбатишься на рукожопых калифорнийских смузихлебов. За всю жизнь это сколько - два года рабства на одни только ноуты? Да на хую я такой прогресс вертел. Лучше я за это время отращу бороду и хуйню под ногтями.
Эрланг так-то гораздо практичнее сабжа для бэка, хотя может у вас специфика какая-то.
Правда жирные. Целых 4,6 МБ, так что лучше взять СИшечку и вместить его меньше чем в 64 КБ.
Я так и сделал, но не словил ни одного сегфолта, ЧЯДНТ?
Слишком жирно. Мой вариант занимает меньше одного килобайта — 752 байта.
Исходники: https://pastebin.com/6fzNpbfZ
Граждане, зачем в 2018 году мерить размеры налогов? Не у всех есть по 32 ГБ озушки, иди нахуй с компьютером подаренным тебе мамкой
Могу ошибаться, но для 100k вроде достаточно java с netty
Я сеньор в enterprise 300к/сек, но в твоём коде нихуя не понял, что происходит кроме сишного кода, хотя когда-то пилил курсач на asm. Испытываю комплекс неполноценности. Даже не знаю, стоит ли углубиться в байтоёбство чисто для себя, или хуй забить.
>Я сеньор в enterprise 300к/сек
И на чем пограммируешь? У него же простой код совсем, как ты без этого живешь? Что нибудь сверхвысокоуровневое?
Чему, зарплаты выросли же! Какое дело сколько путен отбирает?
веб java, иногда спускаюсь на netty до бинарных данных, которые шлют различные датчики, но это совсем не то
не понял, почему у него бинарник так мало места занимает. ну понятно, что засчёт asm-кода, но почему без асм в несколько раз жирнее - не понятно. во всяких elf-форматах тоже ничего не понимаю
У него опция -nostdlib, она убирает из бинарника стандартную библиотеку, и он с помощью ассемблера написал функцию которая дергает syscall для печати.
Си позволяет полностью отказаться от стандартной библиотеки.
Вообще, Си обладает абсолютной независимостью от библиотечного кода (zero runtime). Ни один из языков высокого уровня так не умеет.
Си++ утратил независимость от библиотек времени исполнения ещё в 1980-х годах, когда в него был встроен механизм обработки исключений.
Объединил start.asm с calls.asm, убрал обработку параметров argc/argv, убрал неиспользуемый sys_read, убрал проверку ошибок, в итоге асм-код сократился до такого: https://pastebin.com/32k5x3nu
Весь рантайм в С++ отключаемый (как и в Rust), так что не надо тут.
>мам смотри, у меня бинарник без рантайма
>правда, сложней хелоуворлда ничего не напишешь
> зато бинарник меньше мегабайта весит
Ржавый в этом недалеко ушел от сишечки, аще-то. Если писать под чистый winapi (игры под дыртекс, например, или дрова), рантайм больше вредит, чем помогает. В нем вот этот сишный nostdlib работает примерно так же - гордо отказываешься от рантайма, пишешь пяток функций-затычек типа panic и аллокатора, и месяц красноглазишь молоток и гвозди. Раст вообще наверное сначала хотели назвать C2, т.е. C with Condoms, но такое название плохо гуглится.
>Объединил start.asm с calls.asm, убрал обработку параметров argc/argv, убрал неиспользуемый sys_read, убрал проверку ошибок, в итоге асм-код сократился до такого: https://pastebin.com/32k5x3nu
Пфф.
https://godbolt.org/g/6yMNxp
Where is your ASSEMBLER now?
Сразу видно, что ты ничего не знаешь о реализации ядер операционных систем и прошивок для микроконтроллеров.
С такими даже нынешняя ситуация с драйверами на расте так и не изменится.
Голый код весит 452 байта, остальное это заголовок и прочая ОС-специфик фигня, которая на 70% забита нулями.
> Сразу видно, что ты ничего не знаешь о реализации ядер операционных систем и прошивок для микроконтроллеров.
Да нахуя мне это знать.
> С такими даже нынешняя ситуация с драйверами на расте так и не изменится.
Конечно, ведь я пишу на кложе и до байтоебства мне нет дела.
>мам смотри, я нихуя не знаю
ну так а чо ты тогда тут громко кукарекаешь о невозможности написания сложного без стандартной либы
https://vorner.github.io/difficult.html
начал вкатываться с Qt C++ в этот ваш Руст. 1)Вопрос, на чем гуи приложения клепать?
2)Легко ли писать враперы для сишных библиотек?
3)есть ли свои какие-то либы, или все обертки на чужими либами.
1) https://crates.io/search?q=gui&sort=downloads
2) Легко
3) Много своих, но и враперов хватает
а среды разработки с автодополнением есть? типа, поставил точку, и список методов показался, понимание типов, подсветка и прочее?
Читал, что народ Visual Code советует и плагины какие-то, но есть ли в них это - хз
Все работает по протоколу LSP, который в случае раста реализован тулзой rls. Так что смотри поддержку этих двух базвордов в своем редакторе.
Если честно rls так часто крашится, а lsp-mode так безможно тормозит в сочетании с company что иногда хочется всю эту пиздобратию нахуй выключить.
>Why is Rust difficult?
Раст не сложный. Он ограниченный. Сложность это следствие его ограниченности.
Это как пытаться завязывать шнурки одной рукой.
Раст ограничивает возможности написания программ. Хуже всего, что он делает это без понятной, просто для рассуждения семантики. Поэтому программисту нужно постоянно держать это в уме и определять что можно сделать, а что нельзя.
Я бы сказал что раст это hard reasoning language. Это его большой недостаток.
На фоне других языков с такими же характеристиками скорости, безопасности, но более простыми для написания и чтения, совершенно непонятно кому может понадобиться раст.
Проблема в том, что пока программист на расте думает как решить проблему на расте, программист на го, например, просто решает проблему.
С++ это как река с крутыми порогами, в которую лучше не соваться без опыта.
Rust это таможня, где тебя просто не пропустят пока вы не покажете бумаги.
Go это гладкое шоссе.
>ты путаешь ограниченность с выразительностью
Там есть вполне конкретные ограничения использования указателей. Программа просто не скомпилируется, если ты используешь переменные "неправильно".
Это хуевый дизайн.
Хороший дизайн подразумевает, что неправильно просто нельзя написать в принципе.
>Пук
Ошибки компиляции должны быть синтаксическими ошибками. В расте синтаксически правильный код может не скомпилироваться.
Вот эта дополнительная когнитивная нагрузка анализа контекста программы на программиста является проблемой.
>Это называется "система типов"
Это называется статический анализатор. Причем тут система типов?
К С++ тоже можно прикрутить кучу статических анализаторов, которые не дадут сконпелировать программу с ошибками.
>Это называется статический анализатор. Причем тут система типов?
У нас тут сегодня КВН вместо раст-треда, да?
Ловко же ты увиливаешь. Какая разница, как называть вещи. Суть (контекстуальная зависимость) от этого не изменяется.
>Это называется статический анализатор. Причем тут система типов?
>Какая разница, как называть вещи.
Леонид Ярмольник показывает палец вверх, Константин Эрнст загадочно улыбается.
Тут есть анноны, которые более менее серьезно на расте кодят с норм настроенным ворспейсом?
Тулинг увы говно. Приходится жрать что дают.
Особенно разрдажается ебически длинные сборки на CI.
Это проблема любого современного модного языка.
Велосипедисты не понимают, что недостаточно просто сделать еще один голый конпелятор, чтобы убить С++.
emacs же
збс, только я поставил intellij idea и плагин для раста, обрадовался, что вроде что-то нормальное и вуаля:
Does IntelliJ Rust have a debugger?
There is preliminary debugger support for CLion, see this issue for details.
классно на винде поотлаживался
Думал евреи из jetbrains полноценную IDE дадут бесплатно? Наивный.
>совершенно непонятно кому может понадобиться раст
1) виндузятникам, так как у них там полная жопа с менеджерами пакетов и сборкой, из-за чего они не могут в си и кресты
2) дрочерам на функци'anal'ьные яп, так как кое-что знакомое прекочевало
>Ну у го тулинг вполне хороший.
так go'вно уже в проде и есть немало вакансий, ибо бизнес охотно переходит на языки с человекочитаемым синтаксисом, которые уменьшают стоимость разработки
Это ты про потогонки с индусами и бывшими пхп-макаками? Понятное дело. Но если ты хочешь заниматься чем то более интересным, раст отличный выбор. Даже вебню на нем делать интересней и приятней.
Найс манямирок. Впрочем, жить в реальности для растодебила невозможно, мгновенная смерть от болевого шока. Только докера, кубернетиса и прометеуса достаточно, чтобы гошечка дальше захватывала мир, у вас же подобных проектов и в перспективе нет.
Во долбоеб, удивляюсь!
Это ты про дивный мир нодо-профессионалов и похапе-сеньоров? Ему так и так пизда, при растущей сложности софта недоязычки не дают ни zero cost абстракций, ни статических гарантий от наебней, ни внятного управления зависимостями. Когда этой пиздобратии придется переучиваться, их очень взбодрит на закате карьеры изучение с нуля концептов многопоточности, дедлоков и барьеров памяти.
Твоя гошечка в этом особенно отвратительна: конпелируемый язык со сборкой мусора, при этом не имеющий защиты памяти, да ещё тянущий пакеты с ебаной мастер-ветки ебаного гитхаба. И все это зачем-то со своим самобытным кодогенератором и ассемблером-который-не-ассемблер-вовсе. И ради чего - чтобы ерланг не учить? Ржавый, прямо скажем, еще полного потанцевала не достиг и едва годен к продакшну, но уже выглядит на фоне ваших хипстерских технологий Буддой в толпе православных бабок. Одна только возможность сказать cargo build и получить бинарник незнакомого проекта - уже непередаваемо круче еботни с GOPATH и втыкания сырцов только в нужную папочку, чтобы гошечка правильно приняла (зашитые намертво в коде) зависимости.
Докером можешь не гордиться, он настолько уёбское хипстерское говно, что авторов нужно пиздить, пиздить и для закрепления обоссывать. После десяти лет работы freebsd jail в продакшене делать интерфейс, в котором части контейнера называются по ебаным хешам - это надо обладать совершенно особой, хужепидораса, ориентацией.
fatal error LNK1181: cannot open input file 'SDL2.lib'
в описании либы радостно указывается, что именно для винды надо написать вот такой-то скрипт на расте, сделать и такую-то структуру проекта и сделать самоотсос из-за особенностей сборки.
Варианты:
1. Закинь нужные либы или симлинки на них в target/{debug,release}/deps;
2. Добавь "-L путь-к-либам" в переменную RUSTFLAGS;
3. Добавь в cargo.toml оверрайды типа rustc-link-search/rustc-link-lib для всех таргетов использующего либу крейта;
4. Таки напиши ебаный билд-скрипт, т.к. он все равно начинается с нескольких строк.
Так-то pony дает за щеку обеим этим языкам (особенно ржавому с его анальными ограничениями). Жаль за pony не стоит крупной компании, которая бы создавала хайп языку.
http://schematron.com/2017/04/overview-of-rust-and-pony/
>Rust’s Graydon Hoare has said he thinks Pony looks like an early version of Rust, and that the cognative load of those capability keyword is too much, but I don’t see how Rust is not worse, in that regard, frankly.
Точно подмечено
Это ты блять молодо-зелено, если в простейшую линковку не смог.
>Это проблема любого современного
животного с рынка, что не может ссаный блокнот падсибя настроить, пусть нахуй обратно пиздует арбузами торговать
Проиграл.
В Понях используется сборщик мусора, так что они скорее замена Го, чем Ржавому.
Сборщик мусора очень херово работает в случаях, когда нужно экономить ресурсы - а это любой системный софт и сидящие в бэкграунде приложухи. Это легко проверяется - пишешь микробенчмарк на выделение памяти, где заранее известно, сколько в идеале её нужно - и постепенно понижаешь лимит памяти, следя за производительностью. Жабе, например, требуется 3x памяти от сишного идеала, на 1.5x производительность легко может просесть впятеро.
Основная сложность в изучении Ржавого - именно имитация безопасности GC с эффективностью нативного кода. Когда Хоар говорит, что Пони - это типа древнего сабжа, он имеет ввиду именно ту версию, в которой не было лайфтаймов и был GC. В то время действительно можно было потратить сложность на нативную поддержку capabilities. Но, прямо скажем, высокоуровневых языков для бэкэндов сейчас дохера, а для системного программирования только Кресты, Ржавый, да Зиг. И поддержка Мазилы кроме хайпа дает возможность реализовывать муторные, но необходимые части языка - те же интринсики для SIMD.
Ну и конечно, удобство языка еще и в мелочах: система модулей в Ржавом одна из лучших, cargo удобен и понятен, поддержка кросскомпиляции прекрасна.
О Понях я плохого пока ничего не могу сказать, но в своей области они Ржавому не конкурент вообще. Выглядит язык нормально, так что я бы не против, если бы он подвинул Го с Нодой, но и только.
А вообще, товарищи растаманы, мы много песдим и мало показываем кода :(
До следующей редакции языка точно нет :) Их ведь мало внедрить в язык, нужно еще библиотеки подогнать, а это займет столько же, сколько разработка фичи. Используй futures-rs пока.
> у вас же подобных проектов и в перспективе нет.
Ничего, что дропбокс и серво на расте написаны?
Причем дропбокс именно выкинул го (потому что жрал память и тормозил) и переписал все на раст. А годебилы и через десять лет будут носиться со своим "а вот помните докер жи есь го нужен ну мам ну скажи им
https://blogs.dropbox.com/tech/2018/06/extending-magic-pocket-innovation-with-the-first-petabyte-scale-smr-drive-deployment/
>И ради чего - чтобы ерланг не учить?
>непередаваемо круче еботни с GOPATH и втыкания сырцов только в нужную папочку
Люто двачую вот этот пост. Ты няша :3
Грустняво. Комбинаторы писать не очень приятно. А impl Future вообще былинный отказ, все приходится боксить.
У всего есть своя цена. Ты или платишь за железо, или за программистов.
Под раст нужно переписывать весь код, на нем не будут работать старые алгоритмы. Это лишние расходы.
Нет, rust нежизнеспособен.
пиздец у вас пальцы вертикальные . . ставить не устают?
я бы уже давно раскладку заремапил под такое дерьмо
Тебя никто не обязывает переписать всё. В Фаерфоксе, например, давно работает код на Расте, он там сосредоточен в нескольких библиотеках и амбиций по захвату мира не имеет. Весь смысл этого языка в том, что в невыносимо байтоёбских обстоятельствах новый код на нём пишется быстрее и дешевле, чем на C/C++, а надежность, переносимость и годность к повторному использованию у него получаются несравнимо выше. Так что писать на Ржавом - это инженерное и экономическое решение, а не дань моде, как с php/js-фреймворками.
> в невыносимо байтоёбских обстоятельствах
в этом случае раст является слишком жирным вариантом
>новый код на нём пишется быстрее и дешевле, чем на C/C++
ага, с write-only синтаксисом, отсутствием готовых и проверенных временем надёжных библиотек, навороченных ide и т.д.
>Весь смысл этого языка в том, что в невыносимо байтоёбских обстоятельствах новый код на нём пишется быстрее и дешевле, чем на C/C++
Сомнительное заявление.
Можно писать на С++ без анальных ограничений и безопасно с использованием статических анализаторов https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C,_C++
Загуглил "мелкобуквенный шизик", выдало ссылку на твой пост.
>Весь смысл этого языка
в том, чтобы на страницах википедии для готовых к продакшену языков типа swift было написано "испытал влияние rust".
>в этом случае раст является слишком жирным вариантом
В чем жирном-то? Если ты про кажущиеся большими бинарники - это уже много раз обсуждалось, разработчикам это проблемой не кажется, но любой желающий может отказаться от стандартой библиотеки и писать приложухи по 8кб. Генерируемый же Ржавым код достаточно компактен, чтобы на нем можно было программировать микроконтроллеры. Не веришь - зайди на godbolt и сравни генерируемый код с аналогичным на Крестах.
> ага, с write-only синтаксисом, отсутствием готовых и проверенных временем надёжных библиотек
Ты, наверное, в профессии новенький и не видел некоторое дерьмо, да? Открой исходники крестового STL и увидишь write-only синтаксис :) Здесь синтаксис просто непривычный, после обучения языку это проходит. С библиотеками у нас всё в порядке - чего не хватает, берем у сишников через FFI. При этом всё необходимое подключается к проекту через cargo, без возни с разными системами сборки и зависимости от специфичных для компилятора фич. Ты просто физически не сможешь использовать в крестопроекте больше дюжины библиотек, т.к. заебешься их подключать :)
>>49726
Ты не понимаешь, о чем говоришь. Статический анализатор укажет тебе на явные ошибки - одинаковые плечи у if-ов, недостижимый код, обрезание класса до базового. Но у него своя, отличное от таковой у компилятора модель кода. Самый пиздец происходит там, куда его авторы не добираются - например, иногда оптимизатор удаляет проверки на nullptr, из соображений, что раз указатель ранее разыменовывался, то будем считать, что он заведомо не null. Или игнорирует возможность алиасинга указателей, если они пришли из разных мест. Если ты на это не напарывался - считай, весь твой код нужно мелким ситом просеивать, чтоб не рвануло. И такой ебанины весь язык. В Ржавом просто отказались вообще от всего неопределенного поведения и в нем это просто невозможно. То же и с лайфтаймами - Ржавый не позволит тебе освободить переменную раньше, чем на нее исчезнут ссылки. Это не ограничения, это тебе бьют по рукам за тупость.
>в этом случае раст является слишком жирным вариантом
В чем жирном-то? Если ты про кажущиеся большими бинарники - это уже много раз обсуждалось, разработчикам это проблемой не кажется, но любой желающий может отказаться от стандартой библиотеки и писать приложухи по 8кб. Генерируемый же Ржавым код достаточно компактен, чтобы на нем можно было программировать микроконтроллеры. Не веришь - зайди на godbolt и сравни генерируемый код с аналогичным на Крестах.
> ага, с write-only синтаксисом, отсутствием готовых и проверенных временем надёжных библиотек
Ты, наверное, в профессии новенький и не видел некоторое дерьмо, да? Открой исходники крестового STL и увидишь write-only синтаксис :) Здесь синтаксис просто непривычный, после обучения языку это проходит. С библиотеками у нас всё в порядке - чего не хватает, берем у сишников через FFI. При этом всё необходимое подключается к проекту через cargo, без возни с разными системами сборки и зависимости от специфичных для компилятора фич. Ты просто физически не сможешь использовать в крестопроекте больше дюжины библиотек, т.к. заебешься их подключать :)
>>49726
Ты не понимаешь, о чем говоришь. Статический анализатор укажет тебе на явные ошибки - одинаковые плечи у if-ов, недостижимый код, обрезание класса до базового. Но у него своя, отличное от таковой у компилятора модель кода. Самый пиздец происходит там, куда его авторы не добираются - например, иногда оптимизатор удаляет проверки на nullptr, из соображений, что раз указатель ранее разыменовывался, то будем считать, что он заведомо не null. Или игнорирует возможность алиасинга указателей, если они пришли из разных мест. Если ты на это не напарывался - считай, весь твой код нужно мелким ситом просеивать, чтоб не рвануло. И такой ебанины весь язык. В Ржавом просто отказались вообще от всего неопределенного поведения и в нем это просто невозможно. То же и с лайфтаймами - Ржавый не позволит тебе освободить переменную раньше, чем на нее исчезнут ссылки. Это не ограничения, это тебе бьют по рукам за тупость.
Лел, признай уже что взять старый уязвимый дизайн, окружить его барьерами и назвать это безопасностью, было плохой идеей. Как эксперимент rust был интересным. Но этот эксперимент провалился. Все. Языки рождаются и умирают, это естественный процесс. Выживают наиболее приспособленные. У раста нет ниши.
>В Ржавом просто отказались вообще от всего неопределенного поведения и в нем это просто невозможно.
Да никому это не нужно. Раст - это колосс на глинянных ногах.
Слухи о сложности работы с памятью и написания многопоточных программ в С++ сильно преувеличены авторами новых "безопасных" языков и их фанбоями.
Безопасность достигается за счет безопасных абстракций. И в современном С++ таких абтсракций для написания безопасного кода полно.
Без базара, хеллоуворлды можно безопасно писать на любом языке, кроме брэйнфака и ассемблера. Проблема в том, что в любой крупной крестовой программе все равно будут использоваться как надежные, так и ненадежные абстракции, а в некоторые дни ты будешь писать код пьяным или невыспавшимся. Скорее рано, чем поздно, ты таки пройдешь по нулевому указателю и ошибешься на единичку в цикле. А там у тебя, ковбой, будет выбор - поменять свое ошибочное мнение или держать морду кирпичом, пока у тебя по штанам стекает моча. В Мазиле полно зубров, писавших код ещё со времён Нетшкафа, а вот поди ж ты - она у меня крашится по нескольку раз в месяц. Наверное, они там все тупые в абстракциях не разбираются. А как легко пишется на современных крестах код мы можем наблюдать на баунтисорце, где средней сложности задачу сделать поддержку переключения протоколов через http proxy с наградой в 50 штук баксов вся шобла не может решить уже четвертый месяц.
Бывают. Причем их попадается много даже в самом компиляторе, особенно когда учишься языку и лепишь горбатого. Но есть баги и есть леденящий душу пиздец, называемый кроссплатформенным кодом на крестах :(
Тащем-то раст гораздо более готов к продакшену и используется в более широком спектре прикладных областей, чем свифт. Но свифт тоже няшка, неплохой компромисс. Жаль, что он не заменит кресты.
Я вообще мимо проходил, оставь свои маняпроекции при себе. Так зачем ты лезешь со своим охуительно важным мнением, студентик?
>Сборщик мусора очень херово работает в случаях, когда нужно экономить ресурсы - а это любой системный софт и сидящие в бэкграунде приложухи.
Это миф. Все настраивается.
Нормальный сборщик мусора всегда работает быстрее ручного выделения/освобождения памяти. GC это оптимизация. Не понимаю, почему о GC всегда говорят как о чем-то плохом.
Разница в производительности возникает из-за того, что в языках с ручным выделением памяти это настолько дорогие операции, что там выделение памяти является нежелательным и все алгоритмы пишутся исходя из этого. А в языках со сборщиком мусора создание новых объектов является нормой.
Тебе про риалтайм, микроконтроллеры и экономию памяти на хипе говорят, але. Дядька в киеве, а бузина в огороде. Иди лучше лабы делай, блядь, нахер ты рассуждаешь о том, в чем не шаришь? Гуманитарий дохуя?
другой анон
GC это не оптимизация, это серьезное архитектурное решение. Да, объекты выделяются быстро, почти как на стеке, но взамен ты получаешь паузы в работе программы и малопредсказуемый расход памяти. При этом память расходуется впустую - для жабы-8 я измерял трехкратный от сишного расход для небольшого выигрыша в производительности, и полуторакратный для полного слива но хотя бы без крашей, на примере бинарного дерева на 2^28 элементов. Базу данных, навороченную компьютерную игру или веб-браузер ты с такими вводными не напишешь. Вся возня с лайфтаймами в Расте - она не от задротства, а от желания получить безопасность GC при предсказуемости ручного управления памятью. Если же работа с памятью станет проблемой производительности, то просто будет выявлено узкое место и память будет выделаться-освобождаться крупными кусками, а не индивидуально. Корежить весь язык для этого необязательно (язык D, например, поддался соблазну, и теперь у него жизнь без бороды).
>Тебе про риалтайм, микроконтроллеры и экономию памяти на хипе
То-то embedded java была популярной для встраиваемых систем. Вот не знали дураки, что сборщик мусора это плохо.
Если что, у эмбеддед сборщиков мусора времен embedded java типичный оверхед от 5% до 250% в зависимости от числа аллокаций. Сейчас можно даже вообще без оверхеда, только производительность будут сасат. Если добавить к этому размер jre, получится, что при массовом производстве может оказаться дешевле нанять сишника вместо java-макаки.
То-то ебучее говно на ведроиде тормозит что пиздец на железе на котором можно в кукурузис играть.
Это не тот сайт, где когда-то php обогнал си и занял первое место в одном из тестов?
Давно не наблюдал за растом, стал интересен его статус.
1) Написали ли уже что-то крупное и прям достойное, например какой-то игровой движок или что-то подобное - только не очередную ОС, а вот реально продукт который стал востребован (пускай даже не сильно, но который используют реально).
2) Написали ли тот браузер (флагманский проект, не помню название), вообще что с ним случилось, какой у него статус сейчас, вроде очень давно его пишут?
3) Время хайпа давно прошло - как изменилось ваше отношение к языку, видите ли в нем перспективу, разочаровывались или наоборот воодушевлялись за это время после релиза? Что думаете за его будущее
PS: изображение - это статистика по тегам SO.
Ты что, раст для избранных, джавист на него не может перекатиться, вот питонисты которых половина в чатике ру-комьюнити могут, а ты нет!
>Байтоебы, зачем в 2018 году мерить размеры бинарников?
Чтобы потом не было такого -"а почему мой веб webassemly на расте в 100мб не грузится на мобильниках, там же всего лишь прорисовка двух html тегов?!"
>>49660
>Box<Future<Arc<Rc<Govno<Mocha>>>>>
Тоже всегда с этого люто проигрываю, осталось только джава программистами позвать чтобы получить это:
FirstBeanManagerFactorySomebodySaveMeHandler<Future<Arc<Rc<Govno<Mocha>>>>>
И можно смело идти доказывать питон программисту как ваш язык помогает вам самовыражаться.
Отвечаю, как рядовой любитель Ржавого. Статус умеренно оптимистичный: несколько месяцев назад выделили стабильную версию языка, но в ней нет ни удобств (напр. нативной поддержки асинхронности), ни некоторых важных вещей типа кастомных аллокаторов и поддержки SIMD (и те и те требуют nightly версий, и хз когда стабилизируются). Нужно каждую задачу рассматривать отдельно, подойдет язык или нет.
По пунктам.
1) Язык используется в основном крупными компаниями на вспомогательных ролях, скачать и пощупать нечего. Из известных имен - Dropbox перевел на него все стораджи, и поимел с этого профит. Менее известные можешь посмотреть по ключевику "friends of rust", их в общем-то достаточно. Из игор недавно шишка из студии Ready at Dawn изъявила желание переката на Руст, но у них все проекты второго и третьего сорта.
2) Там не браузер целиком, а новый движок для Фаерфокса. Он пишется, и активно (300 коммитов за месяц), но размер задачи конский, и в апстрим переползают крохи (напр. движок css и парсер mp4). Хз, долго ли его ждать. Мне с этого перепали годные библиотеки для парсинга CSS/HTML. Это ж круто - парсить страницы тем же кодом, что и браузер.
3) С релиза огорчает кажущийся черепашьим темп разработки: каждые две недели видны какие-то мелкие стабилизации и багфиксы, а фичи типа async/await повисли в лимбе и неизвестно когда будут. Но имеющиеся преимущества перед c/c++ пока перевешивают с большим отрывом.
Если абстракции нет, то она ничего не стоит!
>Это ж круто - парсить страницы тем же кодом, что и браузер.
Круто это jquery, а какая радость от нативного дерева элементов?
1) дропбокс какие нахуй игровые движки, ты ебнулся?
2) да, файрфокс (квантум) называется
3) когда был "хайп" я его избегал из-за ломающих изменений, смысл учить если еще не финализировали столько вещей. теперь не избегаю
PS: доставьте ту картинку про plateau of productivity
Братишка, а посоветуй пейперов на тему иммутабельных\персистентных структур без гц, ты интересовался этой темой?
>Но не понятно что и где они там запили
Понятно, они подробно в своем блоге все описывали.
>и вообще запилили
Запилили и продолжают пилить: https://blogs.dropbox.com/tech/2018/06/extending-magic-pocket-innovation-with-the-first-petabyte-scale-smr-drive-deployment/
>или хотели на хайпе покататься
На каком хайпе, ебанашка? Они делают продукт для юзеров, юзерам вообще поебать, на чем у них там бэкенд.
>На каком хайпе, ебанашка? Они делают продукт для юзеров, юзерам вообще поебать, на чем у них там бэкенд.
Ты серьезно не понимаешь как тут маркетинг может работать, или тебе просто не согласится надо?
Фантазер комнатный. Пиздец.
Всё-таки вносить изменения в критичные для бизнеса системы - как-то жирновато для маркетинга, да и переход с Go на Ржавого выглядит тут вполне уместно. Но вызывающих вау-эффект проектов у сабжа действительно маловато :(
>Всё-таки вносить изменения в критичные для бизнеса системы - как-то жирновато для маркетинга
Знаю конторку одну, малую такую, но гордую, которая действительно давала возможность некой группе своих программистов поковырять код в часть времени. Целью была какая-то конференция (вроде даже местная, хз), что бы так сказать себя показать и к себе расположить (потому что со всякими питонами и С++ ты никого не удивишь, а у тематической группы нового языка легко о себе позитив получить, да и программисты рады, играются во что-то новое).
Так вот на "кухне" всего этого дела, оказалась никакой крупномасштабной разработки нет, конечно, пытались наклепать параллельно что-то похоже на существующие, но на продакшен никто это и не думал нести (и никто бы не дал). С конференцией не вышло, игра в новый язык затухла.
Мораль во всем этом такова, что менегеры видят легаси как идеальный отточенный код без рисков и даже если ты занесешь им производительности и диаграммы - они скажут - нет.
Поэтому я верю, что такая компания как дроп может переписать участки и может позволить себе риски. Но я не верю в то, почему этот узкий код раньше не был написан уже на сях. Так же я не верю когда с питонов переписывают на низкие языки, потому что питон и так изначально берут в местах где не критична производительность (исключая моменты когда нужно быстро написать прототип, а потом переписать - но это свойство стартового проекта). Никакой умный менагер не разменяет скорость разработки питона, на прирост производительности 2-3 раза (железо дешевле времени разработки, а время разработки наилучшие у питона чем у раста и все равно все упрется в базу или пинг).
Сколько тебе лет?
>>50669
>Но вызывающих вау-эффект проектов у сабжа действительно маловато :(
А вот если подумать - какие это вообще проекты должны быть? Вот анон выше упоминал френдс оф раст, смотрим: https://www.rust-lang.org/en-US/friends.html
Атлассиан, каноникал, самсунг, коре ос, сентри, клаудфаре, курсера, дропбокс, сама мозилла в конце концов... и нпм! нпм, блядь, на раст перепиливают! Ну вроде куда уж больше то? Хуй знает.
Такое чувство, что все ждут, что вот сейчас в один момент вообще весь код на крестах исчезнет и вместо него появится код на расте. И то каждый третий будет говорить "ну не, чет не взлетел, вот когда линукс перепишут на расте - тогда поговорим".
>Но я не верю в то, почему этот узкий код раньше не был написан уже на сях.
Возьми да почитай, уже сколько раз ссылки вкидывали:
https://blogs.dropbox.com/tech/2016/05/inside-the-magic-pocket/
https://blogs.dropbox.com/tech/2018/06/extending-magic-pocket-innovation-with-the-first-petabyte-scale-smr-drive-deployment/
https://blogs.dropbox.com/tech/tag/magic-pocket/
Помню эти крики
раст - это писать бд!
раст - это писать браузер!
раст - это писать игры!
раст - это... ничего за несколько лет
За то все время тычут, что некая N-компания, взяла там и написала что-то и где-то в своем зоопарке из языков коде.
Там простейший гуи написать не могут. Какие бд, браузеры, о чем ты.
>переход с Go на Ржавого выглядит тут вполне уместно
переход с go'вна на ржавую мочу им дорого обходится, теперь их поделка на куче файловых систем не будет работать https://www.ghacks.net/2018/08/13/dropbox-drops-any-file-system-but-ext4-on-linux/
>теперь их поделка на куче файловых систем не будет работать
Упомянутое изменение тут не при чем - меняли-то бэкэнд, ему плевать какая там ФС у клиентов. На бэкэнде удалось увеличить пропускную способность стораджей и тем самым сократить затраты.
>>50719
>За то все время тычут, что некая N-компания, взяла там и написала что-то и где-то в своем зоопарке из языков коде.
А что, если пойти от обратного? Много известных проектов на C/C++ появилось за последнюю пятилетку?
>>50690
>и даже если ты занесешь им производительности и диаграммы - они скажут - нет
Но производительность - это не всегда фича. Я это время не застал, но в 90х, говорят, бывали энтерпрайз сервисы, запускающиеся по полчаса и дольше - и никто не кричал переписать всё на ассемблере. Да и флагманский проект - Фаерфокс - показывает, что можно не переписывать на Расте старое, а дописывать новое в рамках имеющейся базы кода. Риск - минимальный, профит - серьезный. И я бы даже не сказал, что писать на Петоне сильно дешевле - отсутствие null-ов и странных вещей типа проваливания переменных из классов в глобальный скоуп позволяют тысячу мелких юнит-тестов заменить сотней интеграционных и не потерять в качестве. В теории. Когда-нибудь, хех.
>Много известных проектов на C/C++ появилось за последнюю пятилетку?
Я не уверен про пятилетку, но многие кейворды из списка для меня свежи (свифт попадает в пятилетку?)
https://github.com/search?l=C++&o=desc&q=stars:>1&s=stars&type=Repositories
Конечно понятно, что уровень С/С++ это не javascript, где каждый день что-то новое и уже сразу устарело, но как бы для раста уже пора.
Не хейтерства ради, но должна же быть причина-следственная связь все-таки. Если раст так хорош и удобен и безопасен, то должна быть эта связь где из "поиграться в код" стали развиваться стабильные реальные проекты (и не обязательно побеждать С++, а просто продемонстрировать что у языка есть ниша своя, он состоялся как язык)
>и даже если ты занесешь им производительности и диаграммы - они скажут - нет
Ты мыслишь как программист, а нужно как менеджер крупного или среднего бизнеса.
Зачастую некоторые вольности для программиста достаются не за то, что бизнесу важно с кобола на джаву там пересесть наконец-то, а чтобы уменьшить текучку качественных кадров, развлечь, так сказать самих программистов.
Рисковать или заниматься кадрами никто не хочет и не будет, именно поэтому топ языков так устойчив. И в целом, хочешь ты или нет, но языки программирования это инструмент бизнеса, а не твой ты скорее движущая часть этого инструмента, приятное дополнение
Надо было делать язык не для себя, а для бизнеса, чтобы он решал какую-то задачу например: упрощал и ускорял разработку на уровне С++, уменьшал бы порог вхождения, давал какие-то технические новшества - как например го с его "спрятанной" асинхронностью.
Нужна ли та сама "безопасная память" или садизм и ограничения - не знаю. Но точно не нужно было делать такой же сложный язык как С++
Ты прав. Раз не выстрелило сейчас, вряд ли выстрелит в будущем. Если только не появится какой-нибудь хайповый фреймворк типа Рельс, как случилось с безвестным в свое время Руби. Пример языка со схожей ситуацией уже есть - Кложа, у которой примерно такой же скромный список использующих её компаний и некоторое количество опытных специалистов, утверждающих, что добиваются на ней бешеной продуктивности. Так что я всё же продолжу вкладываться в язык, пока не найду достаточно веских технических причин его забросить.
>ускорял разработку на уровне С++
вот это реально тема, какой нибудь С+++ в который можно было бы сконвертировать всё байтоёбию, вот это была бы пушка
а тут динозавры пытаются одеяло со всей планеты стянуть нахуй, ну смешно
>раст - это писать бд!
https://github.com/mozilla/mentat
>раст - это писать браузер!
https://www.mozilla.org/en-US/firefox/new/
>раст - это писать игры!
http://arewegameyet.com/#games но только шизики такое говорили, любому очевидно, что геймдев - это ужасно консервативная отрасль с тоннами легаси, сами игры пишут на шарпах и питоне, а чтобы движки переписали на расте, должно лет 15-20 пройти
>раст - это... ничего за несколько лет
Нормальный манямирок.
>некая N-компания,
Это дропбокс-то "некая Эн-компания"? Лол, тебе сколько лет, мальчик?
>взяла там и написала что-то и где-то в своем зоопарке из языков коде
Весь бэкенд на сабже, але.
>>50724
Кретин, ты не понимаешь, чем сервер отличается от клиента. Зачем ты вылез из своего ньюфагозагона? Чтобы бампануть годный тред, вот зачем :3
>>50808
>https://github.com/search?l=C++&o=desc&q=stars:>1&s=stars&type=Repositories
Там вроде ни одного проекта за последнюю пятилетку. Ну и электрон, nw.js... нутыпонел.
>>50826
Да на самом деле Кложу тоже дохера кто юзает, и киллер аппы у нее есть (тот же Ом или Датомик). Фишка в том, что уже прошло то время, когда можно было рандомхую написать РоР и все сразу такие "ваау!". Сейчас 1) количество разработчиков увеличилось в разы, притом в основном это низкоквалифицированная рабочая сила, которая учит ровно один язык
2) за рынок языков в основном борются крупные компании с крупными маркетинговыми бюджетами
То есть основная масса разработчиков сейчас притекает в отрасль с нуля, по принципу "выбрали тот язык, про который громче всего кричат - вкатились". Выбор основывается исключительно на маркетинге, просто потому что они ньюфаги и не могут выбирать инструменты рационально. А миграция между языками среди сеньоров-помидоров попросту не особо активная по объективным причинам: вот учил ты 20 лет кресты, а сейчас взять и забить на все потраченные жопочасы? Далеко не каждый на такое согласится.
Кстати, тот же Руби выстрелил спустя 10-15 лет после первого релиза. А у раста релиз 1.0 был 3 года назад.
>раст - это писать бд!
https://github.com/mozilla/mentat
>раст - это писать браузер!
https://www.mozilla.org/en-US/firefox/new/
>раст - это писать игры!
http://arewegameyet.com/#games но только шизики такое говорили, любому очевидно, что геймдев - это ужасно консервативная отрасль с тоннами легаси, сами игры пишут на шарпах и питоне, а чтобы движки переписали на расте, должно лет 15-20 пройти
>раст - это... ничего за несколько лет
Нормальный манямирок.
>некая N-компания,
Это дропбокс-то "некая Эн-компания"? Лол, тебе сколько лет, мальчик?
>взяла там и написала что-то и где-то в своем зоопарке из языков коде
Весь бэкенд на сабже, але.
>>50724
Кретин, ты не понимаешь, чем сервер отличается от клиента. Зачем ты вылез из своего ньюфагозагона? Чтобы бампануть годный тред, вот зачем :3
>>50808
>https://github.com/search?l=C++&o=desc&q=stars:>1&s=stars&type=Repositories
Там вроде ни одного проекта за последнюю пятилетку. Ну и электрон, nw.js... нутыпонел.
>>50826
Да на самом деле Кложу тоже дохера кто юзает, и киллер аппы у нее есть (тот же Ом или Датомик). Фишка в том, что уже прошло то время, когда можно было рандомхую написать РоР и все сразу такие "ваау!". Сейчас 1) количество разработчиков увеличилось в разы, притом в основном это низкоквалифицированная рабочая сила, которая учит ровно один язык
2) за рынок языков в основном борются крупные компании с крупными маркетинговыми бюджетами
То есть основная масса разработчиков сейчас притекает в отрасль с нуля, по принципу "выбрали тот язык, про который громче всего кричат - вкатились". Выбор основывается исключительно на маркетинге, просто потому что они ньюфаги и не могут выбирать инструменты рационально. А миграция между языками среди сеньоров-помидоров попросту не особо активная по объективным причинам: вот учил ты 20 лет кресты, а сейчас взять и забить на все потраченные жопочасы? Далеко не каждый на такое согласится.
Кстати, тот же Руби выстрелил спустя 10-15 лет после первого релиза. А у раста релиз 1.0 был 3 года назад.
>саму игровую логику
то хуле сложно переписать движку и подтыкнуть ее под ровно те же скрипты? может потому что индустрия нищая?? бюджеты как у ААА фильмов, а сборов хуй, да маленько, вот и сидят на крестах уечных все
в современном стандарте с++ уже есть эта пушка
>бюджеты как у ААА фильмов, а сборов хуй, да маленько
>сборов хуй, да маленько
Ты сука, наркоман, с какой планеты?
>По сравнению с позапрошлым финансовым годом в 2018-м прибыль Electronic Arts выросла на 3.3 % — с 1.53 миллиарда долларов до 1.58 миллиарда
>Согласно отчетам, Ubisoft удалось удачно завершить четвертый квартал и весь финансовый год в целом. Чистая выручка по итогам года подскочила на 19% и составила $2,4 млрд, а чистая прибыль за этот же период выросла аж на 29%, достигнув отметки в $164,7 млн.
>Сегодня состоялся очередной квартальный отчет Activision Blizzard перед инвесторами. Компания поделилась своими успехами за первый квартал 2018 г Чистый доход Blizzard составил 480 млн долларов, из которых 122 млн пришлись на операционную прибыль.
За 2016 год прибыли
Музыкальной индустрии $16 лярдов
Кина 38 лярдов
ПК Гейминг - 34 лярда
Сосноли 30 лярдов
Мобыльное дрочево 40 лярдов
https://www.quora.com/Is-the-Video-Game-industry-bigger-than-the-Film-and-Music-Industries
>И умер через пару лет.
Если мы считаем что Руби умер, то Раст, по такой шкале, еще даже не покинул писюн родителя.
Двачую. Вспомните го через 3 года после релиза.
В дропбоксе го остался, и его там намного больше, чем раста.
Переписали самую низкоуровневую часть, остальные 1.3 миллиона строк на гошечке никуда не делись.
> Dropbox rewrote Magic Pocket in Golang, and then rewrote it again in Rust, to fit on their custom built machines.
Actually, full disclosure, we really just rewrote a couple of components in Rust. Most of Magic Pocket (the distributed storage system) is still written in golang.
Алсо, линк для разрыва манямирка:
https://youtu.be/5doOcaMXx08
Только заранее советую заготовить лёд.
Нужен какой-нибудь стильный молодежный фреймворк\библиотека\фича, которые будут решать определенные задачи лучше конкурентов, то есть инструменты разработчика и из которого нельзя все быстро спиздить, как было с рельсами
Тогда любовь и обожание гарантированны. А то, что где-то там базу или игру запили не говорит о том, что язык хорош.
Сейчас недостатки языка перекрывают его достоинства. Те же с\с++ только в профиль
Уже со следующей версии ебля с GOPATH закончится, и go build будет делать то же самое, что и cargo build. Раньше адекватные люди пользовались dep, теперь модули завезли в тулинг, так что теперь этот аргумент инвалид.
А жопная боль от доминации докера вполне мне понятна, гори дальше.
>A Turing tarpit (or Turing tar-pit) is any programming language or computer interface that allows for flexibility in function but is difficult to learn and use because it offers little or no support for common tasks.
Я нашел определение раста, посоны.
>Переписали самую низкоуровневую часть
Может парням пора рассказать про СИ и ассемблерные вставки, вот они удивятся приросту той низкоуровневой части.
А если серьезно, вот реально, им для той задачи требовался раст или просто парни хотели хайпануть или поиграть во что-то новое?
Как там было? Питон -> го -> раст - что дальше, может си? Хотя зачем си, может тогда что дарт2, пони, кристал?
Давай тезис кратко, мы тут не такие молодые чтобы иметь время втыкать на каждые конфушки на ютубе.
>Как только го-дауны завезут дженерики, так сразу поговорим.
Последние что там действительно нужно. Поломай в себе статик-индиго и пиши промежуточный код между статическим и динамическим программированием.
Теперь придется отвечать за нулевую абстракцию и за безопасную утечку памяти.
>нулевую абстракцию и за безопасную утечку памяти.
На словах. А на деле unsafe на unsafe сидит и unsafe-ом погоняет.
https://www.reddit.com/r/rust/comments/8s7gei/unsafe_rust_in_actixweb_other_libraries/
Я довольно долго писал на го. И две главные проблемы для меня были именно дженерики и ГЦ. Заебался везде пулы пихать.
>Заебался везде пулы пихать
Так не пихай
В языках без GC с памятью и пулами еще больше геморроя, поверь.
Просто ты привык есть говно.
В го вообще не нужно возиться с пулами и управлением памяти, это же не раст в конце-концов. Там сборка мусора занимает наносекунду времени выполнения.
Это классическая экономия на спичках.
Уберите нахуй из шапки слова про сегфолты и потокобезопасность, все мы и так знаем, что когда нужно писать реальное приложение, то значительная часть кода все равно оборачивается в unsafe
Прогеры на раст, на генетическом уровне не делают ошибок в unsafe и юнит тестах unsafe, это только сишники ошибаются в таких местах.
Во долбоеб! Про линейные или афинные типы слышал что нибудь? Или это тоже статический анализатор?
Я не просто так возился с пулами, а потом что говно тормозило когда гц сжирает 50мс из 50мс за которые должен быть выдан ответ рандомно, это никуда не годится. Приходилось долго и упорно отлаживать выпиливая жрущее память говно.
Я пишу на го с 2014, в том числе zero-allocation код, что-то ещё не заебался. А чтобы сейчас gc тормозил, нужно совсем уж криворуким уебком быть, аллоцируя на каждый чих.
Кратко: большинство инфраструктуры в дропбоксе на го, слезать с него не собираются, докладчика уже доебали спрашивать про ваш раст, на него переписали пару сотен строк кода из ляма, а вы тут развели праздник, как будто вся инфраструктура у них на ржавчине, и повторяетете это как мантру.
>а вы тут развели праздник
Лол, вообще-то это ты праздник развел. Пришла эйчарка на конфу гоферов и начала заливать про "Go Reliability and Durability at Dropbox". Весь ток полностью состоит из баззвордов, маркетингового буллшита и "у нас есть хакатоны, кофемашины и столики для пинг-понга, приходите к нам работать" - а ты возбудился уже, лол. Нахера ты его вообще вбросил сюда? Типичный го-ребенок как он есть.
Никто не говорил, что они ВСЕ переписали на расте (это было бы как минимум глупо). Они переписали на расте критичные подсистемы, которые тормозили на го:
>Performance is 3-5x better at tail latencies. Cost savings is.. dramatic. I can't be more specific there.
>At a high level it's really a memory thing. There are a lot of great things about Rust but we're also mostly happy with Go's performance. Rust gave us some really big reductions in memory consumption (-> cheaper hardware) and was a good fit for our storage nodes where we're right down in the stack talking to the hardware.
>The really big deal is memory management. There's no GC, and there's pretty precise memory control, and it's not the Shub-Niggurath that dealing with C++ is.
>We still have a ton of Python. ... our web controller code, for example, is millions of lines of Python. And we use Python in lots of other places as well.
> Лол, вообще-то это ты праздник развел
> Ничего, что дропбокс и серво на расте написаны?
Ага, я развел. Весь тред каждый второй пост - упоминание того, что дропбокс на расте переписали.
> Пришла эйчарка
Перестань сношаться в глаза, это Principal SRE, а не HR.
> Они переписали на расте критичные подсистемы, которые тормозили на го:
Переписали системы с очень высокими требованиями к memory footprint и производительности. Никто и не спорит, что go для этого плохо подходит — оверхед на gc никуда не денется. Но сука, раздувать из этого великую победу тысячелетия rust просто доебали уже.
Вы уже определитесь, блять, Dropbox либо хипстеры (потому что пишут на go), либо хардкорные крутые чуваки (потому что пишут на rust).
>Перестань сношаться в глаза, это Principal SRE, а не HR.
Лол, ну ты и долбоеб. Principal SRE она в Gremlin, а этот ток она давала когда она работала в дропбоксе (помнишь, мы про дропбокс говорим, да?) маняменеджером. И на конференцию она приехала в роли эйчарки, чтобы заливать маркетинговый буллщит про РЕЛАЙАБИЛИТИ и ДЬЮРАБИЛИТИ. Сношаться в глаза, ага, лол.
>Никто и не спорит, что go для этого плохо подходит
Ну так и съебите уже обратно в свой маняговнотред, это ведь как бы не я тут уже полтреда кукарекаю, что ГО НИМОЖИТ ТОРМОЗИТЬ и ОВЕРХЕДА ОТ ГЦ НЕ БЫВАИТ, прокрути пару постов вверх.
>Но сука, раздувать из этого великую победу тысячелетия rust просто доебали уже.
Да вроде никто ничего не раздувает. Чувак выше спрашивал, где используется раст, ему ответили. В чем проблема-то?
>Вы уже определитесь, блять, Dropbox либо хипстеры
Кто вы, кто вы-то, братишка? Я вообще хуй знает, откуда ты это взял, обобщать всю компанию (в которой сотни инженеров и разных команд) - это маразм, да и разделение на хипсторов\хардкорщиков в таком ключе тоже попахивает идиотизмом. В итт треде никто ничего такого вроде не писал.
Ну и не забываем, что больше всего кода у них на гвидобейсике, кхе-кхе-кхе.
Или просто иметь плохо ложащийся на mark and sweep сборщик мусора heap в десятки гигабайт, как у Дропбокса :P
>>51670
Ну, кроме Дропбокса в списке friends of rust есть еще некоторое количество известных имен, причем список даже неполный - нет Microsoft, например. Так что язык как минимум не умрёт внезапно. А там хер с ним, кто и как его использует, важнее вопрос, можно с него получить profit или нет, а для этого, вижу, не трёп надо слушать, а писать и сопровождать на нём крупный проект, что пока стрёмно как-то =/
>ОВЕРХЕДА ОТ ГЦ НЕ БЫВАИТ
Никто так не говорит. Оверхед от GC на порядки меньше malloc и является несомненной оптимизацией.
Производительность в языках без GC достигается за счет ИЗБЕГАНИЯ выделения памяти.
В языках с GC это делается элементарно через пулы. Но это как правило не делают, потому что оверхед от GC минимальный и не стоит возни с памятью. В языка без GC возня с памятью ОБЯЗАТЕЛЬНА
Оверхед разный бывает. Уже приводил пример - Джаве на стандартных настройках чтобы получить профит от GC нужно втрое больше памяти, чем Си, иначе она наоборот медленнее, при ужимании до предела даже в разы медленнее. Ну и конечно не во всех задачах stop-the-world приемлемо. Базы данных, игры или браузеры на таких языках пишут только долбоёбы.
>Базы данных, игры или браузеры на таких языках пишут только долбоёбы.
А разве значительная часть высоко нагруженных систем не на Джаве?
- Elasticsearch
- Kassandra
- Hadoop
- Solr
- Spark
- Apache Kafka
>игры
До выхода Android NDK все игры в гугл плее были на голой джаве. Что росту андроида и гугл плея не помешало.
Джава просто популярна и под неё проще выбить баблосы на разработку. А так - да, долбоёбы пиздец просто, писать СУБД на языке без SIMD и с непредсказуемым оптимизатором. Раз уж говоришь про Андроед - не забывай, что пока телефоны не приблизились по ресурсам к суперкомпьютерам из 90-х, отстающие на 2-3 года по железу Айфоны давали гораздо более плавную картинку при большем разрешении (т.к. мода на особо плотные экраны с них и пошла). То же и с играми - на десктопе Джава к тому моменту была доступна больше десяти лет, но из требующих JRE игор я помню только Ил-2.
> А так - да, долбоёбы пиздец просто, писать СУБД на языке без SIMD и с непредсказуемым оптимизатором.
Ебать дебил
Если есть пожелания по оформлению шапки - вбрасывайте. Иначе перекачу как в прошлый раз, левой пяткой.
>>Питон -> го -> раст
>Ну ты не замечаешь закономерности?. При чем тут дарт и кристал?
Попробуй сам заметить закономерность, это не сложно.
>От динамикодрисни к более производительным и низкоуровневым языкам
Тогда это бы выглядело так
питон -> модуль питона на си -> си
Самое забавное, что написать маленький узко-специализированный микросервис на Си будет куда быстрее и приятнее чем на расте.
>Ебать дебил
Не, те кто это говно внедряли и те кто под это дело пилил бабосики как на внедрении и допиливании этой параши так и на внедрении топовых сервачил на топовых зионах с полными слотами топовой оперативы - те не дебилы. Они на всём этом бабла подняли.
А вот подобные тебе, которым напиздели в уши что жор оперативы сотнями гигов и загрузка всех ядер на кластерах топовых зинонах с топовыми SAN cbcntvfvb yf byabyb,tylf[- это пиздец как быстро и ваще топ бигдата биг пирфоманс - как раз дебилы и есть, тут да, ты самокритичен.
Впрочем, по интырпрайзным меркам это действительно не такой пиздец и действительно быстро.
Тут до САПа которому нужны симметрикс и мейнфрейм от межделмаша чтобы как то билетики на самолеты считать оперативно еще не доплюнули. Но скоро смогут.
> потому что оверхед от GC минимальный и не стоит возни с памятью
Угу, уровня превращения софт-риалтайма(подфризы в играх, недопустимые паузы в time-critical сириус бизнесах вроде межбанка и бирж) в дергающийся калл. И ебли чтобы всё это обойти гораздо больше чем на языке без ГЦ навелосипедить stack allocator или pool allocator под свои типы данных.
>Айфоны давали гораздо более плавную картинку
потому что ВСЯ СИСТЕМА замирала пока юзерок дрочит скролик с менюшками, в роботе же суровый линуксово-серверный положняк, где гуй всем допизды
>написать маленький узко-специализированный микросервис на Си будет куда быстрее и приятнее чем на расте.
чому? поясни с примерами если не сложно
О, ведроотмазы от тормозной жавобляди привыкшей жить в стоп-мирке и не замечающей уёбищности про замирающий айфон пошли, при том что замирало как раз жабоговно, причем через год после покупки - и то если топ за цену последнего айфона. В то время как айфон шустро работает как минимум три года со всеми апдейтами.
Очередной жабоотос.
200мс - это время отрисовки 12 кадров из 60 при нормальной боярской частоте кадров в 60фпс
Это время проведения десятков-сотен HFT сделок на бирже
Это инпут-лаг при котором бугуртит даже соснульщик Сосава из пантеона черветреда:
https://www.youtube.com/watch?v=lAr4hF8tCdE
Это пинг, при котором вы выходите из каэточки.
Всё это у тупой жабобляди в останови-манямирке считается нормальным и незначащим оверхедом.
>Gc
>JAVA
Ты ж ненормальный. Проблемы JAVA это проблемы JAVA.
Проблемы памяти из-за того, что java серит объектами как ненормальная в в библиотеках. Поэтому нужна большая куча, иначе она постоянно будет ЧИСТИТЬ ЧИСТИТЬ.
Кроме того, в java нет value type на стеке, поэтому вообще все в java в куче.
Это ее и делает особенно прожорливой к памяти.
>у жабобляди паузы в 200мс
А у го вообще пауз нет.
>недопустимые паузы в time-critical сириус бизнесах вроде межбанка и бирж
Они почти все на джаве. Как то выживают бедняги.
>И ебли чтобы всё это обойти гораздо больше чем на языке без ГЦ навелосипедить stack allocator или pool allocator под свои типы данных.
Велосипедь с богом.
Интерпрайз с удовольствием купит. Я не шучу. Сам работаю в интерпрайзе.
Если у твоего решения будет достойная документация, хороший уровень интеграции с существующим софтом и ты будушь осуществлять поддержку и обучение, твой аналог Hadoop или Kassandra будет просто нарасхват.
Ту же монгу в интерпрайзе применяют довольно активно.
> в java нет value type на стеке, поэтому вообще все в java в куче.
Все в джаве в куче? После таких выблядков, даже хочется при скроле нулевой послать тебя нахуй. Читай ебать про stack heap сука.
ушел.
>Напоминаю - у жабобляди паузы в 200мс
Такие паузы если только в цикле забивать память.
Моя статистика за месяц:
- Средняя пауза 12,6мс
- 50<=% (Паузы менее 50мс ) 97,8%
>Растоманы, на нас вся надежда, мы должны уничтожить абстракционистский рак жаваблядей нашими zero-cost абстракциями. День, когда пропачат все уязвимости в процессорах и жабобляди соснут, когда им не помогут никакие кластеры на топовых зинонах с терабайтом оперативы запустить их жабохелловорлд появимся ми и у низим жабоблядей.
А софт то откуда появится?
Вот выкинет, например, МТС Hadoop и поставит вместо него что?
Да вроде норм, разве что отформатировать бы поаккуратнее, ну и неплохо было бы на архивачи ссылку добавить (а в идеале сделать там тег "rust" и сразу дать ссылку на все треды с этим тегом).
http://arhivachovtj2jrp.onion
http://arhivach.cf/
>>51765
Я и заметил, а ты, очевидно, нет.
>питон -> модуль питона на си -> си
Как там в 80-ых? Ни единого сегфолта, да?
>микросервис на Си будет куда быстрее и приятнее
Лол, ну напиши СТО дропбокса, что долбоебу с двача НЕПРИЯТНО, что они раст используют. Хуею просто с вас смузихлебов.
>Кроме того, в java нет value type на стеке, поэтому вообще все в java в куче.
Во дебил. Съеби уже мамин суп есть, видишь тут взрослые дяди разговаривают.
>>питон -> модуль питона на си -> си
>Как там в 80-ых? Ни единого сегфолта, да?
учитывая то что питоний код уже написали имеющиеся работники, то это самое разумное и первое что приходит в голову
>чому? поясни с примерами если не сложно
-> си прост как палка,
-> в относительно небольшом коде трудно обосраться до сегфолтов,
-> чувствуешь себя богоподобно потому, что контролишь каждый байт и каждую операцию и это реально доставляет,
-> знаешь что есть действительно шустрые либы и великолепный, натертый до блеска, компилятор,
-> понимаешь, что получишь реально быстрый код если, конечно, не обосрался нигде
Вроде ничего не забыл
Спешите видеть — человек который знает о си только из рассказов анонов с двача.
>си прост как палка
нууу хууй знаает
>контролишь каждый байт и каждую операцию
что то в этом определенно есть, но заниматься таким на постоянку - самообман, ты выполняешь машинную дрочку, вместо того что бы подняться и решать действительно реальные задачи быстро(!) и эффективно(!), ты ведь наверняка не пишешь свою файловую систему или пилишь ядро, да хуй с ним хотя бы блять ссаные бинды запили на вейленд, так нет же нихуя, если только нинужное рукоблудство
>шустрые либы
блакбокс, но таки да, приятно когда они входят в мой питон
>натертый до блеска, компилятор
а шланг все равно быстрее, 30 гиговый уеч собирается за 40 минут и хуй все ложили что там после
>реально быстрый код
который тебе на диване ничем не может, 50мс или 250мс, какая нахер разница, если на переписать модуль у тебя уйдет неделя, и то на красоту ты хуй забьешь
>>51891
кек
>image.png
Несмотря на тернарный оператор в условиях if теперь я видел все и п..зданутую раскраску синтаксиса, читается довольно легко.
Если ты про goto, то все честно, он в пределах функции.
>что то в этом определенно есть, но заниматься таким на постоянку - самообман,
Речь шла в контексте этих моих слов:
>написать маленький узко-специализированный микросервис на Си будет куда быстрее и приятнее чем на расте.
И это действительно так, си тебя ничем не ограничивает, как нынче это стало модно в новых языках не обязательно в расте, даже в го можно удивительно вляпаться
Понятно что упарываться в бизнес-логику на низкоуровневом языке никто не будет, в том числе и на расте
>блакбокс
я говорю про си
>собирается
я говорю про способность компилятора в оптимизацию
>который тебе на диване ничем не может, 50мс или 250мс
Речь про хайлоад и историю дропа, который пошел по нелогичному пути для бизнеса. Никто ваши пет-проекты на питоне не трогает и тем более никогда всерьез не ставит в пример
>раскраску синтаксиса
не гони, кажи лучше еп
>читается довольно легко
тебе и кекс коды норм будет ~_~
>никогда всерьез не ставит в пример
ойвсё
> Понятно что упарываться в бизнес-логику на низкоуровневом языке никто не будет, в том числе и на расте
У тебя ещё слишком сильна вера в человечество. Высокочастотного трейдинга на Крестах не хотите ли? А биткоин процессинга на НодеЖС?
Бизнес-логика (буквально) на сложном, низкоуровневом, ебанутом языке же. Например, Knight Capital Group в 2012 из-за "computer glitch" потеряли до 440M USD (хотя потом называли цифры в 200). Говорят, баблосы сжигались со скоростью аж 10M USD в минуту. И похеру, что там вроде не язык виноват, а задеплоили что-то не то. С таким же успехом их могли подставить Кресты, как двадцать лет подставляют Мелкомягких, например. Поэтому в некоторых областях код здорового человека должен быть написан не на убогом C++, а на взрослом SPARK с формальной верификацией, блеать
Там уже на жабаскрипке полноценную ос написали, а ты все в байтики еб..шься
https://www.reddit.com/r/programming/comments/99pbva/windows_95_running_on_macos_linux_and_windows/
Ты меня не убедил. Про верификацию согласен, но на чем ты выражаешь верифицированный код уже второе дело, хоть и не тривиальное иногда. Ты еще на языках с гц предложи ядро писать.
Смотри канонический пример, из статьи "A Guide to Undefined Behavior in C and C++", на чистом C:
>static void __devexit agnx_pci_remove (struct pci_dev pdev)
>{
> struct ieee80211_hw dev = pci_get_drvdata(pdev);
> struct agnx_priv *priv = dev->priv;
>
> if (!dev) return;
>
> ... do stuff using dev ...
>}
Ну и как, сильно очевидно, почему код упадёт? А чем ты этот код верифицируешь, название инструмента скажи?
Ну и конечно я представляю себе приключения типичного смузихлеба Евгения в суровом эмбеддеде:
- Не сумел математически доказать, что целочисленная переменная var никогда не выйдет за предел [min, max] - у легкомоторного самолёта поршни в двигателе прошли мёртвую точку без зажигания, он потерял тягу на взлете и рухнул;
- Не сумел доказать, что булевы переменные a, b, c меняются строго по заданным в техзадании законам от времени, давления и температуры - сверхмощный воздушный компрессор сработал при закрытых заслонках и всосал техника Михаила в баллон;
- Не осилил потери точности в арифметике с плавающей запятой, проебал тепловой разгон цистерны с перекисью водорода - от рабочей смены химзавода остались отбеленные скелеты.
Лол, любым статическим анализатором. Разыменовывание перед проверкой на null скоро borland c научится подсказывать.
Этот твой опус нахуй тут вообще? Еще раз к вопросу – чем C++ тебе мешает математически доказывать твои потуги? IEEE754 не поддерживает?
Перечитал еще раз твой пример. Это что там вообще такое? struct-> без указателя? И эти if return; Пиздец, иди общую практику кодирование осваивай. Очевидно почему упадет код – он написан макакой с гранатой!
Из относительно знакомых рядовому программисту - упомянутый выше SPARK. Других, чтобы ещё применялись в промышленности, я просто не знаю. Если только на какой-нибудь АЛГОЛ дремучий напялили верификатор. Но это такая редкость... На заводах вообще вся серьезная автоматизация на визуальных языках для промышленных контроллеров, там идея, что нужно хотя бы знать про память/кучу/стек наткнется на непонимание - зачем такие сложности? Что вам, 100 тысяч ячеек десятизначных десятичных чисел мало? =/
Собсна, я к чему это всё: выбор инструмента определяется задачами, а задачи у среднего программиста такие жалкие, что выёбываться ими просто стыдно. Так что. Жаба хороша для муторного бюрократизированного корпоративного кода; Кресты хороши для опасного хитровыебанного кода; Ржавый хорош для несложного надежного кода. Но когда придет инженер, от работы которого зависит, не рухнет ли авиалайнер с 400 пассажирами, или не станет ли Москва вторым Бхопалом, лучше поберечь самооценку и обращаться к нему со всем уважением =)
>>52640
>Лол, любым статическим анализатором. Разыменовывание перед проверкой на null
У тебя половина Линукса тогда подсветится - это неискоренимое наследство времён C89, когда удобно писать хотелось, а переменные все равно надо было объявлять в начале, такие моменты просто нужно знать и учитывать. Ну, пока ядро на Расте не перепишут.
Объявление != инициализация. Опять таки – объяви переменную где хочень, сделай if без else и любой анализатор скажет тебе что ты долбоеб и пожел быстро закрывать вариант где управление не проходит test clause if блока. При чем тут C89 и linux? Это как базовая грамота.
> чем C++ тебе мешает математически доказывать твои потуги?
Тем, что заставляет кроме соответствия кода техзаданию проверять еще, не покажется ли оптимизатору часть проверок лишней, не запорет ли математику какая-нибудь ересь типа fast-math, не изменятся ли размеры типов на другой платформе. Всё это элементарно проверяется на хеллоуворлдах и превращается в кошмар в крупных долгоживущих проектах.
>>52644
> Очевидно почему упадет код – он написан макакой с гранатой!
А может быть и тобой, когда ты был невыспавшийся или в депрессии. Или твоим предшественником, ушедшим на повышение. Или Торвальдсом, который точно знает, что в используемом им компиляторе этот код не опасен.
> еботни с GOPATH и втыкания сырцов только в нужную папочку, чтобы гошечка правильно приняла (зашитые намертво в коде) зависимости.
твои знания goвна устарели
https://www.opennet.ru/opennews/art.shtml?num=49183
И что ты там математически доказываешь если не смог запомнить область определения аргумента операции деления с остатком?
и нафиг не надо самому руками эхту всю срань из зависимостей собирать
чего блядь? что ты несешь нахуй, сука не зли меня блядь
да не, обычный средний плюсовик, как под виндой собрать надо что-то, сразу либо в собраном виде искать, либо через cmake самому собирать, если скрипт под данную либу есть. А когда кроссплатформ нужен, збс веселье.
Go возьми, там вендоринг завезли в 1.11
Вы видите копию треда, сохраненную 6 октября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.