Егор Суворов - Санитайзеры и стандарт не спасут
HTML-код
- Опубликовано: 15 май 2024
- Подробнее о конференции C++ Russia: jrg.su/W8skjE
- -
Некоторые считают, что C++ - прекрасный язык: много литературы и курсов, санитайзеры для ловли undefined behavior, мощные IDE и статический анализ. Но так ли они надежны? Что, если программист доверяется инструментам, а не знает стандарт наизусть? Поможет ли потребовать корректную работу программы на пяти компиляторах в 15 режимах под тремя ОС? Какие подковырки стандарта, особенности компиляторов и баги тулинга можно выявить, решая на C++ лишь учебные задачи?
Егор рассказал о защитах от дурака (и их ненамеренном обходе) в ОС, системах контроля версий, инфраструктуре на GitHub Actions, а также несовместимостях и нарушениях стандарта в компиляторах и тулинге. Все баги были обнаружены при помощи нескольких поколений студентов первого курса.
Скачать презентацию с сайта С++ Russia - jrg.su/bTQr7H - Наука
Какой же прекрасный язык C++. Слушаю обо всех возможных косяках, и по щеке стекает ностальгическая слеза. А если серьёзно, то нисколько не жалею о том, что больше не пишу на плюсах.
clang читается не как "силэнг", а как " клэнг".
Первый пример с bool - использование неинициализированного значения - всегда UB, -Wuninitialized отловит это.
Да, но только в простом случае. Если хоть чуть-чуть усложнить - уже не отловит. Например, добавить код, который переменную иногда инициализирует, а иногда не инициализирует.
@@yeputons Да, это все очень зависит... // а точнее, clang и zig осиливают (godbolt: o4Gb8s7Tx), gcc и др. - нет.