Всякий, кто помнит попытки записывать музыку с помощью аналоговых устройств, знает об этом эффекте. Первая копия была значительно хуже оригинала по уровню шума (вспомним, что «шум» представляет собой случайные несовпадения). Копия первой копии была еще хуже, а десятая копия представляла собой один только шум. Считалось, что зарождавшийся мир цифровых компьютеров будет поражен той же болезнью. Это беспокойство понятно, если речь идет о передаче цифровой информации по каналу. Идеальных каналов не бывает, каждый характеризуется определенным уровнем ошибки. Допустим, у нас есть канал, который правильно проводит каждый байт информации с вероятностью 0,9. Если я передаю сообщение размером один бит, вероятность точной передачи по этому каналу составляет 0,9. Если объем информации составляет два бита, точность передачи равняется 0,92 = 0,81. А если мне нужно передать один байт (8 бит)? Вероятность безошибочной передачи этой информации меньше 50 % (0,43, если быть точным). Вероятность безошибочной передачи пяти байт информации составляет примерно 1 %.
Очевидный путь решения проблемы состоит в повышении качества каналов. Допустим, при прохождении по каналу миллиона бит информации возникает лишь одна ошибка. Но если я пересылаю файл, содержащий полмиллиона байт (это размер небольшой программы или базы данных), вероятность правильной передачи будет менее 2 %, даже при таком высоком качестве канала. Учитывая, что ошибка всего в одном байте информации может полностью обесценить компьютерную программу или любые другие данные, ситуация является неприемлемой. Таким образом, вне зависимости от качества канала, поскольку вероятность ошибки передачи данных быстро растет с увеличением объема передаваемой информации, это ограничение кажется непреодолимым.
Создатели аналоговых компьютеров подошли к решению проблемы путем постепенного снижения требований (то есть позволяли решать только такие задачи, в которых допустима небольшая погрешность), и, если ограничиваться определенными вычислениями, эти компьютеры могли быть полезными. С другой стороны, цифровые компьютеры нуждаются в постоянном обмене информацией — не только между компьютерами, но и внутри самого компьютера. Это обмен информацией между модулем памяти и центральным процессором. Внутри центрального процессора осуществляется связь между регистрами и вычислительными регистрами. И даже в вычислительных регистрах происходит обмен между битовыми регистрами. Таким образом, обмен информацией идет буквально на всех уровнях. Если учесть, что количество ошибок быстро возрастает с усилением информационного обмена и что ошибка в одном байте информации может нарушить весь процесс, цифровые вычислительные методы, как казалось, были обречены на провал.
Таково оставалось общественное мнение до тех пор, пока американский математик Клод Шеннон (1916–2001) не показал, каким образом можно достичь достаточно точной передачи информации с помощью самых ненадежных каналов передачи. В своей всемирно известной статье «Математическая теория связи» (A Mathematical Theory of Communication), опубликованной в журнале
Как же это возможно? Ответ заключается в избыточности информации. Сейчас это кажется очевидным, но тогда дело обстояло иначе. Если, к примеру, я передаю каждый бит информации три раза, надежность результата станет значительно выше. Если этого недостаточно, нужно просто повышать степень избыточности до тех пор, пока не будет достигнут приемлемый результат. Повтор информации — простейший путь получения желаемой точности передачи информации по каналу с высоким уровнем шума, но не самый эффективный. В статье Шеннона, с которой началось развитие теории коммуникации, были предложены оптимальные методы определения ошибок и коррекционные коды, позволяющие достичь