Совершенно на другом уровне решено, да, очень хорошо.
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.
Разве не понятно, что без крупных корпораций типа Мозиллы не будет зелёного света любому языку? Также было и с Си и с Си++, за всеми стояли крупные компании и нужда в инструменте для крупных разработок. А D никто не толкает, по сути, это улучшенная Java, синтаксически язык очень близок к современной Java, а её нишу уже не займёшь без кучи бабла и влияния. Щас слишком много альтернатив для D: C# 9, Java 13, Kotlin, Dart. Производительность примерно такая же, у Java/C# хорошие JIT, так что плюсов у D просто мало, поэтому компании не ринутся переписывать/начинать проекты. А без компаний хомячки ничего сами толкать не будут.
Нет, Раст разрабатывается профессионалами, но значительную часть сообщества составляют воинствующие фанатики, которые в теме не разбираются, но мнение имеют.
Если что-то дейсвительно хорошо, то естественная реакция этим делиться - нет?
Кратце: borrow checker, мьютексы как контейнеры, Send+Sync, это все очень хорошо помогает.
Надо полагать, все это есть в Java, C#, Scala, Kotlin, Go, Python, Ruby, JavaScript и куче других языков, которые вплотную приблизились к мейнстриму. Но закопать нужно именно C++. Логично, чё.
Надо полагать, все это есть в Java, C#, Scala, Kotlin, Go, Python, Ruby, JavaScript и куче других языков, которые вплотную приблизились к мейнстриму
Что есть? Data races? Да, там тоже есть. Можно порвать указатель, порвать число. Проверить компилятором что переменная утекла в два треда и мутируется нельзя в этих языках, нужно по старинке следить.
В некоторых есть абстракции, которые избегают проблему. Мол пишешь например на Scala+Akka, состояние в актерах. Да, дейсвительно проблема будет обойдена. В лоб проверки нету.
Ну а пока кто-то ставит себе целью не создать что-нибудь, а поболтать языком на форуме о том
Оп-оп-оп, осторожненько тут. Очень близко к Ad Hominem. Ad Hominem - автоматический тотальный слив в любом споре. Не надо так.
недавно на буржуйском форуме один чувак рассказывал, что отсутствие UB при работе со знаковыми числами - большой плюс раста по сравнению с C++. Никто даже не подумал объяснить ему, в чем тут дело. На stackoverflow в секции раста творится вообще адок.
Так что да, про агрессивное невежество в сообществе этого языка - чистая правда. Если начнешь восхищаться борроу чекером или спрашивать, как написать хеллоу ворлд, то тебя осыплют цветами. Но если ты посмеешь сказать что-нибудь типа «эта фича раста - в лучшем случае сомнительный компромисс», то на тебя немедленно накинется толпа рассерженных идиотов. Честно, не встречал такого ни в каком другом языке.
Забавно смотреть, как профи из разных сфер без всякой суеты обмениваются опытом и сравнивать их с тем как неучи с пеной у рта доказывают кто круче.
Раст разрабатывается профессионалами, но значительную часть сообщества составляют воинствующие фанатики, которые в теме не разбираются, но мнение имеют. У Раста не просто маркетинг, а агрессивный маркетинг.
Язык активно развивается, пока местные хомячки хоронят то D, то C++, то что-то другое.
Не нужно тут слушать местных адептов и используй то, что тебе подходит больше всего.
Не в бровь, а в глаз. Запомню тебя, адекватные пользователи на лоре нужны.
Никто даже не подумал объяснить ему, в чем тут дело
А в чем тут дело?
эта фича раста - в лучшем случае сомнительный компромисс
на тебя немедленно накинется толпа рассерженных идиотов
Не встречал таких непредвзятых высказываний. Обычно приходит школьник со словами «а вот в %LANG_NAME% сделано иначе и мне больше нравится». Ему поясняют, почему его фича говно и небезопасна
Deleted ()
Последнее исправление: Deleted
(всего
исправлений: 1)
Я ленивый. Мне нравится когда ЯП тщательно проверяет мой говнокод в процессе написания. Поэтому я удивляюсь, когда кто-то приходит и начинает рекламировать парадигмы, заставляющие меня самого проверять свой говнокод. Это просто неразумно
Но закопать нужно именно C++. Не Java, ни Go какой-нибудь, а именно C++.
C/С++ единственный и неповторимый в системном программировании. Там всех тех языков не существует. И все уныло сгорбившись идут писать на нем очередной сегфолт.
Можно подумать, что у вас есть какие-то практические результаты по закапыванию плюсов. Это же ваша цель.
Не встречал таких непредвзятых высказываний. Обычно приходит высококвалифицированный растопрограммист со словами «а вот в RUST сделано иначе, самый лудший йазычок в мире! Мама, подбавь еще борща!». Ему никто ничего не поясняет, так как всем наплевать на очередного оголтелого фанатика.
C/С++ единственный и неповторимый в системном программировании.
Нет такого языка как «C/C++».
Есть C, который обладает своими тараканами. И есть C++ у которого свои тараканы (в довесок к некоторым C-шным). Поскольку даже C++, находясь в той же нише, чистый C не смог закопать, то вам придется по отдельности закапывать и чистый C, и C++.
Можно только пожелать здоровья и долголетия на этом непростом пути. И то, и другое сильно понадобится.
а вот в RUST сделано иначе, самый лудший йазычок в мире!
Ну, если по какой-то конкретной фиче сделано лучше/надежнее/безопаснее, то можно и упомянуть. Вот когда происходит в обратную сторону — советуют хрень вместо надежного решения — это фанатики, да
Зацени Elm. Будет вообще такое как в galaxy brain меме.
Или знаешь как в интернете бывают такие чудесно удовлетворительные видео, где красиво краска течет или механизм идеально защелкивается в какой-то красивый узор.
Вот это так фронтенд на Elm рефакторить. Чем-то двигаешь туда-сюда, должно по идее раздолбать приложение в клочья, ментально готов дебажить и терпеть запашок говна в ноздрю.
А оно так шлёп и как пазл работает, железно, очень быстро с маленьким бандлом. И ты такой весь на допамине сьежаешь по стулу.
Это не то что TypeScript, это даже не ReasonML, в разы более rigid.
Ad Hominem - автоматический тотальный слив в любом споре
Отсутствие доказательств - вот это слив в споре по определению. А латынь и «автоматический» - даже не знаю… Хотя формально ты прав - слив здесь есть(с твоей стороны)
В релизе signed overflow обрабатывается как two’s complement. В сях - это UB. Для С++ был пропозал тоже использовать two’s complement, но не следил, что с ним решили.
И плата за это - обеспечение инварианта num < i32::MAX/2 вручную. Иначе может получиться так, что слишком умный оптимизатор выкинет код, вызывающий эту функцию, или выкинет коленце. UB есть UB.
Представь, есть два продукта. Один похуже, но его раскурчивают. Другой похуже, но его не раскручивают. Знаешь, что вскоре произойдет? Второй обгонит первый по качеству. Не по «академическому» качеству, но по прикладному. Точней будет сказать так: по прикладной эффективности.
Мода - дама капризная. А так - D классный язык. Просто почти везде есть другие языки, более популярные, пусть и похуже. Тут и C, который на каждом микроконтролере поддерживается. Тут и С++, который очень сложный, но осилить можно и в то же время очень мощный, а популярность огромная. Тут и Rust со своей уникальной моделью управления памятью. Тут и Go с GC и высокой скоростью и той же огромной популярностью. Тут и Python с миллиардом библиотек. А что-то среднее и непопулярное не востребовано.