Bjarne Stroustrup рассказывает о UDL в этом C ++ 11 talk , в первом разделе интерфейсов, богатых типом, около 20-минутной метки.
Его основной аргумент для UDL принимает вид силлогизма:
- «Тривиальные» типы, т. е. встроенные примитивные типы, могут улавливать только тривиальные ошибки типа. Интерфейсы с более богатыми типами позволяют системе типов улавливать больше ошибок.
- Типы ошибок типов, которые богато набрали код, могут повлиять на реальный код. (Он приводит пример Mars Climate Orbiter, который позорно провалился из-за ошибки размеров в важной константе).
- В реальном коде единицы редко используются. Люди не используют их, потому что чрезмерные затраты времени на выполнение или избыточные ресурсы памяти для создания богатых типов являются слишком дорогостоящими, и использование ранее существовавшего кода на языке C ++ с шаблоном настолько условно уродливым, что его никто не использует. (Эмпирически, никто не использует его, хотя библиотеки существуют уже в течение десятилетия).
- Поэтому, чтобы заставить инженеров использовать единицы в реальном коде, нам понадобилось устройство, которое (1) должно нет накладных расходов во время выполнения и (2) является допустимым с точки зрения изобретательности.
задан Mark Schuurman 5 March 2019 в 14:58
поделиться