Тимур Думлер — Контракты для С++

preview_player
Показать описание
— —

Контрактное программирование — эффективный подход к написанию более безопасных и корректных программ. Он был успешно реализован в таких языках программирования, как Eiffel и Ada. В стандарте С++ контрактное программирование имеет долгую и сложную историю.

С тех пор как попытка добавить контракты в стандарт C++20 потерпела неудачу, SG21 — рабочая группа для стандартизации контрактов в комитете C++ — активно разрабатывает новую версию этой фичи. Сегодня эта версия контрактов уже практически полнофункциональна и с большой вероятностью будет включена в следующий стандарт C++26.

В этом докладе мы рассмотрели текущий дизайн контрактов для C++26. Обсудили разновидности контрактов (preconditions, postconditions, assertions), возможные режимы проверки, обработку нарушений и многое другое. Рассмотрели, чем текущий дизайн превосходит существующие реализации на макросах и как помогает повысить безопасность и корректность кодовой базы.
Рекомендации по теме
Комментарии
Автор

* мы сделали очень расширяемый пропозал по контрактам
* но у нас нет ничего кроме рантайм чека, который мы требуем
* в будущем что-то добавим (очевидно нет, если требуется рантайм чек, то никаких оптимизаций делать нельзя)
И это при том, что вся стандартная библиотека (где в первую очередь должны появится контракты) просто завалена кодом, где нарушение контракта == уб

niklkelbon
Автор

Отличный доклад, спасибо. С языком и терминами всё хорошо и понятно было.

ascuni
Автор

При просмотре хотелось бы меньше смотреть на слушателей, а больше на экран.
Мне лично малоинтересно смотреть на лица других людей.

GenoikVic
Автор

Проверка в рантайме это чушь, полная чушь. Даже рефлексию делают статической. Как же это плохо, у языка проблема с многословностью уже сейчас в одном объявлении функции можно увидеть template const constexpr static override delete noexcept nodiscard auto, а еще какую нибудь проверку SFINAE и вариадик параметры. Уже доходит до того, что объявление функции может быть в три раза объемнее реализации. Успокойтесь наконец, хватит. Как же я злюсь, в стандарте нет ни графики ни сетей, зато куча концептов да контрактов которые никак не реализуют

КошакРыжый
Автор

Правильно нужно больше ключевых слов, а то компилятор пока не понимает нас на родном языке. Ну привели бы хоть статистику какую нибудь на сколько данный функционал востребован и кто им будет пользоваться. А то про мифические 100+ юз кейсы рассказали а кому этот функционал действительно нужен непонятно.

GrowHobbyRU
Автор

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

mykola