LINUX.ORG.RU

Ответ на: комментарий от pathfinder

Совершенно на другом уровне решено, да, очень хорошо.

P.S. Устал не много от срача о data race в Rust. Собеседник обычно уходит в глубины сложных алгоритмических багов и все еще спорит об этом как «ага, в Rust есть data race». Кратце: borrow checker, мьютексы как контейнеры, Send+Sync, это все очень хорошо помогает.

Safe Rust guarantees an absence of data races, which are defined as:

  • two or more threads concurrently accessing a location of memory
  • one of them is a write
  • one of them is unsynchronized

A data race has Undefined Behavior, and is therefore impossible to perform in Safe Rust. Data races are mostly prevented through Rust’s ownership system: it’s impossible to alias a mutable reference, so it’s impossible to perform a data race. Interior mutability makes this more complicated, which is largely why we have the Send and Sync traits (see below).

However Rust does not prevent general race conditions.

This is pretty fundamentally impossible, and probably honestly undesirable. Your hardware is racy, your OS is racy, the other programs on your computer are racy, and the world this all runs in is racy. Any system that could genuinely claim to prevent all race conditions would be pretty awful to use, if not just incorrect.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)

Разве не понятно, что без крупных корпораций типа Мозиллы не будет зелёного света любому языку? Также было и с Си и с Си++, за всеми стояли крупные компании и нужда в инструменте для крупных разработок. А D никто не толкает, по сути, это улучшенная Java, синтаксически язык очень близок к современной Java, а её нишу уже не займёшь без кучи бабла и влияния. Щас слишком много альтернатив для D: C# 9, Java 13, Kotlin, Dart. Производительность примерно такая же, у Java/C# хорошие JIT, так что плюсов у D просто мало, поэтому компании не ринутся переписывать/начинать проекты. А без компаний хомячки ничего сами толкать не будут.

menangen ★★★★★
()
Ответ на: комментарий от pathfinder

Я нечто подобное от js/php-пейсателей слышу. Мол, бывают проблемки, но легко глазами находятся. А вот ошибки логики — это даа

Deleted
()
Ответ на: комментарий от yetanother

Нет, Раст разрабатывается профессионалами, но значительную часть сообщества составляют воинствующие фанатики, которые в теме не разбираются, но мнение имеют.

Если что-то дейсвительно хорошо, то естественная реакция этим делиться - нет?

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от pathfinder

Я вот не понимаю этого хейтерства плюсов.

Напомнило Интернационал: мы старый мир до основания весь разрушим, а потом мы наш, мы новый мир построим.

По теме. Просто Rust действительно хорош, очень хорош.

dave ★★★★★
()
Ответ на: комментарий от vertexua

Кратце: borrow checker, мьютексы как контейнеры, Send+Sync, это все очень хорошо помогает.

Надо полагать, все это есть в Java, C#, Scala, Kotlin, Go, Python, Ruby, JavaScript и куче других языков, которые вплотную приблизились к мейнстриму. Но закопать нужно именно C++. Логично, чё.

Ну а пока кто-то ставит себе целью не создать что-нибудь, а поболтать языком на форуме о том, как закапывать плюсы, люди себе на этих ненависных вам плюсах делают для себя контроль в compile-time за тем, что в языке вообще никак не предусмотрено.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Надо полагать, все это есть в Java, C#, Scala, Kotlin, Go, Python, Ruby, JavaScript и куче других языков, которые вплотную приблизились к мейнстриму

Что есть? Data races? Да, там тоже есть. Можно порвать указатель, порвать число. Проверить компилятором что переменная утекла в два треда и мутируется нельзя в этих языках, нужно по старинке следить.

В некоторых есть абстракции, которые избегают проблему. Мол пишешь например на Scala+Akka, состояние в актерах. Да, дейсвительно проблема будет обойдена. В лоб проверки нету.

Ну а пока кто-то ставит себе целью не создать что-нибудь, а поболтать языком на форуме о том

Оп-оп-оп, осторожненько тут. Очень близко к Ad Hominem. Ad Hominem - автоматический тотальный слив в любом споре. Не надо так.

vertexua ★★★★★
()
Ответ на: комментарий от Deleted

недавно на буржуйском форуме один чувак рассказывал, что отсутствие UB при работе со знаковыми числами - большой плюс раста по сравнению с C++. Никто даже не подумал объяснить ему, в чем тут дело. На stackoverflow в секции раста творится вообще адок.

Так что да, про агрессивное невежество в сообществе этого языка - чистая правда. Если начнешь восхищаться борроу чекером или спрашивать, как написать хеллоу ворлд, то тебя осыплют цветами. Но если ты посмеешь сказать что-нибудь типа «эта фича раста - в лучшем случае сомнительный компромисс», то на тебя немедленно накинется толпа рассерженных идиотов. Честно, не встречал такого ни в каком другом языке.

anonymous
()
Ответ на: комментарий от yetanother

Забавно смотреть, как профи из разных сфер без всякой суеты обмениваются опытом и сравнивать их с тем как неучи с пеной у рта доказывают кто круче.

Раст разрабатывается профессионалами, но значительную часть сообщества составляют воинствующие фанатики, которые в теме не разбираются, но мнение имеют. У Раста не просто маркетинг, а агрессивный маркетинг.

Язык активно развивается, пока местные хомячки хоронят то D, то C++, то что-то другое.

Не нужно тут слушать местных адептов и используй то, что тебе подходит больше всего.

Не в бровь, а в глаз. Запомню тебя, адекватные пользователи на лоре нужны.

anonymous
()
Ответ на: комментарий от anonymous

Никто даже не подумал объяснить ему, в чем тут дело

А в чем тут дело?

эта фича раста - в лучшем случае сомнительный компромисс

на тебя немедленно накинется толпа рассерженных идиотов

Не встречал таких непредвзятых высказываний. Обычно приходит школьник со словами «а вот в %LANG_NAME% сделано иначе и мне больше нравится». Ему поясняют, почему его фича говно и небезопасна

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от anonymous

Я ленивый. Мне нравится когда ЯП тщательно проверяет мой говнокод в процессе написания. Поэтому я удивляюсь, когда кто-то приходит и начинает рекламировать парадигмы, заставляющие меня самого проверять свой говнокод. Это просто неразумно

Deleted
()
Ответ на: комментарий от vertexua

Что есть? Data races?

Да. Это же вы выставили data races в пику плюсам.

Да, там тоже есть.

Но закопать нужно именно C++. Не Java, ни Go какой-нибудь, а именно C++.

В некоторых есть абстракции, которые избегают проблему. Мол пишешь например на Scala+Akka, состояние в актерах.

А в C++ это, надо полагать, принципиально невозможно?

Оп-оп-оп, осторожненько тут.

А что осторожно? Можно подумать, что у вас есть какие-то практические результаты по закапыванию плюсов. Это же ваша цель.

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Но закопать нужно именно C++. Не Java, ни Go какой-нибудь, а именно C++.

C/С++ единственный и неповторимый в системном программировании. Там всех тех языков не существует. И все уныло сгорбившись идут писать на нем очередной сегфолт.

Можно подумать, что у вас есть какие-то практические результаты по закапыванию плюсов. Это же ваша цель.

Да, обучаю людей, популяризирую, пишу код

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от Deleted

Не встречал таких непредвзятых высказываний. Обычно приходит высококвалифицированный растопрограммист со словами «а вот в RUST сделано иначе, самый лудший йазычок в мире! Мама, подбавь еще борща!». Ему никто ничего не поясняет, так как всем наплевать на очередного оголтелого фанатика.

anonymous
()
Ответ на: комментарий от Deleted

А в чем тут дело?

очевидно в том, что UB позволяет компилятору делать больше оптимизаций. Есть такой язык, Zig называется. Тоже использует LLVM. Вот этот код

test "actually undefined behavior" {
    @setRuntimeSafety(false);
    var x: u8 = 255;
    x += 1; // XXX undefined behavior!
}

преподносится там как одно из основных преимуществ на главной странице сайта. Надо же, какие дураки разработчики, да? Явно раст не учили.

anonymous
()
Ответ на: комментарий от vertexua

C/С++ единственный и неповторимый в системном программировании.

Нет такого языка как «C/C++».

Есть C, который обладает своими тараканами. И есть C++ у которого свои тараканы (в довесок к некоторым C-шным). Поскольку даже C++, находясь в той же нише, чистый C не смог закопать, то вам придется по отдельности закапывать и чистый C, и C++.

Можно только пожелать здоровья и долголетия на этом непростом пути. И то, и другое сильно понадобится.

eao197 ★★★★★
()
Ответ на: комментарий от vertexua

Да, обучаю людей, популяризирую, пишу код

Да, обучаю людей (писать хелловорлды), популяризирую (рассказываю о хелловорлдах), пишу код (хелловорлды).

anonymous
()
Ответ на: комментарий от eao197

Можно только пожелать здоровья и долголетия на этом непростом пути. И то, и другое сильно понадобится.

Ну да, путь сложный. Но того стоит

vertexua ★★★★★
()
Ответ на: комментарий от anonymous

а вот в RUST сделано иначе, самый лудший йазычок в мире!

Ну, если по какой-то конкретной фиче сделано лучше/надежнее/безопаснее, то можно и упомянуть. Вот когда происходит в обратную сторону — советуют хрень вместо надежного решения — это фанатики, да

Deleted
()
Ответ на: комментарий от Deleted

Я веб-пейсатель.

Т.е. на Rust-е вы продакшен код не пишете?

eao197 ★★★★★
()

Была вроде такая тема(это без сомнений), и вроде даже твоя. Так что вот это

очень интересно

неверно

anonymous
()
Ответ на: комментарий от Deleted

Зацени Elm. Будет вообще такое как в galaxy brain меме.

Или знаешь как в интернете бывают такие чудесно удовлетворительные видео, где красиво краска течет или механизм идеально защелкивается в какой-то красивый узор.

Вот это так фронтенд на Elm рефакторить. Чем-то двигаешь туда-сюда, должно по идее раздолбать приложение в клочья, ментально готов дебажить и терпеть запашок говна в ноздрю.

А оно так шлёп и как пазл работает, железно, очень быстро с маленьким бандлом. И ты такой весь на допамине сьежаешь по стулу.

Это не то что TypeScript, это даже не ReasonML, в разы более rigid.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 5)
Ответ на: комментарий от vertexua

Ad Hominem - автоматический тотальный слив в любом споре

Отсутствие доказательств - вот это слив в споре по определению. А латынь и «автоматический» - даже не знаю… Хотя формально ты прав - слив здесь есть(с твоей стороны)

anonymous
()
Ответ на: комментарий от Deleted

В релизе signed overflow обрабатывается как two’s complement. В сях - это UB. Для С++ был пропозал тоже использовать two’s complement, но не следил, что с ним решили.

red75prim ★★★
()
Последнее исправление: red75prim (всего исправлений: 1)
Ответ на: комментарий от Deleted

нет. Переполнение знаковых чисел не является UB в расте, и это не позволяет компилятору генерировать оптимальный ассемблер даже для такого кода

pub fn foo(num: i32) -> i32 {
    num * 2 / 2
}

даже в релизной сборке.

anonymous
()
Ответ на: комментарий от anonymous

это не позволяет компилятору генерировать оптимальный ассемблер даже для такого кода

Не похоже на правду. Ассемблер предоставишь?

anonymous
()
Ответ на: комментарий от yetanother

Маркетинг - это не армия добровольных зилотов. А целенаправленное её создание. А то так у Вима так вообще маркетинг от Бога.

anonymous
()
Ответ на: комментарий от anonymous

И плата за это - обеспечение инварианта num < i32::MAX/2 вручную. Иначе может получиться так, что слишком умный оптимизатор выкинет код, вызывающий эту функцию, или выкинет коленце. UB есть UB.

red75prim ★★★
()
Ответ на: комментарий от eao197

Теперь вот Брайт пытается спозиционировать D еще и в виде betterC, без GC, но и без ряда плюшек D.

Обновляйся! Он уже тащит боров чекер и другую хрень из раста.

SR_team ★★★★★
()
Ответ на: комментарий от yetanother

Представь, есть два продукта. Один похуже, но его раскурчивают. Другой похуже, но его не раскручивают. Знаешь, что вскоре произойдет? Второй обгонит первый по качеству. Не по «академическому» качеству, но по прикладному. Точней будет сказать так: по прикладной эффективности.

anonymous
()
Ответ на: комментарий от red75prim

Читал где-то статейку год назад, что использование любых данных из unsafe, это это в принципе UB.

anonymous
()
Ответ на: комментарий от anonymous

Читал где-то статейку год назад, что использование любых данных из unsafe, это это в принципе UB.

Тогда компилятор раста мог бы выдавать Hello, world! на любую программу, использующую stdlib, потому что unsafe там есть и данные он использует.

Если эта та статья, о которой я думаю, то там автор жаловался, что писать unsafe код без UB сложно.

red75prim ★★★
()
Ответ на: комментарий от SR_team

Обновляйся! Он уже тащит боров чекер и другую хрень из раста. Да, тащит и меня это заставляет задуматься, а стоит ли.

anonymous
()

Мода - дама капризная. А так - D классный язык. Просто почти везде есть другие языки, более популярные, пусть и похуже. Тут и C, который на каждом микроконтролере поддерживается. Тут и С++, который очень сложный, но осилить можно и в то же время очень мощный, а популярность огромная. Тут и Rust со своей уникальной моделью управления памятью. Тут и Go с GC и высокой скоростью и той же огромной популярностью. Тут и Python с миллиардом библиотек. А что-то среднее и непопулярное не востребовано.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.