Применение принципа голубей и ящиков к исследованию глубин космоса приводит к еще более странным умозаключениям. Один из физических принципов, так называемый принцип голографической ограниченности, гласит: для каждого конечного объема пространства существует лишь конечное число возможных конфигураций массы и энергии. Если, как склонны полагать космологи, Вселенная бесконечна, то в ней существует бесконечное количество объемов пространства размером с видимую вселенную – гигантских космических пузырей, содержащих материю и энергию. Если пространство более или менее гомогенно (однородно), то в пузыре, где мы с вами обитаем, нет ничего такого уж особенного и уникального. Из всех этих допущений, взятых в совокупности, следует ошеломляющий вывод. Бесконечность количества таких пузырей размером со вселенную при конечном числе конфигураций вещества и энергии в каждом означает, что существует даже не одна точная копия нашей Вселенной (и нашей Земли). Согласно космической версии принципа голубей и ящиков, существует бесконечное количество копий каждой (строго выражаясь, «почти каждой»: для этого выражения имеется точное математическое определение) из возможных вселенных. Мало того, что существует бесконечное количество ваших собственных копий на этом бесконечном количестве планет Земля, есть и бесконечное количество вариаций на ту же тему: вы с хватательным хвостом, вы с несколькими головами, вы как профессиональный жонглер хищными кроликоподобными зверьками, получающий драгоценности для украшения одежды в уплату за демонстрацию своего искусства. Как видите, даже простой счет «раз, два, три…» способен привести к причудливым и неожиданным результатам.
Почему в программах встречаются баги
Марти Хёрст
Кибернетик, факультет информации Калифорнийского университета в Беркли; автор книги Search User Interface (« Пользовательские поисковые интерфейсы »)
На протяжении всей истории программирования мы то и дело сталкиваемся с неприятной реальностью: никто из специалистов не знает, как создавать программы, заведомо свободные от ошибок.
Почему мы не можем в программировании быть так же успешны, как в других областях техники? Возможно, наиболее романтичным мыслителем из всех, кому следовало бы адресовать такой вопрос, является Фредерик Брукс, автор книги The Mythical Man-Month («Мифический человеко-месяц»). (Если обратить внимание на то, что эта книга со столь неудачным названием, как бы подразумевающим, что «человек» – это лишь «мужчина», man, впервые вышла в 1975 году, легче игнорировать сквозящий в ней сексистский душок: утверждения, которые Брукс сделал 4 десятка лет назад, почти все верны и на сегодняшний день, за исключением того, что программист – не всегда «он», как пишет Брукс, – бывает и «она».)
Делясь с читателями радостями программирования, Брукс пишет:
Программист, как и поэт, работает, почти вплотную соприкасаясь с веществом чистой мысли. Он строит замки в воздухе и из воздуха, создавая их лишь силой собственного воображения. Мало есть творческих инструментов столь гибких, столь удобных для перестройки и отладки, столь готовых к воплощению придуманных нами грандиозных конструкций… И при этом само творение-программа, в отличие от строк поэта, вполне реально в том смысле, что оно движется и работает, давая зримые результаты, отдельные и отличные от собственно конструкции. Программа распечатывает данные, рисует чертежи, издает звуки, двигает манипуляторами. В наше время магия легенд и мифов воплотилась в жизнь.
Но у этой магии есть своя оборотная сторона:
Во многих видах творческой деятельности средство исполнения не очень-то податливо и надежно. Древесина расщепляется, краска размазывается, электрические цепи дают короткое замыкание. Эти физические ограничения, присущие средству или материалу исполнения, сдерживают и выражение идей, создают непредвиденные трудности в их воплощении и развитии. …Между тем программист творит с помощью невероятно податливых средств. Он созидает новое из чистого мысленного вещества – идей и их весьма гибких представлений. А поскольку средство податливо, мы ожидаем лишь незначительных трудностей при воплощении наших мыслей; отсюда наш упорный оптимизм. Баги возникают из‑за того, что сами наши исходные идеи имеют погрешности; вот почему наш оптимизм не очень-то оправдан.
Существует почти бесконечное число способов сложить слова в статью. Невообразимо велико и количество различных программ, которые можно написать для выполнения одной и той же функции. Вселенная возможностей слишком уж широка, слишком уж неограниченна, так что ошибки в ней неизбежны.
Читать дальше