LINUX.ORG.RU

Сложности сопровождения rust

 


0

5

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

У меня возник вопрос к опытным кодерам - о какой «сложности» они говорят? Может быть код становится сложнее поддерживать или просто у них синдром утёнка, или какие еще проблемы есть в сопровождение раста при длительной разработке?

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

те баги, что привели к уязвимостям эксплуатируемым локально или удалённо не отменяют.

Локальные в 99% случаях можно игнорировать, везде же виртуалки и контейнеры, из которых так просто не вылезешь. Если даже дойдет до роботов и автоматических атак (лет так через пять после публикации) - такие атаки используют в коплексе, т.е должно быть еще что-то чтобы в систему для начала залезть.

А причина в большинстве случаев это либо buffer overrun, либо use-after-free.

Ну нет, это как раз высший пилотаж - повреждение памяти и возможность что-то вызвать. Большинство это все тот же XSS да SQL Injection, все как в 98м. Еще социальная инженерия вышла на запредельный уровень.

Благо начиная с 11 стандарта в std занесли smartpointers и они даже стали более-менее регулярно применяться.

Это актуально для новых разработок, старое просто так переписывать никто не даст. Да и сам можешь представить перевод и аудит какого-нибудь glibc на новый стандарт.

Баги в железе вываливаются за пределы разговора о языках программирования.

Дело в том что «железо» сейчас это не совсем то что под ним подразумевается, уж точно не слова Д.Ю.Медведева отлитые в кремнии. Есть прошивка, микрокод, где и была как эта знаменитая уязвимость так и исправление.

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

Сознание должно быть вывернуто наизнанку, чтобы по умолчанию применять move-семантику и все переменные делать константами. Я бы назвал это «программирование от противного».

В программах на C++ std::move нужен редко, чтобы что-то в контейнер переместить. Зачем это делать всегда, когда это нужно лишь в 1% случаев – загадка.

const нужен довольно часто, тут не всё однозначно, но то что это непривычно для всех разработчиков в мире – факт.

zx_gamer ★★★
()