Сет Ллойд - Программируя Вселенную. Квантовый компьютер и будущее науки
Общее количество значений, которые может различать то или иное измерительное устройство, определяется как диапазон значений (например, один метр), в пределах которого это устройство может работать, деленный на предельную точность, с которой устройство может измерять (например, один миллиметр). Диапазон, разделенный на точность, показывает, сколько отдельных значений может зафиксировать данное устройство. Далее, количество доступной информации определяется количеством битов, необходимых для того, чтобы перечислить все доступные значения. Устройство, которое выдает 33 бита информации (точность до десятой цифры) о какой-либо непрерывной величине, можно считать очень точным.
Чтобы получить тридцать три бита информации о длине нашего стержня, нужно измерить его длину в атомах. Вообще же требуются героические усилия, чтобы выжать больше нескольких десятков битов информации об одной непрерывной величине, например о длине стержня. Но если мы используем много отдельных величин, чтобы записывать информацию, то можем быстро накопить много битов. В квантовом компьютере каждый атом хранит один бит; чтобы получить тридцать три бита, нужно всего тридцать три атома. Наш стержень содержит где-то миллиард миллиардов миллиардов атомов. Если бы каждый из них соответствовал одному биту, то все атомы стержня содержали бы миллиард миллиардов миллиардов битов – невообразимо больше, чем может содержаться в длине стержня как таковой.
Как правило, лучший способ получить больше информации – не увеличивать точность измерений непрерывной величины, а собирать измерения все большего и большего набора величин, каждое из которых может содержать всего несколько битов. Такой сбор битов, или цифровое представление, эффективен, потому что количество всех описанных ими альтернатив растет гораздо быстрее, чем количество битов.
Вспомните легендарного восточного правителя, который по глупости согласился вознаградить героя зернами пшеницы: одно зерно за первую клетку шахматной доски, два зерна за вторую, четыре за третью и так далее, вплоть до двух в шестьдесят третьей степени (263) за последнюю, 64-ю клетку. Общее количество зерен при этом составляет по порядку величины 10 миллиардов миллиардов, а если точно – 18 446 744 073 709 551 615. И если длина каждого зерна равна всего одному миллиметру, все вместе они заполнят объем почти в 20 куб. км!
Как показывает этот пример, нужно совсем немного битов, чтобы выделить одну из очень большого количества альтернатив. Чтобы присвоить каждому из зерен на шахматной доске уникальный штрихкод, потребовалось бы всего 64 бита, или 64 элемента информации. Имея 300 битов, можно присвоить уникальный штрихкод каждой из 1090 элементарных частиц во Вселенной. Астрономически огромное количество возможных генетических кодов – причина невероятного разнообразия живых существ, но информация, которая позволяет воспроизвести любой из этих кодов, может быть сохранена в одной крошечной хромосоме.
Смысл
«Но разве информация не должна иметь какой-то смысл?» – спрашивает студент.
«Конечно, когда мы думаем об информации, то обычно связываем ее с каким-то смыслом», – отвечаю я. «Но что такое “смысл”?»
Философы пытаются это выяснить уже тысячи лет, с переменным успехом. Но это очень трудно, потому что смысл информации очень сильно зависит от того, как ее нужно интерпретировать. Если вы не знаете, как интерпретировать сообщение, то не понимаете его смысла. Например, если я говорю вам «да», а вы не задавали вопрос, то вы не поймете, значит мое «да». Но если вы спросите: «Можно мне взять еще один кусок пирога?», и я скажу: «Да», то вы поймете, что я имею в виду. Если вы спросите: «Сколько будет два плюс два?», а я скажу: «Да», то вы опять не поймете, что я имею в виду (хотя, наверно, начнете думать, что у меня есть только один ответ на любой вопрос). Но если вы поинтересуетесь: «Сколько будет два плюс два?», и я скажу: «Четыре», то вы поймете этот ответ. Смысл чем-то похож на порнографию: когда мы его видим, то сразу узнаем.
Вернемся к нашей строке битов: 1001001 1101110 0100000 1110100 1101000 1100101 0100000 1100010 1100101 1100111 1101001 1101110 1101110 1101001 1101110 1100111. Если интерпретировать это сообщение согласно коду ASCII, эта строка означает «В начале…». Но само по себе, без указания на то, как его нужно интерпретировать, оно ничего не означает, кроме ряда двоичных цифр. Смысл зависит только от интерпретации, как в следующем разговоре между Алисой и Шалтаем-Болтаем:
– Я не понимаю, при чем здесь «слава»? – спросила Алиса.
Шалтай-Болтай презрительно улыбнулся.
– И не поймешь, пока я тебе не объясню, – ответил он. – Я хотел сказать: «Разъяснил, как по полкам разложил!»
– Но «слава» совсем не значит: «разъяснил, как по полкам разложил!» – возразила Алиса.
– Когда я беру слово, оно означает то, что я хочу, не больше и не меньше, – сказал Шалтай презрительно.
– Вопрос в том, подчинится ли оно вам, – сказала Алиса.
– Вопрос в том, кто из нас здесь хозяин, – сказал Шалтай-Болтай.
– Вот в чем вопрос![5]
Льюиса Кэрролла, автора «Алисы в стране чудес» и «Алисы в Зазеркалье», на самом деле звали Чарльз Доджсон, и он был философом-номиналистом. Доджсону очень нравилась идея о том, что слова означают лишь то, что он хочет, чтобы они означали.
Часто зависимость смысла от интерпретации выражают с помощью понятия языковых игр Людвига Витгенштейна. Это игры, где значение слов рассматривается с точки зрения действий, к которым они побуждают игроков. Например, работа «Философские исследования» Витгенштейна начинается с простой языковой игры: строитель возводит здание из камней, колонн, плит и балок. Если он произносит «камень», помощник передает ему камень. Если он говорит «плита», помощник передает ему плиту. В этой самой простой из языковых игр мы видим, что помощник знает, что имеет в виду строитель. Когда тот говорит «камень», то на самом деле имеет в виду «подай мне камень».
Когда языковая игра становится более сложной, смысл значений становится труднее понять в динамике игры. Отчасти это связано с тем, что естественный человеческий язык неоднозначен: у одного и того же утверждения может быть множество возможных значений. Кроме того, мы пока не совсем понимаем, как мозг реагирует на язык, так что даже если мы знаем, что «камень» означает «передай мне камень», нам неизвестен физический механизм, с помощью которого мозг слушателя понимает этот смысл. Поэтому было бы полезно найти пример ситуации, когда информацию можно интерпретировать только так и никак иначе и где нам полностью известен механизм, вызывающий реакцию слушателя.
Такой механизм, например, дают нам компьютеры. Они понимают языки, которые называют машинными языками (Java, C, Fortran, BASIC). Такие языки состоят из простых команд, например print («напечатать») или add («прибавить»), которые можно соединить так, чтобы дать компьютеру детальную инструкцию по выполнению сложной задачи. Если принять идею Витгенштейна о том, что значение элемента информации заключается в действии, которое она вызывает, то смысл компьютерной программы, написанной на том или ином машинном языке, заключается в действиях, которые выполняет компьютер, интерпретируя эту программу.
Все, что компьютер делает в действительности, – это выполнение последовательностей элементарных логических операций, таких как «и», «не» или, скажем, «копировать» (о них мы поговорим позже). Программа дает компьютеру прямые инструкции по выполнению определенной последовательности таких операций. Поэтому «смысл» компьютерной программы универсален, ведь два компьютера, следующие одной и той же инструкции, выполнят тот же самый набор операций по обработке информации и получат один и тот же результат.
Однозначный характер компьютерной программы означает, что каждому предложению программы соответствует один и только один смысл. Если некое утверждение, сделанное на машинном языке, может быть интерпретировано более чем одним способом, компьютер выдает сообщение об ошибке: для него двусмысленность – это недопустимая вещь. В то же время естественные человеческие языки богаты двусмысленностями: например, в английском языке (за исключением особых обстоятельств) у большинства утверждений есть множество потенциальных значений. На этой особенности языка основаны поэзия, художественная литература, флирт, да и повседневное общение. Неоднозначность естественного языка является не проблемой, а его достоинством!
Смысл трудно определить, но он – одна из важнейших черт информации. Основная идея информации состоит в том, что одну физическую систему – цифру, букву, слово, предложение – можно поставить в соответствие другой физической системе. Информация всегда означает некую вещь. Два пальца могут символизировать двух коров, двух человек, две горы или две идеи. Слово может обозначать что угодно (если, конечно, для обозначения этого у нас есть слово): апельсин, корову, деньги, свободу. Составляя из слов предложения, можно выразить все, что может быть выражено словами. Слова в предложении могут обозначать некую сложную мысль.