Чтобы система учитывала все знаки препинания, в нее нужно включить последовательности из шести точек и тире. Таким образом получим 64 (2 × 2 × 2 × 2 × 2 × 2, или 26) дополнительных кода для суммарного множества из 2 + 4 + 8 + 16 + 32 + 64, или 126, символов. Для азбуки Морзе этого слишком много, поэтому большинство таких длинных кодов остаются неопределенными. Слово «неопределенный» в данном контексте указывает на код, который ничего не означает. Если бы вы, принимая азбуку Морзе, получили неопределенный код, то могли бы почти не сомневаться, что кто-то просто допустил ошибку.
У нас хватило смекалки построить эту небольшую формулу:
Количество кодов = 2количество точек и тире.
Так давайте продолжим нашу таблицу и посмотрим, сколько кодов получится из более длинных последовательностей точек и тире.
К счастью, нет необходимости выписывать все возможные коды, чтобы определить, сколько их будет. Достаточно умножать двойку на себя нужное количество раз.
Код Морзе называется двоичным (что буквально означает «два на два»), поскольку любой его элемент включает только два компонента: точку и тире. Такой код подобен монете, которая может упасть только решкой или орлом. Двоичные объекты (например, монеты) и двоичные коды (например, азбука Морзе) всегда можно описать в виде степеней двойки.
Проделанный нами анализ двоичных кодов – это простое упражнение в одной математической дисциплине, которая называется комбинаторикой, или комбинаторным анализом. Традиционно комбинаторный анализ особенно активно используется в теории вероятностей и статистике, поскольку связан с выявлением количества вариантов комбинаций различных объектов (например, монет или игральных костей). Он также помогает понять, как составляются и разбираются коды.
Глава 3. Брайль и двоичные коды
Сэмюэл Морзе не был первым, кому успешно удалось транслировать буквы письменного языка в интерпретируемый код. Он не был первым и среди тех, чья фамилия запомнилась как название кода, а не имя собственное. Такая честь выпала слепому французскому подростку, родившемуся примерно через 18 лет после Морзе, но оставившему след в истории гораздо раньше. О жизни Луи Брайля известно немногое, но это захватывающая история.
Луи Брайль родился в 1809 году во французском городке Кувре, в 40 километрах к востоку от Парижа. Отец мальчика был шорником. Будучи трех лет от роду (а в таком возрасте дети не должны играть в отцовской мастерской), Луи случайно ткнул себе в глаз шорным ножом. В ране начался процесс заражения, инфекция распространилась и на второй глаз, и мальчик полностью ослеп. Наверняка его ждала жизнь в невежестве и бедности (как и большинство слепцов в те времена), но Луи проявил незаурядный ум и тягу к знаниям. Благодаря участию деревенского пастора и школьного учителя Луи ходил в сельскую школу вместе с другими ребятами, а в возрасте десяти лет отправился в Парижский государственный институт для слепых детей.
Разумеется, одна из главных сложностей при обучении незрячих в том, что они не могут читать печатные книги. Основатель этой парижской школы Валентин Гаюи (1745–1822) изобрел систему тисненых выпуклых букв для чтения их на ощупь. Но пользоваться системой было сложно, и вышло только несколько книг, напечатанных таким методом. Гаюи не смог посмотреть глубже. Для него буква А оставалась буквой А. Она должна была выглядеть (ощущаться) как А. (Общаясь на языке световых сигналов, мы пробовали рисовать буквы в воздухе и убедились, что такой прием неработоспособен.) Вероятно, Гаюи не догадался, что некий код, сильно отличающийся от печатного алфавита, оказался бы для незрячих удобнее.
Прообраз такого альтернативного кода возник в достаточно необычном контексте. Шарль Барбье, капитан французской армии, изобрел систему записи под названием écriture nocturne, или «ночная азбука». В ней использовались узоры выпуклых точек и тире на плотной бумаге. Предполагалось, что солдаты могли бы обмениваться в темноте такими записками, когда требовалось соблюдать тишину. Писать точки и тире можно было специальным стилусом, вроде шила. Затем выпуклые точки можно было читать на ощупь. Недостаток системы Барбье заключался в ее чрезмерной сложности. Комбинации точек и тире соответствовали звукам, а не буквам алфавита, поэтому одно слово часто могло шифроваться разными кодами. Система хорошо работала для обмена короткими сообщениями в полевых условиях, но решительно не подходила для сравнительно крупных текстов, тем более книг.
Луи Брайль познакомился с системой Барбье в двенадцатилетнем возрасте. Ему понравились выпуклые точки не только потому, что они легко читались на ощупь, но и потому, что их было просто писать. Ученик в классе, вооружившись бумагой и стилусом, в самом деле мог записывать и читать такие сообщения. Луи Брайль постарался усовершенствовать эту систему, и через три года (когда ему было пятнадцать) в общих чертах составил собственную, основы которой применяются и сегодня. Много лет такая система использовалась лишь в школах, но постепенно вошла в широкое употребление. В 1835 году Брайль подхватил туберкулез, от которого и умер в 1852 году, в возрасте 43 лет.
Сегодня усовершенствованные варианты системы Брайля соперничают с аудиокнигами, обеспечивая незрячим доступ к письменной информации. Тем не менее шрифт Брайля по-прежнему незаменим и является единственной письменностью, доступной слепоглухим. Шрифт Брайля применяется даже в общественных местах, например в лифтах и банкоматах.
В этой главе мы препарируем код Брайля и разберемся, как он работает. Мы не будем учить код Брайля или что-то запоминать. Мы лишь попробуем на этом примере лучше понять его природу.
В шрифте Брайля каждый символ, присутствующий в обычном письменном языке, то есть буквы, цифры и знаки препинания, кодируется в виде одной или нескольких точек в клетке размером две на три точки. Как правило, точки в клетке нумеруются от 1 до 6.
В настоящее время существуют специальные пишущие машинки – брайлевские принтеры, выбивающие точки брайлевского шрифта на бумаге.
Поскольку книга получилась бы запредельно дорогой, если бы хоть пару страниц набрали шрифтом Брайля, я пользовался нотацией, традиционно применяемой для передачи азбуки Брайля при печати. В такой нотации отображаются все шесть точек в клетке. Жирные точки – это выпуклости на бумаге, мелкие – плоские элементы клетки. Например, в следующем брайлевском символе точки 1, 3 и 5 выпуклые, а 2, 4 и 6 – нет.
На данный момент нас должно заинтересовать, что эти точки двоичны. Любая точка может быть либо выпуклой, либо плоской. Таким образом, шрифт Брайля подчиняется тем же принципам, которые знакомы нам из азбуки Морзе и комбинаторного анализа. Известно, что в клетке шесть точек, и каждая точка может быть плоской или выпуклой, поэтому общее число комбинаций, которые складываются из шести плоских или выпуклых точек, равно 2 × 2 × 2 × 2 × 2 × 2, или 26, или 64.
Как видите, в системе Брайля можно представить 64 уникальных кода.
Если в шрифте Брайля используется менее 64 кодов, логично спросить, почему не все возможные варианты в ходу. Если в шрифте Брайля найдется более 64 возможных кодов, значит, сбоит либо наш разум, либо фундаментальные математические истины из разряда «два плюс два равно четырем».
Приступая к изучению шрифта Брайля, рассмотрим, как в нем записываются строчные буквы латиницы.
Например, английская фраза You and me[4] записывается следующим образом.
Важно: между клетками, соответствующим буквам в слове, ставятся небольшие пробелы; более широкий пробел (в сущности, целая клетка, в которой нет выпуклых точек) соответствует пробелу между словами.
Именно такова основа шрифта Брайля в редакции самого Брайля – как минимум что касается латиницы. Луи Брайль также разработал коды для букв с диакритическими знаками (они часто встречаются во французском языке). Обратите внимание: здесь нет кода для буквы w, которая в классическом французском не используется. (Не волнуйтесь, и эта буква вскоре появится.) Пока мы учли всего 25 из 64 возможных кодов.
Внимательно присмотревшись к вышеприведенным строчкам, можно заметить, что в них прослеживается закономерность. В первой строчке (от a до j) в каждой клетке используются лишь четыре верхние точки: 1, 2, 4 и 5. Второй ряд точно такой же, как первый, но в нем есть и точка 3. Третий ряд подобен первым двум, но в нем мы видим не только точку 3, но и точку 6.
Со времени Луи Брайля его шрифт дополняли различным образом. Современная система, при помощи которой обычно записываются подобные английские тексты, называется «сокращенный Брайль». В сокращенном Брайле много упрощений, помогающих беречь деревья и ускорять чтение. Например, если код некоторой буквы стоит обособленно, то он означает распространенное слово. В следующих трех рядах приведены такие коды для целых слов.
Таким образом, фразу You and me сокращенным Брайлем можно записать так.
Вот мы и описали 31 код: пробел без точек, который ставится между словами, и три строки по десять кодов, используемых для обозначения букв и слов. Мы до сих пор и близко не израсходовали 64 теоретически доступных кода. Как мы убедимся, в сокращенном Брайле ни один не остался без дела.
Во-первых, можно использовать коды букв a – j, добавляя к каждому из них выпуклую точку 6. Эти коды применяются в основном для сокращения в слове букв, для буквы w и другого сокращения слов.
* Will – вспомогательный глагол для образования будущего времени.
Например, слово about[5] можно записать сокращенным Брайлем вот так.
Во-вторых, можно взять коды букв a – j и «опустить» их так, чтобы использовались лишь точки 2, 3, 5 и 6. Этими кодами обозначаются некоторые знаки препинания и сокращения, в зависимости от контекста.
Первые четыре приведенных кода – это запятая, точка с запятой, двоеточие и точка. Обратите внимание: как открывающая, так и закрывающая скобки обозначаются одним и тем же кодом, а вот коды для открывающей и закрывающей кавычки отличаются.
Пока мы использовали 51 код. Далее приведены шесть кодов, представляющих различные незадействованные комбинации точек 3, 4, 5 и 6. С их помощью записывают сокращения и некоторые дополнительные знаки препинания.
Код ble очень важен: если это не часть слова, то он означает, что следующие далее коды должны интерпретироваться как числа. Числовые коды точно такие же, как и для букв a – j.
Следовательно, нижеприведенная последовательность означает 256.
Если вы следите за нитью повествования, то помните, что до максимума (64) нам остается еще семь кодов. Вот они.
Первый код (выпуклая точка 4) – индикатор ударения. Остальные используются в качестве префиксов при некоторых сокращениях, а также в иных целях. Например, при выпуклых точках 4 и 6 (пятый код в этом ряду) код может означать либо десятичную запятую (для чисел), либо логическое ударение – в зависимости от контекста.
Наконец (если вам не терпится узнать, как в шрифте Брайля записываются заглавные буквы), у нас есть выпуклая точка 6. Это индикатор заглавной буквы. Следующая после такого символа буква будет в верхнем регистре. Например, имя создателя этой системы записывается так.
Здесь индикатор заглавной буквы, буква l, буквосочетание ou, буквы i и s, пробел, еще один индикатор заглавной буквы, а далее – буквы b, r, a, i, l, l и e (на практике эта запись может быть еще короче: отбрасываются две последние буквы, так как они не произносятся).
Итак, мы рассмотрели, как шесть двоичных элементов (точек) дают 64 возможных кода – и не больше. Получается, что многие из этих кодов выполняют двойную работу в зависимости от контекста. Особенно интересны «числовой» и «буквенный» индикаторы (при этом второй отменяет первый). Эти коды меняют семантику других кодов – тех, что следуют за ними: с букв на цифры и обратно с цифр на буквы. Подобные коды часто именуются кодами старшинства или переключения. Они меняют семантику всех последующих кодов до тех пор, пока переключение не будет отменено.
Индикатор заглавной буквы означает, что следующая (и только следующая) буква должна быть в верхнем, а не в нижнем регистре. Такой код принято называть экранирующим, и он «защищает» последовательность других кодов от банальной, рутинной семантики и обеспечивает им новую интерпретацию. Читая следующие главы, убедимся, что коды переключения и экранирующие коды постоянно используются в ситуациях, когда письменный язык нужно представить в двоичном виде.
Глава 4. Устройство фонарика
Фонарик многофункционален: чтение под одеялом и обмен зашифрованными сообщениями – лишь два наиболее очевидных варианта его применения. Обычный хозяйственный фонарик может сыграть ключевую роль в наглядном уроке о таком феномене, как электричество.
Электричество – удивительное явление. Сегодня оно используется повсеместно, но при этом окутано тайной даже для тех, кто в нем якобы разбирается. Боюсь, нам так или иначе придется подступиться к этой теме. К счастью, чтобы разобраться, как электричество используется в компьютерах, потребуется понять лишь некоторые базовые концепции, связанные с ним.
Определенно, фонарь – один из простейших электроприборов, имеющийся почти в каждом доме. Можно разобрать обычный фонарик и убедиться, что он состоит из пары батареек, лампочки, выключателя и кое-каких металлических деталей. Все это находится в пластиковом корпусе.
Можно сконструировать заправский светильник, оставив всего две составляющие из этого комплекта: батарейки и лампочку. Кроме того, вам потребуются короткие изолированные проводки (оголенные на кончиках) и умелые руки, чтобы все это держать вместе.
Обратите внимание на два оголенных кончика проводов в правой части схемы. Это наш переключатель. Исходя из того, что батарейки у нас хорошие и лампочка не перегорит, достаточно коснуться одного проводка другим – и загорится свет.
Мы только что сконструировали простую электрическую цепь. Первым делом необходимо отметить, что эта цепь представляет собой круг. Лампочка зажжется лишь в том случае, если контур от батареек к лампочке, далее к переключателю и обратно к лампочке будет непрерывным. Достаточно любого разрыва – и лампочка погаснет. Выключатель нужен для того, чтобы управлять этим процессом.
Круговая структура подсказывает, что по электрической цепи движется нечто подобное воде, текущей в трубах. Сравнение с водой и трубами довольно распространено при описании сути электричества, но, как и любая аналогия, оно рано или поздно себя исчерпает. Электричество не похоже ни на что иное во Вселенной, его требуется описывать в специфических терминах.
Господствующая научная мудрость, характеризующая природу электричества, называется электронной теорией, согласно которой электричество возникает в результате движения электронов.
Известно, что любая материя – вещества, которые можно видеть и осязать, – состоит из крошечных частиц, именуемых атомами. В состав каждого атома входят более мелкие частицы трех типов: нейтроны, протоны и электроны. Атом можно изобразить как миниатюрную Солнечную систему, где нейтроны и протоны связаны в ядре, а электроны вращаются вокруг ядра, как планеты вокруг Солнца.
Необходимо отметить, что вы бы увидели несколько иную картину, будь у вас достаточно мощный микроскоп, позволяющий рассматривать отдельные атомы, но «планетарная» модель довольно удобна.
В атоме, показанном на этой странице, три протона, три электрона и четыре нейтрона, значит, перед нами атом лития. Литий – это один из 118 известных элементов, каждый из которых обладает собственным атомным числом от 1 до 118. Атомное число указывает, сколько протонов в ядре у каждого атома этого элемента, а также сколько электронов в таком атоме. Атомное число лития равно трем.
Атомы могут образовывать химические связи с другими атомами, объединяясь в молекулы. Как правило, молекулы обладают совсем иными свойствами, нежели атомы, из которых они состоят. Например, в молекуле воды два атома водорода и один атом кислорода (поэтому химическая формула воды H2O). Очевидно, вода существенно отличается как от водорода, так и от кислорода. Молекулы поваренной соли состоят из атома натрия и атома хлора, но ни одно из этих веществ не показалось бы вам особо аппетитным, если бы его добавили в картошку фри в чистом виде.
Водород, кислород, хлор, натрий – это всё элементы. Вода и соль – соединения. Однако водно-соляной раствор – это смесь, а не соединение, поскольку в растворе вода и соль сохраняют присущие им свойства.
Количество электронов в атоме обычно равно количеству протонов. Случается, что электроны вышибаются из атома. Именно так и возникает электричество.
Слова «электрон» и «электричество» происходят от древнегреческого ηλεκτρον (читается [электрон]).
Может показаться, что это слово означает «крошечная невидимая штука». На самом деле ηλεκτρον в переводе с греческого – «янтарь», прозрачная окаменевшая древесная смола. Такая необычная этимология возникла потому, что древние греки пробовали натирать янтарь шерстяной тканью, а при этом возникает статическое электричество. Когда мы потираем янтарь шерстяной тряпочкой, она вытягивает из камня электроны. В шерсти возникает избыток электронов по сравнению с протонами, а в янтаре электронов становится слишком мало. Более современный подобный эксперимент связан с обычным ковром: если пошаркать по нему, палас захватывает электроны из подошв обуви.
У протонов и электронов есть свойство под названием «электрический заряд». Считается, что у протонов положительный заряд (+), а у электронов – отрицательный (–). Нейтроны нейтральны, у них нет заряда. Хотя мы и обозначаем протоны и электроны символами «плюс» и «минус», эти символы в данном случае не имеют арифметической семантики и не означают, что у протонов есть что-то, чего у электронов нет. Противоположные характеристики проявляются именно в том, как протоны и электроны соотносятся друг с другом.
Протоны и электроны наиболее «спокойны» и стабильны, когда в равных количествах сосуществуют рядом. Если возникает дисбаланс между протонами и электронами, он самопроизвольно выправляется. После того как ковер наберет электронов из ваших подошв, ситуация выровняется, стоит вам коснуться его, – проскочит искра. Такая искра статического электричества возникает в результате движения электронов, которые проделывают практически круговой маршрут – от ковра через все тело, затем опять к подошвам.
Взаимосвязь между протонами и электронами можно описать иначе: противоположные заряды притягиваются, одноименные – отталкиваются. Правда, схема атома производит иное впечатление. Кажется, что протоны сосредоточены в ядре и притягиваются друг к другу. Протоны удерживаются вместе благодаря силе более мощной, чем отталкивание одинаковых зарядов, – сильному взаимодействию.
Чтобы подступиться к сильному взаимодействию, требуется расщепить ядро, в результате чего высвободится ядерная энергия. А мы просто балуемся с электронами, чтобы получить электричество.
Статическое электричество – это не просто искорки, проскакивающие, если дотронуться ладонью до дверной ручки. Во время грозы в нижней части тучи накапливаются электроны, а в верхней возникает дефицит электронов; рано или поздно бьет молния, и баланс восстанавливается. Молния – это множество электронов, которые с огромной скоростью летят из одной точки в другую.
Электричество в проводах фонарика, разумеется, гораздо благовоспитаннее, чем в искре или в молнии. Лампочка горит ровно и непрерывно[6], поскольку электроны не просто скачут с места на место. Когда один атом в электрической цепи теряет электрон, отдавая его другому атому, он сразу же захватывает электрон от соседнего атома, а тот – от следующего и т. д. Электричество в цепи – это переход электронов от атома к атому.
Все это происходит не само по себе. Нельзя просто взять, соединить проводами всякое барахло и рассчитывать, что в нем потечет электричество. Нужен какой-то инициирующий фактор, который запустит движение электронов в цепи. Возвращаясь к схеме простейшего фонарика, можно предположить, что электричество возникает не в проводах и не в лампочке. По-видимому, источником электричества являются батарейки.
Почти любому известно хотя бы кое-что о типах батареек, используемых в фонариках:
• батарейки цилиндрические бывают разных размеров, например D, C, A, AA, AAA;
• независимо от размера на любой батарейке указана величина 1,5 вольта;
• один кончик батарейки плоский, на нем стоит знак «–»; на другом конце небольшой выступ и знак «+»;
• если вы хотите, чтобы прибор работал нормально, правильно вставляйте батарейки, чтобы плюсы и минусы располагались верно;
• мы полагаем, что батарейки каким-то хитрым образом «дают» электричество.
Во всех батарейках происходят химические реакции: либо одни молекулы распадаются на другие, либо одни молекулы соединяются с другими, образуя третьи. Химические вещества в батарейке подбираются так, чтобы в результате реакции между ними с минусового конца образовывались свободные электроны (этот конец называется «отрицательная клемма» или «катод»), которые так нужны на плюсовом конце батарейки (он же «положительная клемма» или «анод»). Таким образом химическая энергия преобразуется в электрическую.
Химическая реакция может протекать лишь при условии, что лишние электроны каким-то образом будут извлекаться с отрицательного полюса батареи и доставляться обратно к положительному. Если батарейка ни к чему не подключена, ничего особенного в ней происходить не будет. (На самом деле химическая реакция там все-таки идет, но очень медленно.) Химические реакции разгоняются лишь при наличии электрического тока, несущего электроны с отрицательного конца батарейки к положительному. Электроны движутся по этой цепи против часовой стрелки[7].
В этой книге красным цветом обозначаются провода, по которым течет электричество.
Электроны из химикатов, содержащихся в батарейке, могли бы свободно смешиваться с электронами из медного провода, если бы не один простой факт: все электроны, где бы они ни находились, идентичны. Электрон из атома меди ничем не отличается от любого другого электрона.
Обратите внимание: обе батарейки ориентированы в одном и том же направлении. Положительный полюс нижней батарейки принимает электроны с отрицательного полюса верхней батарейки, как будто мы сложили из двух маленьких батареек одну большую, общая мощность которой составляет не 1,5, а 3 вольта.
Если повернуть одну из батареек в противоположную сторону, то электрическая цепь будет разорвана.
Для химических реакций двум положительным полюсам батареи нужны электроны, но поскольку полюса подсоединены друг к другу, путь для электронов закрыт. Если соединены два положительных полюса батарейки, нужно соединить и два отрицательных.