
Код. Тайный язык информатики
Мгновенная связь в глобальных масштабах, к которой мы так привыкли, – относительно недавнее изобретение. В начале XIX века можно было общаться либо в реальном времени, либо дистанционно, но то и другое сразу было невозможно. Дистанция реального общения была ограничена силой голоса (никаких звукоусилителей не существовало) и зоркостью собеседника (правда, вас могли рассматривать в подзорную трубу). Общаться на больших расстояниях можно было по переписке; для доставки писем требовались время и транспорт: лошади, поезда или корабли.
За многие десятилетия до изобретения, сделанного Морзе, предпринимались многочисленные попытки ускорить дистанционную коммуникацию. Самые примитивные варианты были связаны с выстраиванием цепочек людей-передатчиков. Они стояли на холмах и размахивали флажками, пользуясь семафорной азбукой. Существовали и более сложные конструкции с руками-манипуляторами, которые, в сущности, выполняли те же функции, что и люди-семафоры.
Идея телеграфа (в буквальном переводе с греческого «пишу далеко») в начале XIX века определенно витала в воздухе, и кроме Морзе за нее пытались браться другие изобретатели. Морзе приступил к экспериментам в 1832 году. В принципе, идея электрического телеграфа проста: на одном конце провода проделываем какие-то манипуляции, эффект которых наблюдается на другом конце. Именно это и получилось у нас, когда мы конструировали дальнобойный фонарик. Однако Морзе не мог пользоваться лампочкой в качестве сигнального устройства, поскольку саму лампочку изобрели лишь в 1879 году. Вместо этого он задействовал явление электромагнетизма.
Если взять железный прут, обмотать его несколькими сотнями петель тонкого провода, а затем пропустить по этому проводу ток, прут превратится в магнит. Тогда он станет притягивать другие железные и стальные предметы. (В электромагните хватает тонкого провода, чтобы возникало достаточно высокое сопротивление, не допускающее короткого замыкания). Если отрубить ток, то железный прут теряет магнитные свойства.

Электромагнит – основа телеграфа. Когда мы включаем или выключаем рычаг с одной стороны цепи, эффект наблюдается на другой стороне.
Первые телеграфы Морзе были сложнее более поздних моделей. Морзе считал, что телеграф должен выводить какую-то информацию на бумаге, как потом будут говорить компьютерщики, создавать физическую копию. Естественно, это не обязательно должны быть слова, поскольку это слишком сложно. Но что-то на бумаге нужно записывать, будь то каракули или точки и тире. Обратите внимание: Морзе не мог выйти из плоскости и думал о бумаге и чтении, точно как Валентин Гаюи полагал, что в книгах для слепых должны быть выпуклые буквы алфавита.
Хотя Сэмюэл Морзе уже в 1836 году уведомил патентное бюро о том, что изобрел рабочую модель телеграфа, лишь в 1843 году ему удалось добиться разрешения на публичную демонстрацию этого устройства в Конгрессе. Исторический день наступил 24 мая 1844 года, когда телеграфная линия связала Вашингтон и Балтимор и по телеграфу удалось успешно передать библейскую фразу: «Чудны дела Твои, Господи».
Обычный телеграфный «ключ» для передачи ссобщений выглядел примерно так:

Несмотря на вычурный вид, это был просто переключатель, оптимизированный для максимально скоростной работы. Чтобы подолгу работать с таким ключом, его было удобнее удерживать между большим, указательным и средним пальцами и стучать им вверх-вниз. Короткий удар ключом соответствовал точке из азбуки Морзе, длительное нажатие – тире.
С другой стороны цепи располагался приемник, представлявший собой электромагнит, управлявший металлическим рычагом (изначально электромагнит управлял пером). Пока механизм, оснащенный натянутой пружиной, медленно протягивал бумажный свиток через устройство, перо скакало по бумаге, выписывая на ней точки и тире. Человек, умеющий читать азбуку Морзе, переводил эти точки и тире в буквы и складывал слова.
Да, люди ленивы, и телеграфисты вскоре обнаружили, что код вполне можно переводить, прислушиваясь к длительности ударов пера. В итоге от пера отказались, заменив его более традиционным телеграфным клопфером, который выглядел примерно так.

При нажатии телеграфного ключа электромагнит в клопфере опускал подвижную планку и делал характерный «клик». Когда ключ отпускали, планка отскакивала обратно и издавала звук «клак». Быстрое «клик-клак» соответствовало точке, более долгое «клик-клак» – тире.
Ключ, клопфер, батарею и несколько проводов можно подключить друг к другу, как в случае со световым телеграфом, о котором мы говорили в предыдущей главе.

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

Для двунаправленной связи нам просто потребуются еще один ключ и передатчик. Примерно такое устройство мы и собирали.
Именно с изобретения телеграфа начинается эпоха современных телекоммуникаций. Впервые людям удалось общаться с собеседником за пределами видимости и слышимости, причем гораздо оперативнее, чем при отправке почты на галопирующей лошади. Гораздо интереснее, что в этом изобретении применялся двоичный код. В более современных средствах кабельной и беспроводной телекоммуникации (телефон, радио, телевизор) от двоичного кода отказались, и вновь он вошел в употребление с возникновением компьютеров, компакт-дисков, цифровых видеодисков, цифрового спутникового телевещания и телевидения высокого разрешения.
Телеграф Морзе превзошел другие модели отчасти потому, что хорошо работал при помехах на линии. Как правило, провод между ключом и клопфером оставался функционален. Другие телеграфные системы были не столь неприхотливы. Я уже упоминал, что большая техническая проблема, связанная с телеграфом, заключается в сопротивлении длинных проводов. Хотя на некоторых телеграфных линиях использовалось напряжение до 300 вольт, и они нормально работали на расстоянии до 480 километров, неограниченно длинных проводов не бывает.
Решение сконструировать систему ретрансляторов очевидно. Через каждые 320 километров можно усадить оператора, дать ему ключ и клопфер и поручить: «Получил сообщение – передай его следующему».
Теперь представьте, что телеграфная компания пригласила вас на работу в качестве такого оператора. Посадили вас где-нибудь в глуши между Нью-Йорком и Калифорнией в хижине, где есть только стол и стул. Через восточное окно в комнату протянут провод, подключенный к клопферу. Телеграфный ключ запитан от батареи, а из батареи в западное окно протянут второй провод. Ваша задача – принимать входящие сообщения из Нью-Йорка и пересылать их в Калифорнию.
Поначалу вы предпочитаете дождаться целостного сообщения, а затем переслать его. Записываете буквы, соответствующие щелчкам клопфера, а когда сообщение закончится – пересылаете, отстукивая ключом. Рано или поздно вы догадаетесь, что сообщение удобнее транслировать прямо в процессе получения, не записывая его целиком. Так экономится время.
Однажды вы пересылаете сообщение, смотрите, как скачет вверх-вниз планка клопфера, смотрите на собственные пальцы, как вы управляетесь с ключом. Снова смотрите на клопфер, снова на ключ – и осознаете, что ключ скачет в унисон с клопфером. Выходите на улицу, берете дощечку, находите шнурок и при помощи дощечки и шнурка связываете клопфер с ключом.

Теперь все работает само, а вы можете устроить свободный вечер и пойти порыбачить.
Интересно нафантазировано. В действительности Сэмюэл Морзе еще на самом раннем этапе концептуально представлял себе такое устройство. Мы изобрели устройство под названием повторитель, или реле. Реле напоминает клопфер, где входящий ток запитывает магнит, тянущий металлический рычаг. Однако рычаг – это элемент переключателя, соединяющего батарею с исходящим проводом. В таком случае слабый входящий ток «усиливается», и исходящий ток получается гораздо значительнее.
Схема реле выглядит так.

Когда входящий ток активирует электромагнит, последний подтягивает гибкую металлическую ленту, действующую как переключатель, пускающий исходящий ток.

Итак, телеграфный ключ, клопфер и реле соединяются примерно следующим образом.

Реле – замечательное устройство. Безусловно, это переключатель, но такой, который переводится из состояния «включен» в состояние «выключен» и обратно не человеческой рукой, а силой тока. При помощи такого прибора можно делать удивительные вещи, а телеграф в существенной степени позволяет смоделировать компьютер.
Да, реле слишком аппетитное изобретение, чтобы просто оставить его пылиться в музее связи. Заходим в музей, хватаем его, засовываем во внутренний карман пиджака и быстро ретируемся. Реле нам пригодится. Однако прежде чем приступить к работе с ним, нужно научиться считать.
Глава 7. Наши десять цифр
Идея, что язык – просто код, вполне логична. Многие как минимум пытались выучить иностранный язык в старших классах, поэтому сложно поспорить, что кошка в других языках может называться cat, gato, chat, Katze, kot или καττα.
Кажется, что числа менее пластичны в культурном контексте. Независимо от того, на каком языке мы говорим, как произносим числительные, практически любой собеседник на этой планете, скорее всего, будет записывать числа точно так, как и мы.
1 2 3 4 5 6 7 8 9 10
Не потому ли математику называют универсальным языком?
Несомненно, числа – самый абстрактный код, с которым приходится иметь дело в повседневной жизни. Видя число, мы не пытаемся его мгновенно с чем-то соотнести.
3
Можно представить три яблока или три других предмета, но с тем же успехом можно узнать из контекста, что речь идет о дне рождения ребенка, телевизионном канале, хоккейном счете, количестве чашек муки, нужных для приготовления пирога. Уже потому, что числа столь абстрактны, нам сложнее понять, что три яблока можно обозначить не только числом 3.
Большая часть этой главы и вся следующая помогут убедиться, что ровно такое же количество яблок можно обозначить и числом 11.
Для начала давайте расстанемся с мыслью, что в числе 10 есть нечто особенное. Неудивительно, что в большинстве цивилизаций сложились системы счисления на основе числа 10 (или 5). С глубокой древности люди считали на пальцах. Если бы у человеческой особи было восемь или двенадцать пальцев, то все счетные системы были бы немного иными.
Именно поэтому система счисления с основанием 10, также именуемая десятеричной, выбрана совершенно произвольно. Мы придаем десятке чисел поистине магическое значение и придумали для нее особые названия. Десять дней образуют декаду, десять десятилетий – век, десять веков – тысячелетие. Тысяча тысяч – это миллион, тысяча миллионов – миллиард. Все эти числа являются степенями числа 10.
101 = 10
102 = 100
103 = 1000 (тысяча)
104 = 10 000
105 = 100 000
106 = 1 000 000 (миллион)
107 = 10 000 000
108 = 100 000 000
109 = 1 000 000 000 (миллиард)
Большинство историков полагают, что числа изначально были придуманы для подсчета предметов, например людей, имущества и торговых сделок. Если у кого-то было четыре утки, то их можно было обозначить в виде четырех нарисованных уточек.

Наконец человек, чья работа заключалась в рисовании уток, подумал: «Зачем рисовать четырех уток? Не изобразить ли одну и обозначить, что на самом деле уток четыре, скажем, черточками?»

Когда потребовалось нарисовать 27 уток, черточки выглядели нелепо.

Подумалось: «Должен быть другой способ, лучше», – так появилась система чисел.
Из всех древнейших числовых систем до сих пор в ходу римские цифры. Они встречаются на циферблатах, ими выбивают даты на памятниках, нумеруют некоторые страницы в книгах, используют при подсчете некоторых элементов и – что наиболее раздражает – при указании информации об авторских правах в кинофильмах. (Иногда чтобы ответить на вопрос, в каком году был снят фильм, нужно молниеносно расшифровать какие-нибудь MCMLIII в хвосте титров.)
Двадцать семь уток римскими цифрами будет так.

Принцип довольно прост: X означает 10 черточек, V – пять.
Вот римские цифры, сохранившиеся до наших дней.
I V X L C D M
I – это единица; она похожа на черточку или один поднятый палец. V – это пятерка; возможно, этим символом обозначалась ладонь. Из двух V составляется X, то есть десятка.
L – это пятьдесят, C – буква, с которой начинается латинское centum, – сто, D – пять сотен, M – первая буква в слове mille – тысяча.
Хотя мы, возможно, с этим не согласимся, но на протяжении веков считалось, что римские цифры удобны для сложения и вычитания, именно поэтому они так долго использовались в Европе при ведении бухгалтерии. Действительно, при сложении двух римских чисел просто выписываются рядом все символы из двух этих чисел, а затем применяется всего несколько правил: пять I образуют V, две V–X, пять X–L и т. д.
Сложно умножать и делить числа, записанные римскими цифрами. Многие другие ранние числовые системы (например, греческая) аналогично не подходят для сложных математических действий. Древние греки разработали превосходную геометрию, которая до сих пор практически без изменений преподается в школах, но так ли известна древнегреческая алгебра?
Цифры, которыми мы пользуемся сегодня, называются индо-арабскими. Они возникли в Индии, но были занесены в Европу арабскими математиками. Особенно прославился персидский математик Мухаммад ибн Муса аль-Хорезми (от имени которого происходит слово «алгоритм»), написавший около 825 года книгу по алгебре, где пользовался индийскими цифрами. Эта книга была переведена на латынь около 1120 года, оказала большое влияние на Европу и стимулировала переход с римских цифр на современные.
Индо-арабская система чисел отличалась от более ранних.
• Индо-арабская система называется позиционной, то есть любая цифра может обозначать в ней разное количество в зависимости от того, в какой части числа стоит. Положение цифры в числе не менее (и даже более) важно, чем значение самой цифры. И в 100, и в 1 000 000 всего по одной единице, но всем известно, что миллион гораздо больше сотни.
• Практически во всех ранних системах счисления было нечто, чего нет в индо-арабской системе, а именно: отдельный символ для обозначения десятки. В нашей системе счисления такой символ отсутствует.
• С другой стороны, практически во всех ранних числовых системах отсутствовало кое-что, имеющееся в индо-арабской системе и, по сути, более важное, чем символ десятки, – символ нуля.
Да, ноль. Скромный ноль, несомненно, одно из важнейших изобретений в истории чисел и математики. Он обеспечивает позиционную запись, поскольку позволяет отличить 25 от 205 и от 250. Ноль упрощает многие математические действия, неудобные в непозиционных системах, особенно умножение и деление.
Вся структура индо-арабских чисел проясняется, если обратить внимание, как мы их произносим. Например, 4825: «Четыре тысячи восемьсот двадцать пять». Это означает:
четыре тысячи,
восемь сотен,
два десятка
и еще пять.
Либо можно разложить это число на компоненты, например:
4825 = 4000 + 800 + 20 + 5.
Или еще мельче, вот так:
4825 = 4 × 1000 +
8 × 100 +
2 × 10 +
5 × 1.
Или, воспользовавшись степенями десятки, записать следующее:
4825 = 4 × 103 +
8 × 102 +
2 × 101 +
5 × 100.
Напоминаю: любое число в степени 0 равно единице.
Каждая позиция в многозначном числе имеет определенное значение, как показано на следующей схеме. В семи окошках можно записать любое число от 0 до 9 999 999.

Каждая позиция соответствует степени десятки. Специального символа для десятки не требуется, поскольку 1 просто ставится в нужную позицию, а 0 используется в качестве символа-заполнителя.
Самое замечательное в данном случае в том, что дробные величины, обозначаемые цифрами после десятичной запятой, подчиняются той же закономерности. Число 42 705,684 равно:
4 × 10 000 +
2 × 1000 +
7 × 100 +
0 × 10 +
5 × 1 +
6 ÷ 10 +
8 ÷ 100 +
4 ÷ 1000.
Это число можно записать и без деления:
4 × 10 000 +
2 × 1000 +
7 × 100 +
0 × 10 +
5 × 1 +
6 × 0,1 +
8 × 0,01 +
4 × 0,001.
Или при помощи степеней десятки:
4 × 104 +
2 × 103 +
7 × 102 +
0 × 101 +
5 × 100 +
6 × 10–1 +
8 × 10–2 +
4 × 10–3.
Обратите внимание: сначала степень доходит до нуля, а затем получает отрицательные значения.
Известно, что 3 плюс 4 равно 7. Аналогично 30 плюс 40 равно 70, 300 плюс 400 равно 700 и 3000 плюс 4000 равно 7000. В этом и заключается красота индо-арабской системы. Складывая сколь угодно длинные десятеричные числа, мы фактически решаем эту задачу поэтапно. На каждом этапе мы всего лишь складываем однозначные числа. Именно поэтому кто-то давным-давно заставлял вас запоминать таблицу сложения.

Найдите в верхнем ряду и в левом столбце два числа, которые хотите сложить. Следуйте от них по прямой к центру, пока линии не пересекутся, и получите сумму. Например, 4 плюс 6 равно 10.
Аналогично, если требуется перемножить два десятеричных числа, выполняется более сложная процедура, которая тем не менее подразделяется на мелкие этапы, связанные с перемножением однозначных десятеричных чисел. Помните, в начальной школе мы должны были учить и таблицу умножения.

Главная прелесть позиционной нотации не в том, как хорошо она работает, а в том, как хорошо она применима в системах счисления, основанных не на десятке. Наша система счисления кому-то может показаться неудобной. Например, у большинства героев-мультяшек всего по четыре пальца на руке (или на лапе), поэтому им было бы сподручнее пользоваться системой с основанием 8. Довольно интересно следующее: большая часть правил, известных нам по десятеричной системе, вполне применима и в восьмеричной.
Глава 8. Альтернативы десятке
Число 10 – исключительно важное для человека. У большинства из нас по десять пальцев на руках и на ногах, и мы, конечно, предпочитаем, чтобы и тех, и других было по десять. Поскольку на пальцах удобно считать, человек выстроил всю систему счисления на основании числа 10.

Как упоминалось в предыдущей главе, такая система называется «система с основанием 10», или «десятеричная». Она кажется нам столь естественной, что поначалу сложно даже найти альтернативу. Действительно, когда видим число 10, нас тянет представить, что оно означает, например, десять уток.

Единственная причина, по которой возникает такая ассоциация, в том, что уток столько же, сколько и пальцев у нас на руках. Если бы у человека было иное количество пальцев, то и считали бы мы по-другому, и число 10 означало бы нечто иное. Например, число 10 может указывать и на такое количество уток.

Или так.

Или даже так.

Как только мы поймем, в каком случае 10 означает двух уток, можно будет приступать к разговору о представлении чисел при работе с переключателями, проводами, лампочками и реле (далее – и с компьютерами).
Что, если бы у людей было всего по четыре пальца на руке, как у мультяшек? Вероятно, нам бы даже не пришло в голову разрабатывать десятеричную систему счисления. Напротив, мы бы считали нормальным, естественным, разумным, неизбежным, неопровержимым и бесспорно верным построить систему счисления с основанием 8. Она называлась бы не десятеричной, а восьмеричной, или системой с основанием 8.
Если бы наша система счисления была построена на основании 8, то вот этот символ нам бы не требовался:
9.
Покажите этот символ мультяшке, и герой спросит: «Что это? Зачем это нужно?» Если задуматься, то и без этого символа можно обойтись:
8.
В десятеричной системе счисления нет специального символа для десятки, соответственно в восьмеричной системе счисления его нет для восьмерки.
В десятеричной системе счисления мы считаем: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, а потом 10. В восьмеричной системе считаем: 0, 1, 2, 3, 4, 5, 6, 7, а потом что? Цифры кончились. Остается лишь 10, и это правильный ответ. В восьмеричной системе за 7 следует 10. Но в таком случае 10 соответствует не десяти пальцам, которые есть на двух руках у человека. В восьмеричной системе 10 – это количество пальцев у мультяшек.

Давайте считать дальше на четырехпалых ступнях.

Имея дело с иными системами счисления, кроме десятеричной, можно не путаться, если называть число 10 «один-ноль». Аналогично 13 будет «один-три», а 20 – «два-ноль». Чтобы вообще обойтись без путаницы, можно говорить «два-ноль с основанием восемь» или «два-ноль восьмеричных».
Даже когда у нас кончатся пальцы на руках и ногах, можно и далее считать в восьмеричной системе. В принципе, процесс не отличается от счета в десятеричной, просто мы пропускаем все числа, в которых есть 8 или 9. Естественно, конкретные числа обозначают уже другие величины.
0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 72, 73, 74, 75, 76, 77, 100…
Последнее число называется «один-ноль-ноль». Это общее количество пальцев мультяшки, умноженное само на себя.
При записи десятеричных и восьмеричных чисел можно избежать путаницы, записывая все числа с нижними индексами, обозначающими принадлежность к той или иной системе счисления. Нижний индекс ДЕСЯТЬ означает «основание десять», то есть десятеричную систему, а нижний индекс ВОСЕМЬ – «основание восемь», или восьмеричную систему.
Итак, Белоснежка повстречала 7ДЕСЯТЬ, или 7ВОСЕМЬ, гномов.
У мультяшек по 8ДЕСЯТЬ, или 10ВОСЕМЬ, пальцев на руке.
Бетховен написал 9ДЕСЯТЬ, или 11ВОСЕМЬ, симфоний.
У человека 10ДЕСЯТЬ, или 12ВОСЕМЬ, пальцев на руках.
В году 12ДЕСЯТЬ, или 14ВОСЕМЬ, месяцев.
В двух неделях 14ДЕСЯТЬ, или 16ВОСЕМЬ, дней.
Паспорт выдают в 16ДЕСЯТЬ, или 20ВОСЕМЬ, лет.
В сутках 24ДЕСЯТЬ, или 30ВОСЕМЬ, часов.
В латинице 26ДЕСЯТЬ, или 32ВОСЕМЬ, букв.
В английской кварте 907ДЕСЯТЬ, или 1134, граммов.
В покерной колоде 52ДЕСЯТЬ, или 64ВОСЕМЬ, карт.
Самый известный адрес по Сансет-Стрип – 77ДЕСЯТЬ, или 115ВОСЕМЬ.
Длина поля для американского футбола – 91ДЕСЯТЬ, или 131ВОСЕМЬ, метров.