Каменный муравейник. Оптимистическая антиутопия. Алексей Игоревич Поляков

Читать онлайн.
Название Каменный муравейник. Оптимистическая антиутопия
Автор произведения Алексей Игоревич Поляков
Жанр Приключения: прочее
Серия
Издательство Приключения: прочее
Год выпуска 0
isbn 9785005041227



Скачать книгу

* *

      Сергей был из породы людей, предпочитавших не начинать несколько дел одновременно, а, только до конца разобравшись с одним, браться за следующее. Поэтому лишь после того, как их с Ольгой совместными усилиями была решена первая загадка, он открыл второй файл – и сразу же облегченно выдохнул.

      Никаких издевательств над мозгом программиста в этот раз не предвиделось. Код был написан на классическом «Си»8, а его структура – безупречна, логична и в то же время предельно проста для понимания. Однако уже со второй страницы стали попадаться вставки на ассемблере9. Именно они застали Сергея врасплох. Ассемблер – язык хитрый: его программисты используют, когда возникает необходимость напрямую обратиться к «железу» компьютера. Не знать системы команд процессора, для которого писалась программа – значит, не понять в коде ни байта.

      Мнемонические10 обозначения команд неведомой системы, выстроенные в ровные столбцы, мелькали перед глазами Сергея. Хотя ему приходилось иметь дело с написанием драйверов для различных устройств и микроконтроллеров, по всему выходило, что именно этот процессор ему незнаком. Прежде всего, команд было непривычно много: Сергей насчитал их более трехсот, а ряд косвенных признаков говорил о том, что на самом деле их куда больше. Он ощутил себя Шампольоном перед Розеттским камнем, сопоставляющим греческий текст с таинственными египетскими значками и пытавшимся найти хоть какие-то ключи, чтобы, уцепившись за них, шаг за шагом расшифровать неизвестную письменность.

      Но для начала следовало полностью разобраться с кодом на «Си». К счастью, названия функций не восходили к древнеисландским корням, чего так опасался Сергей после решения первой задачи, а оперировали простыми английскими словами.

      Поставив «заглушки» на место ассемблерных вставок, Сергей прогонял код через отладчик раз за разом, экспериментируя со значением множества переменных: во всех случаях выполнение программы заканчивалось вызовом функции earthquake_in_guatemala11. Прошла уже неделя, но ничего определенного о других возможностях кода Сергей сказать по-прежнему не мог.

      – Ну, как успехи? – спросила Ольга над самым ухом Сергея, бесшумно подкравшись сзади и приобняв за плечи.

      Сергей вздрогнул.

      – Оль, не пугай так! – Сергей отвел взгляд от монитора и улыбнулся.

      – Ты же успешно справился с первым заданием. Может, стоит отправить его этому Троллю и написать, что понятия не имеешь, что нужно сделать, чтобы Господь Бог, писавший, видимо, второй код, не…

      – Не тряхнул как следует Гватемалу? Знаешь, если будет на то его воля – он, конечно, устроит там землетрясение, и нас с тобой не спросит. Но, во-первых, это больше похоже на игру. А, во-вторых… – чувствовалось, что Сергей подбирает слова.

      – Что – во-вторых?

      – Во-вторых, труды Чарльза Дарвина мне гораздо ближе и понятнее Библии.

      – Но ведь и в них много



<p>8</p>

C (Си) – язык программирования, разработанный Деннисом Ритчи в 1969—1973 годах. Синтаксис языка лег в основу многих современных языков программирования; в «чистом» виде в настоящее время используется редко.

<p>9</p>

Язык ассемблера – машинно-ориентированный язык программирования, каждая из команд которого имеет прямое соответствие с командой процессора. По этой причине, не бывает никакого «универсального» ассемблера: сколько разных процессоров – столько и разных языков. В этом его отличие от языков высокого уровня – таких, как C, C++, Java и пр.: программа, единожды написанная на последних, теоретически может быть переведена в машинный код любого процессора.

<p>10</p>

Мнемонический код – буквенное обозначение цифровой команды процессора, делающее программу на ассемблере более читаемой (по сравнению с машинным кодом).

<p>11</p>

Землетрясение в Гватемале (англ.)