Каковы шансы, что сумма 1 + 1 даст неверный результат? - PullRequest
0 голосов
/ 14 марта 2020

Я знаю, что, хотя мы хотим верить, что компьютеры работают без ошибок, транзисторы не идеальны, и 1 + 1 не всегда будет возвращать 2 на уровне транзисторов.

Я также знаю, что Чтобы защитить нас от ошибок, большинство компьютеров в настоящее время имеют алгоритмы резервирования, обнаружения и исправления ошибок.

При этом, каковы шансы, что следующая программа C ++ напечатает неправильный результат без предупреждения? Есть ли шанс?

#include <iostream>
using namespace std;

int main()
{
    int a = 1, b = 1;
    int sum = a + b;

    cout << "Sum = " << sum;

    return 0;
}

Давайте предположим, что по состоянию на 2020 год мы используем ноутбук со средней стоимостью x64 $ 1000.

Этот вопрос имеет более широкий охват. Мы выполняем миллиарды вычислений в секунду, я хочу знать, сколько может go ошибаться в сложной программе, на теоретическом уровне.

1 Ответ

1 голос
/ 14 марта 2020

Да, есть вероятность, что 1 + 1 даст что-то отличное от 2. Вероятность этого события настолько близка к нулю, что его невозможно измерить.

Это так по следующим причинам:

  1. Прежде всего, вероятность того, что что-то пойдет не так на квантовом уровне, бесконечно мала. Термин «глюки» существует в ИТ, но в подавляющем большинстве случаев это происходит из-за некоторой аппаратной неисправности, такой как сетевой кабель, не имеющий идеального контакта. В оставшемся крайне небольшом проценте случаев, когда в программном обеспечении наблюдался сбой, он просто используется как еще один термин для «мы не совсем уверены, почему это произошло». Скорее всего, это связано с ошибкой logi c, проблемой многопоточности или каким-то другим неквантовым эффектом. Глюки из-за квантовой неопределенности не происходят ни в коем случае, что порождает любую потребность в рассмотрении нашей профессии.

  2. Компьютерная система, на которой вы собираетесь запустить это Ваша маленькая тестовая программа постоянно запускает мегабайты кода, которые выполняют различные другие функции, все из которых основаны на 1 + 1 или любом другом вычислении, всегда дающем правильный результат. Если бы случился малейший несчастный случай, компьютер взломал бы ужасно и эффектно. Таким образом, ваша маленькая программа не должна даже запускаться: ваш компьютер и сотни миллионов компьютеров по всему миру, работающие без сбоев круглосуточно, являются доказательством того, что 1 + 1 всегда вычисляется как 2 с чрезвычайно высокой степенью достоверности.

...