Теории всего на свете - Коллектив авторов
Шрифт:
Интервал:
Закладка:
Сжимая файлы, вы волей-неволей натыкаетесь на принцип голубей и ящиков. Ведь общее количество 2000-битных голубей намного, намного больше (их 22000, если быть точным), чем 100-битных ящиков (их 2100). Если алгоритм позволяет полностью втиснуть первое во второе, это означает, что по меньшей мере один ящик должен содержать более одного голубя. Возьмем этот ящик (этот 100-битный файл) и попробуем обратить алгоритм сжатия, расширив этот файл до его исходной 2000-битной формы. Это не удастся сделать! Поскольку существует множество 2000-битных файлов, каждый из которых окажется сжатым в один и тот же 100-битный файл, алгоритм не сумеет определить, какой из этих 2000-битный файлов – истинный оригинал, так что компрессию будет невозможно обратить.
Принцип голубей и ящиков кладет непреодолимый предел возможностям компрессионных алгоритмов. Такие алгоритмы действительно способны успешно (без потери информации при распаковке) сжимать некоторые файлы, иной раз весьма значительно, однако все файлы так сжимать нельзя – во всяком случае, если вы настаиваете на идеальном сохранении данных.
Подобного рода «пересчет» открывает перед исследователями обширные горизонты. Немецкий математик Георг Кантор использовал разновидность обратного принципа голубей и ящиков, дабы показать, что действительные числа невозможно упаковать в ящики, предназначенные для целых чисел (по одному ящику на каждое число), хотя целых чисел бесконечно много. Отсюда следовал трудновообразимый вывод: существуют различные уровни бесконечности. Бесконечность целых чисел ничтожна по сравнению с бесконечностью действительных чисел, которая, в свою очередь, смехотворно мала по сравнению с еще одной бесконечностью, а та – по сравнению с еще одной бесконечностью… бесконечное число бесконечностей, которые останутся неисследованными, пока мы не научимся как-то их считать.
Применение принципа голубей и ящиков к исследованию глубин космоса приводит к еще более странным умозаключениям. Один из физических принципов, так называемый принцип голографической ограниченности, гласит: для каждого конечного объема пространства существует лишь конечное число возможных конфигураций массы и энергии. Если, как склонны полагать космологи, Вселенная бесконечна, то в ней существует бесконечное количество объемов пространства размером с видимую вселенную – гигантских космических пузырей, содержащих материю и энергию. Если пространство более или менее гомогенно (однородно), то в пузыре, где мы с вами обитаем, нет ничего такого уж особенного и уникального. Из всех этих допущений, взятых в совокупности, следует ошеломляющий вывод. Бесконечность количества таких пузырей размером со вселенную при конечном числе конфигураций вещества и энергии в каждом означает, что существует даже не одна точная копия нашей Вселенной (и нашей Земли). Согласно космической версии принципа голубей и ящиков, существует бесконечное количество копий каждой (строго выражаясь, «почти каждой»: для этого выражения имеется точное математическое определение) из возможных вселенных. Мало того, что существует бесконечное количество ваших собственных копий на этом бесконечном количестве планет Земля, есть и бесконечное количество вариаций на ту же тему: вы с хватательным хвостом, вы с несколькими головами, вы как профессиональный жонглер хищными кроликоподобными зверьками, получающий драгоценности для украшения одежды в уплату за демонстрацию своего искусства. Как видите, даже простой счет «раз, два, три…» способен привести к причудливым и неожиданным результатам.
Почему в программах встречаются баги
Марти Хёрст
Кибернетик, факультет информации Калифорнийского университета в Беркли; автор книги Search User Interface («Пользовательские поисковые интерфейсы»)
На протяжении всей истории программирования мы то и дело сталкиваемся с неприятной реальностью: никто из специалистов не знает, как создавать программы, заведомо свободные от ошибок.
Почему мы не можем в программировании быть так же успешны, как в других областях техники? Возможно, наиболее романтичным мыслителем из всех, кому следовало бы адресовать такой вопрос, является Фредерик Брукс, автор книги The Mythical Man-Month («Мифический человеко-месяц»). (Если обратить внимание на то, что эта книга со столь неудачным названием, как бы подразумевающим, что «человек» – это лишь «мужчина», man, впервые вышла в 1975 году, легче игнорировать сквозящий в ней сексистский душок: утверждения, которые Брукс сделал 4 десятка лет назад, почти все верны и на сегодняшний день, за исключением того, что программист – не всегда «он», как пишет Брукс, – бывает и «она».)
Делясь с читателями радостями программирования, Брукс пишет:
Программист, как и поэт, работает, почти вплотную соприкасаясь с веществом чистой мысли. Он строит замки в воздухе и из воздуха, создавая их лишь силой собственного воображения. Мало есть творческих инструментов столь гибких, столь удобных для перестройки и отладки, столь готовых к воплощению придуманных нами грандиозных конструкций… И при этом само творение-программа, в отличие от строк поэта, вполне реально в том смысле, что оно движется и работает, давая зримые результаты, отдельные и отличные от собственно конструкции. Программа распечатывает данные, рисует чертежи, издает звуки, двигает манипуляторами. В наше время магия легенд и мифов воплотилась в жизнь.
Но у этой магии есть своя оборотная сторона:
Во многих видах творческой деятельности средство исполнения не очень-то податливо и надежно. Древесина расщепляется, краска размазывается, электрические цепи дают короткое замыкание. Эти физические ограничения, присущие средству или материалу исполнения, сдерживают и выражение идей, создают непредвиденные трудности в их воплощении и развитии. …Между тем программист творит с помощью невероятно податливых средств. Он созидает новое из чистого мысленного вещества – идей и их весьма гибких представлений. А поскольку средство податливо, мы ожидаем лишь незначительных трудностей при воплощении наших мыслей; отсюда наш упорный оптимизм. Баги возникают из‑за того, что сами наши исходные идеи имеют погрешности; вот почему наш оптимизм не очень-то оправдан.
Существует почти бесконечное число способов сложить слова в статью. Невообразимо велико и количество различных программ, которые можно написать для выполнения одной и той же функции. Вселенная возможностей слишком уж широка, слишком уж неограниченна, так что ошибки в ней неизбежны.
Есть и другие немаловажные причины программных ошибок. В первую очередь следует вспомнить о взаимодействующих друг с другом независимых системах, сопряжение которых зачастую дает непредсказуемый результат на выходе, причем на этом результате нередко сказываются еще более непредсказуемые действия людей, соединенных между собой во всемирную сеть. Но, на мой взгляд, самое красивое из объяснений – как раз насчет ничем не скованного вещества мысли.
Узоры в честь Кейджа
Ханс-Ульрих Обрист
Куратор галереи Serpentine (Лондон); автор книг Ai Weiwei speaks («Говорит Ай Вэйвэй»), Project Japan («Проект “Япония”») и многих других
В искусстве название работы может часто служить ее первым объяснением. В этой связи особенно показательными мне представляются названия произведений Герхарда Рихтера. В 2006 году, когда я заглянул к Рихтеру в его кельнскую студию, он только что закончил цикл из шести взаимосвязанных абстрактных картин под общим названием «Кейдж».
Между полотнами Рихтера и композициями Джона Кейджа есть много общего. В книге, посвященной циклу «Кейдж», Роберт Сторр отмечает, что еще в 1963 году Рихтер посетил выступление Кейджа на дюссельдорфском фестивале «Festum Fluxorum Fluxus», и прослеживает аналогии в творческих процессах двух мастеров. Кейдж часто применял в своих композициях «метод случайности»: наиболее известно использование им для этих целей Книги Перемен. В своих абстрактных картинах Рихтер также намеренно вводит элемент случайности. Иной раз он наносит масляную краску на холст при помощи специальных больших шпателей, скребков и валиков. Цвет краски он выбирает сам, но тот след, который устройство оставит на холсте, в значительной мере зависит от случайных факторов. Подобное обращение к «управляемой случайности» роднит искусство Кейджа и Рихтера. Кроме того, у Рихтера само название «Cage», (в переводе с английского – клетка) несет и зрительные ассоциации: в своей совокупности эти шесть полотен кажутся чем-то герметичным, почти непроницаемым. Так что название имеет разные смысловые пласты.