А самые масштабные сообщения, самые сложные импульсы, посылаемые на самые дальние расстояния, легче всего исказить. Когда-то уже совсем скоро – не в 1948 году, а при жизни Шеннона и его коллег по «Лабораториям Белла» – человеческая коммуникация должна была достичь пределов своих стремлений, если бы не была решена проблема с шумом.
Это было задачей второй фундаментальной теоремы Шеннона. В отличие от первой, которая временно исключала шум из уравнения, вторая учитывала реалии и показывала нам границы нашей точности и скорости в рамках шумного мира. Понимание этих границ требовало исследования не только того, что мы хотим сказать, но и способов, как мы это скажем, а именно качества канала связи, будь то телеграфная линия или оптоволоконный кабель.
В статье Шеннона было впервые определено понятие «емкость канала связи» – количество битов в секунду, которые канал может точно передать. Он доказал точную взаимосвязь между пропускной способностью канала и двумя другими его свойствами: частотой диапазона (или того ряда диапазонов, которые он может предоставить) и соотношением сигнала и шума. И Найквист, и Хартли изучали взаимовлияния емкости, сложности и скорости. Но именно Шеннон смог облечь эти взаимовлияния в наиболее точную и контролируемую форму. Тем не менее поворотной идеей относительно емкости канала было не просто то, что ее можно было регулировать или избавиться от нее. Главное заключалось в том, что существовало жесткое ограничение – «предел скорости», выраженный в битах в секунду – на точную передачу сообщения в любой среде. После этой точки, которую довольно скоро назвали «пределом Шеннона», точность наших сообщений нарушается. Шеннон дал всем последующим поколениям инженеров ориентир, а также возможность понять, когда они бессмысленно теряют время. В некотором смысле он также дал им то, чего они жаждали со времен Томсона и трансатлантического кабеля: уравнение, которое заставило бы сообщение и среду подчиняться одним и тем же законам.
И этого было бы вполне достаточно. Но был сделан еще один шаг, который кому-то мог показаться чудом или чем-то непостижимым. Ниже границ предела скорости канала, какой бы ни был замысел, мы можем сделать сообщения настолько точными, насколько пожелаем, идеально свободными от шума. Это было самое далеко идущее открытие Шеннона: то, что Фано называл «неизвестным, немыслимым», пока Шеннон не решил эту проблему.
До Шеннона сформировалось укоренившееся убеждение в том, что шум – это естественная помеха. Способы сглаживания шума принципиально не менялись с тех пор, как Уайлдмен Уайтхаус сжег огромный морской кабель. Передача информации, подсказывал здравый смысл, напоминала передачу электроэнергии. Лучшим решением тогда был затратный и ненадежный способ действовать грубой силой, а именно «перекрикивать» помехи, подавая более громкий сигнал.
Способ Шеннона достичь идеальной точности передачи был чем-то радикально новым[8]. По мнению профессора инженерного дела, Джеймса Мэсси, именно этот потенциал, помимо всего прочего, делал теорию Шеннона «коперниковской»: в том смысле, что переворачивал очевидное с ног на голову, кардинально и самым продуктивным образом меняя наше понимание мира. Точно так же, как Солнце «очевидно» вращалось вокруг Земли, лучшим решением проблемы с шумом «очевидно» было иметь дело с физическими каналами связи, с их мощью и силой сигнала. Шеннон предлагал настораживающую смену акцентов: игнорировать физический канал, мы можем преодолеть шум, управляя нашими сообщениями. Решение проблемы шума заключается не в том, насколько громко мы говорим, а в том, как мы говорим то, что мы говорим.
Как неуверенные операторы трансатлантической телеграфной связи пытались справиться с нарушением сигнала? Они просто повторяли друг другу: «Повторите, пожалуйста», «посылайте медленнее», «правильно, правильно». На самом деле Шеннон показал, что замученные телеграфисты в Ирландии и Ньюфаундленде ухватили суть, они фактически решили проблему, даже не подозревая об этом. Если бы они смогли прочитать статью Шеннона, то, вероятно, сказали бы: «Пожалуйста, добавьте избыточности».
В определенном смысле это было достаточно очевидно: сказать одну и ту же вещь дважды в шумной комнате – это, в некотором роде, добавление избыточности, если мы подразумеваем, что одна и та же ошибка вряд ли повторится в одном и том же месте два раза подряд. Для Шеннона все было гораздо глубже. Наша лингвистическая предсказуемость, наша врожденная неспособность максимизировать информацию – это фактически наша лучшая защита от ошибок. Несколькими страницами ранее вы прочитали о том, что структура нашего языка лишает нас полной свободы выбирать «следующую букву и следующий ананас». Как только вы дошли до слова «ананас» – на самом деле, как только вы дошли до буквы «а», – вы уже понимали, что что-то пошло не так. Вы обнаружили (и, вероятно, исправили) ошибку. Вы сделали это потому, что у вас есть внутреннее понимание структуры языка. И это внутреннее знание подсказало вам, что вероятность того, что слово «ананас» имеет смысл в этом предложении и абзаце, крайне низка. Избыточность нашего языка корректирует ошибки за нас. С другой стороны, представьте, насколько сложнее было бы найти ошибку в языке «XFOML», в котором каждая буква одинаково вероятна[9].
Для Шеннона ключ опять же заключался в коде. Он продемонстрировал, что мы должны уметь писать коды, в которых избыточность действует как щит, коды, в которых ни один бит не является неустранимым, и любой бит может без всякого вреда для сообщения быть поглощен шумом. Мы снова хотим отправить сообщение, составленное из букв от А до D, но в этот раз нам важнее не сжимать сообщение, а чтобы оно надежно прошло по шумному каналу связи. И снова мы начнем с самого простого кода:
А = 00
В = 01
С= 10
D = 11
Одна из самых худших вещей, которые может сделать шум в момент помех, включения посторонних звуков или физического повреждения канала связи – это исказить биты. Там, где отправитель произносит «1», получатель слышит «0», или наоборот. Так что если бы мы использовали этот код, то ошибка для одного-единственного бита могла бы быть фатальной. Если бы всего один из битов, представляющих букву С, поменял бы свое свойство, буква С потерялась бы в канале связи: она возникла бы в виде буквы В или D, запутав получателя. Достаточно всего лишь двух таких замен, чтобы превратить «DAD» в «САВ».
Но мы можем решить эту проблему – точно так же, как человеческие языки интуитивно, автоматически решают подобную проблему, – добавив биты. Мы можем использовать вот такой код:
А = 00000
В = 00111
С = 11100
D = 11011
Теперь любая буква могла бы выдержать повреждение любого бита и все равно оставаться именно этой буквой и никакой другой.