Добрый день.
Поспорил с одним человеком по поводу багов.
Мои утверждения:
Нельзя утверждать, что в непустой программе нет багов: можно уменьшить вероятность встречи этих багов до какого-то числа, но нельзя свести её к нулю.
Нет способа выполнить программу "абсолютно точно", всегда есть воздействие среды выполнения.
Системы верификации не дают единичную вероятность успеха, т.к. в них тоже могут быть баги.
Баг — ошибка в поведении программы (не важно, чем она была вызвана: библиотекой, интерпретатором, космическими лучами).
Утверждения оппонента (тут я могу неточно передать смысл, извиняюсь за это):
Существуют верифицируемые программы: например, print(a + b). Где в этой программе ошибка?
Баг зависит от локальности выполнения (т.е. баг в интерпретаторе не является багом программы, которая запускается этим интерпретатором).
В supapro.cxx меня за такой вопрос забанили, поэтому пишу сюда.
Мне интересно, какое определение бага вы считаете более правильным.