Теперь стало всё совершенно понятно. А папа сказал:
— В твоих наведённых воспоминаниях должно быть что-то про топологию, верно?
— Да, ты написал, что это наука о неизменяемых свойствах объектов при их деформации.
— Точно, но только при непрерывной деформации, без разрывов и склеиваний. Так вот, сейчас мы сделали топологическое преобразование схемы — и всё встало на свои места. Ведь правда?
— Да, так намного понятнее.
— Так вот что я хочу сказать. В математике много странных и непонятных на первый взгляд вещей. Топология — это одна из таких вещей, поскольку вне прикладного уровня она очень абстрактная. Иногда даже сложно понять, о чём говорится в топологических теоремах (например, есть теорема о неподвижной точке, теорема о раскраске карт, а есть и о волосатом шаре). Но применять её можно во многих областях жизни…
— Ты призываешь меня стать математиком?
— Я бы хотел, чтобы ты очень старательно изучал математику, поскольку она — базовый язык для любой науки. Будешь понимать математику, значит, сможешь освоить и любую другую область знания.
— Понятно. Но ты же поможешь мне в учёбе?
— Конечно!
Утром папа собрал нас с Катей и сказал, что готов заниматься с нами всякими интересными задачами. У нас будет этакий летний кружок по изучению того, что вряд ли расскажут в школе. Мы, конечно же, согласились.
И у нас началось первое занятие, посвященное использованию нашего нового телеграфа. Папа сразу ввёл два новых понятия:
— Кирилл, представь, что ты хочешь отправить Екатерине сообщение при помощи этого устройства. Как ты это сделаешь?
Новые знания, загруженные мне в голову, конечно же, подсказали ответ:
— Для начала мы договоримся о способе кодирования, а потом я передам сообщение, закодировав его этим способом.
Катя явно не поняла, о чём речь. Тогда папа начал объяснять:
— Смотри, в обычной жизни мы записываем и передаём сообщения при помощи букв и других знаков. Но в сделанном нами телеграфе их нет. Как же передавать сообщения?
— Например, азбукой Морзе.
Папа даже щёлкнул пальцами от удовольствия. Он спросил, откуда Катя знает этот способ, а она сказала, что иногда учитель по математике у нее в школе рассказывает всякие интересные вещи. Отец авторитетно покивал и сказал, чтобы она слушала такого учителя, поскольку он, скорее всего, сможет хорошо преподать математику.
Потом он продолжил:
— Да, азбука Морзе — это один из возможных вариантов, но далеко не лучший. У него, конечно, есть свои преимущества, но давай подумаем еще. У нас есть ключ. Им можно включать и выключать лампочку со звонком. Интересно то, что мы можем подавать сигнал любой длительности: хотим, включим на секунду, хотим — на десять. Фактически это даёт нам неограниченное количество символов. Понятно, что такое «символ»?
Я сказал:
— Это минимальная единица кодирования информации, возможная на устройстве.
Отец кивнул и продолжил:
— Какой самый простой способ кодирования можно создать, используя длительность включения сигнала?
Я предложил:
— Можно каждой букве дать номер от 1 до 33, а пробел пусть будет 34, и тогда можно передавать буквы по номерам, а сам номер кодировать длительностью сигнала в секундах.
Отец одновременно улыбнулся и укоризненно покачал головой:
— Ты прекрасно знаешь, что пробел в сообщениях встречается чаще всего, так что использовать для его кодирования число 34 просто неэкономно. Это во-первых. Во-вторых, а так ли уж нужен пробел?
Действительно, ведь при помощи шифромашины мы с Марком передавали сообщения без пробелов. Тем временем отец продолжил:
— Но проблема даже не в этом. Нужно будет очень точно отмерять секунды, а при длинной передаче внимание оператора наверняка собьётся, и декодировать сигнал будет трудно. Давайте придумаем что-то более компактное и удобное для распознавания. Екатерина, ты знакома с двоичной системой счисления?
— Нет.
— Хорошо. Тогда как ты думаешь, почему мы считаем до десяти, то есть почему используем для записи чисел десять цифр от 0 до 9?
— Наверное, потому, что у нас десять пальцев на руках.
— Ты права, есть такая гипотеза. Но если подумать, то число «10» ничем не лучше и не хуже других чисел. Просто мы привыкли, что у нас именно десять цифр. А что получится, если использовать только две цифры: 0 и 1?
Катя нахмурилась. Я уже знал об этой системе, поэтому дал своей знакомой возможность поразмыслить самостоятельно. Она думала, но, видимо, в голову ничего не приходило. Тогда папа обратился ко мне, и я уже не упустил возможности покрасоваться. Я взял лист бумаги и написал в столбик:
0 = 0
1 = 1
2 =…
— Как получить 2? Нам надо к 1 прибавить ещё 1. Правила сложения очень простые:
0 + 0 = 0
0 + 1 = 1
1 + 1 = 10
— Почему это 10?
— Смотри. У нас есть только две цифры. Цифра 1 — последняя в ряду (как цифра 9), поэтому, если прибавить к ней единицу, произойдет перенос разряда, так же как если к девяти прибавить один. Но можно просто запомнить эти правила и не задумываться.
Отец блаженно улыбался, слушая моё объяснение. Похоже, этого он от меня и ожидал. Ободрённый, я спросил Катю:
— Теперь ты можешь сказать, как записать «3»?
Катя подумала и сказала, что «3» надо записывать как «11». Я подтвердил, что это абсолютно правильно, и сразу же спросил, как записывать «4». Но тут уже возникли сложности, и пришлось объяснять, как происходит перенос разряда и почему в итоге получается «100». После этого мы записали двоичные числа до 31 (так попросил папа).
Тем временем папа рассказал нам, как из двоичной записи числа перейти к десятичной. Оказалось, что каждому разряду соответствует степень двойки: 1 (20), 2 (21), 4 (22), 8 (23), 16 (24), 32 (25), 64 (26), 128 (27), 256 (28), 512 (29), 1024 (210) и т. д. Нужно взять те степени, которым в записи двоичного числа соответствуют единицы, а потом сложить их. Например, двоичному числу 10111 соответствует десятичное 16 + 4 + 2 + 1 = 23.
Затем папа сказал, что в математике числа «0» и «1» называются битами и что любую информацию можно представить при помощи битов. После этого мы наконец перешли к разработке системы кодирования.
Папа составил таблицу из трёх столбцов. В первый он выписал все буквы русского алфавита, пропустив букву Ё. Во втором записал их номера (от 0 до 31). А в третий столбец он записал те же номера в двоичном представлении, но каждый номер состоял из пяти битов — от 00000 до 11111. Получилось вот что:
— Теперь договоримся, как передавать биты 0 и 1. Тут можно использовать и метод Морзе. Пусть «0» будет коротким сигналом, а «1» — длинным, раза в три длиннее. При этом между каждым сигналом надо делать небольшую паузу, а между буквами, то есть между каждыми пятью сигналами — паузу подлиннее.
Отец взял мой передатчик и попросил записывать за ним. Мы взяли карандаши, а папа стал выбивать последовательность сигналов: длинный, короткий, короткий, длинный, короткий… Я записывал за ним: 10010 00101 01011 00101 00011 10000 00000 10100. Получилось слово «ТЕЛЕГРАФ».
Мы ещё немного потренировались — я выстукивал слова, Катя записывала, потом наоборот. Вроде бы всё понятно и довольно просто. Потом папа сказал:
— Ну вот, я хотел начать с протокола, а потом перейти к кодированию, а получилось наоборот. Давайте же изучим, что такое протокол. Скажи, Екатерина, как ты поймёшь, что надо начинать записывать передачу Кирилла?
— Я услышу звонок и увижу мигающую лампочку.
— Но ведь ты наверняка в этот момент будешь что-то делать, а карандаша и бумаги рядом не окажется. А может быть, и самой тебя поблизости не будет. Как быть?
Мы задумались. А ведь действительно. Чтобы успешно передать сообщение, нам обоим надо быть около своих устройств, но как это сделать, если мы друг друга не видим? Но отец продолжил:
— Нам на помощь придёт протокол. Протокол — это договорённость о том, как вести передачу информации. Метод кодирования — только часть протокола. Также протокол устанавливает правила начала и окончания передачи. Ещё он может устанавливать правила смены передающей стороны и даже методы восстановления информации, если передача происходит с потерями и ошибками. Но мы пока изучим только самые простые вещи.
Мы с Катей переглянулись, а отец тем временем говорил:
— Мы введём несколько служебных символов: «Запрос на начало передачи», «Ответ о готовности приёма» и «Окончание передачи». Подумайте и ответьте мне, для чего нужны эти символы.
Я сказал:
— С их помощью мы сможем подзывать друг друга к устройству и сообщать, что готовы принять телеграмму. И в конце передачи сообщать, что телеграмма закончена.
Отец согласился, а потом обратился к Кате:
— Екатерина, ты можешь придумать, как будут выглядеть эти три служебных символа?
— Думаю, что они должны состоять из последовательности сигналов, которые непохожи на наши биты «0» и «1».
— Почему?
— Так будет проще понять, что это служебная информация, а не текст телеграммы.
— Здорово, молодец! Это, в общем, необязательно: в компьютерных системах используются только биты и ничего другого. Но мы действительно можем позволить себе применить другие символы, чтобы проще отличать. Поэтому предлагаю такую схему…
И папа записал на листке рядом с таблицей букв три строки.
Для запроса на начало передачи — три длинных звонка.
Для указания готовности к приёму — один длинный звонок.
Для окончания передачи — два длинных звонка.
Длительность каждого из этих звонков была в два раза больше, чем длительность бита «1».
Затем он сказал:
— Определим алгоритм. Пусть Кирилл хочет передать Екатерине сообщение. Он посылает служебный символ «запрос на передачу», после чего ждёт ответа. Если ответ не пришёл в течение минуты, то Кирилл может послать запрос ещё раз, а потом ещё, пока не получит ответ, либо заняться своими делами и снова послать запрос через некоторое время. Если же он получает сигнал готовности к приёму, это означает, что Екатерина готова записывать. После этого Кирилл передаёт своё предварительно закодированное сообщение, а после него ставит символ окончания передачи. Далее Екатерина может выбрать из двух вариантов. Она может закончить сессию приёма-передачи, послав в ответ символ окончания. Это значит, что у Екатерины нет ответа, и передача закончена. Или она может передать свой закодированный ответ и закончить его символом окончания передачи. И тогда уже Кирилл получает возможность выбирать, заканчивать ли передачу. Если да, то он передаёт символ окончания. Если нет, то пишет ответ и передаёт слово Екатерине. И так далее, до конца.
Рассказав всё это, папа нарисовал схему:
— Так выглядит формальное представление алгоритма в специальной
На этом теоретическая часть нашего занятия была закончена, и мы перешли к практической. Первым делом мы перерисовали в свои блокноты таблицу кодировки символов для нашего телеграфа, а также алгоритм передачи информации. После этого Катя уехала к себе, и через некоторое время из моего передатчика раздался сигнал запроса на начало передачи. Я ответил сигналом готовности, и Катя начала передачу. Она передавала медленно, я успевал записывать последовательности битов в свой блокнот, сразу группируя их по пять. Потом раздался сигнал окончания. Я быстро раскодировал её сообщение. Она сообщала, что приехала домой. Тогда я ответил, что жду её завтра на новое занятие. Она подтвердила приём моего сообщения символом окончания передачи.
Испытания телеграфа можно было считать пройденными. Я на радостях сфотографировал своё устройство и написал у себя в блоге, что мы сделали телеграф и уже его испытали. Через некоторое время один мой одноклассник ответил в комментариях, что я занимаюсь ерундой. Какой глупый…
Вечером папа задал мне странный вопрос:
— Как ты думаешь, почему я купил пять лампочек на замену тем, которые у нас выйдут из строя?
Я только пожал плечами. Тогда папа объяснил, что он примерно посчитал, сколько за всё лето мы передадим друг другу символов, потом разделил это число на среднее количество включений и выключений, которое может выдержать лампа, и получил число пять. Потому он на всякий случай купил именно пять ламп. Это было вполне логично. Но он снова спросил:
— Как ты считаешь, что вероятнее: у одного из вас перегорит одна лампа, а у второго четыре, или у одного перегорит две, а у другого три?
Здравый смысл подсказывал мне, что вероятнее второй вариант, но отец попросил меня посчитать это точно. Для этого надо было рассмотреть разные варианты последовательного перегорания лампочек: от ККККК (все пять лампочек перегорели только у Кирилла) до ЕЕЕЕЕ (то же самое произошло у Екатерины).
Из дневника Кирилла:
08 июня. Сегодня папа дал мне задачу по расчёту вероятностей. Для этого мне надо было подсчитать количество возможных комбинаций букв К и Е длиной пять символов. Я начал выписывать сочетания от ККККК до ЕЕЕЕЕ и понял, что сделал точно такую же таблицу, как та, в которой мы определили коды букв для нашего телеграфа, только «К» надо заменить на «0», а «Е» на «1».
Оказывается, в математике встречаются одинаковые вещи, которые с первого взгляда могут показаться совсем различными. Папа рассказывал мне нечто похожее про топологию. Как интересно!
Или папа специально подгадал и купил именно пять лампочек, чтобы я на практике убедился в этом?
Глава 5
Во время завтрака папа сказал, что какие-то проблемы у него в лаборатории требуют его личного присутствия, и ему надо уехать на день или два. Я подумал и решил остаться в деревне, поскольку здесь стало интересно. Папа настоял, что я на эти дни должен переехать к тёте Кате, чтобы быть под присмотром. Я, конечно, сначала храбрился, что смогу прожить до его возвращения один, но потом всё же согласился. Мы быстро собрали нужные вещи, папа отвёз меня к тётушке, а сам уехал. По пути, как я понял, он встретился с Катей и отдал ей рацию, потому что минут через пятнадцать из моей рации донеслось:
— Привет, Кирилл. Как дела? Прием!