заметив. Это как ? Есть какие-то примеры?
Можно за собой память не почистить и словить утечку
а в го можно гонку, неожиданный дедлок
Там очень много способов. Например, не объявить деструктор класса, имеющего виртуальные методы, виртуальным. Или забыть инициализировать какую-то переменную. Накосячить с шаблонами. И т.д. и т.п.
Неинциализированные переменные также существуют, что тоже неприятно Два раза можно почистить память В общем, много вариантов UB
Ну, из тех, что реально тяжело заметить, мне встречались только проблемы со временем создания объекта - в этом случае надо всю программу перекраивать. Грубо говоря, это когда кусок программы ожидает, что какой-то объект существует в тот момент, когда этот кусок вызывается, а этот объект ещё не может быть создан по каким-то причинам. Как следствие, может быть ситуация похожая на дедлок, но хуже: когда первый кусок кода требует объект, а второй может предоставить этот объект только после того, как отработает первый кусок. Вот такой ад ничем не отловить в плюсах. Только во время работы программы увидишь, что сегфолт приехал, и засядешь на пару дней разгребать временны́е зависимости.
Можно. Но многопоточное программирование везде не так просто даётся. На плюсах и в однопоточном коде намного проще допустить ошибку
лечится принципом "нормально делай - нормально будет")
Такое в любом сколь-нибудь большом проприетарном проекте время от времени встречается. Как бы нормально люди не писали
в Go хотя бы есть удобный тулинг и рантайм, собственно, при дедлоках паникует
Справедливости ради, описанное - это ошибка логики. Порядок выполнения разных кусков кода не определен корректно. Подобное вызовет проблемы на любом языке
да, любой большой проприетарный проект - наоверинжениренная дичь как правило. фотошоп, 3д макс, и вот это вот все.
кроме того, в C++ и языках, которые делят с ним модель памяти data race — UB в Go — нет
Но в голанге это сделать значительно труднее благодаря модулям
В rust такая дичь есть?
в safe Rust нет, в unsafe запросто
А оно там жестко разделено?
Обсуждают сегодня