в тебе и нравятся. Ты живёшь в каком-то, отчасти выдуманном, мире. Вернее всё время пытаешься внешний мир подстроить под свои представления о нём: “Это однозначно хорошо, а вон то — плохо”. Это и сильная и слабая твоя сторона. Сегодня я заглядывала тебе в голову и видела, что ты и правда искренне жалеешь, что убил Великого.
— Хм… А мы что-то ещё сделали, исходя из однозначно сделанного неоднозначного выбора? Я где-то решал при тебе: “это однозначно плохо”?
— Ну… — Эт немного замялась, — например, мы спасли всех пленников, поскольку это однозначно хорошо. Мы не стали разбираться с каждым, просто вытащили их всех скопом.
— Думаешь, там мог оказаться страшный мировой злодей?
— Почему бы и нет? — пожала плечами Эт.
— А ещё?
— Ещё, мы собираемся посадить кмэл. Ровно по такому же предположению: помочь несчастному дереву — однозначно хорошо.
— Считаешь, Косм может нас обманывать? — задумчиво спросил я. — Хгм… Если всё так неоднозначно вышло с Великим, то почему бы и с Космом не получилось бы иначе чем мы думаем? А что же ты молчала? Это клятва на тебя так действует?
— Нет, я подумала об этом только теперь, когда мы стали говорить о тебе.
— Роха сказала: “Он сможет защищаться”. Она говорила это так уверено, что звучало как: “Ни у кого не получится преодолеть его защиту”. То есть кмэл сможет укокошить любого мага. А после возьмёт и захватит всю Рею! И что нам теперь делать?
— Мы же его пока не посадили!
— Погоди! Что дальше? Не сажать его? Из за наших домыслов? А вдруг и у меня есть свой план по уничтожению всего живого на Рее? А ты, получается, мне помогаешь! Нет уж, эта парадигма такая же ущербная как и моя.
— Какая парадигма?
— Подход: никому не доверять, пока не будешь гарантированно убеждён, что доверять можно. Всё равно рано или поздно, а от недостатка информации придётся когда-то положиться на свои чувства.
Если говорить о кмэле, то я не чувствую, что посадить его чревато какими-то большими неприятностями. И в линии будущего я заглянул.
Предположим, что Роха ведёт свою игру с нами. Мало того, я думаю, что это так и есть, ведёт! Ну и пусть себе! Главное чтобы это не была игра против нас. Узнать об этом наверняка мы сможем только сколько-то пройдя у неё на поводу. С её помощью мы уже получили довольно много важных данных, и, если считать, что, помогая ей, мы создаём себе союзника, то кмэл, как наш союзник, возможно будет очень полезен нам в борьбе с эльфами. Если же кмэл окажется врагом, то так тому и быть: будем воевать и с ним.
Если в плену у эльфов находилось вселенское зло, то, освободив его, мы обеспечили себя и мир проблемами на будущее. Великий тоже мог быть нашим союзником, но я его убил. Кмэл может оказаться врагом, а может оказаться союзником. Всюду выбор!
Вероятность того, что мы всё время делаем что-то неправильное, в любом случае есть, но она по совокупности мала. Кроме того, то, на что мы делаем ставки ведь тоже никуда не девается.
— А что такое вероятность? — всплыл в наших мыслях Косм.
— А ты чего подслушиваешь?! — выругался я. — Мы тут вместо того, чтобы делом заниматься, в какие-то дебри ушли! Препарируем вопросы доверия друг к другу! Непонятно зачем!
— Но ведь это ты начал! — укорила меня Эт.
— Это Инроргн! Чёрт бы его побрал! Так, заканчиваем болтовню, тащите все свои сознания в класс, будем… будем… будем дальнюю связь разрабатывать!
— Дальнюю связь? — хором переспросили Этера и Косм.
— Да. Я вообще не понимаю, почему вы не используете астрал для связи друг с другом?! Например, я нахожусь на другом конце планеты, хочу пообщаться с тобой. Я в астрале прихожу в наше убежище, ты тоже в него приходишь и мы общаемся. Почему это не используют?
— Потому что после такого разговора ты не сможешь определить с кем ты общался: со мной реальной или с твоим представлением обо мне.
— Хгм. А как отличить? — озадачился я.
— Встретиться позднее, в живую, и поговорить.
— Не, это нам не подходит. Нужно придумать способ как разобраться кто перед тобой: человек или представление.
— И что это может быть за способ?
— Хм… Например, пароль, который гарантировано никто не запомнит. Мы пишем тысячу различных чисел на листе бумаги. Делаем два одинаковых таких листа. Потом при встрече в астрале проверяем друг друга. Начинаем со случайного: я говорю тебе: десять, ты берёшь десятое число от начала блокнота и смотришь что в этой клетке написано. Например шесть. Смотришь шестнадцатое и говоришь мне: восемь. Я отсчитываю восемь клеток от шестнадцатого… И так далее. Шага три-четыре сверяемся: одинаковое ли у нас с тобой число или нет.
— А если не одинаковое?
— Это значит, что или произошла ошибка или перед тобой тот, кто не владеет такой же табличкой.
— А как проверить этот метод?
— Экспериментально, как же ещё?
— Давай лучше к шине CPU вернёмся!
Коллапс
Уже начав писать программу саморепликации для Орион-128 я понял, что здесь нужен реестр свободных CPU. Иначе никак не понять: есть ли в доступе свободные CPU и какой CPU выбрать для того, чтобы его запустить в работу.
Помимо такого реестра, ещё пришлось реализовать ассемблерную команду, выполняющую атомарный запуск CPU в работу.
Устранив эти недоработки, завершить программу саморепликации оказалось очень просто: программа плетения одного ядра, каждый раз, как доделает свою работу, заглядывала в список свободных CPU и запускала на них себя же.
Этот алгоритм продолжается, пока количество CPU не станет равно 2 в степени 128. Причём тот CPU что уже начал плестись, считается готовым, чтобы программа гарантировано могла остановиться.
Загрузив счётчик CPU начальным значением близким к 2 в 128 степени, мы сделали множество тестовых прогонов и сплели таким образом шестьдесят четыре стартовых ядра. Все произведённые тесты убедили нас, что всё работает и готово к запуску.
– “Помолясь усердно богу он отправился в дорогу” — процитировал я фразочку из детского стихотворения.
— Начинаем? — спросила Эт.
— Осталось два маленьких штриха.
— Какие?
— Подпустить огоньку и водичкой разбавить. Это же твоя идея.
— О, я и забыла!
— Я добавлю искорку, а ты льдинку?
— Ага!
Завершив все подготовительные работы, мы перезапустили Орион-128 и шестьдесят четыре ядра начали плести новые шестьдесят четыре ядра.
Итоговая сложность каждого CPU получилась довольно высокой: на плетение одного ядра тратится около двух часов процессорного времени. Из за того, что сложность некоторых