> ЖУРНАЛ ПРОГРАМИ:
> ЗБОЇВ НЕМАЄ, ВСЕ В НОРМІ
Сьогодні був довгоочікуваний вихідний. Я відпочивав, пив холодний сидр і ледаче дивився науково-популярний канал по кабельному телебаченню. Ведучий програми обговорював з різними вченими можливість того, що ми всі живемо в комп'ютерній симуляції. Спочатку це мене навіть розсмішило, але згодом я серйозно задумався про цю гіпотезу. Як не крути, все, що пов'язано з комп'ютерами та програмним забезпеченням це моя професійна спеціалізація.
Я працюю одним із провідних програмістів у великій київській компанії, яка продає свої обчислювальні потужності. Наші дата-центри розташовані по всій Україні, даючи змогу клієнтам розв'язувати цілу низку складних та ресурсомістких завдань: від візуальних ефектів для фільмів, до сучасних наукових досліджень.
Якщо припустити, що наш світ це комп'ютерна симуляція, то у всесвітнього комп'ютера так чи інакше мають бути певні обчислювальні обмеження. Щоб їх подолати, будь-яка складна програма або гра використовують різні методи оптимізацій. Часом досить такі примітивні, але найчастіше хитромудрі, що дають змогу досягти, на перший погляд, здавалося б неможливих результатів.
Наприклад, у будь-якій тривимірній комп'ютерній грі процесор і відеокарта прораховують тільки той конус видимості, який бачить перед собою персонаж. Просто немає ніякого сенсу витрачати обчислювальні потужності на те, що розташоване у нього поза полем зору, тобто з боків, вгорі та за спиною.
Тому теоретично всесвітній комп'ютер теж використовує певні принципи оптимізацій. Він не буде прораховувати обвалення каміння і звук його падіння десь у горах, коли це ніхто не бачить та не чує. Він також не обчислюватиме зворотний бік Місяця, поки його не сфотографує супутник або ж не побачить астронавт.
– Якщо людина є програмою, то як вона зможе визначити те, що вона саме програма, а не живий організм? – розмірковував я. – Вона повинна буде провести експеримент і якимось чином спробувати вплинути на гіпотетичний всесвітній комп'ютер. Результат цього впливу стане відповіддю на поставлене запитання. Наприклад, можна спробувати перевантажити циклічними обчисленнями центральний процесор, стерти щось в оперативній пам'яті або ж перешкодити роботі інших програм. У результаті обов'язково повинно буде щось статися: зависання, перезавантаження, або можливо навіть вихід з ладу всієї системи. Хоча останнє вкрай малоймовірне. Будь-яка складна система має потужні захисні механізми. Звичайно ж я в жодному разі не хочу влаштувати для усього людства "екзотичний" кінець світу, але сама по собі можливість перевірити всесвітній комп'ютер на вошивість була для мене вкрай приваблива.
● ● ●
Вечоріло. Сонце потрохи хилилося до горизонту. Я все ще неспішно розмірковував. Гіпотеза комп'ютерної симуляції мене повністю захопила.
Нарешті я зрозумів, що в мене є унікальний шанс провести практичний експеримент. Зірки сходилися одразу за двома критеріями: новий дата-центр моєї компанії та фінал Чемпіонату Європи з футболу.
Наша компанія щойно побудувала дата-центр у самому центрі Києва, який мав дійсно колосальну обчислювальну потужність. Монтажні роботи повинні були бути завершені десь за два тижні. Після цього команда з провідних програмістів, до складу якої входив і я, проведе різного роду стрес-тестування та виконає пусконалагоджувальні роботи.
Якраз у цей самий період відбуватиметься фінал Чемпіонату Європи з футболу на стадіоні "Олімпійський" всього лише за чотири квартали від нашого дата-центру. Стадіон вмістить більш ніж шістдесят тисяч уболівальників плюс буде вестися пряма телетрансляція, яку подивляться сотні мільйонів глядачів по всьому світу.
Такий шанс випадає лише раз у житті.
● ● ●
Наступного ж дня я приступив до написання програми. З алгоритмічної точки зору в ній не було нічого складного. Головна програма запускала і керувала безліччю підпрограм. Кожна підпрограма після запуску почне розшифровувати текст першого розділу книги "Туман" Стівена Кінга, закодований 1024-х бітним ключем.
Кількість запущених підпрограм постійно зростатиме, доки не буде досягнуто меж оперативної пам'яті та обчислювальних можливостей усіх серверів дата-центру.
При цьому головна програма контролюватиме всі підпрограми, виводячи на екран сумарне завантаження всіх процесорів, обсяг загальної вільної оперативної пам'яті, кількість запущених підпрограм та безліч інших параметрів.
Якщо ми справді живемо в симуляції й всесвітній комп'ютер не всесильний, то я повинен буду обов'язково помітити певні зміни. Швидше за все навколишній світ перестане коректно зображатися. На нього просто не вистачить обчислювальної потужності. Всесвітній комп'ютер не зможе одночасно, та до того ж ще й в одному місці, обробити колосальні обчислення дата-центру, фінал чемпіонату з футболу, світову телетрансляцію та ще й додатково без помилок прорахувати цілий мегаполіс. Так чи інакше я повинен буду побачити певні артефакти.
Через два дні я завершив розробку програми. Додатково один день зайняли тестування та відладка її роботи на моєму домашньому сервері. Нарешті все було готово.
Я домовився з колегами про те, що чергуватиму в дата-центрі під час фінального матчу Чемпіонату Європи. У нас в офісі майже всі були завзяті футбольні вболівальники, тому проблем не виникло.
● ● ●
До початку гри залишалося менш як п’ять хвилин. Я під'єднав флешку і запустив головну програму. На дисплеї з'явилося вікно інтерфейсу. Я натиснув кнопку введення, тим самим запускаючи безліч підпрограм.
Головна програма почала тиражувати воістину астрономічну кількість підпрограм, розподіляючи їх по серверах. Я додатково вивів на допоміжні дисплеї відео з чотирьох камер спостереження по периметру будівлі дата-центру і телетрансляцію фіналу Чемпіонату Європи.