История изменений
Исправление Virtuos86, (текущая версия) :
Речь о том, что сами по себе типы данных в компилируемых языках - это сказка о повышении производительности, но никак не о повышении стабильности кода. Потому что если в вашу переменную типа UInt8, которая не может быть за диапазоном [101..143] приехало вдруг 235, а вы это не проверили в рантайме - ну как бы тип данных вас точно не спасёт.
Если переменная типа UInt8 не может быть за диапазоном [101..143], то её тип — не UInt8, а MyUInt8WithBlackjackAndWhores. А если ты пытаешься вместо того, чтобы определить свой тип со встроенными контрактами, использовать встроенный, обмазывая его рантайм-проверками, то ССЗБ.
Исходная версия Virtuos86, :
Речь о том, что сами по себе типы данных в компилируемых языках - это сказка о повышении производительности, но никак не о повышении стабильности кода. Потому что если в вашу переменную типа UInt8, которая не может быть за диапазоном [101..143] приехало вдруг 235, а вы это не проверили в рантайме - ну как бы тип данных вас точно не спасёт.
Если переменная типа UInt8 не может быть за диапазоном [101..143], то её тип — не UInt8, а MyInt8WithBlackjackAndWhores. А если ты пытаешься вместо того, чтобы определить свой тип со встроенными контрактами, использовать встроенный, обмазывая его рантайм-проверками, то ССЗБ.