С точки зрения математики кодирование – это превращение одного набора символов в другой по определённым правилам.
Если правильно «закодировать» (ещё говорят – «запрограммировать») команды и данные в виде ноликов и единичек, то компьютер их поймёт. Как именно это сделать? По специальным правилам, которые у каждого процессора свои. Получившиеся нолики и единички, которые «понимает» процессор, называются машинным кодом. Каждый набор правил – это особый алгоритм. Запасшись терпением, программу из ноликов и единичек можно составить самому и записать ручкой в тетради. Но у компьютера это получится гораздо быстрее.
Люди пишут программы на легко читаемых языках программирования, таких как С или FORTRAN; оба эти языка состоят из обычных английских слов, так что нет нужды возиться с ноликами и единичками. Существует много разных языков программирования, на которых мы можем «говорить» с ком пью те ром. Под «компьютерным кодом» мы обычно подразумеваем программу, написанную на одном из таких языков.
Компиляторы – это специальные программы, которые преобразуют программы на высокоуровневых языках программирования в понятный процессору машинный код. Машинный код обычно записывают в шестнадцатеричной системе счисления.
Взломать компьютерный код – значит добиться сбоя в программе или сделать нечто совершенно непредвиденное. Так, злоумышленники в интернете из хулиганских или преступных побуждений пытаются получить несанкционированный доступ к компьютеру жертвы (например, чтобы завладеть данными кредитной карты и украсть с неё деньги).
Алгоритмы
Алгоритм – это пошаговый процесс с чёткими правилами, объясняющими, как на каждом шагу преобразовать один набор символов в другой. Например, мы учимся умножать или делить в столбик по шагам – эти шаги и есть алгоритм умножения или деления в столбик. Для любого примера на умножение или деление больших чисел алгоритм работает одинаково: на каждом шагу промежуточный результат записывается на новой строчке до тех пор, пока не будет получен ответ.
Алгоритмы существуют давно. Например, Евклид описал алгоритм нахождения наибольшего общего делителя двух целых чисел примерно за 300 лет до нашей эры (хотя сам алгоритм, возможно, ещё старше).
Слово «алгоритм» происходит от имени персидского математика IX века Аль-Хорезми, который, в частности, описал алгоритмы арифметики, а также внёс большой вклад в развитие алгебры.
В XX веке математики пытались дать точное определение алгоритма на языке математики, но все их попытки оказались эквивалентны уже знакомому нам определению: «То, что может машина Тьюринга». Ни один компьютер пока не способен на большее.
Любая компьютерная программа сводится к алгоритму, который меняет значения битов в памяти компьютера на каждом цикле процессора.
– А мы смогли бы пользоваться «Энигмой», мы с Анни? Смогли бы посылать друг другу шифровки? – спросил Джордж.
– «Энигма» не умеет посылать сообщения. – Берил допила свой херес. – Она их зашифрует и расшифрует, но вам понадобится ещё и средство передачи. Раньше было принято передавать шифрованные сообщения по радио с помощью азбуки Морзе. Но в наши дни имеются технологии, которые позволяют делать и то и другое: ежесекундно зашифровывать миллиарды сообщений и рассылать их по всей планете по проводам или с помощью радиоволн; это делают компьютеры. А потом уже другие компьютеры расшифровывают эти сообщения. Любое электронное письмо, любой поисковый запрос, любой текст в командной строке – это зашифрованное сообщение. Некоторые шифры, правда, предназначены для того, чтобы их понимали все, а то в интернете сам чёрт сломал бы ногу. Но всё же, покупая в интернет-магазине, например, носки, вы наверняка захотите, чтобы как минимум номер вашей кредитной карты был зашифрован, иначе кто-то может подглядеть его и украсть ваши денежки. Представьте себе, сколько в мире компьютеров, от которых зависят важнейшие области человеческой жизни – возьмём хотя бы электричество, транспорт, оборону. Во всех этих компьютерах используется шифрование, чтобы какие-нибудь злоумышленники не сумели помешать их работе. Тот, кто взломает этот шифр, сможет шантажировать весь мир, навязывая ему свои условия.
– Не подсказывайте им, – деланно строгим голосом сказал Эрик. – Не хватало ещё, чтобы эти двое пробурились в какую-нибудь сверхсекретную правительственную программу и поставили на уши все спецслужбы.
– О, это было бы восхитительно! – воскликнула Берил. – Надеюсь, они так и сделают!
Джордж многозначительно глянул на Анни: эта Берил, кажется, может много о чём порассказать.
– Да уж, Берил, хороший пример вы подаёте детям, – проворчал Эрик, но голос у него при этом был не сердитый, скорее, наоборот, весёлый. – Ну-ка, уматывайте отсюда оба, пока Берил не записала вас в отряд юных секретных агентов.
– Ну па-аап, – заныла Анни. Ей как раз стало до того интересно, что она даже телефон отложила. – Я же и хочу быть секретным агентом!
И работать в разведке! Это моя главная, самая заветная мечта и цель! Можно мы останемся? Ну па-аап!
– Хватит нупапать! – твёрдо сказал Эрик. – Идите и займитесь чем-нибудь таким, из-за чего в мою дверь не постучатся парни из контрразведки. Я учёный, а не Джеймс Бонд, попрошу не путать одно с другим.
– Анни, уже темнеет! – сказал Джордж, глянув в окно. – Пойдём в мой дом на дереве и сфотографируем Сатурн.
– Отличная идея, – подхватил Эрик. – Фотографирование далёких планет – это занятие, при котором даже вы вряд ли умудритесь вляпаться в какую-нибудь историю…
Берил рассмеялась.
– Но попробовать-то можно, – сказала она и подмигнула Анни и Джорджу. – Если не вляпываться время от времени в истории, жить гораздо скучнее.
– Бегите, дети! – сказал Эрик раздражённо.
На этот раз раздражение было непритворным.
Глава третья
Анни и Джордж послушно вышли из гостиной – и тут же перешли на бег.
– Кто второй, – начал Джордж, – тот…
– Гнилой банан! – выкрикнула Анни.
– Тухлое яйцо! – завопил Джордж.
Они мчались по саду, толкаясь на бегу, – каждый хотел первым пролезть в дыру в заборе.
До дерева они добежали одновременно. Анни ухватилась за лестницу, а Джордж устремился вверх по верёвке, как бывалый моряк. На платформу они запрыгнули одновременно и хором крикнули:
– Я первый!
– Я первая!
Домик раскачивался туда-сюда, будто корабль в шторм, и они ухватились друг за друга, чтобы не сверзиться с края платформы в тёмный сад, как в бушующее море.
– Эй! Стой! – приказала Анни платформе, которая уже почти пришла в равновесие.