Навеяло недавним забавным багом в Диабло. Вот взять джаву. Вроде современный безопасный язык, память не расстрелять, хоть ты что делай, нулл не разыменовать, все такие баги вылетают с исключениями. Вот с делением на 0 не помню, но вроде тоже исключение вылетит, если не float делишь. А int переполнится и фиг ты об этом узнаешь.
Я встречал очень мало случаев, когда переполнение int-а при арифметической операции было бы корректным выполнением алгоритма. В реальной жизни об этом не думают вообще никогда, ибо 4 млрд это много и хватит каждой домохозяйке. Раз в сто лет не хватает и там вылезает бага. И бага, обычно, пренеприятная. Например как в диабле.
Чисто мое имхо — процессор должен кидать исключение (вызывать прерывание или как там такие ситуации обрабатываются) при переполнении по умолчанию, которое рантайм языка уже может обрабатывать как ему надо. В 99% случаев. А для 1% использовать другие инструкции, не кидающие исключение, ставить какой-нибудь флаг или использовать другой вариант. Ну это на аппаратном уровне, без этой поддержки реализовать отлов переполнения сложно, не будешь же после каждого сложения ставить проверку cf.
А как ваш ЯП помогает программисту в ситуации, когда происходит непредвиденное переполнение? Есть варианты всяких пайтонов, в которых прозрачно промоутится до многобайтной арифметики, но это, по-моему, жутко неэффективно (кстати аппаратное исключение и таким языкам поможет ускориться).
Или я не знаю возможностей современных аппаратных платформ и это всё есть, просто глупые джавы это не используют?