Очень мало говорят о печальном конце Паскаля Младшего. Его бывшие коллеги знали, что у него возникли проблемы, заставившие поместить его в психиатрический госпиталь. Теперь когда он умер, я могу опубликовать письмо, которое он мне послал в свое время; оно уже больше не может причинить ему вреда...
Ниже интересная история о программисте написавшем алгоритм игры в ханойские башни, по окончании которой должен был наступить конец света.
О ком речь, кто этот Паскаль Младший, имеет ли он отношение к одноимённому языку Вирта? И как вам его история?
«Господин профессор,
Я не знаю, помните ли вы меня: я был вашим учеником в Институте программирования. Конечно, у вас их столько было... После того, как я окончил институт, я поступил на работу программистом-аналитиком в бюро обслуживания. Я был на очень хорошем счету. Я следовал вашим урокам: использовал программирование «сверху-вниз», я выводил свои циклы в программах, используя пост- и предусловия и инварианты. Мои программы работали верно с первого запуска, с точностью до опечаток. Короче, по прошествии нескольких лет я сказал себе, что у меня будет более интересная работа, если я буду вести ее на свой собственный счет. Поэтому я все подготовил, нашел помещение. Я подал в отставку и взял все отложенные отгулы, на которые я имел право. Будучи холостым, я, вообще говоря, брал очень мало выходных дней, настолько меня захватывала моя работа. Но, собираясь испытать счастья в большом деле и становясь своим собственным работодателем, я хотел получить настоящий отдых.
Право, я не знаю, как это меня по рекламному объявлению занесло в бюро путешествий «Посетите таинственную Индию». И вот я отправился с тремя десятками других в организованное путешествие. Конечно, я должен был задуматься раньше, то ли я выбрал, что мне нужно. Оказалось, что я с трудом переношу беспрерывную болтовню то одних то других; это мешало мне думать о чем-нибудь своем. Мне пришлось примириться с тем, что мне придется думать о чем-то еще, кроме написания какой-то упирающейся программы! Детали этого путешествия несущественны вплоть до дня, когда нас привезли в монастырь в предгорьях Гималаев.
Монах, который нас принял, говорил на отличном французском. Сообщение, которое он сделал о монастыре, свидетельствовало о свободном владении нашим языком. Это должно было показаться мне подозрительным. Он ввел нас в помещение и, с того момента как я вошел я смог только выдавить «ох» изумления: мы увидели монаха, который занимался знаменитейшей игрой в Ханойские башни. Диски были, очевидно, из золота, и я сразу угадал, даже не считая, их ровно 50. Монах объяснил игру посетителям:
«Как вы видите, игра состоит из круглой подставки с тремя стержнями. На стержни нанизаны диски различных диаметров. (Рис. 26 представляет конфигурацию игры с семью дисками.) На каждом стержне диски сложены, в стопку по возрастанию диаметра: никогда ни один диск не кладется на другой диск меньшего диаметра. В начале игры, это было много лет назад, даже много веков, все пятьдесят дисков находились на первом стержне. Монах перекладывает эти диски один за другим, следуя методу, который мы тщательно продумали. Когда все диски соберутся снова на одном стержне, отличающемся от исходного игра кончится. Великий труд, который боги наложили на людей будет завершен, и сможет наступив, конец света...»
Я решил насмешливо добавить вполголоса: ну, это еще не завтра... Это стоило мне разгневанного взгляда гида, который продолжал:
«Как только что заметил один из вас, это занятие потребует еще многих столетий, несмотря на большую сноровку монахов, которые перекладывают каждый диск приблизительно за одну секунду». Я снова продемонстрировал свое раздражение, Разумеется, я предполагал, что из-за меня посещение будет сокращено. Но не для того же я сюда приехал, чтобы надо мной, как и над остальными путешественниками, насмехались? Мы хорошо знаем, что игра в ханойские башни была изобретена в конце прошлого века преподавателем математики в лицее Сент-Луи по имени Люка, который под этим соусом ее и пустил в свет, окружив легендой, согласно которой монахи где-то в Индии суетятся вокруг игры в 50 дисков, по окончании которой наступит конец света. Эта легенда делала естественной задачу о подсчете числа ходов, Необходимых для завершения игры. Что же касается того, что каждый диск перекладывается за секунду, то это элементарно, и мы знаем итеративную стратегию, которая позволяет нам просто играть, ни о чем не думая — вы ее нам сами давали в вашем курсе в институте...
Когда мы покидали монастырь, наш гид подошел ко мне и спросил меня, не хочу ли я оказать его настоятелю большую честь своим посещением. Обсуждение с руководителем группы. Назавтра мы не должны были уезжать рано, и поэтому я принял приглашение снова прийти туда до нашего отъезда. Настоятель принял меня очень любезно и предвосхитил мои упреки: «Несомненно, вы уже знакомы с башнями Брахмы. Мы знаем, что они были введены во Франции много лет назад М. Люка. Он никогда не говорил, что он сам придумал эту игру. Совсем наоборот, он очень добросовестно изложил то, что мы делаем. И разве мы виноваты в том, что вы вбили себе в голову, что с его стороны это была чистейшая уловка» чтобы придать больший блеск своему мнимому открытию? А это была и в самом деле чистейшая уловка, потому что ему приписали создание этой игры, в то время как он всего лишь пересказал то, что ему описал один путешественник... Нас тревожит то невероятное время,, которое нужно для окончания игры. Мы очень терпеливы, однако мы ищем, как двигаться быстрее. Один наш посетитель, приехавший из американского университета, предложил нам сконструировать робота-манипулятора, управляемого компьютером. Мы со своей стороны финансировали это исследование. Но робот Не мог двигаться быстрее, чем наши монахи, натренированные до совершенства и действовавшие безошибочно». Когда же я высказал замечание, что при таком решении проблемы игру будут вести уже не люди, а машина, настоятель решительно возразил мне, сказав: «Мы прекрасно пользуемся молитвенными мельницами, Во всяком случаем машина делается людьми и управляется программой написанной людьми...»
Он также сказал мне, каким образом это исследование к тому же открывает новые перспективы. Были времена, когда монахи пытались присоединить к игре четвертый стержень. Правила оставались такими же: перемещать за один раз не более одного диска и никогда не класть диск на другой диск меньшего диаметра. Конечно, манипуляция игрой с 50 дисками до сих пор не удалась. Они вывели, что при этом требуется гораздо меньше ходов, но стратегия манипулирования становится много сложнее. Монахи терялись, часто оказывалось, что они ошибаются, они снова попадали в уже пройденные конфигурации, так что не было никакой уверенности в том, что удастся дойти до конца, если постоянно приходится начинать сначала.., «Не могли бы вы взяться за решение проблемы башен Брамы с четырьмя стержнями, составить программу для соответствующего компьютера и использовать его для управления роботом, манипулирующим игрой? Ведь даже если каждый ход отнимет много секунд, конец должен будет наступить намного быстрее. А нам, таким образом, выпадет величайшая радость — стать теми, кто выполнил волю богов. Мы увидим, что мир достиг своего конца, и вступим в счастье, которое никогда не кончится...»
Это дело показалось мне выполнимым, Договорились, что я реализую информативную систему и передам ее им. Настоятель вручил мне в качестве оплаты авансом игру, сделанную из серебра. Это было настоящее богатство. Ну, как тут устоять?
Вернувшись во Францию, я взялся за работу. Больших трудностей она не представляла. Вначале я составил рекурсивную процедуру для решения игры с четырьмя стержнями. Поскольку я искал оптимальную стратегию, я сделал по ней итеративную версию. Для этой маленькой программы был достаточен микрокомпьютер. Я использовал ручной манипулятор, оснащенной электромагнитом в форме кольца. Я работал с деревянной игрой, каждый диск которой был снабжен маленьким кольцом из мягкого железа, позволявшим ручному манипулятору брать его, и притом не возникало необходимости чрезвычайно точно этот диск устанавливать.
И я был всем очень доволен, пока не понял внезапно, что я без раздумий бросился в ужасное предприятие. А что, если монахи говорили правду? Какую пользу мне принесет обладание богатством (ибо они должны были заплатить мне еще если программа будет работать правильно), если вскоре наступит конец света? Безусловно, будучи убежденным рационалистом, я не очень-то всерьез принимал их истории. Но, в конце концов, это — новая форма пари Паскаля *). Даже если шанс, что все это верно, бесконечно мал, я не испытывал ни малейшего желания ускорять конец света. Но прошлое вернуть нельзя и их плату я уже получил.
*) Имеется в виду постановка Блезом Паскалем (1623—1662) вопроса о вере в существование бога как задачи о выборе стратегии в азартной игре («Мысли», отрывок 233): «Взвесим 'выигрыш и проигрыш, ставя на то, что бог есть. Возьмем два случая: если выиграете, вы выиграете все; если проиграете, то не потеряете ничего. Поэтому, не колеблясь, ставьте на то, что он есть» (Антология мировой философии в четырех томах, Том 2, М., «Мысль», 1970, С, 306).— Примеч. пер.
Мне пришла в голову поистине дьявольская мысль: эти прекрасные монахи желали конца света, чтобы как можно скорее достичь вечного счастья вот уж я его им обеспечу, В корпус компьютера я добавил выдвижной ящик, который окрестил «концом света». В нем были под видом блока питания толстые цилиндры, на корпусах которых была маркировка конденсаторов, но в которых находились пластиковые бомбы. Маленькое изменение программы должно было вызвать взрыв сразу же после того, как наименьший диск покидал свой стержень и перед тем, как он достигал места своего назначения. Таким образом, игра никогда не должна была кончиться. Что до монахов, то они будут с восторгом представлять себе конец света в тот момент, когда завершится игра. В тот момент чудовищность моего поступка меня не шокировала. Наоборот, я был в восторге: монахи будут счастливы, а я уберегу весь мир от конца. Я дошел до того, что смотрел на себя как на благодетеля человечества. Конечно, я брал на себя риск. Программу, без сомнения, нужно было испытать. Но, как я вам уже говорил я прошел хорошую школу — Вашу школу — и я программировал правильно.
Когда все было закончено, я отправился вручить свое произведение сияющим монахам. Она была испытана на игре в 20 дисков. Затем аппарат был пущен в работу для игры с 50 дисками и 4 стержнями. Тут я попросил у монахов разрешения удалиться: ведь мне хотелось бы привести свои дела в порядок в то небольшое время, которое осталось нам жить, что они очень хорошо понимали. Я возвратился с полными пригоршнями золота.
Через некоторое время сообщили, что ужасный взрыв неизвестного происхождения разрушил монастырь в Индии. В живых не осталось никого. Моя программа была правильной...
Уже позже меня стали одолевать сомнения. Не были ли монахи правы? Не я ли тот, кто помешал воле богов? Не воспрепятствовал ли я выполнению работы, которая была доверена людям? Не должен ли я сконструировать игру в 50 дисков, и не следует ли ее разыграть, чтобы искупить свою вину?
С этих пор я живу в ужасе. Если я ничего не делаю, я несу на себе груз того, что я препятствую воле богов. Если я сделаю игру, что для меня не составляет никакого труда, то именно я и приведу мир к гибели... Я никому не могу довериться. Я умоляю вас, помогите мне...»
Я не стал вмешиваться. Душа Паскаля Младшего не могла сопротивляться этому удару. Он впал в безумие и немного спустя умер...