Вы находитесь на странице: 1из 600

Информация и человек

К ЧИТАТЕЛЮ

Мы далеко не лучше знаем то, что видим ежедневно.

Л. Мерсье

Как правило, наибольшего успеха добивается тот,


кто располагает лучшей информацией.

Б. Дизраэли

Эта книга посвящена информатике, Сама книга, которую вы держите,


наверное самой интересной и самой создавалась с использованием совре-
популярной из наук. менных информационных техноло-
Определяя предмет информатики, гий не только в процессе вёрстки и
можно сказать, что она занимается по- печати, но и на стадии подготовки и
строением информационных объек-
тов, теорией, систематическим анали-
зом, проектированием и реализацией
алгоритмов, программ и планов, а так-
же процессами трансформации и
передачи информации.
Что же такое информация? Как
информатика связана с кибернети-
кой? В чём суть теории информации?
На эти и многие другие вопросы мож-
но найти ответы на страницах тома
«Информатика».
В наши дни информатика «начи-
нает и выигрывает»: с ней потихоньку
сливается экономика, она простёрла
свою руку в психологию и управле-
ние, поиск в библиотеках всё больше
заменяется поиском в Интернете.

5
Информация и информатика

обсуждения текстов и иллюстраций. узнает и о том, как кодировалась ин-


Большинство фотографий делалось формация в докомпьютерные вре-
Под компьютерной с применением новейшей цифровой мена. Подобные знания правомерно
грамотностью подра- фототехники, рисунки сканировались считать необходимым элементом куль-
зумевается набор на- на компьютере. А сами авторы обща- туры человека нового тысячелетия.
выков: применение лись при помощи электронной поч- Существует определённое обще-
компьютера для набо- ты. Большинство из них лично ни разу ственное согласие относительно того,
ра и редактирования не встречались и знакомы только по чем должен отличаться образованный
текста, составления виртуальной переписке. Объём дан- человек, где бы и чему бы он ни учил-
таблиц, просмотра и ной корреспонденции наверняка в ся. Это отличие усматривают не в той
редактирования фо- несколько раз превысил том энцик- или иной совокупности полученных
тографий, програм- лопедии! знаний, а в умении решать реальные
мирования; использо- Во многом по причине своей со- задачи и проблемы.
вание Интернета для временности информатика — одна Так, чтобы быть современным че-
взаимодействия с дру- из немногих наук, необходимость ловеком, вероятно, уже недостаточно
гими людьми и пере- изучения которой не требует аргу- знать четыре арифметических дей-
дачи информации. ментов. Всё, что связано с современ- ствия, помнить наизусть таблицу ум-
ным обществом и современным чело- ножения и уметь складывать дроби.
веком, самое передовое, интересное Технологии требуют хотя бы мини-
и перспективное так или иначе име- мальных навыков по использованию
ет отношение к сфере информатики. окружающих нас телефонов, телеви-
Хранение и обработка информа- зоров, микроволновых печей. В гости-
ции в цифровую эпоху резко упроща- нице или дома вряд ли вам будут
ют деятельность человека. Цифровое разъяснять правила пользования
представление текстов, звука, фото- выключателем или учить, как звонить
графий и фильмов не только обеспе- по телефону с кнопками вместо диска.
чивает долговременность и относи- Умные приборы всё больше входят в
тельную дешевизну хранения, но и наш быт, и обращение с ними должно
делает нужную информацию легко- достичь нормального автоматизма.
доступной. Многотомная энциклопе- Большинство жителей развитых
дия может разместиться на несколь- стран умеют пользоваться кредитны-
ких компакт-дисках, а найти нужную ми банковскими карточками. В Рос-
статью удастся за доли секунды. сии этот метод платежа пока не очень
Том «Информатика» подробно рас- распространён. И часть людей, осо-
сказывает о методах цифрового пред- бенно старшего поколения, с трудом
ставления разных видов информации, осваивают его. К трудной, почти недо-
её хранения и обработки. Читатель ступной для наших дедушек и бабу-
шек науке относится и Интернет.
Между тем большой процент моло-
дёжи активно пользуется Всемирной
сетью. Интернету в томе посвящена
отдельная глава. В ней рассказывает-
ся не только о приёмах использова-
ния Интернета, но и о его устройстве,
технологии передачи данных и т. п.
Такие сведения позволят справиться
с практическими трудностями, при-
чём затратив минимум времени и
усилий.
Считается бесспорным, что каждо-
му из нас надо знать географию, мате-
матику, химию, биологию хотя бы в
рамках школьной программы. Сегод-
ня уже слышны голоса учёных, утвер-
ждающих, что информатика — такая
же метадисциплина, как философия
или математика. Даже более базовая,

6
Информация и человек

чем математика, так что правильнее


сравнить её с арифметикой. Инфор-
матика совсем недавно появилась в
школе как отдельный предмет. Ещё не
утихли споры, с какого класса учить
её и стоит ли вообще это делать. На
страницах книги свою точку зрения
высказывают авторы популярных
школьных учебников по информа-
тике.
Современный человек должен вла-
деть компьютерной грамотностью,
т. е. не просто знать, где находится
кнопка включения домашней ЭВМ, но
и использовать компьютер в работе и
повседневной жизни. Ведь с помощью
компьютера сегодня бухгалтер гото-
вит баланс, лётчик управляет самолё-
том, музыкант занимается аранжиров- чертит тушью чертежи на ватмане.
кой произведения, милиционер Недалеко время, когда информацион-
проверяет документы… Даже военный ные технологии будут преобладать
разведчик передаёт добытые данные повсеместно. Однако у всякого про-
в штаб при помощи ЭВМ, которую гресса есть как положительные, так и
носит на поясе. отрицательные стороны. Ядерные
В томе «Информатика» много стра- исследования дали человечеству не
ниц посвящено компьютеру — уни- только недорогой вид энергии, но и
версальному изобретению человече- страшное оружие — атомную бомбу.
ства. Вы узнаете историю создания Немалые проблемы может создать
вычислительных машин с древних широкомасштабное использование
веков до наших дней. Молодая инфор- ЭВМ и компьютерных технологий. На
матика имеет богатую родословную. страницах тома идёт речь о том, с чем
Ряд предшествующих её формирова- в этой связи мы столкнёмся в XXI веке,
нию гениальных изобретений и намечены и возможные пути преодо-
открытий не потеряли своего значе- ления отрицательных последствий.
ния и поныне. Даже объёмистый том слишком
Но информатика — это не только мал, чтобы вместить основные зна-
«про компьютер», так же как арифме- ния об информатике и её разнооб-
тика — не «про калькулятор», а музы- разных аспектах. Так же как и о чело-
ка — «не про пианино». веке, о науке можно рассказывать
Информационные технологии бесконечно, открывая всё новые гра-
меняют общество и нас самих, но и ни. Кроме того, пока создаётся книга,
они подвержены непрерывному усо- возникают новые идеи, претерпева-
вершенствованию. Часть из них пре- ет изменения существующая техни-
образуется, часть уходит в прошлое. ка, учёные совершают рывок вперёд.
Непрерывно появляются новые, вне- Однако фундаментальные знания,
дряясь в доселе не охваченные сферы которые составляют основу тома,
жизнедеятельности человека и в ка- вряд ли устареют.
ких-то областях отстраняя нас от А о новейших достижениях в сфе-
выполнения привычных функций. ре ЭВМ скоро расскажет очередной
Громоздкие вычисления уже редко том «Энциклопедии для детей», кото-
производят вручную, как редко кто рый будет называться «Компьютер».

7
ИНФОРМАЦИЯ И ЧЕЛОВЕК
КОМПЬЮТЕР — УНИВЕРСАЛЬНЫЙ ИНСТРУМЕНТ
ДЛЯ ОБРАБОТКИ ИНФОРМАЦИИ

Эпоха глобальных информационных дана в любую точку Земли по инфор-


технологий только началась. Значи- мационным сетям. Накопленная за
тельная часть создаваемой человече- предыдущие века информация (текс-
ством информации уже представле- ты, картинки, фильмы или аудиоза-
на в цифровом виде и может быть писи и т. п.) постепенно переводит-
обработана на компьютере и пере- ся в цифровую форму и поступает
в те же информационные сети. Её лег-
ко сохранять, она не искажается при
копировании. Хотя физические но-
сители информации и не вечны,
своевременное копирование, дубли-
рование, хранение информации
в разных узлах компьютерной сети
позволяют не бояться локальных ка-
тастроф — поломок компьютеров,
пожаров. Любые операции по обра-
ботке информации, от рутинных до
творческих, проводятся с помощью
компьютера. Ещё несколько лет на-
зад игра в шахматы считалась исклю-
чительно творческим занятием, а
сегодня становится ясно, что для ком-
пьютера она ненамного сложнее кре-
стиков-ноликов.

10
Информация и человек

Там, где должен стоять компьютер,


он уже стоит или будет стоять в бли-
жайшее время. Современный ком- ОСНОВНЫЕ НАУЧНЫЕ И ТЕХНОЛОГИЧЕСКИЕ
пьютер практически достиг предела ДОСТИЖЕНИЯ XIX—XX ВЕКОВ
возможностей. Текст, хранимый в
компьютере, не в состоянии прочи- • Идея создания компьютера — универсального устройства для
тать его владелец даже за всю свою обработки информации.
жизнь. Математическая обществен- • Идея его реализации на электронных схемах с использованием
ность всего мира производит текстов цифрового, двоичного кодирования любой информации.
за год меньше, чем хранится в памя- • Создание стандартов представления любой информации в дво-
ти современного компьютера. ичном виде.
Взрослые используют компьюте- • Разработка языков программирования для записи алгоритмов
ры для работы, дети — для учёбы. Дело- обработки информации и автоматизация преобразования написанных
вое письмо составляется на компью- человеком алгоритмов в двоичные программы.
тере, хранится в архиве, посылается • Создание общемировой Сети связанных между собой компью-
адресату электронной почтой и лишь теров.
в исключительных случаях печатает- • Технология микроэлектроники (реализация электронных схем на
ся на бумаге. одном кристалле, при которой электронные схемы с миллионами и
Книги уже сегодня создаются в ци- миллиардами переключательных элементов могут изготоваляться мил-
фровом виде. Такие «электронные лионными тиражами).
книги» могут быть скопированы по • Технология дискретизации (цифровое представление любых
компьютерной Сети и прочитаны с видов информации). Аналоговые, непрерывные методы записи, пе-
монитора персонального компьюте- редачи и обработки информации заменяются цифровыми, искаже-
ра или специального карманного ние информации при хранении и передаче исключено, информация
компьютера. Если сегодня человек может считываться и копироваться неограниченное количество раз.
привык идти за книгой в магазин или • Технология цифровых коммуникаций, которую используют все
заказывать её по почте, то завтра, за- современные виды связи для создания общемировой Сети.
платив (с помощью компьютера) из-
дательству, он получит право про-
честь книгу с экрана и напечатать её зейным экспонатом, как механиче-
в одном экземпляре на собственном ские арифмометры и ламповые ра-
принтере или сможет скопировать диоприёмники.
книгу с компьютера автора, взяв обя- Подобная судьба ждёт технологии
зательство заплатить непосредствен- киносъёмки и записи звука. Новые
но ему (если книга понравится). цифровые технологии здесь также
Современный компьютер хранит и теснят старые аналоговые. На переход
бесконечное количество статиче-
ских изображений — картинок и фо-
тографий. Ещё распространены тра-
диционные оптические фотоаппараты,
регистрирующие изображение на све-
точувствительной плёнке, но уже ак-
тивно используются цифровые фото-
камеры, без плёнки (и вообще без
движущихся частей) фиксирующие
изображение сразу в цифровом виде
и записывающие его в электронную
память фотокамеры. Отснятые кадры
можно переписать на персональный
компьютер, посмотреть на экране,
напечатать на принтере или отредак-
тировать с помощью специальной
программы и поместить в компью-
терный семейный фотоальбом. Тра-
диционный фотоаппарат (просуще-
ствовавший 150 лет, практически не
меняясь) скоро станет таким же му-

11
Информация и информатика

к цифровым видеокамерам и магни-


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

ЧТО ТАКОЕ ИНФОРМАЦИЯ

С конца XX столетия слово «ин- • сообщение, осведомление о по-


формация» кажется столь широко ложении дел, сведения о чём-либо,
употребляемым, сколь и неопреде- передаваемые людьми;
лённым. В «Философском энцикло- • уменьшаемая, снимаемая неопре-
педическом словаре» даётся четыре делённость в результате получения
его значения: сообщения;
• сообщение, неразрывно связан-
ное с управлением, сигналы в единст-
ве синтетической, семантической и
«Информация — общенаучное понятие, включающее обмен све- прагматической характеристик;
дениями между людьми, человеком и автоматом, автоматом и • отражение разнообразия в лю-
автоматом; обмен сигналами в животном и растительном мире; бых объектах и процессах неживой и
передачу признаков от клетки к клетке, от организма к организ- живой природы.
му (генетическая информация)». После того как американский
«Большой энциклопедический словарь», 2001 г. учёный и инженер Клод Шеннон
в 1948 г. опубликовал работу об ос-
новах математической теории свя-

12
Информация и человек

АТОМЫ ИНФОРМАЦИИ

Информация, каким бы способом она не была обретена, рую не раз приходилось ре-
всегда фиксирует отличия и изменения. «Поздно» имеет шать человечеству. Без таких
смысл только потому, что существует «рано», весна насту- систем, представляющих не-
пает после зимы. Мы мыслим противопоставлениями, и прерывное прерывным, невоз-
это фундаментальное свойство человеческого мышления. можно представить современ-
Ведь в природе не существует никакого конкретного мо- ную жизнь, ведь это нотная
мента, когда весна сменяет зиму. Это человек, не пассив- грамота, денежная система,
но воспринимая мир, а извлекая из него информацию, де- система счёта времени, гео-
лит непрерывную реальность на элементы с помощью графические координаты,
подразумеваемых порогов, границ, критических точек, до шкала температур и многое
которых было что-то одно, а после стало что-то другое. другое.
Любое «да» имеет смысл лишь в сопоставлении с «нет», Впервые фундаменталь-
любое «больше» — в сопоставлении с «меньше», «война» — ное значение противопостав-
с «миром», «дворцы» — с «хижинами»… ления выяснил основатель Фердинанд де Соссюр.
Итак, каждый раз, создавая информацию или переда- современной лингвистики
вая её, мы делаем цельное дискретным, вычленяем эле- Фердинанд де Соссюр (1857—1913), изучавший язык как
менты. В некоторых случаях дискретность очевидна: вклю- знаковую систему. Именно он показал, что ни один знак не
чена сирена — не включена, подал руку — не подал. Такие имет смысла сам по себе, он существует исключительно в
оппозиции, устроенные по принципу «или — или», назы- оппозиции (противопоставлении) с другими знаками. Невоз-
ваются бинарными. В этих случаях одно состояние есте- можен светофор с одним постоянно горящим фонарём,
ственным, очевидным образом отделено от другого, раз- невозможен алфавит из одной буквы. Даже когда кажется,
личие между ними бросается в глаза (в случае с сиреной — что знак всего один, в действительности это не так.
в уши). С наступлением весны всё гораздо сложнее. В ми- Например, сирена — звуковой знак, означающий «внима-
ре много процессов, не содержащих явных порогов. Эти ние» или «опасность». Но если подумать, становится по-
пороги устанавливаем мы сами, вводя дискретность сво- нятно, что и здесь есть противопоставление: наличие звука
ей волей. «Совсем зарос, — говорит мама, — стричься по- — отсутствие звука. Молчание сирены тоже значимо, оно
ра». — «Не совсем, в глаза же не лезут, — отвечает сын. — выражает смысл «всё как обычно», «ничего особенного не
Ещё так похожу». Здесь разные ситуации разграничива- происходит». Знаки, у которых внешняя форма состоит в
ются по количеству или степени признака. Допустим, сте- отсутствии объекта, называются нулевыми. Примеры
пень «лохматости»: лысый — нулевая, коротко стрижен- нулевого знака — пробел (пауза) между словами, негорящие
ный — первая, волосы немного отросли — вторая, лезут в лампочки на приборе, непротянутая в знак неуважения рука.
глаза — третья, заплетаются в косичку — четвёртая и т. д.
Так организуется градуальная оппозиция. Способ деле-
ния непрерывности бывает различным. Понятно, что, ес-
ли выделять градуальные оппозиции произвольно, это не
даст выполнить важнейшее условие передачи информа-
ции — точность. Представим себе, что не существует еди-
ного календаря, а каждый решает сам, ориентируясь на
собственные ощущения, когда, по его мнению, пришла
весна, а когда кончится сегодня и наступит завтра. Созда-
ние общих для всех и потому обеспечивающих точность
передачи информации знаковых систем — задача, кото-

зи — теории информации, она нашла проникло из кибернетики и инфор-


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

13
Информация и информатика

Как не запутаться в таком разнооб- бы только они обладали формальны-


разии? Имеем ли мы дело с одним или ми свойствами информационных
«Информация — это несколькими понятиями? И есть ли процессов. Поэтому совершенно
особая совокупность между ними какие-либо точки сопри- логично, что сегодня слово «инфор-
сведений, первичным косновения? Постараемся разобраться. мация» имеет гораздо более широкое
источником которых В первоначальном и наиболее уз- значение. Некоторые исследователи
является опыт». ком смысле информация — атрибут даже связывают понятие информа-
разумных существ, людей. Это какие- ции с разнообразием в природе и об-
А. А. Красовский, либо сведения, данные, факты, кото- ществе, с упорядоченностью вообще.
Г. С. Поспелов, рые, будучи получены из опыта, на-
1961 г.
блюдения или путём размышления,
зафиксированы в материальной фор- КОЛИЧЕСТВО
ме для сообщения другому существу
или самому себе. При таком понима-
ИНФОРМАЦИИ
нии любая информация с неизбежно-
стью содержит два компонента — со- Чтобы научиться измерять какую-то
держательный и материальный. То величину, нужно, во-первых, выбрать
есть, во-первых, она должна быть по- единицу измерения, эталон, а во-вто-
нятна тем, для кого предназначена (со- рых, описать процедуру сведения лю-
держательный компонент), во-вто- бой величины к эталону.
рых, представлена на том или ином Если попытаться таким же обра-
физическом носителе, например на зом определить меру информации,
бумаге (материальный компонент). то выяснится, что сделать это можно
Ясно, что одну и ту же информа- различными способами.
цию можно представить совершенно Рассмотрим простейший случай.
по-разному (например, на русском Допустим, информация — любая по-
или на английском языке) и на раз- следовательность нулей и единиц.
ных носителях (в книге, на магнит- Тогда единицей информации ло-
ной ленте). гично считать одно место (разряд)
Но если мы оставим в стороне в такой последовательности, а коли-
смысловой компонент информации чеством информации — длину после-
и в то же время абстрагируемся от лю- довательности.
бого конкретного материального её Например, сообщение из роддо-
носителя, то всё ещё остаётся нечто, ма: «У вас родился мальчик». Если ко-
На самом деле что может быть предметом исследо- дировать каждую букву байтом, как
в итоговом кодиро- вания. Это — формальный компонент. это принято в компьютере, то всё со-
вании «1» не содер- Он включает в себя идею кодирова- общение займёт 21 байт, или 21. 8 =
жится информации ния как таковую, т. е. безотноситель- = 168 бит. Можно несколько умень-
«У вас родился маль- но к смыслу кодируемого и независи- шить это значение, ограничившись
чик», но мы можем мо от физических свойств носителя сообщением: «У вас сын» или просто
восстановить её на информации. Формальный компонент «Сын», что даст соответственно 72
основе дополнитель- принимает во внимание лишь коли- и 24 бит. Если же заранее договорить-
ной информации чественные, частотно-вероятные и ся, что 1 означает «сын», а 0 — «дочь»,
«Сообщение из род- структурные свойства информации. то всё сообщение уложится в 1 бит.
дома». Например, информация может быть Теперь понятен главный недоста-
вероятной и маловероятной; состав- ток такого подхода: количество ин-
ной, т. е. содержать не один, а несколь- формации определяется скорее не со-
ко независимых фактов. держанием самой информации,
Формальные свойства информа- а используемым кодом. В зависимос-
ции можно исследовать математиче- ти от того, насколько оптимален или
скими методами — так родилась тео- избыточен код, количество инфор-
рия информации. Замечательно же мации в одном и том же сообщении
то, что результаты данных исследо- будет меньше либо больше.
ваний равно применимы к любым Попробуем пойти другим путём.
процессам и явлениям, в том числе Прежде всего абстрагируемся от кон-
и не относящимся к информацион- кретного способа представления той
ным в узком смысле этого слова, лишь или иной информации. Пусть ин-

14
Информация и человек

ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ

Для хранения, преобразования и передачи информа- Появились фотостудии, где уже предлагают сде-
ции важнее её различные представления и методы их лать голографическую, псевдотрёхмерную фотогра-
использования, чем строгое определение. фию родных, домашних питомцев.
Информация обязательно должна быть зашифро- 2. Акустическая информация (речь, звук). Практиче-
вана в виде знаков, символов, кодов. Кодирование ски все животные в той или иной степени способны
может производиться много раз и с различными це- воспринимать звук: они предупреждают друг друга об
лями: обеспечить передачу по тем или иным каналам опасности, устанавливают свой статус в сообществе, воз-
связи, уменьшить нагрузку на какой-либо из них, со- можно, даже согласовывают действия при совместной
хранить конфиденциальность информации и т. д. Пе- охоте. Но только человек с помощью речи выражает
ревод на другой язык — то же кодирование, осуще- чувства, мысли, до некоторой степени заменяет визуаль-
ствляемое для того, чтобы информацию мог ное восприятие информации. Если рассказчик красноре-
воспринять человек, незнакомый с языком, т. е. с ис- чиво, ярко, образно опишет что-то, то слушатель вооб-
ходным представлением информации. разит изображаемый предмет, словно он его видит. На
В последнее время широкое распространение по- компьютере речь бывает представлена как любой дру-
лучила цифровая телефония. Любой человек может гой звук или музыка либо разбита на отдельные звуки —
купить карточку с персональным кодом и позвонить фонемы или даже целые слова.
в другой город или даже в другую страну. Во время 3. Символьная информация (текст, письменность).
разговора происходят следующие информационные С помощью письменности человек обрёл нечто по-
процессы. Сначала информация шифруется в мозгу добное бессмертию: мысли, однажды занесённые на
человека последовательно в виде образов, мыслей, папирусные свитки, пергамен, бумагу, на различные
речи. С помощью телефонного устройства колебания цифровые носители, при условии правильного хране-
(речь) преобразуются в электрические импульсы. На ния будут существовать почти вечно.
компьютерных станциях-коммутаторах аналоговые Любая подобная классификация будет неполной —
электрические импульсы трансформируются в циф- всегда есть такое представление информации, кото-
ровой код, который обрабатывается при помощи спе- рое не подходит под составленную схему. К чему от-
циальных алгоритмов, чтобы ускорить его передачу. нести биологическую информацию в ДНК? Или на-
Потом код передаётся по каналам связи, ещё раз пре- пряжения в земной коре, свидетельствующие о
терпевая кодирование, на этот раз для того, чтобы глубинных тектонических процессах? Или излучение
обеспечить его корректную доставку получателю. далёких звёзд, по которому можно определить их вид,
На принимающей станции происходит обратный про- состав, процессы, идущие в них?
цесс (раскодирование): цифровой код преобразуется Поэтому классифицировать информацию необхо-
в аналоговый электрический импульс, затем в теле- димо в зависимости от использования. То ли это ин-
фоне — в звуковые колебания, которые наконец вос- формация, воспринимаемая человеком, то ли инфор-
принимаются вторым собеседником. мация, обрабатываемая компьютером, то ли
В такой длинной цепочке изменялось представле- многовековые знания человечества — везде необхо-
ние информации, но целевое содержание (передава- дима своя целевая классификация.
емая информация) осталось неизменным.
В мире существуют многообразные виды инфор-
мации. Предложим классификацию, основанную на
восприятии человека.
1. Визуальная (зрительная) информация. Такую ин-
формацию, конечно, понимает не только человек, но
и животные. В отличие от животных, в основном усва-
ивающих всего лишь отражение внешнего мира, чело-
век смог записать, сохранить визуальную информацию
сначала в виде наскальных рисунков, потом иконопи-
си, живописи, фотографии, видео. Прогресс идёт впе-
рёд, XXI век — это время создания и широкого внедре-
ния технологии записи и воспроизведения не плоского,
а уже настоящего трёхмерного изображения, на кото-
рое можно посмотреть сбоку, сверху, его можно обой-
ти и увидеть, что происходит с другой стороны.

15
Информация и информатика

формация (сообщение) передаётся при игре в своеобразные кости. Ин-


от отправителя A к получателю B. Не- туитивно понятно, что в данном слу-
«Информация — это зависимо от реальной длины сооб- чае неопределённость выше. Но на-
содержание воздей- щения и способа его кодирования сколько, вот в чём вопрос! Допустим,
ствия, его величина, будем считать, что получатель узна- N = 8. Тогда однозначный выбор из
изменение в прост- ет из него что-то новое относитель- восьми вариантов можно сделать, по-
ранстве и времени, но какого-то факта (степень неопре- лучив ответ («да» или «нет») всего на
используемое как делённости относительно данного три вопроса. Первым вопросом мы
средство связи слож- факта уменьшилась). Поэтому допу- сокращаем число вариантов с восьми
ных систем». стим, что количество информации до четырёх, вторым — с четырёх до
есть не что иное, как уменьшение сте- двух, третьим — до одного. После каж-
Н. М. Амосов, пени неопределённости поступле- дого ответа мы получаем 1 бит ин-
1963 г. ния информации, которое произо- формации. Значит, всего 3 бит.
шло в результате получения этой В более общем случае, когда N =
информации. Это ещё не определе- = 2k, мы получаем k бит. То есть коли-
ние количества информации. Ска- чество информации, необходимое
занное только главная идея. Далее, для устранения неопределённости из
уточняя вышеизложенное, шаг за ша- нескольких равнозначных вариан-
гом мы попытаемся вывести настоя- тов, равно k = log2N.
щее определение. Шаг 3. Неопределённость из двух
Шаг 1. Неопределённость из двух неравнозначных вариантов. Пусть
равнозначных вариантов. Например, дано восемь равнозначных вариан-
родится сын или дочь, выпадет «орёл» тов. Нам важно только знать, какой
или «решка». Если в результате получе- из них (первый или какой-либо
ния информации неопределённость другой) был принят. Происходит вы-
исчезает (нам сообщили, какой именно бор из двух вариантов, причём нерав-
из двух вариантов имеет место), будем нозначных. Допустим, ответ «Да, пер-
считать, что получена одна единица вый». Логично считать, что, как и на
информации (единица измерения ин- шаге 2, мы получили 3 бит информа-
формации называется битом). ции, так как изначальная неопреде-
Шаг 2. Неопределённость из N рав- лённость из восьми вариантов све-
нозначных вариантов. Например, лась к одному варианту.
Предположим теперь, что ответ
«Нет, не первый». Хотя неопределён-
ность полностью и не устранена, тем
«Понятие количества информации совершенно естественно свя-
не менее она уменьшилась с восьми
зывается с классическим понятием статистической механики —
вариантов до семи. Значит, сколько-
энтропии. Как количество информации в системе есть мера ор-
то информации мы всё же получили,
ганизованности системы, точно так же энтропия есть мера не-
допустим, x бит.
организованности системы. Одно равно другому, взятому с об-
Для устранения оставшейся не-
ратным знаком».
определённости из семи вариантов
Н. Винер. нам нужно ещё log27 бит информа-
«Кибернетика» ции. Вместе они дают 3 бит инфор-
мации, так как сокращают неопре-

16
Информация и человек

делённость с восьми до одного вариа-


нта. Поэтому x + log 27 = 3 или
x = 3 – log27. СМЫСЛОВАЯ ИНФОРМАЦИЯ
Итак, сообщение «Да, первый» да-
ло нам 3 = log28 бит информации. Со- В теории связи количество информации
общение же «Нет, не первый», сокра- оценивается с точки зрения затрат на пе-
тившее число вариантов с 8 до 7, дало редачу сообщений. Для работы приёмно-
3 – log27 = log2(8/7) бит информации. передающих устройств первостепенен не
В общем случае, когда существует смысл сигналов, а их статические свойства:
N равнозначных вариантов и есть со- разнообразие сигналов, избыточность и
общение о том, что имеет место один т. п. Для человека же существенное зна-
из k (k < N) вариантов, причём неиз- чение имеют именно смысл передаваемо-
вестно, какой именно, мы получим го сообщения и получаемые при этом зна-
log2(N/k) бит информации. ния, т. е. смысловая информациия.
Из теории вероятностей известно, На основе смысловой информации вы-
что k/N — вероятность p данного со- рабатывается и закрепляется в мозгу соот- Ю. А. Шрейдер.
бытия. Поэтому окончательно полу- ветствие между будущими символами или
чаем log2(1/p) = –log2p. образами на входе и необходимыми действиями. Высшие животные не
Количество информации в сооб- могли бы существовать, если бы у них не было достаточного соответ-
щении является в определённом смы- ствия между сигналами ситуаций внешней среды (запах хищника, запах
сле оптимальной длиной сообщения. добычи и т. д.) и целесообразными в этих ситуациях действиями. При-
чём если у насекомых такое соответствие является в основном врож-
дённым и поведение их формируется на базе врождённых инстинктов,
СОЗДАЮТ ЛИ то у млекопитающих оно пополняется в течение всей жизни, и получа-
емая информация через органы чувств носит во многом смысловой ха-
ИНФОРМАЦИЮ рактер, идёт на пополнение запаса соответствий в их памяти. У чело-
КОМПЬЮТЕРЫ века смысловая информация идёт на пополнение соответствий не только
между внешними сигналами и действиями, но и между понятиями.
Математическая теория информации, Таким образом, общей чертой смысловой информации является
как и все математические теории, ка- то, что она изменяет запас сведений, запас соответствий у получате-
жется безупречной с точки зрения ло- ля информации. Первоначальный (и меняющийся в ходе поступления
гики и к тому же прекрасно «работа- информации) запас соответствий можно представить себе как неко-
ет» в самых разных областях. И тем не торый обобщённый словарь или справочник, который Ю. А. Шрей-
менее она не лишена внутреннего дер предложил называть тезаурусом (греч. «тезаурус» — «сокровище»;
противоречия. имеются в виду словари, где даны не только значения слов, но и свя-
Рассмотрим такой парадокс. зи между ними). В качестве меры количества смысловой информации
Предположим, кто-либо получает естественно взять изменение тезауруса приёмника под действием по-
следующее сообщение: «Дважды ступившей информации.
два — четыре». Это весьма содержа- Количество информации зависит от приёмника, от его тезауруса.
тельное сообщение, часть таблицы Если тезаурус приёмника слишком беден, количество информации в
умножения. И тем не менее с фор- сообщении оказывается вообще равным нулю. Например, в сообще-
мальной точки зрения оно не содер- нии «Это учебник по высшей математике для первого курса вуза» трёх-
жит никакой информации. Действи- летний ребёнок совсем ничего не поймёт, а школьник старших клас-
тельно, вероятность того, что дважды сов уже кое-что выделит. Максимальную же информацию извлечёт,
два равно именно четырём, а не пя- очевидно, студент того курса, для которого учебник и предназначен.
ти, не шести и так далее, — единица: Любопытно, что по мере дальнейшего расширения тезауруса приём-
log21 = 0. ника воспринимаемая информация начинает уменьшаться. Уже у сту-
Следовательно, в сообщении со- дента второго курса при чтении учебника для первого курса измене-
держится 0 бит информации. Точно ние тезауруса будет меньше, а для человека, хорошо знающего высшую
так же с формальной точки зрения математику, этот учебник не несёт никакой информации.
количество информации, заключён- В области искусства и литературы методы теории информации ста-
ной в любой математической теоре- нут плодотворными лишь в том случае, когда будут разработаны спосо-
ме, любом законе физики, любом бы оценки количества информации (не только статистической, но и се-
корректном рассуждении или дока- мантической, смысловой), а также методы оценки изменения тезауруса
зательстве, равно нулю. человека (в том числе и его эмоционального тезауруса) под действием
С каждым годом компьютеры ста- произведений искусства.
новятся всё «умнее и умнее». Они

17
Информация и информатика

мастерски играют в шахматы, пред-


сказывают погоду. Известен случай,
когда с помощью компьютера была
доказана теорема (см. дополнитель-
ный очерк «Задача о четырёх красках»
в томе «Математика» «Энциклопедии
для детей»). Кажется очевидным, что
компьютеры производят информа-
цию. Однако вся информация, содер-
жащаяся, к примеру, в решении диф-
ференциального уравнения, на самом
деле уже имеется в его записи и на-
чальных условиях, внесённых в ма-
шину оператором. Машина лишь
«проявила» эту скрытую информацию,
перевела её в другую, более пригод-
ную для нас форму.
Аналогично, в речи кажется естест-
Информация (лат. informatio — «разъяснение», «изложение», венной фраза «электростанция про-
«осведомлённость») — одно из наиболее общих понятий науки, изводит электроэнергию». Но из кур-
обозначающее некоторые сведения, совокупность каких-либо са физики известен закон сохранения
специальных знаний и т. п. энергии, и, строго говоря, электро-
«Энциклопедия кибернетики», 1974 г. станция не производит никакой энер-
гии, а лишь преобразует её из одной
формы в другую.

ТЕОРИЯ ИНФОРМАЦИИ

Передача сообщений является од- слова, состоящие из комбинаций двух


ним из важнейших видов деятельно- знаков — нуля и единицы. (Разряды
сти человека. Изобретение телегра- таких двоичных слов принято назы-
фа, телефона и Интернета изменило вать битами.) Для записи всех букв
само существование человечества. русского языка, цифр, знаков препи-
Если проанализировать процесс пе- нания хватило бы и 7 бит (7 бит по-
редачи сообщений, то, несмотря на зволяют записать 27 = 128 различных
всё многообразие (от разговора до сообщений), используется же 8, с до-
компьютерных команд), выделяют полнительным проверочным битом,
два основных этапа. Сначала сооб- позволяющим обнаружить многие (но
щение переписывается в том виде, в не все) ошибки, произошедшие при
котором его удобнее передать (хра- передаче (записи, хранении) данной
нить), затем оно дописывается, для буквы. Более впечатляющим является
того чтобы никакие помехи при пример записи музыки на СD, когда
передаче не повлияли на качество даже царапины почти не влияют на
приёма. Первый этап называется ко- качество воспроизведения (это стало
дированием источника сообщений, возможным благодаря помехоустой-
второй — помехоустойчивым коди- чивому кодированию).
рованием. Математическая теория передачи
Если взять в качестве примера сообщений, или теория информа-
обычный текст, набранный на ком- ции, была сформулирована в рабо-
пьютере, то буквам алфавита, как, тах знаменитого американского
впрочем, и знакам препинания, и ци- учёного и инженера Клода Элвуда
фрам, можно поставить в соответствие Шеннона (1916—2001).
определённые наборы нулей и единиц. Шеннон широко использовал идеи
Эти наборы удобно рассматривать как и методы теории вероятностей и ввёл

18
Информация и человек

важнейшее понятие энтропии как ко- это рассматривать только префикс-


личества информации. ные коды, когда никакое кодовое сло-
Один из наиболее популярных во не является началом другого ко-
примеров кодирования источника — дового слова. Приведённый выше
азбука (или код) Морзе, применяе- пример несомненно не является пре-
мая в телеграфии. Здесь с разными фиксным кодом. Простейший пре-
буквами сопоставляются различные фиксный код — это равномерный
двоичные слова (тире и точки заме- код, где все слова одной и той же дли-
нены на нули и единицы), буквам с ны. Чуть более сложный пример пре-
большой частотой появления (таким, фиксного кода с неравной длиной
как «А», «О») соответствуют короткие кодовых слов:
слова, а буквам с малой частотой упо-
требления (как «Ы») — длинные. Это A→0; B→10; C→110; D→111.
позволило Морзе сделать среднюю
длину двоичных слов близкой к ми- Чтобы декодировать двоичную Клод Элвуд Шеннон.
нимально возможной. А какова ми- последовательность, составленную
нимально возможная средняя длина? из слов этого кода, следует начать с
Следуя Шеннону, можно рассмотреть первого символа и оставить только
вероятностную постановку этой за- те кодовые слова, для которых он яв-
дачи. Пусть P i — частота (вероят- ляется началом. Если таких слов не-
ность) появления в словах i-й буквы сколько, то придётся рассмотреть
алфавита. Для простоты предполо- первые два символа и сократить спи-
жим, что i-я буква алфавита появля- сок возможных слов, сохранив опять
ется в словах независимо от преды- лишь слова, начинающиеся с данных
дущих букв (конечно, в любом символов, и т. д. В конце получится
естественном языке, в частности рус- единственное кодовое слово, совпа-
ском, существуют определённые пра- дающее с несколькими первыми би-
вила). Буквам алфавита ставятся тами (не более трёх в примере), а все
в соответствие двоичные слова. На- остальные кодовые слова будут на
пример, при соотнесении с буквой этих позициях отличаться от приня-
«Т» слово (0), «Ы» — слово (1), «Я» — тых битов. Теперь эти биты «вычёр-
слово (01) получится следующая не- киваются», и процедура продолжа-
разрешимая ситуация. Из начала не- ется дальше. Так, для двоичной
которой двоичной записи в виде (01) последовательности 100111 полу-
не известно, что же закодировано — чится:
слово «Я» или слово «ТЫ».
Наиболее простой способ обеспе- 100111 = (10) 0111 = (B)(0)111 =
чить однозначное декодирование — = (B)(A)(111) = (B)(A)(D) = BAD.

19
Информация и информатика

Распределению вероятностей
P = {p1, ... , pm } сопоставляется число
H(P) = p1log2(1/p1) + ... + pmlog2(1/pm),
называемое энтропией источника и
служащее мерой неопределённости.
Чаще всего в этой формуле исполь-
зуются логарифмы по основанию 2,
и тогда количество информации,
необходимой для восстановления
значения источника (т. е. устране-
ния неопределённости), измеряется
в битах. Один бит соответствует ко-
личеству информации, получаемой
из ответа на вопрос с двумя равнове-
роятными ответами.
Первая теорема Шеннона — теоре-
ма кодирования для канала без шума
утверждает, что для любого кодирова-
ния (с однозначным декодированием)
его средняя длина E(L) не меньше энт-
ропии H(P), а с другой стороны, суще-
ствуют кодирования со средней дли-
ной, сколь угодно близкой к H(P). Тем
самым теорема означает, что сообще-
ния от источника могут быть закоди-
рованы в двоичной форме со средней
длиной представления, незначительно
большей, чем энтропия источника, и
Как сравнивать различные коди- что «экономнее» энтропии никакой ис-
рования (однозначные) по эффектив- точник сообщений представить нель-
ности, что выбрать в качестве меры зя. Величину r(L) = E(L) – H(P) называ-
эффективности? ют избыточностью кодирования L, тем
Шеннон предложил рассматри- самым 0 < (L) < 1 для однобуквенных
вать среднюю длину кодирования кодировок.
(среднюю длину кодовых слов)
E(L) = p1 L1 + ... + pm Lm, где Li — длина
i-го слова, и считать кодирование оп-
тимальным с минимально возмож-
ной средней длиной. Ясно, что не-
важно, как называются буквы А, Б...
или X, Y..., а важно только, сколько
букв и вероятности Pi их появления,
т. е. всё определяется распределени-
ем вероятностей P = {p1, ... , pm }. Мно-
жество букв (алфавит) с заданным
распределением вероятностей назы-
вают источником сообщений.
Для алфавита, состоящего из че-
тырёх букв (A, B, C, D), и распределе-
ния вероятностей: P(A) = 1/2, P(B) =
= 1/4, P(C) = P(D) = 1/8. Естественно,
что P(A) + P(B) + P(C) + P(D) = 1/2 +
1/4 + 1/8 + 1/8=1. Средняя длина кода,
описанного в предыдущем примере,
E(L) = p1 L1 + ... + pm Lm равна 7/4, что
меньше 2 бит, необходимых при рав-
номерном кодировании.

20
Информация и человек

Для побуквенных кодировок нель-


зя утверждать, что избыточность ко-
дирования можно сделать сколь угод-
но малой, а гарантировать лишь то, что
избыточность кодирования можно
сделать меньше 1. Для получения ма-
лой избыточности кодирования пере-
ходят от побуквенных кодировок
к блочным, когда кодируются блоки
из n букв алфавита. Пусть для просто-
ты анализа буквы источника появля-
ются независимо. Тогда вероятность
появления блока A = (a1, … , an) равна
P(A) = p(a1) . … . p(an), а энтропия ан-
самбля блоков букв равна H(P n) =
= nH(P). Следовательно, для блочных
кодирований средняя длина кода на
букву (текста) не меньше H(P), а с дру-
гой стороны, она меньше, чем ставления (одиночная ошибка)
100111 приведёт к 000111 =
1
– n 1
n H((P ) + 1) = H(P) + –
n .
= (0)(0)(0)(111) = AAAD.
Для формального описания зада-
Тем самым при увеличении длины чи исправления ошибок Шеннон
кодируемых блоков средняя длина ко- ввёл понятие канал передачи инфор-
дирования может стать очень близ- мации. У канала есть вход, куда по-
кой к энтропии источника, а избыточ- ступают символы из некоторого ал-
ность кодирования — достаточно фавита X (другие символы канал
малой. Алгоритмы кодирования так- просто не воспринимает). Канал рас-
же называют алгоритмами сжатия ин- сматривается как «чёрный ящик», т. е.
формации, поскольку они позволяют неважно (или неизвестно), что про-
представлять данные более эконом- исходит внутри канала, сообщается
но, устраняя имеющуюся в данных только результат — выход y (y при-
естественную избыточность. надлежит некоторому алфавиту Y).
До сих пор рассматривался вопрос Следовательно, канал задаётся неко-
о кодировании источника информа- торым законом того, что на выходе
ции (сообщений), т. е. экономном канала будет y, если на входе было x
представлении информации в удоб- (условные распределения вероятно-
ном виде (например, двоичном), стей P(Y = y | X = x)). Одним из важ-
предполагая, что закодированная ин- нейших примеров является двоич-
формация не подвергается каким-то ный симметричный канал (ДСК), где
искажениям — шума нет. Это и объяс- вход и выход двоичные (X = Y = {0,1})
няет название первой теоремы Шен- и вероятность того, что y = x (веро-
нона — «теорема кодирования для ка- ятность безошибочной передачи
нала без шума». Но, конечно, в двоичного символа), равна q, т. е. ве-
большинстве реальных ситуаций шум роятность ошибки p = 1 – q. Просте-
есть, иногда столь незначительный, что йший способ надёжно передавать
им можно пренебречь, но весьма ча- сообщения по такому каналу — по-
сто и такой, который приводит к изме- вторять символы по нескольку раз
нению выбранной нами формы пред- (как во время телефонного разгово-
ставления (кодирования). Тогда уже ра, если собеседник не расслышал
нельзя гарантировать однозначность слово).
декодирования. Или «декодирование» Пусть p = 0,1 и каждый двоичный
будет однозначным, но приведёт к не- символ повторяется 2m + 1 раз (напри-
верному (не тому, которое посылалось) мер, семь). Тогда приёмник прини-
сообщению. мает решение, что передавался тот
Так, для слова BAD изменение символ, который чаще (не менее чем
первого бита его двоичного пред- 4 = m + 1 раз) появлялся на выходе

21
Информация и информатика

КОДЫ ХЭММИНГА

История кодов, исправляющих ошибки, началась чуть двух позициях. Так как в каждом шаре 8 точек (7 плюс
более полувека назад, когда молодой американский центр), а всего слов в пространстве 128, то можно
учёный Ричард Уэсли Хэмминг решал задачи на одной разместить не более чем 128/8=16 непересекающих-
из первых вычислительных машин. Компьютеры того ся шаров, т. е. код Хэмминга оптимален.
времени были ненадёжны и часто ошибались. Приме- Код Хэмминга задаётся как множество решений
няемый уже тогда простой метод обнаружения ошибок однородной (т. е. правая часть равна 0) системы из
(проверка на чётность, каждому машинному слову из 0 четырёх линейных уравнений с семью неизвестными
и 1 приписывается дополнительный избыточный бит, x1 , ... , x7, у которой столбцы матрицы коэффициен-
равный 0, если в слове чётное число единиц, и 1 — ес- тов пробегают все 7 ненулевых столбцов из 0 и 1, а ра-
ли нечётное) позволял обслуживающему персоналу пе- венство нулю понимается как равенство по модулю два
резапустить вычислительный процесс. Но по выходным (т. е. результат арифметических действий, как с обыч-
дням, когда у Хэмминга было основное машинное вре- ными целыми числами, должен быть чётным числом).
мя, компьютер никто не обслуживал, и в результате мно- Пусть x = (x1 , ... , x7) — кодовое слово, а y = (y1 , ... ,
го вычислений проводилось напрасно. Тогда ему приш- y7) — принятое (из канала) слово, отличающееся от x не
ла мысль, что если коды могут обнаруживать ошибки более чем в одной позиции. Декодирование, т. е. вос-
автоматически, то должны быть и коды, способные ис- становление x по y, происходит следующим образом.
правлять ошибки. Сначала вычисляется синдром s(y) = (s1 , ... , s4) слова y,
Так появился теперь хорошо известный [7,4]-код как значения правых частей четырёх уравнений, в кото-
Хэмминга, исправляющий одиночные ошибки. Этот рые подставлены yi (вместо xi). Затем ищется такая по-
код позволяет представить (закодировать) 4 бит ин- зиция i, где соответствующий столбец коэффициентов
формации с помощью 7 бит таким образом, что лю- уравнений совпадает с синдромом и исправляется (т. е.
бая одиночная ошибка в 7-бит-
ном представлении будет
исправлена, в результате чего
удастся правильно восстано-
вить исходные 4 бит.
Так как 4 бит информации
представляют 24 =16 различ-
ных сообщений, то код Хэм-
минга состоит из 16 так назы-
ваемых кодовых слов длины
7. Свойство исправления оди-
ночных ошибок означает, что
искажение любого бита в
каком-то кодовом слове и лю-
бого (или ни одного) бита в
другом не может привести к
одному и тому же 7-битному
слову, имеется множество
(«пространство») из 27 = 128
7-битных слов, и в нём под-
множество (код) из 16 слов.
Вокруг каждого кодового сло-
ва есть «облако» («шар») из
7 слов, полученных в резуль-
тате одиночных ошибок, «об-
лака» («шары») не должны пе-
ресекаться. Последнее условие
исправления одиночных оши-
бок равносильно тому, что лю-
бые два кодовых слова долж-
ны отличаться более чем в Устранение одиночных ошибок (диаграммы Венна).

22
Информация и человек

инвертируется) i-я позиция в слове y. Если же синдром ошибки блоковой структуры


равен 0, то одиночной ошибки не было: x = y. (например, в словах из 128 бай-
Эта конструкция легко переносится на случай, ког- т исправляются любые пять
да слова имеют длину n = 2r– 1, а число кодируемых ошибочных байтов). Эти коды
битов k = n – r. Получаемый код Хэмминга позволя- являются оптимальными, так как
ет исправлять одиночные ошибки и оптимален. Для для исправления ошибочных
длин кода, отличных от 2r– 1, построение оптималь- блоков им требуется избыточ-
ного двоичного кода с исправлением одиночных оши- ность в виде r = 2t провероч-
бок является сложной математической задачей, не ре- ных блоков. В частности, коды
шённой до конца. Известно, что максимальное число Рида — Соломона используют-
слов в коде Хэмминга равно: 16 для n = 7 (1950 г.); ся в CD-проигрывателях и обес-
20 для n = 8 и 40 для n = 9 (1980 г.); 72 для n = 10 печивают высокое качество вос-
(1999 г.), для n = 11 ответ неизвестен (однако он произведения музыки. Ещё
существует для n от 12 до 15). пример применения кодов с ис-
Ещё более сложным и интересным является во- правлением ошибок: передача
прос о построении кодов, исправляющих многократ- данных как из космоса, так и по
ные ошибки. В настоящее время существует несколь- обычному телефонному каналу Ричард Уэсли
ко классов подобных кодов, широко и успешно (например, при сеансовом до- Хэмминг.
применяемых на практике: БЧХ, Рида — Соломона, ступе в Интернет), мобильная
Рида — Маллера и др. Наиболее популярны коды Ри- связь, хранение данных в ком-
да — Соломона, которые исправляют многократные пьютере и многое другое.

Обнаружение двойной ошибки.

23
Информация и информатика

и вероятностью ошибки меньше лю-


«В наш век возрастающей дифференциации человеческих зна-
бой заранее заданной сколь угодно
ний Клод Шеннон является исключительным примером соеди-
малой величины. Для двоичного сим-
нения глубины отвлечённой математической мысли с широким
метричного канала пропускная спо-
и в то же время совершенно конкретным пониманием больших
собность C = p log2 p + q log2 q, и она
проблем техники. Его в равной мере можно считать одним из
больше 0 для любой вероятности
первых математиков и одним из первых инженеров последних
ошибки, отличной от 1/2. В частнос-
десятилетий».
ти, пропускная способность ДСК с
вероятностью ошибки p = 0,1 равна
А. Н. Колмогоров примерно 1/2. Это означает, что су-
ществуют коды, исправляющие ошиб-
ки, кодирующие блок из k бит инфор-
канала. При этом вероятность ошибки мации в кодовый блок из примерно
декодирования стремится к нулю с ро- 2k бит, передаваемый по ДСК. Поэтому
стом m, правда довольно медленно. даже в результате ошибок в канале ве-
Основной недостаток данного ме- роятность «перепутать» один кодовый
тода заключается в том, что его КПД = блок с другим очень мала.
= 1/(2m + 1), называемый скоростью Шеннон доказал свою теорему, не
передачи, также стремится к нулю. предъявив такие коды, что было бы
На первый взгляд кажется, будто этот естественным, а показав, что случай-
недостаток «врождённый» и требова- но выбранный код почти обязательно
ние стремления к нулю вероятности обладает требуемым свойством.
ошибки декодирования приводит к И до сих пор, несмотря на интен-
тому, что у соответствующих мето- сивные исследования, параметры яв-
дов передачи информации скорость но построенных кодов остались ху-
передачи будет стремиться к нулю. же, чем у случайных кодов. Тем не
Вторая теорема Шеннона гово- менее коды, исправляющие ошибки,
рит, что это не так и для любой вели- нашли очень широкое применение
чины R, меньшей, чем пропускная спо- в технике — от надёжной передачи
собность канала C, можно передавать данных с межпланетных станций до
сообщения со скоростью передачи R бытовых CD-проигрывателей.

КЛОД ЭЛВУД ШЕННОН

Теория информации является одним бакалавра как математик и как элек-


из редких примеров научных дисци- троинженер. Двумя годами позже он
плин, о которых точно известно вре- стал магистром, защитив диссерта-
мя их создания. Данная наука была цию на тему «Символический ана-
описана в эпохальной работе Клода лиз релейных и переключательных
Элвуда Шеннона «Математическая тео- схем», в которой впервые показал,
рия связи» (1948 г.). В этой работе Шен- что анализ таких схем (прообраз со-
нон не только ввёл новые понятия, временной компьютерной техники)
такие, как «количество информации», может быть проведён с помощью ма-
«энтропия», «канал связи» и его про- тематического аппарата символиче-
пускная способность, и показал ской (булевой) логики.
теоретические пределы передачи Одновременно аналогичные ре-
информации, но и во многом пред- зультаты получили В. И. Шестаков и
определил дальнейшее развитие тео- А. Накасима.
рии информации на несколько деся- Довольно неожиданно Шеннон
тилетий вперёд. обратился к генетике и защитил в
Клод Элвуд Шеннон родился 30 ап- 1940 г. диссертацию по математике
реля 1916 г. в городке Гейлорд (США). (на степень доктора философии) на
Окончив в 1936 г. Мичиганский уни- тему «Алгебра теоретической генети-
Клод Элвуд Шеннон. верситет, Шеннон получил степень ки». К сожалению, эта работа не бы-

24
Информация и человек

ла вовремя опубликована и увидела Клод Шеннон не был стереотипным


свет лишь в конце XX в. «кабинетным учёным». Его всегда ин-
В начале Второй мировой войны тересовала возможность создания
Шеннон поступает работать в матема- «шахматной машины» или «шахмат-
тическую лабораторию компании ной программы». Приехав в Москву
AT&T Bell Telephones, одновременно в 60-х гг. он добился того, чтобы
он является советником национально- сыграть партию с чемпионом мира
исследовательского комитета Минис- Михаилом Ботвинником. Он сочетал
терства обороны США. В Bell Labs он таланты циркового артиста (мог жон-
трудится вплоть до 1972 г. За эти годы глировать, катаясь на одноколёсном
учёный создал теорию информации, велосипеде) и умельца (сам смастерил
заложил основы теории управляющих несколько автоматов, среди них —
систем и, написав всего одну статью по жонглирующаю машина).
криптографии, превратил этот пред- Около двух десятилетий учёные
мет из искусства в науку. разных стран (но в основном СССР А. Я. Хинчин.
В 1956 г. Клод Шеннон избран чле- и США) обобщали результаты, по-
ном Национальной академии наук лученные Шенноном, и давали им
США и Американской академии ис- строгое математическое обоснова-
кусств и наук, а с 1957 г. становится ние. Следует особо отметить работы
профессором электротехники и мате- А. Я. Хинчина, И. М. Гельфанда, А. Н. Кол-
матики Массачусетсского технологи- могорова, А. М. Яглома, Р. Л. Добру-
ческого института. шина и М. С. Пинскера.
При этом обнаружилось, что идеи
теории информации оказались полез-
ными и для самой математики. Так, ис-
пользование понятия энтропии при-
вело А. Н. Колмогорова к решению
проблемы изоморфизма динамиче-
ских систем, а также подтолкнуло его
к решению 13-й проблемы Гилберта
(о представимости непрерывных И. М. Гельфанд.
функций от многих переменных в ви-
де суперпозиции непрерывных функ-
ций от меньшего числа переменных).
Теория информации Шеннона ба-
зировалась на теории вероятностей.
Во второй половине 60-х гг. А. Н. Кол-
могоров создал алгоритмическую
теорию информации, позволившую
по-иному взглянуть на такое осново-
полагающее понятие, как «случай-
ность».
Выдающемуся учёному Клоду
Шеннону посчастливилось перешаг-
нуть в XXI в. Он прожил почти 85 лет
и скончался 24 февраля 2001 г. в Мед-
Элизабет Шеннон у памятника мужу в Гейлорде. форде, штат Массачусетс. А. Н. Колмогоров.

25
КОДИРОВАНИЕ ИНФОРМАЦИИ
ОТ РИСУНКА К БУКВЕ
Первые начертания, смысл которых ности, с магией и со счётом. Забор —
нам понятен, — изображения живот- один из первых знаков собственно-
ных на стенах пещер, сделанные на- сти, корона или скипетр — знаки вла-
шими далёкими предками десятки сти и положения в обществе, хрус-
тысяч лет назад. Однако между ними тальный шар — символ ясновидения,
и письменностью — огромная дис- а камешки давно превратились в ко-
танция. стяшки счётов.
Для передачи информации изна- Вероятно, именно со счётом были
чально использовались так называе- связаны знаки, переходные от пред-
мые предметные знаки: ракушки, метов к изображению. Это зарубки на
камешки, кости и перья животных, палке, которыми обозначался долг.
узелки и т. д. Такой знак может, на- Когда нанесённые на какую-либо
пример, указывать на наличие цело- поверхность значки используются
го класса аналогичных предметов уже не только для счёта, но и для
(именно на этом принципе строит- передачи развёрнутых сообщений,
ся заполнение витрин магазинов, ког- возникает идеографическое, т. е.
да выставляются только некоторые картинно-изобразительное, письмо,
предметы из ассортимента). В дру- нечто среднее между рисунком и
гом случае предметный знак высту- знаковым письмом. Картинка в целом
пает как символ понятия, предмета могла изображать некую ситуацию,
или целой ситуации. Так, в одном из как в наскальной живописи, но в ней
африканских племён в качестве уже выделялись элементы, не столько
знака оповещения о казни осуждён- изображающие, сколько обознача-
ному посылалось яйцо попугая. ющие отдельные элементы ситуации.
Наиболее типичные функции та- Закрепление отдельных знаков за
ких знаков связаны с обозначением определёнными понятиями, возмож-
принадлежности, статуса, собствен- ность их использования для описа-

26
Кодирование информации

ния разнообразных ситуаций озна- ного языка, и передавать при написа-


чают переход к словесному, или ие- нии соответствующими иероглифа-
роглифическому, письму. В нём на- ми. Будь, например, современная рус-
чертанный знак обозначает слово. ская письменность иероглифической,
При этом начертание всё больше схе- нам пришлось бы передавать фами-
матизировалось, теряло сходство лию одного из американских прези-
с первоначальным изображением, ас- дентов Билла Клинтона изображени-
социировалось уже не с самим пред- ями колышка и ноты: «клин» плюс
метом, а со словом. Происходил пе- «тон». А чтобы читатели понимали,
реход к письму, кодирующему уже не что в данном случае иероглифы ис-
непосредственно действительность, пользованы, так сказать, не всерьёз,
а человеческую речь. а лишь как части ребуса, ставились
Возможности иероглифической особые значки, которые указывали:
письменности несопоставимо шире, «Воспринимай не смысл, а только
чем идеографии. Ведь далеко не всё, звучание».
о чём думают и что считают важным Последний шаг к письменности
сообщить друг другу люди, можно бук- в современном понимании тоже был
вально изобразить. Знаки же, которые связан с взаимодействием цивилиза-
больше не привязаны к изображению, ций и культур. Финикийцы, купцы
а напрямую передают слова языка, поз- и мореплаватели, приспособили для
воляют передать даже самый общий, своих нужд позаимствованные у егип-
отвлечённый смысл. Не только отдель- тян иероглифы, упростив их начерта-
ный «старик», но и вообще «старость», ние и не вдаваясь в исходное значение
не только определённый «холодный
день», но и вообще «зима» как время
года. Смыслы можно комбинировать.
Например, знаки со значением «вода»
и «падать» вместе могут обозначать
«водопад», подобно тому как эти смыс-
лы сложены в русском слове.
Иероглифические письменно-
сти — это богатые, развитые знако-
вые системы, которыми пользовались
многие великие цивилизации и поль-
зуются до сих пор (например, в ки-
тайском языке).
Наверное, иероглифическая пись-
менность существовала бы вечно, ес-
ли бы на земле был только один язык.
Именно ситуация столкновения с
иноязычными словами выявила огра-
ничение иероглифической письмен-
ности. У иероглифа, как знака, нет
двойного членения, он отсылает
к слову целиком, а не передаёт его по
звукам. И как же в таких условиях обо-
значить новое слово? Например, имя
иностранца? Если этот иностранец
становился правителем, захватив дан-
ную территорию, или иностранка
становилась супругой правителя, та-
кие события не могли не найти отра-
жения в летописях. Чтобы решить
столь непростую задачу, древние пис-
цы стали произвольно делить ино-
странное имя на части, похожие по
звучанию на те или иные слова род-

27
Информация и информатика

этих значков, а используя их для пере-


дачи слогов собственного языка. Так
ИЩЕМ КЛАД появилось слоговое фонетическое
письмо. В нём отдельный значок пе-
Сколько надо сделать шагов? редавал сочетание гласного и соглас-
На север десять и десять, на восток пять и пять, ного, а знаки исчислялись уже не
на юг два и два, на запад один и один и потом вниз... тысячами, как в иероглифическом
письме, а десятками.
А. Конан Дойл. «Обряд дома Месгрейвов» Наконец, греки, переняв письмен-
ность финикийцев, сделали послед-
Все, наверное, помнят, как по этому указанию из старинного докумен- ний, решающий шаг: они отделили
та был найден клад. Этот текст представляет собой задание системы гласные от согласных и стали переда-
координат для поиска точки в пространстве. Путь определяется ис- вать одним значком — буквой — один
пользованием географических координат — север, юг, запад, восток — звук. Именно греки создали знакомое
и меры длины — шага. Ориентирование по солнцу — один из наиболее всем нам звуко-буквенное, или алфа-
известных и удобных способов определения положения в пространст- витное, письмо, явившееся заключи-
ве. Древние люди, путешествуя по суше и по воде, прекрасно умели тельным этапом в общей истории
определять своё местоположение, ориентируясь по солнцу, луне, звёз- письма. По такому пути шли все исто-
дам. На таких приёмах до появления компаса строилась вся навигация. рические письменности.
Сохранить и передать информацию о пути, о незнакомых берегах Развитие знаковых систем запи-
и странах и даже о местах, где спрятаны сокровища, помогают карты. си — путь утраты изобразительного
Если нам нужно объяснить кому-то дорогу, легче нарисовать план, чем принципа, внешнего подобия и заме-
рассказывать на словах. на его функциональным подобием.
Первые карты появились, по-видимому, в древнем Двуречье: изве- На этом пути можно выделить два наи-
стны вавилонские карты на глиняных табличках, относящиеся к XXIII в. более важных, революционных мо-
до н. э. В Средние века моряки использовали так называемые портола- мента. Первый — создание иерогли-
ны — карты морских торговых путей с нанесением «роз компаса», име- фа, особого письменного знака для
вших вид лучей, расходящихся из одного центра, и указывавших проек- обозначения слова, второй — разло-
ции кратчайших путей из одной точки к другой. Дальнейшие достижения жение значимой единицы — слова —
в развитии картографии связаны с введением Герардом Меркатором (из на незначимые элементы — слоги или
Фландрии) метода цилиндрической проекции, устанавливавшего систе- звуки, обозначаемые отдельными зна-
матическое соотношение между изображениями на сферической и пло-
ской поверхностях. Использование проекции позволяло перевести гео-
графические координаты — широту и долготу — со сферической
поверхности на плоскость с эффектом наименьшего искажения.
Современная карта — это универсальный указатель, кодирующий
пути в пространстве. Геометрическое подобие реальных очертаний
физических объектов и их контуров на карте создаётся масшта-
бированием. Используется также цвет, который носит изобразитель-
ный характер (синий для водоёмов, зелёный для лесов и равнин) или
чисто символический, например на политической карте мира. Кроме
того, на карте используются собственно символьные знаки и обозна-
чения, указывающие населённые пункты, дороги, места залегания по-
лезных ископаемых или зоны обитания животных.

Сэмюэл Финли Бриз Морзе.

28
Кодирование информации

ками. Эволюция письма даёт преиму-


щество — сокращение кода от тысяч
иероглифов до двух-трёх десятков
букв. Предел сокращения кода — два
знака. Ближе всего к этому решению
подошли Сэмюэл Морзе и Луи Брайль.
Морзе зашифровал буквы латинского
алфавита комбинациями из двух эле-
ментарных графических знаков (и ещё
одного — паузы) — точки и тире, а
Брайль — выпуклыми точками или их
отсутствием. Однако обратная сторо-
на сокращения кода — увеличение
текста. Фраза, для записи которой в
иероглифической письменности по-
требуется три значка, в звуко-буквен-
ной займёт почти целую строчку, а в
записи азбукой Морзе — несколько
строк.

СЧИТАЕМ ВОРОН пятеричная (считали по одной руке). Фрагмент


Совсем необычная пальцевая система древнегреческой
надписи из Гортины
В основе счёта лежит идея сопостав- была у папуасов племени телефол на (остров Крит).
ления, т. е. предметы счёта последо- Новой Гвинее: они считали начиная Середина V в. до н. э.
вательно сопоставляются со счётны- от мизинца правой руки, переходя на
ми средствами: палочками, камешками, локоть, плечо, доходили до кончика
пальцами рук и пр. Именно пальцевый носа и симметрично переходили на
счёт лёг в основу самой распростра- левую руку — получалось 27 единиц
нённой системы счисления — деся- счёта.
тичной. Ведь пальцы рук — наиболее Допустим, мы сосчитали ворон. Как
удобное средство для счёта. Впрочем, эту информацию передать? Можно,
к пальцам обращаются и другие сис- конечно, просто нарисовать предме-
темы, например двадцатеричная сис- ты счёта, т. е. шесть ворон. Но лучше
тема древних галлов и грузин (види- поступить более экономно: изобра-
мо, учитывались и пальцы ног), зить одну ворону, а рядом — шесть

29
Информация и информатика

пальцев (палочек). Именно так обыч-


но и делали в древности. Вероятно,
чёрточка изначально и изображала па-
лец (исторически русские слова «па-
лец» и «палка» одного корня), а может,
это просто самый удобный для начер-
тания знак. У некоторых народов (на-
пример, у майя) единица обознача-
лась кружком или точкой — тоже
максимально простой знак, а возмож-
но, изображение камешка.
В принципе имея знак для едини-
цы, можно им одним и обходиться.
Но такой способ, наверное, удобен,
только чтобы считать дни в темнице.
В прочих случаях громоздкость за-
писи существенно затруднит работу
с ней. Поэтому люди перешли к обо-
значению знаками целых множеств:
пятёрок, десяток, дюжин и т. д. На-
пример, римская цифра V, как счита-
ют исследователи, восходит к изоб-
ражению ладони. Таким способом
довольно удобно обозначать боль-
шие числа, имея в виду, что общее
ТОЧКИ ВМЕСТО БУКВ числовое значение получается при
сложении этих величин. Для эконо-
Чем короче код, тем длиннее запись, и наоборот. Задачу най- мии вводят порядок в расположении
ти оптимальное соотношение краткости кода и краткости за- знаков и наряду со сложением ис-
писи пришлось решать при создании письменности для незря- пользуют приём вычитания: допус-
чих людей. Читать на ощупь привычные нам буквы очень тим, единицы справа от знака, обозна-
неудобно, противопоставление составляющих их элементов, чающего десятки, прибавляются к
легко воспринимаемое зрением, оказывается недостаточным нему, а слева — вычитаются. Так, в
для осязания либо буквы приходится делать настолько круп- частности, устроена римская систе-
ными, что запись и хранение сколько-нибудь длинного текста ма: её основные знаки — идеограммы
превращаются в настоящую проблему. в виде букв латинского алфавита —
В 1824 г. 15-летний Луи Брайль, ослепший в раннем детст- I, V, X, L, C, M (1, 5, 10, 50, 100, 1000) и
ве и очень страдавший от невозможности самостоятельно чи- т. д. С помощью букв обозначали
тать, придумал использовать для обозначения букв комбина- числа и греки, и русские (перенявшие
ции из шести позиций (2 .3), часть из которых может быть у греков бо′ льшую часть алфавита), и
выпуклой. Таких комбинаций, как легко подсчитать, 64, чего армяне, и грузины — способ оказался
вполне достаточно, чтобы передать все буквы алфавита, знаки очень удобным и получил широкое
препинания и цифры. Выпуклые точки наносятся на плотную распространение. Понятно, что в ка-
бумагу и легко распознаются на ощупь. Более того, с помощью кой-то момент букв может не хватить,
этой азбуки слепой человек и сам может писать, выдавливая но в те далёкие времена со столь боль-
точки острым пером. шими числами работали редко.
В системе Брайля имелся особый код-признак числа и от- Тот же важнейший шаг, который со-
меняющий его код-признак буквы, поскольку для удобства циф- вершили финикийцы и греки для пись-
ры кодировались теми же знаками, что и первые десять букв. менности, сделали индийцы и арабы
Это были первые в истории коды переключения. для записи чисел. Они придумали нуль
Позже для удобства и сокращения длины записи комбина- и позиционную систему записи чисел.
циям, оставшимся незанятыми, присвоили значения наиболее Идея её внешне проста: два человека
употребительных сочетаний букв. могут, используя пальцы рук, досчитать
Кроме того, если знак отделяется от соседних большим ин- не до 20, а до 100, если договорятся, что
тервалом, он обозначает не букву, а часто встречающееся сло- первый будет считать единицы, а вто-
во: you вместо y, not вместо n и т. п. рой — десятки (трое досчитают не до
30, а аж до 1000 и т. д.).

30
Кодирование информации

СИСТЕМЫ СЧИСЛЕНИЯ

КАК СЧИТАЛИ Чёрное море Ка


сп
В ВАВИЛОНИИ

ий
ск
УРАРТУ

ое м о
Между реками Тигр и Евфрат, в могу-
чем государстве Вавилонии, высоко- Хаттуса
ХЕТТЫ

ре
го развития достигли счёт и системы ХУРРИТЫ
счисления (см. раздел «Старинные си-
стемы записи чисел» в томе «Матема-
тика» «Энциклопедии для детей»). Дур-Шаррукин
Вавилонские числа являются комби- ипр Ниневия
о .К
нацией не двух, а трёх клинописных

ое
Ашшур
знаков: единицы — , десятки — Ср н Мари ПАРФИЯ
еди зем Экбатана
е Библ АССИРИЯ
и сотни — . м ор Сидон
С помощью этих знаков можно за- Тир АККАД ПЕРСИЯ
писать любое число, используя прин- Вавилон
Сузы
цип сложения или умножения: м Урук
ли Пасаргады
уса
ер Ур Персеполь
— 10 .100 = 1000, И

Пер
— 10 + 1 = 11.

си
ск

д
ий
Кр

Большие числа всегда предшест- зал


ЕГИПЕТ

ив
ас

вовали меньшим. Кроме этого спо-


ВАВИЛОНИЯ
но

соба записи чисел применялась так-


е

же позиционная шестидесятеричная
м оре

система. Знак единицы мог обозна-


чаться как 1, 60, 602, а знак десятки —
соответственно 10, 10 . 60 2 и т. д.,
в зависимости от порядка располо-
жения:

— 1 . 60 + 10 + 2 = 72.

Вавилоняне имели подобие знака


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

КАК СЧИТАЛИ В ЕГИПТЕ


Главным источником современных
знаний о египетской числовой систе-
ме является так называемый папирус
Ахмеса, найденный в 1853 г. (или

31
Информация и информатика

папирус Райнда — по фамилии вла-


Древнеегипетский дельца, который приобрёл этот доку-
папирус с матема-
тическими выклад- мент в 1858 г.).
ками. Для записи чисел египтяне приме-
няли иероглифы: один — ,, десять —
, сто — , тысяча — , и так до
10 млн — . Затем иероглифическое
письмо было упрощено иератическим
(от греч. «иератикос» — «священный»):

1 2 3 4 5 6 7 8 9 10

20 30 40 50 60 70 80
Все остальные числа записывались
из этих знаков при помощи операции
сложения. Вначале писались числа
высшего порядка, а затем низшего:

=100+100+10+1+1+1+1=214.

Умножение и деление египтяне


производили путём последовательно-
го удвоения чисел — особая роль от- Затем отмечали вертикальными
водилась двойке. чёрточками строки левого столбца,
В примере 19 . 31 египтяне после- из которых можно было сложить мно-
довательно удваивали число 31. В пра- житель (19 = 1 + 2 + 16), и складывали
вом столбце записывали результаты числа, стоящие в отмеченных стро-
удвоения, в левом — соответствующую ках справа (31 + 62 + 496 = 589).
степень двойки: Египетские дроби всегда имели в
числителе единицу (исключение со-
ставляло 2/3; см. статью «Методы
1 | 31
вычислений» в томе «Математика»
2 | 62
«Энциклопедии для детей»). Дроби
4 | 124
записывались как натуральные чис-
8 | 248
ла, только над ними ставилась точка,
16 | 496
специальные знаки были для 1/2 и
для 2/3:

– 1/10, – 2/3, – 1/2.

КАК СЧИТАЛИ В РИМЕ


Римские числа общеизвестны, их сей-
час можно увидеть во многих местах,
например на циферблате кремлёв-
ских курантов — главных часов Рос-
сии.
В римской системе счисления
семь чисел обозначаются буквами:
1 — I, 5 — V, 10 — X, 50 — L, 100 — C,
500 — D, 1000 — M, а остальные чис-
ла записываются комбинациями этих
знаков. Если числа в комбинации идут

32
Кодирование информации

в порядке от больших к меньшим, чис- ИНДИЙСКАЯ НУМЕРАЦИЯ


ла складываются:
Цифры, которыми пользуются сейчас,
XXI — 10 + 10 + 1 = 21, пришли из Индии. Европейские наро-
ды познакомились с ними благодаря
MMV — 1000 + 1000 + 5 + 1 = 2005, арабам. Математик Леонардо Пизан-
ский первым упоминает об арабских
если от меньших к большим — значе- числах в 1202 г. В XVI в. новая нуме-
ние числа вычитается из следующей рация получает широкое распростра-
буквы: нение; в Россию она попадает в XVII в.
и в начале XVIII в. полностью вытес-
IV = 5 – 1 = 4. няет алфавитную систему. Десятич-
ная позиционная система (арабская
Cкладывать и вычитать в такой си- система) даёт принципиальную воз-
стеме удобно, но умножать и делить можность записывать сколь угодно
очень сложно. Римляне пользовались большие числа.
дробями со знаменателем 60 (как в В десятичной системе десять цифр:
Вавилонии) и со знаменателями 12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
24, 48. Освоение дробей требовалось Число зависит не только от циф-
для счёта денег, мер и весов. Римская ры, но и от порядка расположения.
монета асс чеканилась из меди, име- Число 44 обозначает количество еди-
ла вес один фунт и делилась на ниц и десятков, а цифра 0 указывает
12 унций. позицию цифры, например 40.
Особую роль играют число 10 и его
степени: 10, 102, 103...
КАК СЧИТАЛИ ГРЕКИ
2005 = 5 + 0 .10 + 0 .100 + 2 .1000,
Греки применяли несколько спосо-
бов записи чисел. При использовании или
ионической нумерации числа выра-
жались буквами алфавита. Чтобы от- 2005 = 5 + 0 .101 + 0 .102 + 2 .103,
личить число от слова, над буквами
числа ставился специальный значок или
— титло. Этот способ записи чи-
сел применялся жителями Милета и 2005 = 2 .103 + 0 .102 + 0 .101 + 5 .100.
Александрии. Афиняне для обозначе-
ния чисел пользовались первыми бук-
вами слов — числительных:

Γ (Γεντε) — пять,
∆ (∆εκα) — десять,
Η (Ηκατον) — сто,
Χ (Χιλιασ) — тысяча,
Μ (Μυριασ) — десять тысяч,
Ι, ΙΙ, ΙΙΙ, ΙΙΙΙ — соответственно 1, 2,
3, 4,
∆∆∆ΙΙΙΙ — 10 + 10 + 10 + 4 = 34.

С помощью этих цифр житель


Древней Греции мог записать любое
число.
Великий греческий математик Дио-
фант Александрийский записывал
дроби примерно так, как принято сей-
час: числитель над знаменателем, но
без черты. Это был один из способов
записи дробей в Древней Греции.

33
Информация и информатика

Любое четырёхзначное число мож-


но записать как

N = a3 . 103 + a2 . 102 + a1 . 101 + a0 . 100,

где a0, a1, a2, a3 — десятичные цифры


числа (цифра a3 отлична от 0). Число
10 в формуле называют основанием
системы счисления. Существуют сис-
темы счисления с другим основани-
ем — p.
Запись числа n в p-системе счис-
ления:

n = an p n + an–1 pn–1 + … + a1 p1 + a0 p0,

где ai ∈ {0, 1, 2, ... , p–1} и an A 0.

Если в качестве p взять число 2, то


выйдет двоичная система счисления.

ДВОИЧНОЕ КОДИРОВАНИЕ

Двоичная система счисления была ко вычислительная машина, но и че-


придумана задолго до появления ловек.
компьютеров. Ещё великий немец- Для удобства запишем двоичное
кий математик Готфрид Вильгельм число в таблицу поразрядно, прону-
Лейбниц увидел в двоичной системе меруем разряды в следующей стро-
особый скрытый смысл. Действи- ке (справа налево, начиная с 0) и вы-
тельно, двоичная система предель- пишем соответствующие степени
но проста: двойки (справа налево с 0-й степе-
используется всего две цифры — ни).
0 и 1; Для числа 111110100112 таблица
таблица умножения состоит всего выглядит так:
из трёх строк:
Число 1 1 1 1 1 0 1 0 0 1 1
0.0=0 N 10 9 8 7 6 5 4 3 2 1 0
0.1=0 2n 1024 512 256 128 64 32 16 8 4 2 1
1.1=1

К недостаткам двоичной систе- Единицы в первой строке таблицы ука-


мы можно отнести только «длинную» зывают, какие степени двойки нужно
запись чисел (чем меньше в систе- сложить, чтобы получить число:
ме цифр, тем длиннее будет запись
числа): 1024 + 512 + 256 + 128 + 64 + 16 +
+ 2 + 1 = 2003,
200210 = 111110100102.
т. е. 111110100112 = 200310.
Однако этот досадный факт не Алгоритм перевода числа в дво-
помешал инженерам использовать ичную систему аналогичен преды-
двоичную систему при конструиро- дущему, но требует проведения опе-
вании электронных схем. Перевести рации деления с остатком. Число
число из двоичной системы в при- последовательно делят на два, выпи-
вычную десятичную может не толь- сывая результат в столбик, одновре-

34
Кодирование информации

менно записывают остатки (не про-


пуская нулевые). Ответом будет чис-
ло, получившееся в правом столбце
(снизу вверх). Для числа 413 это вы-
глядит так:

413 1
206 0
103 1
51 1
25 1
12 0
6 0
3 1
1 1

ной системе и признак десятичной Компьютер PDP 11/70


Если теперь выписать получивше- системы 10 опущен. использовал восьме-
ричную кодировку.
еся во втором столбце (снизу вверх) Перевод из восьмеричной системы
число, оно и будет ответом: в десятичную по сложности вычисле-
ний мало отличается от перевода из
1100111012 = 41310. двоичной. А вот перевод из восьмерич-
ной системы в двоичную очень прост.
В переводе чисел из двоичной Достаточно составить таблицу триад
системы счисления в десятичную (по три цифры)
систему и обратно нет ничего слож-
ного и магического. Каждый освоив- 08 – 0002 48 – 1002
ший эту несложную науку может счи- 18 – 0012 58 – 1012
тать себя понимающим язык ЭВМ. 28 – 0102 68 – 1102
Однако записывать в двоичной сис- 38 – 0112 78 – 1112
теме числа по-прежнему неудобно,
так как запись занимает много мес- и запомнить её как таблицу умноже-
та. И перевод в двоичную систему ния.
вряд ли удастся выполнить в уме. При переводе восьмеричного чис-
Поэтому стали использовать систе- ла в двоичное заменяют каждую вось-
мы, родственные двоичной системе меричную цифру на соответству-
счисления, в которых запись числа ющую триаду из таблицы. В качестве
на бумаге короче, чем в двоичной, примера переведём число 6118 в дво-
а алгоритмы перевода не требуют ичную систему:
сложных вычислений.
6118 = 110 001 0012
(68 заменили на 1102,
ВОСЬМЕРИЧНАЯ а 18 — на 0012).
СИСТЕМА СЧИСЛЕНИЯ

В этой системе восемь цифр: 0, 1,


2, 3, 4, 5, 6, 7. Цифра 1, записанная
в младшем разряде, означает — как
и в десятичном числе — просто
единицу, а в следующем разряде
она означает 8 10, в следующем —
6410 и т. д.
Число 100 8 — это 64 10 , а число
6358 = 6 . 64 + 3 . 8 + 5 = 41310. При вы-
числениях числа указаны в десятич-

35
Информация и информатика

цифр используют привычные цифры:


0, 1, 2, 3, 4, 5, 6, 7, 8, 9, а для остальных
шести цифр — первые буквы латин-
ского алфавита:

A — 10,
B — 11,
C — 12,
D — 13,
E — 14,
F — 15.

Как и в восьмеричной системе, ци-


фра 1, записанная в младшем разря-
де, означает единицу. В следующем
разряде та же цифра 1 означает 1610,
в следующем — 25610 и т. д. Цифра F,
записанная в младшем разряде, озна-
чает 15 10, в следующем разряде —
1510 . 1610 и т. д. Например,

10016 = 25610,

1AF16 = 1 . 162 + 10 . 16 + 15 = 43110 .

Перевод из шестнадцатеричной
системы в двоичную и обратно ана-
логичен действиям с восьмеричной
системой. Надо опять запомнить таб-
лицу перевода, где вместо триад сто-
ят тетрады (четвёрки):

016 – 00002 816 – 10002


Для обратной операции, т. е. для пе- 116 – 00012 916 – 10012
В ЭВМ VAX ревода из двоичной в восьмеричную 216 – 00102 A16 – 10102
использовалась систему, двоичное число разбивают 316 – 00112 B16 – 10112
шестнадцатеричная
кодировка. на триады (справа налево), потом за- 416 – 01002 C16 – 11002
меняют каждую группу одной восьме- 516 – 01012 D16 – 11012
ричной цифрой. Допустим, 616 – 01102 E16 – 11102
716 – 01112 F16 – 11112
101 111 1112 = 5778.
Следовательно,
Если первой полноценной триады
не получается (не хватает цифр), то 61A16 = 110 0001 10102
её дополняют ведущими нулями: (616 заменили на 01102,
116 — на 00012, A — на 10102).
1 111 0002 = 001 111 0002 = 1708.
При совершении обратной опе-
рации двоичное число надо разбить
ШЕСТНАДЦАТЕРИЧНАЯ на четвёрки цифр справа налево (ес-
ли первой четвёрке не хватает цифр,
СИСТЕМА СЧИСЛЕНИЯ то её дополняют ведущими нулями)
и потом заменить каждую группу од-
Запись числа в восьмеричной систе- ной шестнадцатеричной цифрой:
ме достаточно компактна, но ещё ком-
пактнее она получается в шестнадца- 11 1110 01112 = 0011 1110 01112 =
теричной системе. Для первых десяти = 3E716.

36
Кодирование информации

БИТЫ И БАЙТЫ что автоматически увеличит объём


хранимой информации в два раза.
Символы двоичной системы счисле- Как уже говорилось, при двоичном
ния — 0 и 1 называют двоичными ци- кодировании в компьютере нельзя за-
фрами или битами (от англ. binary писать ничего, кроме двоичных цифр.
digit — «двоичная цифра»). В одном байте можно хранить одно
У электронных схем для обработки неотрицательное целое число от 0 до
двоичных кодов есть только два уст- 255, а требуется ещё придумать коди-
ойчивых состояния — «есть сиг- рование отрицательных чисел. На-
нал»/«нет сигнала» (высокое напря- пример, в одном байте можно хранить
жение/низкое напряжение). 128 отрицательных целых чисел (от
Подобные схемы нетрудно реали- –128 до –1), 0 и 127 положительных
зовать технически. Поэтому инжене- чисел от 1 до 127. Всего же чисел по-
ров двоичное кодирование информа- прежнему останется 256, как и зако-
ции привлекает, несмотря на то что дированных символов.
числа получаются слишком длинны- Нуль будет кодироваться комбина-
ми. Компьютеру легче иметь дело с цией из восьми нулей: 00000000.
большим числом простых элементов, Положительные числа от 1 до 127
чем с небольшим числом сложных. кодируются, как обычно, в двоичной
При хранении информации в па- системе, при этом слева дописывают
мяти компьютера каждый бит хранит- незначащие нули:
ся в одном разряде памяти. Разряды
объединяются в ячейки памяти фик- 1 — 00000001
сированного размера — 8, 16 и 32 раз- 2 — 00000010
ряда и носят специальные названия 3 — 00000011
«байт», «слово» и «двойное слово». Фак- ...
тически это является стандартом для 126 — 01111110
современных персональных компью- 127 — 01111111
теров.
При кодировании чисел важно по- Отрицательное число запишется
мнить, что, например, число 100010 в дополнительном коде. Например,
не удастся поместить в один байт, по- отрицательное число –5 хранится
скольку его двоичная запись содер- как двоичная запись числа 256 – 5
жит десять цифр (11111010002), что (256 = 28), т. е. дополнение к 5 до 256:
больше размера байта. И конечно, су-
ществуют большие числа, не поме- 11111011
щающиеся даже в двойное слово.
Такие числа можно разместить Поскольку –5 + 256 >127, в стар-
в большем числе байтов, однако ком- шем разряде двоичного числа будет
пьютер умеет быстро производить вы- единица, сигнализирующая, что чис-
числения с числами, которые поме- ло отрицательное, поэтому старший
щаются в байты и слова (иногда разряд ячейки обычно называют зна-
двойные и четверные слова), и если ковым. Так кодируются отрицатель-
число большое, то операции с ним бу- ные числа –1, –2, –3, … , –127, –128.
дут распадаться на операции с байта-
ми, словами и т. д.
По аналогии в одном байте мож-
но закодировать 256 различных сим-
волов какого-либо текста. На первый
взгляд это много: буквы русского
алфавита, прописные и строчные,
знаки препинания, десять цифр, ещё
латинский алфавит. Однако если по-
требуется ввести ещё какой-нибудь
алфавит, то, скорее всего, места уже
не хватит. Тогда символ текста будет
кодироваться не байтом, а словом,

37
Информация и информатика

КОДИРОВАНИЕ ИЗОБРАЖЕНИЙ

Человек получает бо′ льшую часть ин- Однако применима и визуальная


формации из окружающего мира с оценка цвета. В 1756 г. выдающийся
помощью зрения. Глаз человека ощу- русский учёный Михаил Васильевич
щает свет только тогда, когда на сет- Ломоносов (1711—1765) впервые
чатку попадает лучистая энергия ди- высказал мысль, что для воспроизве-
апазона 360—750 нм, т. е. видимая дения любого цвета в природе до-
часть спектра электромагнитных ко- статочно смешать в определённых
лебаний. пропорциях три основных цвета:
Предметы воспринимаются чело- красный, зелёный, синий. Теория
веком благодаря их цветности (вмес- трёхкомпонентности цвета, опи-
те цветовой тон и насыщенность цве- раясь на многочисленные опыты,
та) и различной яркости. Чем дальше утверждает, что в зрительной системе
удалён предмет от источника света, человека возникают нервные возбуж-
тем менее ярким он воспринимается. дения трёх типов, каждое из которых
Яркость предмета зависит также от независимо от остальных. Многообра-
его отражательной способности и зие цветовых ощущений при зритель-
формы. Белый свет — самый сложный, ном восприятии можно объяснить
он объединяет излучения разных длин многообразием комбинаций трёх ти-
волн. Каждый предмет отражает его пов возбуждений. Эта теория лежит в
по-своему, что и объясняет цветовое основе большинства практических ме-
различие между ними. тодов воспроизведения цветных изо-
Цвет можно оценить по количест- бражений: в фотографии, телевидении,
Призма и спектраль- ву энергии, приходящейся на каждую кино и т. п.
ное разложение света. длину волны, — по спектральной ха- Компьютерное кодирование изоб-
рактеристике. ражений также построено на этой
теории. Картинка разбивается вер-
тикальными и горизонтальными ли-
ними на маленькие прямоугольники.
Полученная матрица прямоуголь-
ников называется растром, а элемен-
ты матрицы — пикселями (от англ.
picture's element — «элемент изоб-
ражения»). Цвет каждого пикселя
представлен тройкой значений ин-
тенсивности трёх основных цветов.
Чем больше битов выделено для каж-
дого основного цвета, тем большую
гамму цветов можно хранить про
каждый элемент изображения. В стан-
дарте, называемом true color (реаль-
ный цвет), на каждую точку растра
тратится 3 байта, по 1 байту на каж-
дый основной цвет. Таким образом,
256 уровней яркости красного цве-
та, 256 уровней яркости зелёного и
256 уровней яркости синего дают
вместе примерно 16,7 млн различ-
ных цветовых оттенков, это превос-
ходит способность человеческого
глаза к цветовосприятию.
Чтобы хранить всю картинку, до-
статочно записывать в некотором по-
рядке матрицу значений цветов пик-
селей, например слева направо и

38
Кодирование информации

сверху вниз. Часть информации о кар-


тинке при таком кодировании поте-
ряется. Потери будут тем меньше, чем
мельче пиксели. В современных ком-
пьютерных мониторах с диагональю
15—17 дюймов разумный компро-
мисс между качеством и размером
элементов картинки на экране обес-
печивает растр от 768 .1024 точки (бы-
товой видеомагнитофон — 250 линий
на кадр, т. е. 250 точек по вертикали;
отечественное телевидение стандар-
та SECAM — 625 линий на кадр).
При кодировании изображений не
всегда используются именно три ос-
новных цвета. При печати картинок
(и при рисовании) на бумаге если сме-
шать красную и зелёную краски, то
получится не жёлтый цвет, а корич-
невый. Это происходит потому, что
краски сами по себе не отражают све-
та, а только поглощают некоторые
цвета из падающего на них светово-
го потока. Поэтому в качестве основ-
ных применяются другие цвета: голу-
бой, сиреневый и жёлтый, а метод
кодирования цвета называется CMY
(от англ. cyan — «голубой», magenta —
«сиреневый» и yellow — «жёлтый»). При
этом красный цвет получается как сум-
ма сиреневого и жёлтого, а зелёный —
как сумма жёлтого и голубого.
Так как визуальное восприятие тию схема кодирования HSV (от англ.
цвета является трёхкомпонентным, hue — «цветовой тон», saturation — «на-
то всякий цвет может быть задан сыщенность» и value — «величина»,
не менее чем тремя параметрами. «яркость»).
Во многих программах обработки Цветовой тон — близость цвета
изображения используется более при- к тем или иным цветам спектра. На-
ближённая к человеческому воприя- блюдая разложенный в спектр белый
свет, глаз человека видит семь участ-
ков спектра, резко различающихся
по зрительному ощущению: красный,
оранжевый, жёлтый, зелёный, голу- Три числа описывают
бой, синий, фиолетовый. При внима- цвет точки – это могут
тельном рассмотрении человек улав- быть и RGB или три
ливает гораздо больше цветов, только другие. Кодировка
по цветовому тону глаз способен раз- цвета, принятая в те-
личить около 200 цветов. Цветовой левидении, описыва-
тон характеризуется длиной волны ет формулы для пере-
того спектрального излучения, к ко- вода из RGB к YCbCr:
торому ближе всего данный цвет. Y = 0,299R+0,587G+
Насыщенность — степень выра- + 0,114B,
женности тона в цвете, т. е. насколь- Cb = 0,564(B–Y),
ко к данному спектральному цвету Cr = 0,649(R–Y).
примешан одинаковый с ним по яр-
кости белый цвет. Если к чистому
спектральному цвету добавить белый

39
Информация и информатика

цвет, то при неизменной общей ярко- щена прямым светом, а другая — рас-
сти насыщенность спектрального цве- сеянным от того же источника, то
Часто используется та уменьшится. Интересно, что в при- цвета воспринимаются человеком по-
обозначение HSB роде мало что (или кто) отличается разному, несмотря на то что цвето-
(brightness) вместо насыщенностью цвета (возможно, вой тон и насыщенность этих частей
HSV. лишь тропическая флора и фауна). Ис- одинаковы.
кусственные краски, например изоб- Кодировка с помощью цветового
ражение на мониторе, обладают бо- тона, насыщенности и яркости поз-
лее высокой насыщенностью и воляет легко получить из цветной
поэтому так радуют человеческий глаз. картинки монохромную, или, как не
Яркость (светлота) определяется совсем верно говорят, чёрно-белую,
уровнем действующего на глаз излу- не меняя яркости объектов изобра-
чения. Если одна часть объекта осве- жения.

КОДИРОВАНИЕ ЗВУКА И МУЗЫКИ

Как известно, звук представляет со- вают дискретизацией, а устройство


бой колебания воздуха. Амплитуда для его выполнения — аналого-ци-
колебаний постоянно меняется, так фровым преобразователем (АЦП).
как звук является непрерывным сиг- Типичный восьмибитный АЦП пре-
налом. При кодировании звука этот образует напряжение в диапазоне
сигнал надо представить в виде по- от —500 мВ до 500 мВ в восьмираз-
следовательности нулей и единиц. рядные двоичные числа в диапазоне
Например, используя микрофон, звук от –12810 до 12710.
можно превратить в колебания элек- Обратный процесс — воспроиз-
трического тока, измеряя амплиту- ведение закодированного звука про-
ду колебаний через равные проме- изводится с помощью цифроана-
жутки времени несколько десятков логового преобразователя (ЦАП).
тысяч раз в секунду. Каждое измере- Тогда двоичные числа из диапазона
ние производится с ограниченной от –128 10 до 127 10 преобразуют-
точностью и записывается в дво- ся в напряжение из диапазона от
ичном виде. Данный процесс назы- –500 мВ до 500 мВ.

40
Кодирование информации

При работе со сте-


реозвуком дискрети-
зация проводится от-
дельно и независимо
для левого и правого
каналов.

Полученный ступенчатый сигнал Как и всякий звук, музыка являет-


сначала сглаживается посредством ся не чем иным, как звуковыми коле-
аналогового фильтра, а затем преоб- баниями, и, закодировав их достаточ-
разуется в звук с помощью усилителя но точно, звук можно будет потом
и динамика. воспроизвести. Однако такой спо-
На качество воспроизведения за- соб не позволяет композитору запи-
кодированного звука в основном вли- сать придуманное произведение, а му-
яют два параметра — частота дискре- зыканту — исполнить его, ни разу
тизации и размер в битах, отводимый не услышав.
под запись значения амплитуды. На-
пример, при записи на компакт-дис-
ки (CD) используются 16-разрядные
Русский композитор Ю. А. Шапорин писал: «Мне кажется, нет
значения, а частота дискретизации
на свете другого искусства, которое так роднило людей, как му-
равна 44 032 Гц. Эти параметры обес-
зыка. Язык её понятен каждому...». Он имел в виду, что милли-
печивают превосходное качество зву-
оны людей способны слушать музыку и наслаждаться ею, не зная
чания речи и музыки.
ни названий музыкальных инструментов, ни принципов созда-
Выбор частоты дискретизации
ния музыкальных произведений.
объясняется тем, что максимальная
частота звука, которую способен слы-
шать человек, не превосходит 22 кГц.
Колебание с частотой 22 кГц при
дискретизации с той же частотой не-
отличимо от тишины. Чтобы на каж-
Выше частоты 5 кГц принцип умножения на два нарушается. Что-
дом периоде дискретизации записы-
бы получить ощущение увеличения высоты на октаву, надо уве-
валось два значения, нужна вдвое
личить частоту почти в 10 раз. Даже люди с абсолютным музы-
большая частота дискретизации, а
кальным слухом затрудняются в определении нот для звуков с
именно 44 кГц. Когда высокое каче-
частотой выше 5 кГц. Это говорит о различии в механизмах вос-
ство не требуется, можно использо-
приятия высоты тона до 5 кГц и выше.
вать меньшие частоты дискретиза-
ции: 11 кГц, 5,5 кГц и т. д.

41
Информация и информатика

Выход был придуман давным-дав-


но — нотное письмо, или нотация
ЦВЕТА И ЗВУКИ (от лат. notatio — «записывание»,
«обозначение»), — система графиче-
Мы выделяем семь цветов радуги и семь нот. Естественно, ни в звуча- ских знаков, применяемых для запи-
щей мелодии, ни в цветовом спектре нет никаких реальных переходов, си музыки. В начале Средних веков
границ между отдельными звуками и цветами. Это условность, необхо- особыми знаками — невмами, состоя-
димая для того, чтобы музыку или цвет можно было кодировать и пере- щими из чёрточек, точек, запятых, —
давать информацию о них. указывались отдельные звуки, груп-
Рассмотрим, как разделяется на знаки, кодируется непрерывность пы звуков, ходы голоса вверх и вниз
музыкального звука. Музыкальный звук отличается от обычного шума без точного определения высоты зву-
наличием тона. Тон изменяется по высоте (фактически, частоте вибрации ков, поэтому они могли лишь напо-
воздуха). В непрерывном изменении высоты выбирается некая услов- минать певцу уже известный ему
ная начальная точка («до»). От неё отстраиваются другие точки, равно напев. В XI в. итальянский музыкаль-
или соизмеримо отстоящие друг от друга (на условное расстояние 1 тон ный теоретик Гвидо д’Ареццо ввёл си-
или 1/2 тона, которое является мерой изменения). Каждая из них имеет стему из четырёх нотных линий, явив-
наименование — «ре», «ми» и т. д. В своём последовательном располо- шуюся прототипом современного
жении они образуют звукоряд. Частоты вибраций воздуха членов зву- нотного стана. В начале линий поме-
коряда соотносятся как дробные числа (4/3, 3/2 и т. п.), что позволяет щались буквенные знаки (прообразы
добиться ощущения гармонического созвучия в аккорде. Звукоряд по- современных музыкальных ключей),
вторяется в разных октавах при повышении или понижении частоты в определявшие высоту записанных
два раза. звуков. В дальнейшем число линий
Для музыкальных звуков помимо высоты необходимой характерис- довели до пяти, а невмы заменили
тикой является соотносительная длительность звучания. Её отмечают, нотами с квадратными головками.
соизмеряя с эталоном целой, которая последовательно делится на два: Впоследствии приняли нотацию,
половинка, четверть, восьмая, шестнадцатая и т. д. (длительность целой фиксировавшую как высоту, так
условно приравнивалась к двум ударам человеческого сердца; основ- и длительность звуков. С небольши-
ной же метрической единицей выступала четверть; именно по ней фик- ми изменениями нотация дошла
сировался так называемый музыкальный размер — длительность такта, до наших дней.
начинающегося ударной долей и формирующего ритм). Высота и тон звука устанавлива-
Данная знаковая система помимо языковой имеет графическую фор- ются частотой звукового колебания.
му кодирования — музыкальную грамоту, в которой с помощью особых Каждая нота имеет свою известную
символов обозначены высота и длительность звуков. Основной знак этой частоту. Сейчас основной считается
системы — нота в определённой позиции на нотном стане; декодировать нота «ля» первой октавы — 440 Гц
высоту ноты по её положению помогает ключ (обычно скрипичный или (раньше её частота равнялась 435 Гц).
басовый), задающий точку отсчёта. Нота — сложный знак, кодирующий Остальные ноты определяются отно-
и высоту звука, и его длительность. сительно неё, ведь самым важным для
Знаки певческой нотации, которые дали начало современным но- слухового восприятия человека явля-
там, известны нам в довольно поздних византийских записях ется не абсолютная частота, а отно-
(с IX в.), хотя системы музыкальной записи существовали, по-видимо- шение частот. Звуки, часто ты кото-
му, значительно раньше. Так, известно, что у древних греков были бук- рых отличаются ровно в два раза,
венные системы для записи голоса и для записи игры на инструмен- кажутся похожими, «родственными».
Интервал частот от 262 Гц до
2 . 262 = 524 Гц разбивается на 12 ча-
стей; полученные 12 звуков называ-
ют первой октавой, семь из них зна-
ют все: до, ре, ми, фа, соль, ля, си.
Удвоив частоты данных 12 звуков, по-
лучим вторую октаву, при следующем
удвоении — третью.
Нотная запись для музыканта пред-
ставляет последовательность команд,
например нажать клавишу и удержать
её, нажать одновременно несколько
клавиш, отпустить ранее нажатую кла-
вишу и т. п. Если выписать все мысли-

42
Кодирование информации

мые команды, то получится система


команд воображаемого исполнителя.
В 80-х гг. XX в. появились электрон-
ные музыкальные инструменты —
синтезаторы, способные воспроизво-
дить звуки многих существующих му-
зыкальных инструментов, а также и
абсолютно новые звуки. Фирмы, изго-
товляющие электронные музыкаль-
ные инструменты, стали выпускать
секвенсоры — приборы, записываю-
щие команды с клавиш, а затем их вос-
производящие. Но единого формата
записи ещё не существовало.
В 1983 г. ведущие производители
электронных музыкальных синтеза-
торов и производители компьютеров
договорились о системе команд уни- тах. В старых тибетских молитвенных книгах пение обозначалось вол-
версального синтезатора, о том, ка- нообразной линией, передававшей переливы голоса. Распространив-
кими электрическими сигналами шиеся на Руси (с XI в.) знаки носили общее название «крюки» или «зна-
будут подаваться такие команды, и мёна». Среди них помимо простых геометрических знаков — «крюков»,
даже о разъёмах и кабелях, соединя- «палок» — выделяли и более сложные элементы с характерными назва-
ющих компьютеры и синтезаторы. ниями: «чаша», «подчашие», «стопица», «сорочья ножка», «светлое об-
Это соглашение получило название лачко», «тёмное облачко» и др. Собственная система певческой нотации,
стандарта MIDI (от англ. Мusical также восходящая к византийской, использовалась и у армян; знаками
Instrument Digital Interface — «описа- её являлись так называемые хазы, имевшие преимущественно геомет-
ние цифрового музыкального инст- рический характер.
румента»). MIDI стал удобным спосо- Древние системы нотации отмечали изменение тона, не указывая
бом кодирования музыки. на конкретную высоту звука, т. е. они не столько записывали мелодию,
Но программы разных секвенсо- сколько напоминали её, подсказывая исполнителю дальнейшие дейст-
ров по-прежнему имели различные вия. Лишь после введения нотного стана и фиксации высоты звука ста-
форматы MIDI-файлов. У каждой ла возможна собственно запись мелодии в современном понимании.
фирмы имелся свой закрытый фор- Выделение цветов спектра является ещё более условным, чем выде-
мат файла, который могла прочитать ление звуков. Цветовой спектр разделяется на отрезки, но обозначение
только она. В 1988 г. по предложению приписывается не точке внутри отрезка, как в случае с музыкальными
звуками, а всему отрезку. Всякому, говорящему по-русски, известна
фраза, помогающая запомнить последовательность цветов радуги: «Каж-
дый охотник желает знать, где сидит фазан». Однако для англичанина
или француза цветов в радуге не семь, а шесть — не разделяются голу-
бой и синий. Это не значит, что они хуже видят, при необходимости го-
лубой цвет можно обозначить, например, по-английски как light blue, но
как элемент системы, равноправный синему и красному, голубой цвет
не воспринимается.
Во вьетнамском, а также в японском языках для обозначения сине-
го, голубого и зелёного цветов вообще обходятся одним словом, а при
необходимости уточняют оттенок, добавляя его название к основно-
му. Так, во вьетнамском языке существует 42 общепринятых оттенка
этого основного цвета — xanh, например xanh морской волны, xanh
ростков риса. В папуасском языке тангма (остров Новая Гвинея) всего
лишь два слова для обозначения основных цветов: одно — для тёплых
цветов (жёлтый, оранжевый и красный), другое — для холодных (голу-
бой, фиолетовый, зелёный).
Значимость основных цветообозначений (т. е. длина участка спект-
ра) в разных языках будет различной. Цветообозначения — один из яр-
ких примеров роли языка как универсального классификатора, кодиру-
ющего явления окружающего мира с помощью словесных обозначений.

43
Информация и информатика

фирмы Opcode приняли формат воспроизведения (например, зна-


Standard MIDI File. Этот открытый чение силы давления на клавишу);
В 1983 г. был пред- формат файла стали поддерживать управляющим сообщением (напри-
ставлен первый син- все производители программ, исполь- мер, команда включения полифони-
тезатор с MIDI — зующих MIDI наряду со своими соб- ческого режима, синхронизирующее
Prophet 600, вскоре ственными. сообщение и т. д.).
вышел MIDI-интер- Запись музыкального произведе- Однако при подобном кодирова-
фейс PC с синтезато- ния в формате MIDI — последователь- нии нельзя записать вокальные про-
ром Roland. К 1985 г. ность закодированных сообщений изведения, ведь звучание голоса пев-
практически все элект- синтезатору, разделённых закодиро- ца или хора не входит в систему
ромузыкальные инст- ванными паузами. Сообщение может команд синтезатора. В остальном та-
рументы в мире име- быть командой синтезатору (нажать кая система кодирования весьма удоб-
ли MIDI-разъёмы. или отпустить определённую клави- на, так как запись очень компактна и
шу, изменить высоту или тембр звуча- соответствует человеческому слухо-
ния и т. д.); описанием параметров вому восприятию.

КОДИРОВАНИЕ ФИЛЬМОВ

С 1895 года — года изобретения кине- Цифровое кодирование (запись)


матографа, и до наших дней техниче- изображения начали использовать
скими средствами для производства совсем недавно, потому что не хвата-
фильмов являются киносъёмочный ло ресурсов для реализации этой зада-
аппарат и киноплёнка. чи традиционным способом. Для запи-
Особенность зрения человека поз- си 1 с (25 кадров размером 1024 x 768
воляет создавать иллюзию движения пикселей) цветного изображения без
частой сменой кадров (более 15 раз в звука потребуется примерно 60 Мбайт
секунду), на которых изображены по- (25 кадров . 1024 . 768 . 3 байт на
следовательные фазы движения. На точку = 58 982 400 байт). При этом
этом принципе основаны и кино, и те- будет обеспечено качество, близкое
левидение, и компьютерное кодиро- к телевизионному.
вание фильмов. Легко подсчитать, что на запись
двухчасового фильма потребуется
более 400 Гбайт! Хранение такого
объёма дорого даже в начале XXI в., не-
Разработки видеоко- смотря на то что средний объём вин-
дировок привели к честера настольного компьютера пре-
созданию VideoCD высил несколько десятков гигабайтов.
(форматов для ви-
деокомпакт-дисков)
и DVD. Накладно не
только хранить «не-
упакованное» кино,
но и воспроизводить
его (и записывать, и
передавать), так как
для этого требуются
скоростные каналы
связи и высокопроиз-
водительные ком-
пьютеры.

44
Кодирование информации

Объём записи не очень увеличит-


ся, если к изображению добавить звук.
Синхронизацию звука и изображения при монтаже обеспечива-
Как и для записи на компакт-диске,
ет щелчок «хлопушки», на которой написаны номера сцены и дуб-
нужно около 170 кбайт для записи 1 с
ля. Момент щелчка в начале съёмок очередного дубля хорошо
сопровождения.
виден (так же хорошо слышен звук «хлопушки») на плёнке. Это
Звук записывают независимо от
позволяет легко совместить его с началом записей изображения
изображения, но при этом важно до-
и звука.
биться синхронности при воспроиз-
ведении.
Чтобы решить проблему большо-
го объёма информации при записи лее восприимчив к яркости отдельной
фильмов, разрабатывают новые но- точки, чем к её цветности. Поэтому
сители информации и придумывают они предложили на каждые четыре
хитроумные алгоритмы. Например, точки хранить по 4 байт яркости (на
можно хранить не кадры, а измене- каждую точку разные) и по 2 байт цвет-
ния кадров. Тогда, если картинка ста- ности. Таким образом, необходимый
тична, сокращается объём, требуемый объём сократился в два раза: вместо
для записи очередного кадра. 12 байт (12 = 4 . 3) занимали только
Однако главных успехов учёные до- 6 байт (4 . 1 + 2). Качество записи ухуд-
бились, учитывая ещё одну особен- шилось, но это практически незамет-
ность человеческого зрения: глаз бо- но для человеческого глаза.

КОДИРОВАНИЕ БУХГАЛТЕРСКОЙ ИНФОРМАЦИИ

Практически любая женщина являет-


ся экспертом, когда речь заходит о
деньгах. Как правило, именно жёны
ведут семейный бюджет: планируют
траты, учитывают расходы и доходы.
Правильная семейная бухгалтерия
требует особого внимания, записи
вносятся каждый день, за год может
быть исписана толстая тетрадь, в ко-
торой указано всё: когда, сколько и на
что было истрачено.
По существу, тем же целям служит
бухгалтерская отчётность на пред-
приятии. От семейной бухгалтерии
она отличается бо′ льшим объёмом раз-
нотипной информации и наличием
определённых правил ведения бух-
галтерского учёта.
В бухгалтерии учитываются день- Активы — это денежные средст-
ги и материальные ценности обяза- ва, готовая продукция (товарные за-
тельно в денежном эквиваленте. Пред- пасы), земельные участки, оборудо-
приятие использует два типа капитала: вание и даже нематериальные
собственный и заимствованный, при- активы, например патенты и автор-
влечённый (кредиторская задолжен- ские права.
ность). Они и составляют экономи- Пассивы отражают долги пред-
ческие ресурсы предприятия: приятия, товары, полученные в кре-
дит, деньги, взятые взаймы, задол-
Экономические ресурсы = женности по зарплате сотрудникам
= Привлечённый капитал + предприятия и по налогам государ-
+ Собственный капитал. ству.

45
Информация и информатика

Активы Пассивы
Экономические ре- Касса 50 Уставный капитал 85
сурсы в бухгалтерии Основные средства 01 Задолженность поставщикам 60
называют активами, Расчётный счёт 51 Задолженность по оплате труда 70
а привлечённый капи- Готовая продукция 40 Резервный капитал 80
тал — пассивами.
Поэтому основное В России сюда же для простоты Великий немецкий поэт Иоганн
уравнение можно за- включают и собственный капитал Вольфганг Гёте с иронией относился
писать так: предприятия, куда входят, например, к бухгалтерам, называя двойную бух-
Активы = Пассивы + и уставные взносы владельцев пред- галтерию «одним из самых замеча-
+ Капитал. приятия. Важнейшим понятием бух- тельных изобретений человеческого
галтерии является баланс. Это двусто- разума», хотя это высказывание и не
ронняя таблица, левая часть которой лишено здравого смысла.
представляет собой актив, состав и раз- Система двойной записи основы-
мещение хозяйственных средств пред- вается на принципе двойственности.
приятия, а правая часть — пассив (или Все экономические явления имеют два
пассив плюс капитал), где группиру- аспекта — увеличение и уменьшение,
ются все поступления. Сумма активов компенсирующие друг друга, как буд-
баланса должна совпадать с суммой то подчиняясь «закону сохранения».
пассивов, так как актив и пассив — это В этой системе факт хозяйствен-
фактически две точки зрения на одни ной жизни должен быть зафиксиро-
и те же средства. ван как минимум дважды: по дебету од-
Информация, необходимая для ного счёта и кредиту другого — так,
управления и учёта на предприятии, чтобы общая сумма по дебету уравно-
должна накапливаться и всегда быть вешивала общую сумму по кредиту.
под рукой у руководителя. Система Запись в таблице, похожей на бук-
хранения информации при бухгал- ву «T», включает название счёта, дебет
терском учёте состоит из счетов. Счёт (левая часть) и кредит (правая часть).
создают на каждый вид актива, пас- Пусть в кассу поступают деньги (ле-
сива или капитала, включая доходы и вая часть) и из неё производятся вы-
расходы. Соответственно счета ис- платы (правая часть):
пользуются для учёта активов или пас-
сивов. Каждый счёт имеет свой шифр, Касса
который можно писать вместо назва- 10 000 5000
ния счёта. В небольшой фирме доста- 3000 1200
точно иметь в плане несколько десят- 1000
ков счетов, в крупной корпорации их 14 000 6200
тысячи.
Когда бухгалтерский учёт ведётся Сальдо 7800
вручную, на каждый счёт выделяют
отдельную страницу или карточку. Активные счета имеют дебетовое
сальдо, которое показывает остаток
средств, а пассивные счета — кре-
дитовое сальдо, учитывающее все
источники поступлений. По кредиту
пассивных счетов отражается увели-
чение, по дебету — уменьшение этих
источников.
Каждая хозяйственная операция
показана в дебете одного и в кредите
другого счёта в одинаковой сумме
(проводка). Это и называется спосо-
бом двойной записи. Между счетами
И. Г. Тишбейн. возникает взаимосвязь: один счёт по
Иоганн Вольфганг
Гёте в римском дебету связан с другим счётом по кре-
предместье. 1787 г. диту. Например, при начислении из-

46
Кодирование информации

носа основных средств дебетуется компьютер способен помочь челове-


счёт 80, а кредитуется счёт 02. Можно ку. Какие же бухгалтерские задачи луч-
представить себе, что деньги вычита- ше поручить компьютеру? Слова «дебет» (лат.
ются из прибыли и откладываются для Прежде всего, компьютер можно debet — «он должен»)
будущего ремонта или замены изно- использовать как хранилище инфор- и «кредит» ( лат. cre-
шенного оборудования. мации о движении средств. Про каж- dit — «он верит») явля-
При операциях суммы на счетах дый счёт нужно помнить следующую ются просто бухгал-
изменяются, однако равенство акти- информацию: шифр счёта, название терскими терминами
ва и пассива не нарушается. По каж- счёта, тип (актив или пассив), остаток для обозначения пра-
дому счёту ведётся ведомость, в кото- (текущее количество средств на счё- вой и левой частей
рой фиксируются приход и расход те). Информацию о счетах помещают счёта, а не для обо-
средств. В конце каждого месяца на в таблицу. Пусть в кассе предприятия значения увеличения
основании ведомостей составляются находится 11 тыс. рублей: или уменьшения.
журналы-ордера, где учитываются
суммарные приход и расход средств Шифр Название Тип Остаток
на каждый счёт или группу счетов. На
50 Касса Актив 11 000
основании журналов-ордеров в кон-
це отчётного периода вносятся запи-
си в Главную книгу и составляется ба- Дебетуемый и кредитуемый счета
ланс предприятия. не могут быть выбраны произвольно.
Это колоссальная по объёму рабо- Существуют строго определённые ти-
та: в бухгалтерии могут вестись сот- пы проводок, которыми бухгалтер
ни счетов, по каждому из них в тече- имеет право пользоваться. Поэтому
ние месяца бывает несколько сотен и при кодировании бухгалтерской ин-
даже тысяч проводок. формации необходимо записать и
Поддержка равенства актива и пас- этот список, например:
сива баланса, заполнение журналов-
ордеров требуют огромных усилий. Ес- Тип Название Шифр дебета Шифр кредита
ли добавить ещё учёт документов, на
основании которых делаются провод- 1 Продажа готовой
ки, составление платёжных поручений, продукции 40 51
ведомостей зарплаты, приходных и 2 Снятие денег
расходных ордеров, то станет понят- с расчётного счёта 51 50
ным, что ведение бухгалтерского учё- 3 Начисление износа
та — кропотливая и ответственная ра- основных средств 80 02
бота. Это именно та область, где

47
Информация и информатика

где тип — это своего рода шифр про- проводки, отчётная информация за
водки, по которому из других таблиц определённый период времени и
Система двойной за- можно ссылаться на таблицу типов многое другое. Но даже по предло-
писи возникла в эпо- проводок, название — полное назва- женной модели легко подсчитать
ху Ренессанса. Ещё в ние проводки, шифр дебета и шифр итоговый оборот средств по любо-
1494 г. францискан- кредита — шифры счетов, участву- му счёту за любой период времени.
ский монах Лука Па- ющих в проводке. Независимо от количества проводок
чоли, друг Леонардо Про каждую проводку важно знать: компьютер выполнит эту задачу без
да Винчи, дал первое её тип, когда произошла и какое ко- ошибок!
описание двойной за- личество средств было переведено. Программа бухгалтерского учё-
писи. Если 31 декабря 2002 г. проводкой но- та способна облегчить и повседнев-
мер 23450 начислили износ в разме- ный труд работников бухгалтерии.
ре 10 тыс. рублей, то запись в табли- Например, при выдаче денег из кассы
це проводок выглядит так: помимо бухгалтерской проводки
необходимо заполнить расходный
Номер Тип Дата Количество ордер. Данную работу также выпол-
няет компьютер: бухгалтер указы-
23450 3 31.12.2002 10 000 вает сумму выдачи, а компьютер де-
лает проводку и печатает ордер.
Разумеется, объём хранимой в Это не только экономит время, но
бухгалтерии информации куда боль- и гарантирует, что сумма, указанная
ше. Существуют первичные докумен- в ордере, совпадает с суммой про-
ты, на основании которых сделаны водки.

СПОСОБЫ СЖАТИЯ ИНФОРМАЦИИ


Лука Пачоли.
Ресурсы надо экономить, и не толь- чи информации. Часто закодирован-
ко природные. Это в полной мере ную информацию можно преобра-
относится и к памяти ЭВМ, которую зовать так, чтобы в результате она
используют для хранения и переда- занимала гораздо меньше места. Та-
кой процесс и называют упаковкой
или сжатием информации.
При этом целью является имен-
АЛГОРИТМ ОБОБЩЁННОГО RLE-КОДИРОВАНИЯ но экономия, а не желание спрятать
информацию, зашифровать.
алг кодирование RLE Технология сжатия информации
дано текст делится на два больших класса — без
надо напечатать коды RLE потери информации, при этом ис-
нач цел счетчик, лит символ1, символ2 ходное сообщение можно точно
| счетчик:= 0 восстановить по упакованному, и
| символ1:= прочитать из текста сжатие с потерей, в этом случае рас-
| нц пока не конец текста пакованное сообщение будет отли-
| | символ2:= прочитать из текста чаться от исходного. Как впоследст-
| | если символ1= символ2 и счетчик<255 вии окажется, такая потеря не всегда
| | | то счетчик:= счетчик + 1 бывает фатальной, т. е. потерянной
| | иначе информацией можно было прене-
| | вывод счетчик, символ1 бречь. Однако во многих случаях
| | счетчик:= 0 внесение искажений нежелательно
| | символ1:= символ2 или вообще недопустимо, это харак-
| | все терно, например, для программ или
| кц текстов.
кон На сегодняшний день разработа-
но много алгоритмов упаковки ин-
формации без потерь, но практиче-

48
Кодирование информации

ски все они основаны на одной из Всего на весь текст будет потраче-
двух простых идей. но 500 + 500 . 9 = 5000 бит, что зна-
Первая идея была предложена Дэ- чительно меньше, чем 8000 бит в ис- Идеи Хаффмана ис-
видом Хаффманом в 1952 г. и бази- ходном тексте. пользуют сжатие
ровалась на том, что в обычном тек- Вторая основная идея упаковки CCITT (аббревиатура
сте частоты появления разных состоит в том, что в сообщениях Международного ко-
символов различны. При стандарт- часто встречаются несколько под- митета по телегра-
ном кодировании текста каждый ряд идущих одинаковых байтов, фии и телефонии)
символ кодируется одним байтом. а некоторые последовательности при передаче факсов.
Использование одного байта на байтов повторяются многократно.
один символ упрощает обработку При упаковке графической инфор-
текста. Но перед длительным хране- мации чаще встречается первая си-
нием (или перед передачей по кана- туация, а при упаковке текстов —
лам связи) можно позволить себе бо- вторая, так как в русском языке ред-
лее сложную кодировку текста. При ко встречаются две, а тем более боль-
упаковке по методу Хаффмана час- шее число подряд идущих одинако-
то встречающиеся символы кодиру- вых букв. На рисунке, например,
ются короткими последовательно- голубое небо использует один цвет,
стями битов (короче 8), а более который многократно повторяется
редкие — длинными (может быть, при кодировании этого изображе-
более 8). В результате в среднем по- ния. Да и для хранения графической
лучается менее 8 бит на символ. информации требуется значитель-
Это легко проиллюстрировать. но больше места, поэтому задача её
Пусть в тексте из 1000 байт 50 % про- упаковки наиболее важна. Графиче-
белов. Тогда можно закодировать ская информация вообще очень ред-
текст в виде последовательности дво- ко хранится в компьютере в неупа-
ичных 0 и 1. кованном виде.
Если в тексте встретился пробел, Дэвид Альберт Хаффман.
то в конец последовательности пи-
шется 0, а если встретился непробел, ГРУППОВОЕ
то запишется 1, а за ней добавится
двоичный код этого символа, т. е.
КОДИРОВАНИЕ
1 + 8 бит. Поскольку текст наполови-
ну состоит из пробелов, то на их ко- RLE-кодирование (англ. Run-Length
дировку тратится 500 раз по одному Encoding — «кодирование путём учё-
биту, а на каждый из 500 непробелов та числа повторений») — метод, при-
расходуется по 9 бит. менимый не только к изображениям,

49
Информация и информатика

Алгоритмы RLE-кодирования очень


просты и быстры, но эффективность
Существует модификация алгоритма LZSS, который часто вмес-
сжатия, т. е. отношение числа байтов
то символа в триаде хранит указатель на символ, если указатель
в исходной последовательности к
занимает меньше места, чем байт.
числу байтов в полученной после сжа-
тия, сильно зависит от того, что сжи-
мается. Если попытаться упаковать
но и к произвольным сообщениям, он чёрно-белое изображение, получен-
позволяет компактно кодировать ное сканированием с листа книги, то
длинные последовательности одина- эффективность будет весьма высока,
ковых байтов, например: так как белого цвета значительно
больше, чем чёрного, т. е. изображе-
AAAAAAAAAAAAAAA ние включает большие непрерывные
объёмы данных одного цвета. Одна-
Такая группа обычно кодируется при ко сложные изображения с большим
помощи двух байтов. Первый байт со- количеством цветов кодируются пло-
держит число символов в группе, а вто- хо, так как имеют мало групп одина-
рой — повторяющийся символ: кового цвета.

15 A
LZW-КОДИРОВАНИЕ
Абрахам Лемпель. Другой пример: ФФФААААКУУУУК
потребует уже не двух, а 10 байт: Схема сжатия Лемпеля — Зива — Уэл-
ча (LZW) является одной из самых
3 Ф 4 A 1 К 4 У 1 К распространённых при упаковке изо-
бражений. В 1977 г. Абрахамом Лем-
Таким образом, можно сказать, что пелем и Джекобом Зивом был создан
последовательность одиночных, не- первый алгоритм LZ77. Описанный
повторяющихся байтов при RLE-упа- ими алгоритм работал примерно так.
ковке займёт даже больше места, чем Сжатие происходит за счёт замены
изначально. уже встречавшихся ранее в последо-
Можно предложить следующую вательности одинаковой группы сим-
модификацию метода RLE. волов тройкой значений (триадой):
Пусть первый байт несёт не только указателя на группу, длину совпада-
информацию о числе повторений, но ющей группы и первого отличающе-
и о том, есть ли эти повторения. Если гося символа, идущего за группой.
старший (самый левый) бит равен 1, Максимальная длина фрагмента F
Джекоб Зив. то следующий байт данных надо при определяется равной 10–20 симво-
распаковке повторить столько, сколь- лам. А «скользящее» окно, через ко-
ко записано в оставшихся 7 бит. торое просматривается текст, обо-
Например, байт 100001012 говорит, значалось N.*
что следующий за ним байт нужно по- При очередном шаге самая длин-
вторить 5 раз (так как 1012 = 5). На- ная последовательность в фрагмен-
против, если старший бит первого те «ло ко д» ищется в буфере «ышко
байта равен 0, то просто надо взять весело пошло ко д». При этом най-
несколько следующих байтов данных денная совпадающая группа симво-
без всяких изменений. Сколько имен- лов может перекрывать фрагмент F,
но — опять записано в оставшихся но, естественно, не совпадать с ним.
7 бит. Например, байт 000000112 го- В примере такая группа символов
ворит, что следующие за ним 3 байт найдена — «ло_» (с пробелом в кон-
нужно взять без изменений. це), она и заменится при сжатии на
Например, на последовательность триаду (7, 3, к).
ФФФААААКАЮК потребуется уже не После этого окно сместится на дли-
12 байт, а всего 9: ну группы + 1 (3 + 1 = 4) символов. **
Весьма вероятно, в буфере не бу-
дет найдено даже начало фрагмента,
100000112 Ф 100001002 A 000001002 К А Ю К
т. е. фрагмент начинается с символа,

50
Кодирование информации

просто отсутствующего в буфере.


Тогда по правилам алгоритма этот * F
символ будет заменён на триаду
(0, 0, отсутствующий символ) и окно Наше ветхое судён ышко весело_пош ло_ко д ну
передвинется на 1.
В приведённом примере F = 7,
N = 22, поэтому для кодировки в дво- N
ичном представлении триады потре-
буется всего два байта — один байт
на символ, другой сразу на два чис-
ла. На длину группы не более 7, т. е.
3 бит, на указатель N– F = 22 –7 = 15, F
**
т. е. 4 бит. Итого 3 + 4 = 7 бит, т. е. да- Наше ветхое судёнышко весело пошло к о дну к счастью…
же меньше байта. А для хранения все-
го окна просмотра требуется N байт. N
То есть метод LZ77 экономичен по
использованию памяти ЭВМ.
Лемпель и Зив показали, что при
достаточно большом N их алгоритм тому файлу, а в кодируемом тексте ус-
даёт очень хорошие результаты, а че- танавливались указатели на соответ-
рез год они представили новый алго- ствующую сохранённую группу. Этот
ритм LZ78, который использовал алгоритм и лёг в основу созданного
отдельные словари. При этом повто- в 1984 г. Терри Уэлчем, сотрудником
ряющиеся группы помещались в этот фирмы Unisys, нового алгоритма, ко-
словарь, который добавлялся к сжа- торый стал носить название LZW.

АЛГОРИТМ LZW

Метод LZW обычно использует словарь, содержащий 4096 Существуют модификации этого алгоритма, сбрасы-
элементов. Элементы с номерами 0–255 содержат все 256 вающие при переполнении не весь словарь, а только ка-
символов из 8-битной кодировки. Эти элементы словаря кую-то его часть, например первую половину.
всегда постоянны, а остальные элементы с номерами Алгоритм распаковки работает по такому же прин-
256–4095 изначально пусты, но в процессе работы запол- ципу, но несколько сложнее:
няются словами по следующему алгоритму:
алг декодирование LZW
алг кодирование LZW дано в словаре 256 символов
дано в словаре 256 символов надо напечатать раскодированные символы
надо напечатать коды LZW нач лит слово, символ, цел к, к0
нач лит слово, символ | к0:= Прочитать код
| слово:= ”” | вывод Словарь(к0)
| нц | нц
| | символ:= Символ из текста | | к:= Прочитать код
| | если Есть в словаре(слово + символ) | | слово:= Словарь(к0)
| | | то слово:= слово + символ | дописывание | | если Cловарь(к)<>Пусто | Слово есть в
||| символа к слову || словаре?
| | | иначе вывод Код(слово) | код из словаря | | | то вывод Словарь(к)
| | | Добавить к словарю (слово + символ) | | | символ:= Первый символ в Словаре(к)
| | | слово:= символ | | | иначе символ:= слово[1] | первый символ
| | всё | | всё
| кц | | Добавить к словарю (слово + символ)
кон | | к0:= к
| кц
Когда словарь переполняется, алгоритм Уэлча его очи- кон
щает, как бы начиная работу сначала.

51
Информация и информатика

В отличие от LZ77 этот алгоритм в и рисунков разных масштабов и раз-


процессе своей работы строит сло- меров. Этот термин впервые приме-
варь, в который попадают специаль- нил Бенуа Мандельброт для описания
ным образом построенные слова. Если повторяющихся рисунков, которые
в тексте встречается группа, совпада- он нашёл во многих различных струк-
ющая со словом в словаре, то вместо турах. Он обнаружил, что фракталы
неё записывается индекс этого слова можно описать математически и со-
в словаре. здавать при помощи очень простых
Метод LZW имеет преимущество алгоритмов.
перед большинством словарных упа- Если взглянуть на пол, то в его
ковщиков, так как словарь создаётся рисунке нетрудно обнаружить мно-
как на этапе упаковки, так и на этапе жество похожих повторяющихся
распаковки. Все алгоритмы данного фрагментов, при этом совершенно
семейства отличаются друг от друга неважно, какая поверхность у пола.
Бенуа Мандельброт. способом образования словаря и сво- Он может быть паркетный, бетонный,
им поведением при переполнении покрытый ковром, всё равно рисун-
словаря. ки будут повторяться размером от
Метод LZW получил широкое рас- очень маленьких до очень больших.
пространение, однако, так как патент Если «скопировать» кусок поверхно-
на него принадлежит Unisys Corpo- сти, то можно найти на полу ещё не-
ration, его использование в програм- сколько почти таких же. Если изме-
мах требует получения соответству- нить размер копии, повернуть или
ющей лицензии. произвести зеркальное отражение, то
число похожих частей ещё возрастёт.
Тогда можно перечислить все похо-
ФРАКТАЛЬНОЕ СЖАТИЕ жие области и все (математические)
преобразования с копией, которые
Упрощённо фрактал — это структу- были проделаны. Полученные данные
ра, состоящая из подобных форм (системы уравнений) обычно назы-

Фрактальное
изображение.

52
Кодирование информации

вают фрактальными кодами. При


этом говорят, что они описывают по-
верхность через её фрактальные свой-
ства. Используя их, можно воссоздать
поверхность пола.
Поиск в изображении фракталь-
ных рисунков требует чрезвычайно
большой вычислительной работы.
При этом фрактальное сжатие сопро-
вождается потерями, так как процесс
сравнения фракталов не предусмат-
ривает поиска точного их соответст-
вия. Вместо этого ищется наилучший
из возможных вариантов по времени
кодирования, качеству соответствия
оригиналу и размеру полученных
данных. Как правило, требуется, что-
бы результат был практически неот-
личим «на глаз» от первоисточника.
Но результаты дают огромный вы-
игрыш. При распаковке фрактально-
сжатого изображения требуется зна- метны глазу человека, а вот малые из- Программа
чительно меньше времени, чем при менения яркости, напротив, легко раз- на КуМире рисует
фрактал.
его запаковке. Иногда фрактальное личимы. Основываясь на этом, схема
изображение занимает памяти мень- JPEG сохраняет полутона изображе-
ше своего оригинала в 100 и более ния, но более «свободно» обращается
раз. Кроме того, фракталы легко мас- с цветом. Сжатие эффективно, толь-
штабировать без потери деталей и ко если различия между соседними
появления лишних деталей (артефак- пикселями весьма незначительны.
тов). JPEG хорошо работает с изображени-
Однако, как всегда, большинство ями глубиной более 5 бит на цвето-
алгоритмов фрактального сжатия за- вой канал (RGB). При этом сам стан-
патентованы и закрыты для свобод- дарт описывается для глубины в 8 бит.
ного использования в программах. Процесс сжатия происходит в не-
сколько этапов. На первом этапе цвет-
ное изображение надо преобразовать
СЖАТИЕ JPEG из стандарта: например, RGB (крас-
ный, зелёный, синий) в YUV (яр-
Аббревиатура JPEG происходит от на- кость/цветность) или YCbCr (яркость
звания комитета по стандартам Joint и две цветоразностные компоненты).
Photographic Experts Group (Объеди- При дальнейшей обработке яр-
нённая группа экспертов по фотогра- кость надо как можно тщательнее
фии). Алгоритмы сжатия LZW мало сохранить, при этом цветность ме-
подходят для сжатия изображения, нее существенна. Специфической
так как в цифровых фотографиях и чувствительностью глаза пользуют-
отсканированных картинках присут- ся, уменьшая количество пикселей
ствуют шумы, и их тем больше, чем для каналов цветности, это называ-
больше глубина цвета (число бит на ется субдискретизацией. Для обоих
пиксель) при получении цифрового каналов цветности при субдискре-
изображения. тизации может быть использована
Фактически JPEG не является од-
ним алгоритмом сжатия, это целый
набор методов сжатия. Как и при
фрактальном сжатии, здесь также про- Вы овладели теорией сжатия информации, если воспринимаете
исходит потеря данных, тех, которые пакет апельсинового сока, как ZIP-файл кучки апельсинов.
трудно заметить визуально. Неболь-
шие изменения цвета не сильно за-

53
Информация и информатика

При более или менее равных коэф-


фициентах фрагмента 8 x 8 перед DCT-
Ещё в 1860 г. немецким учёным Густавом Фехнером был сфор- преобразованием результатом будет
мулирован закон (носящий его имя), подтвердивший, что связь матрица с тенденцией уменьшения аб-
между раздражителем и человеческим восприятием нелинейна: солютных значений от левого верхне-
«Ощущения пропорциональны отношению логарифмов стимула». го угла к правому нижнему.
На следующем этапе, прежде чем
отбросить больший объём информа-
ции, надо поделить все коэффициен-
схема 4 – 2 – 2, хорошо опробован- ты полученной матрицы на коэф-
ная ещё на заре цветного телевиде- фициенты квантования, округляя
ния в стандарте NTSC (Националь- результаты до целого. Матрица кван-
ный комитет по телевизионным тования представляет собой целые
стандартам США). При этом яркость положительные коэффициенты, рас-
сохраняется для всех точек квадра- тущие от правого нижнего угла к ле-
та 2 x 2, а цветность одинакова в го- вому верхнему.
ризонтальных рядах. Чем больше коэффициенты кван-
Далее картинка разбивается на тования, тем больше данных теряет-
блоки по 8 x 8 пикселей (при этом ся. Каждый из 64 элементов матрицы
Обратное косинус- каждый цветовой и яркостной ком- имеет свой коэффициент квантова-
преобразование соот- понент обрабатывается независимо). ния. Яркостные данные имеют мень-
ветственно совершает JPEG основан на так называемом дис- шие коэффициенты квантования, чем
обратное: из частот- кретном косинус-преобразовании такие же коэффициенты для цветно-
ного представления (DCT), являющемся разновидностью сти. То есть данные яркости сохра-
получается простран- преобразования Фурье. Оно позво- няются более тщательно. «Качество»
ственное. ляет переходить от пространствен- JPEG-сжатия напрямую зависит от
ного представления изображения к матриц квантования.
его так называемому спектральному Таким образом, в результате кван-
представлению, хорошо знакомому тования получится матрица с большим
каждому, у кого есть музыкальный количеством нулевых элементов, име-
центр со спектроанализатором, где ющая в левом верхнем углу некоторое
на маленьком экране красиво пры- число ненулевых. На последнем эта-
гают столбики в такт музыке. пе, на так называемом методе вторич-
DCT-преобразование применяет- ного сжатия, при помощи хорошо зна-
ся к каждому блоку 8 x 8. DCT-вычис- комого метода Хаффмана избавляются
ления чрезвычайно сложны, и это от нулевых коэффициентов, обходя
наиболее трудоёмкий этап всего ал- матрицу диагональными полосками,
горитма сжатия JPEG. Выполнив его, начиная с верхнего левого угла:
получим разделение высокочастот-
ной и низкочастотной информации, 15 1 –2 …
из которой состоит изображение. Сам 2 –1 0 …
по себе этот этап преобразования не 1 0 0 …
предусматривает потерь, за исключе-
нием ошибок округления. … … … …
Элементы матрицы (нового блока)
вычисляются по формуле, представ- Тогда в начале последовательности в
ленной ниже (для всех u и v от 0 до 7). основном будут ненулевые коэффици-
енты, в конце же — одни нули. Такие
7 7
последовательности хорошо сжима-
1
F(u, v)= – CuCv
4
ΣΣ
i= 0 j= 0
f(i, j) ет метод Хаффмана.
При восстановлении изображения
(2i+1)uπ (2j+1)vπ , весь процесс проходит в обратном
cos cos
16 16 направлении. Сначала декодирование
по методу Хаффмана, далее домноже-
1, при u, v ≠ 0,
где Сu , Cv =
{ 1
√2
, при u, v = 0.
ние элементов матрицы на коэффици-
енты матрицы квантования. Потом
применяются обратное косинус-пре-

54
Кодирование информации

образование и пересчёт в схемы RGB. цессор Pentium, тут же специально раз-


По объёму вычислений восстановле- работала его модификацию MMX
ние изображения, JPEG-декодирова- (Multi-Media eХtension) — мультиме-
ние, сравнимо с JPEG-кодированием, дийное расширение, которое «умеет»
поэтому для ускорения этих операций выполнять некоторые операции с ма-
применялись аппаратные ускорители, трицами 8 x 8, ускоряющие прямое или
а фирма Intel, выпустив на рынок про- обратное DCT-преобразование.

СЖАТИЕ ЗВУКА

Цифровой звук, если это не музыка, 1 до 2 столь же заметно человеку, как


которую можно закодировать в виде и изменение громкости от 100 до
MIDI, столь же неудобен для сжатия, 200, а изменение громкости от 100
как и картинка. Звуковой сигнал ред- до 101 человеком практически не
ко обладает избыточностью, т. е. име- ощущается.
ет повторяющиеся участки (в основ- Поэтому при компандировании
ном из-за шумов). А значит, плохо значения амплитуды звука заменяют-
сжимается с использованием алгорит- ся на логарифм этих значений.
мов компрессии без потерь, аналогич- При 8-битном кодировании звука
ных LZW или методу Хаффмана. | a | <27, следовательно, log2 | a | < 7. Зна-
В два раза звук можно упаковать с чит, звук может быть закодирован
помощью метода со странным назва- тремя двоичными разрядами плюс
нием компандирование (от англ. com- ещё один разряд на знак амплитуды,
pound — «соединение», «составной»). итого получится 4 вместо 8.
Этот метод основан на законе, от- То есть при компандировании
крытом психологами: если интен- 8-битного звука при некотором ухуд-
сивность раздражителя меняется в шении качества звука происходит
геометрической прогрессии, то ин- сжатие вдвое.
тенсивность человеческого воспри-
ятия меняется в арифметической про-
грессии. АДАПТИВНАЯ
В применении к звуку это означа-
ет, что если повысить громкость зву-
РАЗНОСТНАЯ КОМПРЕССИЯ
ка в 2, 4, 8 и более раз, то человече-
кое ухо будет воспринимать это как Один из способов уменьшения объё-
линейное увеличение интенсивно- ма аудиоданных — хранить не сами
сти. То есть изменение громкости от данные, а разность между двумя

55
Информация и информатика

Качественно иные принципы ле-


жат в основе алгоритмов сжатия по
Звук на CD, как правило принимаемый за эталон цифрового зву-
стандарту MPEG (Motion Pictures
чания, закодирован способом импульсно-кодовой модуляции,
Experts Group).
PCM (Pulse Code Modulation). Время звучания и диапазон амп-
литуды разбивались на соответствующие равные промежутки,
являющиеся параметрами оцифровки, — частоту дискретизации
и уровень дискретизации (число битов на канал). В результате
MP 3
на CD (при частоте около 44 кГц и 16 бит на канал) 1 с стерео-
Естественно возникает вопрос: а нель-
звука требовала около 1,4 Мбит двоичных данных, или, как го-
зя ли воспользоваться каким-нибудь
ворят, воспроизведения (запись) потоком 1400 кбит/с.
методом, аналогичным JPEG-преоб-
разованию в графике? Ведь при сжа-
тии картинки искажения, часто неза-
соседними значениями, если такая метные для глаза, позволяют сильно
разность невелика. Как правило, это сократить размер изображения. Пусть
верно для человеческой речи. При в результате компрессии и декомпрес-
этом разность кодируется меньшим сии звук не будет идентичным, но и
числом битов, нежели исходные дан- не надо ставить перед собой цели аб-
ные. Такой метод называется DPCM солютно точного восстановления
(Delta Pulse Code Modulation). формы исходных звуковых колеба-
В другом, более экономном спосо- ний. Главная задача — это максималь-
бе ADPCM (adaptive DPCM, или адап- ное сжатие звукового сигнала при ми-
Существуют методы тивная разностная компрессия), зна- нимальных слышимых (или вообще
сжатия особого вида чения разностей подвергаются ещё неслышимых) искажениях. Человече-
звука — человеческой более грубому квантованию (число ский слух имеет ряд особенностей,
речи, основанные не возможных значений), что позволя- позволяющих использовать достаточ-
на том, как слышит ет уменьшить разрядность до 4 бит но эффективные алгоритмы компрес-
человек, а на том, как вместо 16, причём шаг квантования сии звуковых данных при субъектив-
он говорит. выбирается в зависимости от величи- но-минимальных потерях в качестве
ны текущего изменения сигнала. Он звука.
увеличивается, если несколько раз В 1940 г. Харви Флетчер, выда-
подряд разность достигала 16 (4 бит ющийся американский физик, отец
выделено для квантования разности), стереозвука, привлёк для исследова-
и уменьшается, если разность несколь- ний человеческого слуха большое
ко раз подряд была меньше 4. Имен- число испытуемых. Он проанализи-
но в этом заключается «адаптивность», ровал зависимость абсолютного по-
на которую указывает название мето- рога слышимости от частоты сигна-
да. При этом принято говорить, что ла, т. е. при какой амплитуде звук
коэффициент сжатия 16-битных дан- определённой частоты не слышен для
ных методом ADPCM равен 4 : 1. человека. В построенной на основе

56
Кодирование информации

опытов кривой максимальные значе-


ния порога находятся, как и ожида- То же произойдёт, если проиграть маскирующий тон с частотой
лось, на границах диапазона слыши- 1 кГц и уровнем 60 дБ и тестовый тон с частотой 1,1 кГц и уров-
мости (около 20 Гц и ближе к 20 кГц), нем 40 дБ, который при этом не будет слышен. Можно исклю-
а минимум — приблизительно 5 кГц. чить маскирующий тон, оставив звучать тестовый на короткое
Но главное, на что он обратил внима- время, пока он не станет вновь слышен. Эксперимент покажет,
ние, — это способность слуха адапти- что это время равно примерно 5 мс.
роваться к появлению новых звуков,
что выражается в повышении порога
слышимости. Иначе говоря, одни зву-
ки способны делать неслышимыми
другие, что и называют маскировани-
ем одного звука другим. Естественно, что те части спектра звука, которые лежат ниже аб-
Маскирование имеет как частот- солютного порога слышимости (минимальное значение звуково-
ное (или частотно-динамическое) го давления, которое способно воспринять человеческое ухо), ни
свойство (громкие звуки маскируют кодировать, ни передавать не следует.
близкие им по частоте более тихие,
низкочастотные звуки маскируют вы-
сокочастотные), так и временно′ е
(эффект продолжается ещё некото- те части, которые практически не бу-
рое время после того, как маскиру- дут слышны. Удобно использовать
ющий звук прекратился). разбиение спектра на полосы различ-
Последнее свойство слуха при ком- ной ширины, основываясь на осо-
прессии позволяет после громкого бенностях слуха человека: в ушной
звукового сигнала некоторое непро- улитке существуют области, каждая
должительное время вообще не вос- из которых отвечает за определён-
производить, а значит, и не сохранять ную частотную полосу (шириной от
никакого звука. Для грубой демонст- 100 Гц внизу спектра и до 3500 Гц в
рации этого эффекта можно привес- верхней части). Обычно выделяют 27
ти такой пример: после выстрела из так называемых критических полос
пушки в течение некоторого време- (англ. critical band): 0-я от 50 до 95 Гц,
ни человек вообще ничего не слышит. 1-я от 95 до 140 Гц, … , 26-я от
То есть громкий щелчок продолжи- 20 250 Гц и выше.
тельностью 0,1 с может замаскировать Для выполнения алгоритма сжатия
последующие за ним тихие звуки на исходный сигнал разбивается на кад-
0,5 с, которые не надо сохранять. Для ры, которые подвергаются частотно-
точного воспроизведения такого зву- му анализу. Алгоритм сжатия выгля-
ка для человека достаточно проиграть дит примерно так.
только малую часть от исходного сиг-
нала — щелчок, так как оставшаяся
часть всё равно не слышна. Говорят,
что коэффициент компрессии в этом
примере достигает
0,5+0,1 ,
6 : 1 = 0, 1

а описанную процедуру сжатия обыч-


но называют маскированием во вре-
менной области.
При маскировании в частотной
области синусоидальный сигнал ма-
скирует более тихие, близкие по ча-
стоте сигналы, в том числе и синусо-
идальные сигналы много меньшей
амплитуды. Это даёт возможность вы-
делить в исходном спектре сигнала

57
Информация и информатика

можно заметить, что 7-ю полосу не на-


до сохранять, так как 10<12, а 9-ю, на-
В 1987 г. при разработке алгоритмов аудиокодирования для ци- против, нужно записать, так как 35>15.
фрового вещания (Digital Audio Broadcasting DAB) при непосред- В дальнейшем на каждый нену-
ственном участии профессора Дитера Сейтзера из Университе- левой уровень выделяется некоторое
та Эрлангена (Германия) был разработан известный стандарт число битов, достаточное для его
ISO-MPEG Audio layer 3, который обычно и называют MP 3. примерного представления. Так, в той
части спектра, где человеческое ухо
имеет наименьший порог слышимо-
сти, информация кодируется шест-
• При помощи специальных алго- надцатью битами, а на краях, там, где
ритмов (ими могут быть быстрое пре- ухо менее чувствительно к искаже-
образование Фурье или аналогичные) ниям, шестью и менее битами. К по-
сигнал разделяется на 32 равные по- лученному потоку битов можно, на-
лосы спектра, при этом в одну полу- пример, применить алгоритм сжатия
чившуюся полосу могут попасть сра- Хаффмана.
зу несколько критических полос.
• Используя так называемую пси-
Жан Батист Жозеф хоакустическую модель (в которую,
Фурье.
как правило, и входит частотное мас-
кирование), определяют уровень мас-
кирования полосы соседними.
• Уровень в полосе, не превыша-
ющий вычисленный порог, считает-
ся равным нулю и не сохраняется. На-
оборот, немаскированный уровень
записывается в выходные данные.
Так, например:

Полоса № … 7 8 9 …
Уровень (dB) … 10 60 35 …

Уровень 8-й полосы равен 60 dB. На ос-


новании психоакустической модели
делается вывод, что этот уровень мо-
жет замаскировать сигнал 7-й полосы
уровня 12 dB и 9-й полосы уровня
15 dB. Если посмотреть в таблицу, то

58
Кодирование информации

Различают три версии алгоритма, пользует и временное маскирование.


описанного MPEG-сжатием звука. Упаковывает с соотношением от 1 : 6
В каждой версии данные разделяют- до 1 : 8.
ся на кадры, т. е. отдельный кадр со- MPEG layer 3, он же MP 3, исполь-
стоит из 32 полос по 12 значений зует частотный фильтр с разной ве-
в каждой: 32 . 12 = 384. личиной полос; психоакустическая
В MPEG layer1 (дословно «слой 1») модель включает временное маски-
в частотном фильтре используются рование стереосигнала. Имеет малые
один кадр и алгоритмы, основанные потери качества при высоком уровне
на дискретном косинусе — преобра- компрессии: от 1 : 10 до 1 : 12.
зовании (DCT). Психоакустическая MP 3 оказался одним из самых
модель задействует только частотное удачных стандартов сжатия звука, что
маскирование. Алгоритм позволяет позволило ему не только потеснить
упаковывать при соотношении 1 : 4 с рынка аудиопродукции мини-дис-
с потоком 384 кбит/с. ки (MD) фирмы Sony, но и стать
MPEG layer 2 использует три кадра основным форматом записи для
в частотном фильтре (предыдущий, плееров, у которых вообще нет дви-
текущий и последующий) общим объ- жущихся частей. В формате MP 3 на
ёмом 32 полосы по 12 значений в трёх один CD можно записать от 6 до 12 ч
кадрах: 32 . 12 . 3 = 1152. Модель ис- музыки.

59
НАУКА ИНФОРМАТИКА
ИНФОРМАТИКА

В 1834 г. великий французский физик В 1948 г. он выпустил в свет книгу


Андре Мари Ампер (1775—1836) пред- «Кибернетика, или Управление и связь
ложил свою классификацию наук. в животном и машине», в которой
Для обозначения науки об управлении обобщил свои наблюдения, сформу-
обществом он использовал термин лировал общие принципы построе-
кибернетика (греч. «кибернетике» — ния и работы управляющих систем,
«искусство управлять»). показал ключевую роль информации
Спустя 100 лет выдающийся аме- в них. Так началась вторая жизнь при-
риканский учёный Норберт Винер думанного Ампером слова, ставшего
(1894—1964), изучавший различные названием новой науки.
технические и биологические систе- Под связью кибернетика понима-
мы, обратил внимание, что работу лю- ет процессы восприятия, хранения и
бой системы управления можно пред- передачи информации. Управление —
ставить в виде единой схемы: это процесс воздействия управляю-
щей системы на объект управления,
обеспечивающий его работу по дости-
жению поставленной цели. Оно осу-
ществляется с помощью управляющих
сигналов, вырабатываемых управляю-
щей системой. Эти сигналы содержат
информацию о требуемом поведении
объекта управления. Она создаётся
на основе анализа входных данных
(информации о состоянии внешней
среды) и сигналов обратной связи
(несущих информацию о состоянии

60
Наука информатика

объекта управления). Переработку но даже объекты, которые нельзя


информации, поступившей по кана- описать с помощью уравнений или
лам обратной связи, называют конт- формул. Это ставит кибернетику
ролем. (как и математику) в особое поло-
Ощущая неполноту своего опре- жение, ведь такой метод применим
деления и словно идя вслед за Ампе- в самых разных науках. Соответст-
ром, Винер в 1954 г. издал книгу «Ки- вующие области знаний получили
бернетика и общество», в которой свои названия:
распространил сферу влияния но- • Техническая кибернетика, ис-
вой науки на социальные системы. пользуя результаты и выводы теоре-
Огромный вклад в пропаганду ки- тической кибернетики, разрабатывает
бернетики внёс английский учёный и исследует всевозможные техниче-
Уильям Росc Эшби (1903—1972), си- ские управляющие системы — от Андре Мари Ампер.
стематизировавший идеи Винера простых систем автоматического
в книге «Введение в кибернетику» регулирования до сложнейших авто-
(1956 г.). матизированных систем управления,
Кибернетика изучает способность построенных на основе суперкомпь-
машин и живых организмов воспри- ютеров.
нимать определённую информацию, • В биологической кибернетике
сохранять её в памяти, передавать выделяют несколько разделов: меди-
по каналам связи и перерабатывать цинская, психологическая, физиоло-
в управляющие сигналы. Задача ки- гическая кибернетика, бионика, ней-
бернетики — выделение и изучение рокибернетика. Все они занимаются
общих свойств процесса управления моделированием биологических си-
и систем управления. стем и математической обработкой
Кибернетика — это самостоятель- результатов их исследования.
ная наука со своим предметом иссле- • Экономическая кибернетика
дования (управляющие системы). Как изучает процессы управления эконо-
и в других науках, в ней можно выде- микой, моделирует экономические
лить важнейший раздел — теорети- системы.
ческую кибернетику. Она разрабаты- • Военная кибернетика рассмат-
вает аппарат и методы исследования, ривает общие вопросы управления
пригодные для изучения систем управ- войсками и методы повышения эф-
ления различной природы. Теоре- фективности применения боевой
тическая кибернетика объединила техники.
несколько существовавших ранее раз- • Социальная кибернетика иссле-
делов математики: математическую дует модели процессов, протекающих
логику, теорию алгоритмов, теорию в человеческом обществе.
информации, теорию кодирования. Информация (от лат. informatio —
Некоторые новые научные направле- «разъяснение», «изложение»), как и
ния зародились уже в рамках самой управление, — центральное понятие
кибернетики, среди них — теория ав- кибернетики, наряду с материей и
томатов, теория формальных языков,
теория формальных грамматик, не-
чёткая математика.
Таким образом, кибернетика
в значительной степени строится на
математической основе. Но она име-
ет и собственный особый метод ис-
следования. Это компьютерное мо-
делирование, позволяющее изучать
не объекты, а их описания (модели).
Моделирование здесь играет ту же
роль, что и эксперимент в физике,
химии, других естественных и тех-
Книга У. Р. Эшби
нических науках. Крайне важно, что «Введение в киберне-
моделировать на компьютере мож- тику.

61
Информация и информатика

энергией является одной из фундамен-


тальных основ мироздания. Хотя по-
ИНФОРМАТИКА В СССР явление ЭВМ (устройств для накопле-
ния и переработки информации) и
Гонения на кибернетику в послевоенные годы в СССР привели к то- было одним из толчков к возникнове-
му, что наша страна по производству вычислительной техники ока- нию кибернетики, быстро выяснилось,
залась далеко позади развитых капиталистических стран. что эта наука не даёт ответа на многие
Все фундаментальные исследования, результаты которых в той теоретические и практические вопро-
или иной степени могли использоваться в военной области, авто- сы, непосредственно связанные с раз-
матически получали гриф «секретно». Это произошло и с книгой витием вычислительной техники. По-
американского математика Норберта Винера «Кибернетика, или Уп- этому уже в 40—50-х гг. XX в. начала
равление и связь в животном и машине» (1948 г.): сразу же после формироваться новая наука, получив-
того как она попала в СССР, её засекретили. шая в англоязычных странах название
Идеи, высказанные автором, противоречили официальной доктри- «Computer Science» (компьютерная
не советского общества. Параллели, проведённые Винером между жи- наука). Во Франции её назвали «Infor-
вым миром (человек и животные) и миром машин (моделирование в со- matique», объединив слова «Informa-
циальной сфере и экономике), являлись крамольными для граждан tion» и «Automatique».
Советского Союза, которым внушалась мысль о несводимости «высших Судьба новой науки в СССР снача-
форм» к «низшим формам». Именно за это книга и попала в спецхран. ла складывалась весьма непросто. Ведь
Сейчас трудно представить, сколько молодых и выдающихся лю- в первые годы своего развития кибер-
дей могли бы стать настоящими учёными и принести пользу родной нетика в значительной степени была
стране, если бы не те, кто, боясь за свою карьеру и тёплое местечко, наукой социальной, философской.
развернул их травлю. Звания и должности получали не за талант или Например, в Кратком философском
научные достижения, а за принадлежность к коммунистической пар- словаре (1954 г.) говорилось: «Кибер-
тии и за рабоче-крестьянское происхождение. нетика — это реакционная лженаука,
Не случайно в философских словарях 50-х гг. кибернетика опре- возникшая в США после Второй ми-
делялась как реакционная лженаука, возникшая в США после Второй ровой войны... является... не только
мировой войны и получившая широкое распространение и в других ка- идеологическим оружием империа-
питалистических странах. В журнале «Вопросы философии» в 1953 г. листической реакции, но и средством
появилась «заказная» статья под названием «Кому служит кибернети- осуществления её агрессивных воен-
ка». В ней одобрялись развитие и производство быстродействующих ных планов». Тем не менее скоро
«арифмометров». Но наряду с этим отмечалось, что использование ма- отношение к кибернетике стало ме-
шин для моделирования и символьной обработки шло вразрез с марк- няться в лучшую сторону. Происхо-
систско-ленинским учением: «Теория кибернетики, пытающаяся рас- дило это не само по себе — огромную
пространить принципы действия вычислительных машин новейшей роль в пропаганде кибернетики и в её
конструкции на самые разные природные и общественные явления без развитии сыграли многие выдающи-
учёта их качественного своеобразия, является механицизмом, превра- еся советские учёные: А. А. Ляпунов
щающимся в идеализм. Это пустоцвет на древе познания, возникший (1911—1973), А. И. Берг (1893—1979),
в результате одностороннего и чрезмерного раздувания одной из черт И. А. Полетаев (1915—1983) и др.
познания». Автор статьи подписался В нашей стране кибернетику ста-
псевдонимом — Материалист. Вдруг ли трактовать весьма широко, вклю-
установка ЦК изменится и будет дан чая в неё и все вопросы, связанные
зелёный свет развитию кибернетики? с созданием и использованием ЭВМ.
Именно поэтому в статье развитие Но постепенно происходило обособ-
компьютеростроения поддержано так ление этих задач. В результате кибер-
аккуратно. К сожалению, подобное нетика как бы передала информати-
поведение являлось нормой. ке задачи, связанные с понятием
Однако в учёной среде всегда информации, а за собой оставила ре-
находились и те, кто во имя идеи, шение проблем управления.
гражданской позиции и науки готов Между тем в различных отраслях
был идти до конца. Сейчас нет смыс- кибернетики широко используются
ла перечислять всех, кто боролся за практические достижения информа-
становление кибернетики. Отметим тики, такие, как программные систе-
только, что статью С. Л. Соболева, мы, высокопроизводительные компь-
А. И. Китова и А. А. Ляпунова «Ос- ютеры, сетевые технологии.
А. И. Китов. новные черты кибернетики», в кото- Теоретическую основу информа-
тики составляет математика, и в пер-

62
Наука информатика

вую очередь дискретная математи-


ка. Её содержание в значительной ме- рой они выступили в защиту науки, напечатали в тех же «Вопросах
ре пересекается с содержанием тео- философии» в 1955 г. Это доказывает, что кибернетика не противо-
ретической кибернетики. Важную речила линии партии, а просто-напросто подрывала позиции функ-
роль также играют вычислительная ционеров из научной среды.
математика, ориентированная на со- Отечественные учёные (в первую очередь военные) сумели
здание методов решения задач с доказать, хотя и с запозданием, важность развития кибернетики
помощью компьютеров, и системный (информатики) и компьютеростроения.
анализ. Информатика взяла из ки- Советские ЭВМ, которые иногда выпускались всего лишь чуть поз-
бернетики и экспериментальный ме- же западных аналогов, по многим параметрам не уступали им. БЭСМ,
тод компьютерного моделирования, «Сетунь» и другие вычислительные машины недаром оставили замет-
заключающийся в формировании ги- ный след в науке и технике. Информатика в нашей стране стала так же
потезы, создании модели, проведе- сильна, как и отечественная математическая школа. Однако в произ-
нии экспериментов, сборе данных водстве вычислительной техники, особенно в массовом промышлен-
и анализе результатов. ном компьютеростроении, СССР от Запада сильно отставал.
Кроме изучения процессов мани- До тех пор пока вычислительную технику разрабатывали в НИИ
пулирования данными информати- и КБ, принималась масса интересных, неординарных научных реше-
ка занимается их реализацией и при- ний. Но при воплощении их в жизнь или появлялись производствен-
менением в различных сферах ные трудности (особенно в области качества), или сталкивались ведом-
деятельности человека. Её важнейшей ственные интересы. Ряд министерств осуществлял разработку и выпуск
задачей является автоматизация вычислительной техники часто почти идентичной по параметрам и по-
(т. е. исключение участия человека) казателям. Здесь, как и при капитализме, действовали жёсткие зако-
всех этих процессов. Поэтому инже- ны конкуренции. Результатом борьбы стали выпуск устаревшей техни-
нерную часть информатики состав- ки или, что ещё хуже, слепое подражание Западу. Копирование
ляет создание устройств и систем, зарубежной вычислительной техники приняло промышленные масшта-
предназначенных для решения воз- бы. Конечно, совсем неплохо изучать опыт конкурирующих держав.
никающих при этом проблем (кон- Однако идти у них на поводу, повторяя не только достижения,
струирование). Говоря об устройст- но и ошибки, — это, несомненно, проигрышная стратегия.
вах и системах, надо иметь в виду их Конец 80-х гг. показал, что персональные компьютеры нужно
аппаратную составляющую и про- выпускать не десятками, а тысячами, десятками и сотнями тысяч
граммное обеспечение. штук в год. Отечественная компьютерная промышленность была
Характерная особенность инфор- к этому не готова. Хочется верить, что уроки минувшего века не
матики — очень тесное взаимодейст- прошли для россиян даром. Но, к сожалению, научный мир слабо
вие её теоретических и инженерных подвержен переменам, и то, что произошло с кибернетикой, в нём
аспектов. Этим она отличается от дру- может повториться вновь.
гих наук. Например, в химии чётко
выражена граница между теорией
и химическим машиностроением. В ин-
форматике средства, обеспечивающие
эксперимент (компьютеры, компиля-
торы, прикладные программы), одно-
временно являются и целью разработ-
ки, объектом приложения теории.
Ещё одна отличительная черта ин-
форматики — фундаментальный ха-
рактер понятия эффективности. Она
обязательно должна быть обеспече-
на на всех стадиях информационных
процессов.
Как это было раньше с киберне-
тикой, иногда информатику делят,
в зависимости от сферы её исполь-
зования, на экономическую, право-
вую, медицинскую и т. д. При этом
очень часто такое разъединение не
подчёркивает специфики конкрет- Статья в журнале «Вопросы философии». 1953 г.
ной области применения, и речь идёт

63
Информация и информатика

операционные системы; технология


программирования; взаимодействие
ДОКУМЕНТАЛИСТИКА человека и компьютера.
Технология программирования,
Во многих учебниках можно прочитать, что слово «информатика» в в частности, разрабатывает и изучает
середине 70-х гг. XX в. было заимствовано из французского языка. методы создания больших программ-
Однако это не совсем так. ных систем, проверки их соответст-
К тому времени научная дисциплина именно с таким названием су- вия заданным требованиям и обеспе-
ществовала и успешно развивалась уже более четверти века! Она ис- чения надёжности работы. Сами
следовала структуру и общие свойства научной информации — дан- методы при этом постоянно развива-
ных, отображающих объективные закономерности природы, общества ются, совершенствуются, но цель дан-
и мышления. Кроме того, изучала процессы обмена научной информа- ной отрасли информатики остаётся
цией — от устного общения на конференции до публикации в виде ста- прежней. То же можно сказать и о дру-
тьи или монографии. В практическом плане информатика вырабаты- гих перечисленных разделах.
вала способы сбора, хранения, поиска, распространения научной Остальные отрасли информатики
информации. Её непосредственной предшественницей была наука о сбо- более подвержены изменениям. Ещё
ре, обработке, хранении, поиске и распространении документов — до- в начале 90-х гг. XX в. в ней выделяли
кументалистика, созданная 100 лет назад бельгийским учёным Полем следующие предметные области: ба-
Отле. зы данных, поиск и восстановление
Нетрудно заметить связь информатики с делопроизводством, биб- информации; искусственный интел-
лиотечным и архивным делом, книговедением и т. д. Информатика лект и робототехника.
(Information Science) возникла на их основе в 40—50-х гг., но особенно Их важность в информатике не
бурно стала развиваться после появления компьютеров. подлежит сомнению и сегодня, но за
Так что пришедшее к нам из Франции слово вовсе не было новым прошедшее время содержание этих
для русского языка, просто его более широкое значение вытеснило областей так сильно изменилось, что
старое. названия целесообразно сформули-
ровать по-иному: управление инфор-
мацией; интеллектуальные системы.
просто об использовании компью- Появились новые важные области:
теров, баз данных, пакетов приклад- сетевые технологии и вычисления;
В целом информати- ных программ (это не относится компьютерная графика и визуализа-
ку понимают сегодня к бурно развивающимся биоинфор- ция.
как науку, которая за- матике и нейроинформатике, в ко- Человечество вступает в следу-
нимается системати- торых получено много важных ре- ющий этап своего развития — инфор-
ческим изучением зультатов). мационное общество. Внедрение ком-
процессов создания, Интереснее рассмотреть внутрен- пьютерных технологий на глазах
описания, хранения, нюю структуру информатики. Сфера меняет нашу среду обитания и харак-
обработки и переда- явлений, охватываемых информати- тер социальных отношений. Поэто-
чи данных. кой, неоднородна и весьма сложна. му особое значение приобретают
Кроме того, информатика очень ди- выделяемые в отдельную область
намично развивающаяся наука, и хо- социальные и профессиональные
тя она достаточно молода, за время проблемы информатики. К их числу
её существования те или иные разде- относятся ответственность за послед-
лы уже неоднократно появлялись ствия принимаемых решений, спосо-
и исчезали.
Несмотря на то что в разные пе-
риоды развития информатики её
структура была различной, можно вы-
делить несколько устойчивых облас-
тей. Каждая из них имеет свою чётко
обозначенную сферу действия, свои
сформировавшиеся подходы к реше-
нию задач и методы исследования.
К ним относятся такие разделы, как
алгоритмы и структуры данных; ар-
Модель космического хитектура и организация компью-
корабля «Шаттл». теров; языки программирования;

64
Наука информатика

бы обеспечения неприкосновенно- Подводя итог, можно сказать, что


сти частной жизни и гражданских сво- информатика, несмотря на огромные
бод, противодействие компьютерной достижения, очень молодая наука
преступности, защита интеллектуаль- и находится ещё в самом начале сво-
ной собственности. его пути.

ДЖОН ФОН НЕЙМАН

Блестящий математик и физик Джон параллельно он изучает математику


Льюис фон Нейман родился 28 декаб- в Будапеште. В 1926 г. Фон Нейман по-
ря 1903 г. в Будапеште. При рождении лучает диплом химика и степень док-
родители дали ему имя Янош, в годы тора математики. Некоторое время он
учёбы и работы в Швейцарии и Герма- преподаёт в Германии, а в 1930 г. его
нии он называл себя Иоганном, а пос- приглашают в Принстонский универ-
ле переезда в США — Джоном. Джон ситет (США). Когда в 1933 г. в Принсто-
фон Нейман был старшим ребёнком не открылся Институт перспективных
в семье состоятельного венгерского исследований, Джон фон Нейман стал
банкира. Свои необычайные способ- его сотрудником и окончательно обос-
ности мальчик проявил очень рано — новался в США. Джон был очень
в 6 лет он владел несколькими иност- общительным человеком: обладая Джон фон Нейман.
ранными языками (свободно говорил большими знаниями и будучи блестя-
на древнегреческом и часто шутил на щим рассказчиком, он в любом обще-
нём с отцом) и мог разделить два вось- стве становился душой компании.
мизначных числа в уме, в 8 — освоил Джон фон Нейман внёс большой
основы высшей математики. В 12 лет вклад в создание и развитие целого ря-
легко запоминал несколько страниц да областей математики и физики. Он
текста. проводил фундаментальные исследо-
Начальное образование он получил вания, связанные с математической
в Будапеште. Когда ему исполнилось логикой, теорией групп, алгеброй опе-
17 лет, отец решил, что сыну нужно за- раторов, квантовой механикой, стати-
ниматься чем-то более выгодным, чем стической физикой.
математика, и уговорил его изучать хи- В 1944 г. фон Нейман и эконо-
мию. Для этого Джон отправился сна- мист Оскар Моргенштерн написали
чала в Германию, а затем в Швейцарию, книгу «Теория игр и экономическое

65
Информация и информатика

мер были предложены принципы па-


раллельного доступа к памяти. Архи-
Джон фон Нейман пользовался заслуженной любовью и уваже-
тектура первых двух поколений ЭВМ
нием коллег. При доказательстве теорем он исписывал всю дос-
с последовательным выполнением ко-
ку формулами и потом настолько быстро их стирал, что коллеги
манд в программе получила название
в шутку называли его манеру «доказательством методом стира-
«фон-неймановская архитектура
ния».
ЭВМ».
Одна из ЭВМ, в проектировании
и разработке которой фон Нейман
поведение», в которой развили не принимал участие в 1954 г., сыграла ос-
только математическую теорию игр, новную роль в обработке информации
но и её применение к экономическим, при создании водородной бомбы.
военным и другим наукам. Также Джон Джон фон Нейман, славившийся сво-
фон Нейман является одним из со- им остроумием, в шутку называл эту
здателей метода Монте-Карло — машину «Маньяк» (MANIAС —
численного метода решения мате- Mathematical Analyzer Numerical
матических задач, основанного на Integrator and Computer).
моделировании случайных величин. Крупнейшим научным достижени-
А кроме того, Нейман участвовал в ем фон Неймана в послевоенный пе-
секретном проекте по созданию риод стало построение теории
атомной бомбы. автоматов. В 1952 г. в работе «Вероят-
Во время Второй мировой войны ностная логика и синтез надёжных
американским учёным пришлось вы- организмов из ненадёжных элемен-
полнять военные заказы. Джон фон тов» он показал путь создания надёж-
Нейман был направлен в группу раз- ных ЭВМ и других автоматов. (По
работчиков ЭНИАКа (электронно-вы- теории фон Неймана надёжность си-
числительная машина) консультан- стемы, построенной из ненадёжных
том по математическим вопросам. элементов, может быть повышена за
Внимательно изучив конструкцию, он счёт увеличения числа элементов и со-
пришёл к идее нового типа логиче- единений между ними.)
ской организации ЭВМ: В 1954 г. Джон фон Нейман был на-
• устройства ввода/вывода инфор- значен членом Комиссии по атомной
мации; энергии США, и весной 1955 г. он пе-
• память компьютера; реезжает из Принстона в Вашингтон.
• процессор, состоящий из устрой- Вскоре врачи обнаружили у него фор-
ства управления (УУ) и арифметико- му костного рака. Учёный страдал от
логического устройства (АЛУ). невыносимых болей. До последних
В 1946 г. вместе с Германом Гольд- минут жизни служба безопасности во-
стейном и Артуром Берксом он на- енного ведомства, где он работал над
писал и выпустил отчёт «Предвари- секретными проектами, зорко следи-
тельное обсуждение логической ла, чтобы, находясь в бреду, фон Ней-
конструкции электронной вычис- ман не выдал какую-нибудь государ-
лительной машины», где высказано ственную тайну. Умер Джон фон
множество интересных идей, напри- Нейман 8 февраля 1957 г. в Вашинг-
тоне.
Последняя книга, над которой ра-
ботал фон Нейман, — «Вычислитель-
ная машина и мозг» — так и не была
закончена.
Архитектурные принципы органи-
зации ЭВМ, указанные Джоном фон
Нейманом, долгое время оставались
почти неизменными, и лишь в конце
70-х гг. XX в. в архитектуре суперком-
пьютеров и матричных процессоров
появились отклонения от этих прин-
ципов.

66
Наука информатика

НОРБЕРТ ВИНЕР

Имя этого человека, живо интересо- ходил стажировку в Кембриджском


вавшегося проблемами естествозна- и Гёттингенском университетах. Он
ния, стало известно всему миру после был знаком с Бертраном Расселом,
выхода в 1948 г. его книги «Киберне- Годфри Харди, Эдмундом Ландау, Да-
тика». Норберт Винер — выдающийся видом Гильбертом и другими извест-
американский математик, внёсший за- ными математиками.
метный вклад в теорию связи, участво- После Первой мировой войны Ви-
вавший в создании первых вычисли- нер добился выдающихся результа-
тельных машин. тов в математике. В 20-х гг. XX в. он
Ничто не предвещало такого сен- определил так называемый винеров-
сационного успеха книги. В 1946 г., ский процесс, характеризующий бро-
находясь в Париже на конференции уновское движение (см. статью «От
по математике, Винер встретился с из- атомов к молекулам» в томе «Физи-
дателем, который предложил ему на- ка» «Энциклопедии для детей»),
писать книгу об обратной связи меж- и опубликовал ряд замечательных ра-
ду автоматами (машинами) и нервной бот по гармоническому анализу, по- Норберт Винер.
системой человека. служивших одной из отправных то-
Начав трудиться над книгой, Ви- чек для работ Гельфанда по теории
нер долго размышлял над её загла- банаховых алгебр — крупного собы-
вием. Он хотел найти слово, как-то тия в математике 30-х гг. С 1932 г. Ви-
объединявшее идеи управления, ин- нер — профессор Массачусетсского
формации и связи... Свой выбор он ос- технологического института.
тановил на греческом слове «кибер- Во время Второй мировой войны
нетика». (Первым употребил это слово Норберт Винер занимался прикладны-
древнегреческий мыслитель Платон; ми проблемами, связанными, в част-
Ампер в XIX в. предложил называть ности, с нуждами авиации и зенитной
так науку об управлении человеческим артиллерии. Он дополнил теорию эк-
обществом.) страполяции и фильтрации случайных
«Кибернетика» вышла из печати процессов, созданную перед войной
с большими погрешностями (в том чис- А. Н. Колмогоровым, в цикле работ, из-
ле и потому, что Винер не имел возмож- данных для служебного пользования
ности сделать корректуру), и издатель (ввиду их засекреченности). Винер
невысоко оценивал коммерческое бу- применил математический аппарат,
дущее книги. Но она стала истинным
бестселлером, одной из самых популяр-
ных книг XX столетия. Слово «киберне-
тика» приобрело необычайную попу-
лярность, а идеи Винера совершили
прорыв в сознании человечества.
Норберт Винер родился 26 нояб-
ря 1894 г. в городке Колумбия (штат
Миссури, США). Его отец был поли-
глотом, славистом, знатоком литера-
туры, переводчиком. С раннего детст-
ва мальчик изучал древние языки,
естественные науки, много читал. Он
был вундеркиндом: среднюю школу
окончил в 11 лет, высшее учебное за-
ведение — в 14 (тогда же получил зва-
ние бакалавра наук), в 17 лет стал ма-
гистром искусств, а в 18 — доктором
философии в области математиче-
Фотография
ской логики. Получив стипендию Гар- 1-го издания книги
вардского университета, Винер про- «Кибернетика».

67
Информация и информатика

вились постоянные контакты между


этими выдающимися научными дея-
телями XX столения.
В военные годы Винер организо-
вал в Принстоне семинар, в котором
помимо математиков принимали уча-
стие нейрофизиологи, специалисты
по теории связи и вычислительной
технике. Этот семинар фактически
стал началом научного направления,
впоследствии получившего имя «ки-
бернетика».
В СССР идеи кибернетики были
восприняты резко отрицательно
(см. статью «Информатика»).
Но уже в 1958 г. на русском языке
вышли обе книги Норберта Винера:
«Кибернетика, или Управление и связь
в животном и машине» и «Кибернети-
ка и общество». В том же году вышел
51-й, дополнительный том Большой
советской энциклопедии со статьёй
А. Н. Колмогорова «Кибернетика», где
отмечалось, что это «новое научное
направление, задачи которого были
сформулированы в работах американ-
Винер читает лекцию. ского учёного Н. Винера, опублико-
ванных в 1948 г.». Имя Винера стало
не входивший в традиционное инже- неслыханно популярным. В послед-
нерное образование. Поэтому книга, ние годы жизни он много путешест-
изданная в жёлтой обложке, получила вовал, пропагандируя свои идеи. По-
среди инженеров, которым была адре- бывал и в Москве, где встретился
сована, название «жёлтая опасность». с математиками, биохимиками и пси-
Американский математик Клод Шен- хологами, сделал доклад в Политех-
нон «перевёл» её на более простой ин- ническом музее. Винер умер 19 мар-
женерный язык, и с той поры устано- та 1964 г.

АНДРЕЙ НИКОЛАЕВИЧ КОЛМОГОРОВ

Андpей Николаевич Колмогоpов ле «Весенние ласточки», где публи-


(1903—1987) был одним из кpупней- ковал пpидуманные задачи и свои ма-
ших математиков XX столетия и одним тематические «откpытия» (в частно-
из величайших pоссийских учёных. сти, что сумма пеpвых n нечётных
А. Н. Колмогоров родился 25 ап- чисел pавна n2).
реля в Тамбове. Мать умеpла чеpез не- С 1910 г. Андрей жил в Москве.
сколько часов после pождения сына, Он учился в одной из лучших частных
и ребёнка воспитывала её сестpа — московских гимназий. Круг его юноше-
Вера Яковлевна Колмогорова. Его дет- ских интересов был необычайно ши-
ство пpошло под Ярославлем, в име- рок. Он всерьёз увлекался биологией,
нии деда. физикой, математикой. В возpасте
Интеpес к математике обнаpужил- 14 лет юноша самостоятельно изучил
ся у мальчика очень pано. В возpасте диффеpенциальное и интегpальное
четыpёх-пяти лет он вёл математиче- исчисления по энциклопедическому
ский отдел в семейном детском жуpна- словаpю Бpокгауза и Ефpона.

68
Наука информатика

В 1920 г. Колмогоpов поступил в Мо-


сковский унивеpситет и стал учеником
легендарного математика Н. Н. Лузина,
объединившего под своим крылом луч-
ших представителей московской мате-
матической школы. Тогда же формиру-
ется круг его гуманитарных интересов:
он посещает семинар знаменитого рус-
ского историка профессора Москов-
ского университета С. В. Бахрушина
и делает первый научный доклад о сво-
ей работе, посвящённой новгородско-
му землевладению.
Ещё будучи студентом, в 1922 г.,
в возрасте 19 лет, Колмогоров полу-
чает выдающийся результат в теории
тригонометрических рядов, и его имя
становится известным всему матема-
тическому миру. Тогда же он получа-
ет и фундаментальные результаты
в математической логике.
Начиная с 1924 г. на пpотяжении
последующих 40 лет А. Н. Колмо-
гоpов занимается исследованиями
в области теоpии веpоятностей. Он
завоевал положение безусловного ли-
деpа в этой науке. Его книга «Основ- А. Н. Колмогоров.
ные понятия теоpии веpоятностей»
вошла в золотой фонд наpяду с клас- нер, создатель кибернетики, рассмат-
сическими мемуаpами Якоба Беpнул- ривал их как одно из высших своих
ли и Пьера Симона Лапласа. В этой творческих достижений).
книге, в частности, была постpоена В 1939 г., в возрасте 36 лет,
общепpинятая аксиоматика теоpии А. Н. Колмогоров избирается действи-
веpоятностей. тельным членом Академии наук.
В 1929 г. Колмогоров оканчивает В 40-х гг. XX в. Андрей Николаевич
аспиpантуpу и с этого вpемени до кон- обpащается к новой науке — локаль-
ца своей жизни pаботает на механи- ной теоpии туpбулентности и совер-
ко-математическом факультете Мос- шает в ней подлинный переворот.
ковского университета. Сейчас невозможно даже обозpеть
Тридцатые годы — период необы- pазмеpы научного направления, вы-
чайного взлёта его творческих дости- pосшего из тpёх его кратких заметок.
жений. Он создаёт теоpию маpковских Во вpемя Великой Отечественной
случайных пpоцессов, завеpшая уси- войны по заданию военных ведомств
лия Альберта Эйнштейна, Макса (Кар- он создаёт статистическую теоpию
ла Эрнста Людвига) Планка, Мариана стpельбы, а в пеpвые послевоенные
Смолуховского и Норберта Винеpа; по- годы pазpабатывает основы теоpии
лучает основополагающий результат статистического контpоля пpодукции.
по математической статистике; закла- Расцвет его твоpчества — 50-е го-
дывает основы нескольких математи- ды. Колмогоровым были получены
ческих дисциплин (топологической выдающиеся pезультаты в небесной
алгебры, геометрии, теории топологи- механике, которые сравнивают с
ческих векторных пространств); вво- достижениями Лапласа и Пуанкаре,
дит одно из важнейших понятий то- и pешена вместе с В. И. Аpнольдом
пологии (понятие верхних гомологий); 13-я пpоблема Гильбеpта.
стpоит теоpию экстраполяции случай- А. Н. Колмогоров принадлежал к тем
ных процессов (пришедший чуть поз- учёным, которые стояли у истоков раз-
же к тем же результатам Норберт Ви- вития информатики и кибернетики

69
Информация и информатика

в нашей стране и своим творчеством вич назвал себя «отчаянным киберне-


и авторитетом способствовали их ста- тиком». В частности, на вопросы: «мо-
новлению. гут ли машины воспроизводить себе
В начале 50-х гг. Колмогоров подобных и может ли в процессе са-
обдумывает и развивает основное мовоспроизведения происходить про-
понятие информатики — понятие грессивная эволюция; могут ли маши-
алгоритма и даёт чёткое, ставшее об- ны испытывать эмоции: радоваться,
щепринятым определение этого по- грустить, быть недовольными чем-ни-
нятия. В начале 60-х гг. он размышля- будь, чего-нибудь хотеть; могут ли, на-
ет над общей концепцией автомата, конец, машины ставить перед собой
развивая идеи растущих и самокон- задачи, не поставленные перед ними
струирующихся автоматов. конструкторами?», он давал положи-
Он был одним из первых россий- тельные ответы.
ских учёных, осознавших значение для В последний период своей твор-
математической науки трудов создате- ческой деятельности Колмогоров на-
ля теории информации Клода Шенно- чал развивать грандиозный замысел
А. Н. Колмогоров. на. Основное понятие этой теории — создания алгоритмических основ
понятие энтропии — Колмогоров теории информации и теории веро-
обобщил и применил в весьма отдалён- ятностей. Ему принадлежит зна-
ных областях математики: функцио- менитое понятие колмогоровской
Сложностью сооб- нальном анализе, теории динамиче- сложности.
щения, по Колмого- ских систем и теории аппроксимации, Колмогоpов создал большую науч-
рову, называется ми- что привело к созданию целых новых ную школу, многие его ученики ста-
нимальная плата по научных направлений. Но и самому ли выдающимися учёными, получили
всевозможным мето- шенноновскому понятию энтропии междунаpодное пpизнание, 12 из них
дам шифровки сооб- Колмогоров придал расширенный ма- были избpаны действительными чле-
щения. Это одно из тематический смысл, соединив с поня- нами и членами-коppеспондентами
наиболее известных тием информации. Академии наук.
определений внут- Колмогоров много размышлял над Последнюю четвеpть XX в. Колмо-
реннего количества философскими аспектами кибернети- гоpов посвятил пpоблемам школьно-
информации в сооб- ки, над понятиями «жизнь», «мышле- го математического обpазования.
щении. ние», «управление», над проблемами А. Н. Колмогоpов был в числе осно-
будущего развития человечества. В од- вателей и возглавлял многие матема-
ной из публикаций Андрей Николае- тические жуpналы, такие, как «Успе-
хи математических наук», «Теоpия
веpоятностей и её пpименение»,
«Квант» (журнал для юношества).
Характеризуя своего друга, акаде-
мик Павел Сергеевич Александров пи-
сал, что «трудно найти математика
в последних десятилетиях не только
такой широты, а с таким воздействи-
ем на математические вкусы и на раз-
витие математики».
Колмогоpов — яркий пpимеp уни-
веpсального учёного. Он был и вы-
дающимся логиком, и геометpом,
и аналитиком, и натуpфилософом,
и «математиком для математики»,
и человеком глубоких гуманитаpных
интеpесов.
А. Н. Колмогоpов всегда искал и
отстаивал истину. Он был исключи-
тельной, гениальной личностью.
Тpудно найти ещё пpимеpы учёных
Колмогоров читает такой поpазительной силы, шиpоты
лекцию. и глубины.

70
Наука информатика

АЛАН МАТИСОН ТЬЮРИНГ

Сегодня Алан Тьюринг представляется нам как


Основатель Компьютерной Науки,
создатель доминирующей технологии конца XX века,
но этих слов никто не говорил в годы его жизни,
и в будущем его могут увидеть в совершенно ином свете.

Эндрю Ходжс. «Алан Тьюринг: Загадка»

Алан Матисон Тьюринг появился чем, вскоре пришлось опасаться уже


на свет 23 июня 1912 г. в семье Джу- того, сможет ли он окончить эту школу.
лиуса Матисона Тьюринга и Этель Са- Об успеваемости Алана красноре-
ры Стоней. Он был вторым ребёнком. чиво свидетельствует классный жур-
Родители Алана Тьюринга познако- нал: последнее место в классе по анг- Алан Тьюринг.
мились и обвенчались в Индии. Это лийскому языку, предпоследнее — по
была небогатая английская аристо- латинскому, по остальным предме-
кратическая семья, жившая в соот- там чуть лучше. Вердикты учителей
ветствии со строгими традициями однообразны: «безнадёжное отстава-
империи. Среди их многочисленной ние», «безобразная успеваемость»...
родни был ирландский физик и мате- Директор школы писал: «Этот маль-
матик Джордж Джонстон Стоней, ко- чик из тех, кто обречён стать боль-
торый ввёл понятие об элементарном шой проблемой для любой школы
электрическом заряде и придумал тер- или сообщества...». Между тем в класс-
мин «электрон». ном журнале имеются и другие запи-
В детстве Алан и его старший брат си: «Если он хочет быть только науч-
Джон довольно редко видели родите- ным специалистом, он зря проводит
лей. Пока их отец служил в Индии, де- время в Public School... Наверное, он
ти оставались в Англии и жили на по- будет математиком. Такие ученики,
печении друзей семьи. Традиционным как он, рождаются один раз в 200 лет».
английским воспитанием изучение В 15 лет Алан самостоятельно осво-
основ естественных наук не предусма- ил теорию относительности, но обста-
тривалось. Но Алан обладал очень новка и стиль обучения в классической
пытливым умом и с разрешения вос-
питателей читал научно-популярные
книги (читать он научился самостоя-
тельно в возрасте шести лет). Тогда
кто-то из родных и подарил мальчи-
ку популярную книжку «Чудеса при-
роды, которые должен знать каждый
ребёнок» Эдвина Т. Брюстера. С это-
го всё и началось.
В 11 лет он ставил химические опы-
ты, пытаясь извлечь йод из водорос-
лей, что доставляло огромное беспо-
койство его матери. Она боялась, что
увлечения сына, идущие вразрез с об-
щепринятыми нормами, помешают
ему поступить в одну из Public Schools
(английское закрытое частное учеб-
ное заведение для мальчиков, учёба
в котором считалась обязательной для
детей аристократов). Но опасения ока- Библиотека
зались напрасны: в 1926 г. Алан был за- Королевского
колледжа
числен в престижную Шерборнскую Кембриджского
школу (Sherborn Public School). Впро- университета.

71
Информация и информатика

британской школе не располагали лемой Гильберта о разрешимости и на-


к развитию подобных интересов. Обя- чал работать над ней. В апреле 1936 г.,
зательные программные предметы ос- когда Алан уже завершил свою рабо-
тавляли подростка полностью равно- ту, появилась статья американского
душным, успевал он еле-еле и в итоге логика Алонзо Черча с тем же резуль-
оказался перед реальной перспекти- татом, но полученным совершенно
вой вообще не получить аттестата. иным методом. Ответы обоих иссле-
В 1928 г. Тьюринг нашёл долго- дователей были отрицательными, од-
жданную родственную душу — ново- нако Тьюринг пришёл к своему очень
го одноклассника, весьма одарённо- оригинально. Сначала Алан опреде-
го ученика по имени Кристофер лил метод в виде механического про-
Морком. Наконец-то Алан смог с кем- цесса работы воображаемой машины,
то поделиться своими размышления- считывающей символы-инструкции
ми. Юноши стали неразлучными дру- с бумажной ленты. Затем он доказал,
зьями. После окончания школы оба что его машине под силу выполнить
собирались поступать в Кембридж- любое вычисление, на которое спосо-
ский университет. Первая попытка бен человеческий ум в пределах фор-
сдать предварительные экзамены мальной логики. Несмотря на то что
в Кембридж закончилась для Алана не- Черча считают первым, кто решил зна-
удачей. Но он не слишком расстраи- менитую проблему, работа Алана Тью-
вался, потому что искренне радовал- ринга «О вычислимых числах, с при-
ся за Кристофера, который успешно ложением к проблеме разрешимости»
прошёл испытания и получил стипен- принесла ему славу первооткрывате-
дию. Алан надеялся поступить со вто- ля таких понятий, как «вычислитель-
рой попытки, чтобы учиться вместе ный алгоритм» и «универсальный ком-
с другом. пьютер».
Но 13 февраля 1930 г. Кристофер Тьюринг блестяще закончил че-
Алан Тьюринг в годы внезапно умер. Смерть лучшего друга тырёхлетний курс обучения. Каза-
учёбы. потрясла 17-летнего Тьюринга — он лось, его ждёт успешная карьера слег-
задумался над тем, как материализо- ка эксцентричного кембриджского
ван человеческий разум и высвобож- профессора, занимающегося чистой
дается ли он после смерти. Ответы на математикой. Но в сентябре 1936 г.
эти вопросы Алан искал в книге «При- Алан получил двухгодичную аспи-
рода физического мира» Артура Эд- рантскую стипендию от Принстон-
дингтона (1882—1944), а объяснение ского университета (США) и приехал
свободы человеческого выбора — к Джону фон Нейману. Там он рабо-
в квантовой механике. тал в области алгебры и теории чи-
В октябре 1931 г. Алан Тьюринг сел, доказав при этом соответствие
стал студентом Королевского коллед- между собственным определением
жа Кембриджского университета. вычислимости и определением Чер-
И сразу же стали заметны значитель- ча, а также продолжил развитие сво-
ные успехи: прекрасная успеваемость, их идей о логике вычислений, что
интенсивная научная работа, кемб- и стало темой его докторской диссер-
риджская степень бакалавра с отли- тации — самой сложной и глубокой
чием в 1934 г., степень магистра математической работы Тьюринга. Он
и аспирантская стипендия от Коро- сконструировал шифровальную ма-
левского колледжа в 1935 г., премия шину на электромагнитных реле
Смита за работу по теории вероятно- и принялся за изучение науки шифро-
стей в 1936 г. вания.
Размышления над природой че- В 1938 г., сразу после защиты дис-
ловеческого разума в 1932 г. привели сертации, Алану предложили про-
студента Тьюринга к изучению очень фессорскую должность в Принстон-
сложной работы Джона фон Неймана ском университете, но он вернулся
Тьюринг участвует о логических основах квантовой ме- в Англию, в Кембридж. В сентябре
в кроссе. 1946 г. ханики и далее к исследованиям в об- 1939 г. Тьюринг начал работать на
ласти формальной логики. В 1935 г. он Правительственную школу кодов
внезапно увлёкся знаменитой проб- и шифров.

72
Наука информатика

Началась Вторая мировая война.


Германия для кодировки радиосооб-
Давид Гильберт (1862—1943) ставил следующий вопрос: «Суще-
щений применяла шифровальную
ствует ли, хотя бы в принципе, определённый метод или про-
электромеханическую машину «Эниг-
цесс, посредством которого можно решить любую математиче-
ма» («Загадка»), раскрыть её шифр ни-
скую проблему?».
как не удавалось. Главным героем увле-
кательнейшей криптографической
битвы стал Алан Тьюринг. Англичане
«Энигме» противопоставили свою де-
шифрующую электромеханическую ния, раскрывать шифры и играть в
машину «Бомба», но она не справля- шахматы. Он мечтал о библиотеке
лась. Тьюрингу удалось значительно программ, о едином национальном
усовершенствовать машину, благода- компьютерном центре с сетью тер-
ря чему был взломан шифр — тот, что миналов.
использовали люфтваффе (Военно- В 1949 г. в университете Ман-
воздушные силы Германии), после честера, куда перешёл Тьюринг и где
этого англичане оказались в курсе он разрабатывал программы для
всех деталей операций, планируемых электронного компьютера, появился
воздушным флотом Геринга. Но 1 фев- компьютер Manchester Mark I, или,
раля 1942 г., вскоре после вступления как его ещё называли, MADAM (от
в войну США, германские субмарины Manchester Automatic Digital Machi-
перешли на усложнённый шифр («ры- ne). В результате развития проекта
бий язык»), и «Бомба» потерпела не- MADAM был введён в действие один
удачу. Алан принялся за создание но- из первых в мире полностью рабо-
вой машины «Колосс», в которой тоспособных компьютеров — Ferranti
вместо электромеханических реле ис- Mark I.
пользовались 2 тыс. электронных В 1950 г. Тьюринг написал фило-
ламп. «Колосс» легко победил «Эниг- софскую статью «Вычислительные ма-
му» и справился даже с «рыбьим шины и интеллект» (в 60-х гг. вышла
языком». на русском языке в виде отдельной
С ноября 1942 по март 1943 г. Тью- книги под названием «Может ли ма-
ринга командировали в США, где учё- шина мыслить?») — классику будущей
ный представлял британскую сторо- науки об искусственном интеллекте.
ну в обеспечении электронного В 1951 г. к нему пришло признание
шифрования переговоров между Руз- научных заслуг: учёного избрали чле-
вельтом и Черчиллем (позже по ини- ном Лондонского королевского учё-
циативе Черчилля математика награ- ного общества. Тьюринг начинает вы-
дили орденом Британской империи, числительные эксперименты по
но за какие заслуги, известно было нелинейному моделированию фор-
только узкому кругу посвящённых). мообразования у растений и раковин.
Не забывал Тьюринг и о теоретиче- Он исследует то, как живые организ-
ских разработках. Одна из его ранних мы растут и почему приобретают
идей — аналогии в работе вообража- свою форму. Ответы на вопросы, вол-
емой «машины Тьюринга» и челове- новавшие с детства, он обнаружил
ческого мозга — трансформировалась в нелинейности уравнений химиче-
в концепцию «умного компьютера» ских реакций и диффузии, моделируя
(искусственный интеллект), чей IQ их решения на компьютере. Его ис-
(коэффициент интеллекта) проверял- следования показали, что электрон-
ся с помощью специально разрабо- ный компьютер может использовать-
танной логической процедуры, сего- ся в научных целях.
дня называемой тестом Тьюринга. Хотя Алан Тьюринг — выходец из
В послевоенные годы Аланом аристократической семьи, он нико-
Тьюрингом завладела идея создания гда не был эстетом: кембриджские
универсального программируемого политические и литературные круж-
электронного компьютера, способ- ки были ему чужды. Он предпочитал
ного делать всё: считать и проводить заниматься любимой математикой, Шифровальная
сложные алгебраические вычисле- а в свободное время — проводить машина «Энигма».

73
Информация и информатика

Олимпийских игр. Тьюрингу же лишь


досадная травма помешала участво-
Во время своих химических занятий Алан Тьюринг играл в «Не-
вать в играх.
обитаемый остров» — игру, изобретённую им самим. Её цель за-
Жизнь этого разносторонне
ключалась в том, чтобы получать различные полезные химиче-
одарённого человека прервалась
ские вещества из подручных средств: стирального порошка,
рано. Алан Тьюринг был арестован
средства для мытья посуды, чернил и тому подобной бытовой
и 31 марта 1953 г. предстал перед
химии...
судом по обвинению в гомосексу-
ализме (то, что сегодня называют
нетрадиционной сексуальной ори-
химические опыты, решать шахмат- ентацией, в послевоенной Англии
ные головоломки, играть в го. считалось преступлением). Ему пре-
Друзей у него почти не было. Мно- доставили выбор: тюрьма или
гих отталкивали его несколько бес- лечение. Он избрал лечение. Всё пе-
порядочный стиль одежды, эксцент- режитое вызвало расстройство пси-
ричная причёска и резкий скрипучий хического здоровья. В глубокой де-
голос (к тому же иногда он сильно за- прессии продолжал учёный научную
икался). работу — до того дня, когда поставил
Тьюринг всегда отличался завид- свой последний химический опыт...
ным здоровьем, был прекрасным Прислуга нашла его мёртвым
Студенты шептались спортсменом, отдавая предпочтение 8 июня 1954 г. На недоеденном ябло-
о том, что, подводя гребле и марафонскому бегу. В сво- ке и на пальцах учёного обнаружи-
стрелки будильника, бодное время он занимался в Валтон- ли цианистый калий, тот же яд был
Алан не пользуется ском спортивном клубе. По утрам рассыпан по столу, на котором он
сигналами точного частенько пробегал 10 км (от дома до накануне ставил химические опыты.
времени, а глядит на лаборатории), чем удивлял коллег. Заключение следователя прозвучало
звёзды и производит А в период цветения растений, вы- категорично: самоубийство. Но мать
ему одному извест- зывающих у него аллергию, ездил на Тьюринга и многие его коллеги не
ные вычисления. велосипеде, надев противогаз, за что поверили в это, ведь Алан недавно
его неоднократно останавливали начал новые исследования в облас-
полицейские. Свои усиленные трени- ти теории программирования, био-
ровки Алан объяснял необходимо- логии, квантовой физики, несмотря
стью снять стресс, вызванный рабо- на то что после суда ему запрещалось
той. В 1948 г. в кроссе он показал работать в секретных компьютер-
результат лучше, чем спортсмен, вско- ных лабораториях... Тьюрингу был
ре ставший серебряным призёром 41 год.

АНДРЕЙ ПЕТРОВИЧ ЕРШОВ

Академик Андрей Петрович Ершов в годы Великой Отечественной войны


(1931—1988) — один из основателей 11—12-летним мальчишкой Андрей на-
теоретического и системного програм- ходился на оккупированной фашиста-
мирования, создатель сибирской шко- ми территории, и этого было достаточ-
лы информатики. Его существенный но, чтобы не допустить его к тем
вклад в становление информатики как областям науки, которые содержали го-
новой отрасли науки и нового фено- сударственные тайны.
мена общественной жизни широко Ещё студентом МГУ под влиянием
признан в нашей стране и за рубежом. А. А. Ляпунова Ершов страстно и на
Заканчивая школу, Андрей, как всю жизнь увлёкся программирова-
и многие юноши того времени, мечтал нием, где каждый шаг являлся твор-
о ядерной физике. В 1949 г. он посту- ческим и интересным поиском. Его
пил в Московский университет, однако наставники занимались изучением
от карьеры физика-ядерщика пришлось Программы автоматического присво-
А. П. Ершов. отказаться уже при подаче документов: ения адресов — ПАПА (она внедря-

74
Наука информатика

ТРОПА В АКАДЕМГОРОДКЕ

А. П. Ершов

Двадцать лет хожу я на работу


по тропе, проложенной в лесу.
Если мне Господь послал заботу,
Я её здесь с лёгкостью несу.
Школа № 162.
Новосибирск.
Всем живым заполнено пространство — 1984 г.
Птицы, белки, травы, дерева...
Жизни ход и жизни постоянство —
Той тропы заветные слова.

Здесь недавно поселилась фея.


Смотрят в душу глаз её лучи.
Мне в лицо её дыханье веет,
Тихий голос строчками звучит.

Но всего родней, всего дороже


В непрерывном беге быстрых дней
Неслучайно встреченный прохожий,
Путь держащий по тропе моей.
А. П. Ершов
с учащимися Всесо-
Двадцать лет, не обронив ни слова, юзной летней школы.
Мы стремим друг другу быстрый взгляд.
Этот взгляд при каждой встрече новой В 1957 г. его назначают заведу-
Мне приносит бодрости заряд. ющим отделом автоматизации про-
граммирования во вновь созданном
Жить с людьми — заслон любой заботе. Вычислительном центре АН СССР.
Три семьи царят в моей судьбе: В связи с образованием Сибирского
Дома — первая, вторая — на работе, отделения АН СССР по просьбе дирек-
Третья — на солнечной тропе. тора Института математики СО АН
СССР академика C. Л. Соболева Анд-
Май 1983 г. рей Петрович берёт на себя обязан-
ность организатора и фактического
руководителя отдела программиро-
лась в первых вычислительных цен- вания этого института, а затем пере-
трах и привела к развитию языков ходит в Вычислительный центр СО
низкого уровня — автокодам). Анд- РАН. Впрочем, «по просьбе директо-
рей же исследует другое направление. ра» — это скорее официальная фор-
Его дипломная работа называлась мулировка. В действительности же он
«Программирующая программа» — в числе первопроходцев-энтузиастов
ПП. По существу, речь шла о первом добровольно отправился осваивать
трансляторе в высокоуровневой си- новую Сибирь — строить Академго-
стеме программирования. Этот труд родок, ставший ему по-настоящему
во многом определил жизненный вы- родным. Ершов близко воспринимал
бор молодого учёного. научную и общественную жизнь Ака-
После окончания университета демгородка, с высочайшим чувством
Андрей Петрович поступил на рабо- ответственности организовывал на-
ту в Институт точной механики учные конференции, принимал гос-
и вычислительной техники Акаде- тей и друзей со всего мира, активно
мии наук — организацию, в которой участвовал в деятельности Научного
складывался один из первых совет- совета по проблемам образования при
ских коллективов программистов. Президиуме СО АН СССР.

75
Информация и информатика

Фундаментальные исследования
А. П. Ершова в области схем программ
А.П. ЕРШОВ — УЧЁНЫЙ И ЧЕЛОВЕК и теории компиляции оказали замет-
ное влияние на его многочисленных
Вокруг Андрея Петровича Ершова всегда кипела жизнь — его окружа- учеников и последователей.
ли студенты и школьники, аспиранты и молодые исследователи, зару- Книга А. П. Ершова «Программи-
бежные учёные и сибирские журналисты. Андрей Петрович не был ни рующая программа для быстродейст-
администратором по призванию, ни воспитателем по образованию, вующей электронной счётной ма-
но тем не менее к нему постоянно обращались за советами, консуль- шины» — одна из первых в мире
тациями, с просьбами. Приходили и в радости: «Родился сын!», и в пе- монографий по автоматизации про-
чали: «Что делать? Провалился на защите». Среди его аспирантов друж- граммирования.
но и увлечённо работали узбеки и евреи, русские и татары, украинцы За существенный вклад в теорию
и литовцы. У него для каждого находилось нужное слово, правильный смешанных вычислений в 1983 г.
тон. Речь идёт о человеке предельно загруженном, ценящем и умею- А. П. Ершов был удостоен премии име-
щем считать каждую секунду. Но никто и никогда не слышал от него, ни академика А. Н. Крылова.
казалось бы, очень естественной реплики: «Я занят! Мне некогда!». Язык программирования «Альфа»
Интеллигент высшей пробы, он навсегда остался в памяти коллег, дру- и оптимизирующий «Альфа»-транс-
зей и родных настоящим человеком. лятор, первая советская система раз-
Не часто пользовался он служебным автомобилем: пешая прогул- деления времени «Аист-0», система
ка по лесным тропинкам Академгородка ранним утром на работу и по- учебной информатики «Школьница»,
здним вечером домой стали частью его повседневной жизни. система подготовки печатных изда-
Академик А. П. Ершов уделял много внимания проблемам инфор- ний «Рубин», многопроцессорная ра-
мационного обеспечения учёных. Он очень любил книги и собирал их бочая станция «Мрамор» — все эти
всю жизнь. В его личной библиотеке хранилось более 30 тыс. книг, жур- значительные проекты инициирова-
налов, трудов конференций, препринтов и отдельных оттисков статей лись А. П. Ершовым и выполнялись
практически на всех европейских языках. После смерти Андрея Петро- под его руководством.
вича его наследники передали библиотеку в Институт систем инфор- Благодаря уникальным способ-
матики. Теперь это Мемориальная библиотека имени А. П. Ершова. ностям научного предвидения Анд-
Андрей Петрович Ершов был не только талантливым учёным, учи- рей Петрович одним из первых в на-
телем и борцом за свои идеи, но и выдающейся, разносторонне ода- шей стране осознал ключевую роль
рённой личностью. Он любил музыку, поэзию, писал сам и переводил вычислительной техники в прогрессе
на русский язык стихи английских поэтов. Им сделан замечательный науки и общества. Его блестящие
перевод киплинговского стихотворения «Когда» («К сыну»), который идеи заложили основу для развития
специалисты считают лучшим (а ведь существуют переводы и таких в России таких научных направле-
столпов поэзии, как С. Я. Маршак и М. Л. Лозинский). Любимым мес- ний, как параллельное программи-
том отдыха были музыкальные вечера в Доме учёных. рование и искусственный интеллект.
Андрей Петрович прекрасно играл на гитаре и пел. Приятно вспом- В 1980 г. академик начал экспери-
нить вечер у костра в сосновом лесу на берегу Оби. Школьники, слуша- менты по преподаванию программи-
вшие днём лекции «О человеческом и эстетическом факторах в програм- рования в средней школе. Это приве-
мировании», окружают плотным кольцом любимого учителя, взявшего ло к введению в школьную программу
в руки гитару, и тихонько подпевают. Все, кто имел счастье общаться курса информатики и вычислитель-
с академиком Ершовым, будут всегда помнить его блестящие идеи, ной техники. Широко используемый
выдающиеся достижения и необыкновенную доброжелательность. сейчас термин «школьная информа-
Работал он удивительно. Конечно, святыми были рабочий кабинет тика» рождён в кабинете Ершова в Вы-
и университетская библиотека. Но выдающийся учёный не видел за- числительном центре СО АН. С его не-
труднений, если приходилось писать на откидном столике самолётно- посредственным авторским участием
го кресла или в междугородном автобусе Новосибирск — Барнаул. (предложил описание школьного ал-
Младшие коллеги и ученики Ершова старались подражать стилю его горитмического языка) подготовлен
работы даже в мелочах. Каждая страничка рукописей имела пометки первый советский школьный учеб-
даты, часа и минут. Редкая сосредоточенность и целеустремлённость ник по информатике. Кроме того, он
позволяли не забывать о широком диапазоне поглощавших его дел. создал ряд учебных телепередач по
Даже встречу в палате Онкологического центра незадолго до данному курсу. А. П. Ершов был по-
кончины Ершова нельзя было назвать посещением больного. Рядом стоянным и самым дорогим гостем
с больничной койкой стоял столик с книгами и рукописями, Андрей всех Всесоюзных летних школ юных
Петрович постоянно работал, говорил о делах и заботах посетите- программистов, регулярно проводив-
ля, а не о мучившей его болезни. шихся в новосибирском Академго-
родке.

76
Наука информатика

Велика роль А. П. Ершова как орга-


низатора науки: он принимал самое
активное участие в подготовке мно-
жества международных научных кон-
ференций и конгрессов, был редак-
тором или членом редколлегии как
русских журналов «Микропроцессор-
ные средства и системы», «Киберне-
тика», «Программирование», так и
международных — «Acta Informatica»,
«Information Processing Letters», «Theo-
retical Computer Science».
Имя Ершова носят Институт сис-
тем информатики СО РАН и благотво-
рительный Фонд имени А. П. Ершова,
основной целью которого является
А. П. Ершов в 1986 г.
развитие информатики как изобрета- Физические экспери-
тельства, творчества и искусства. менты.

ЗАЧЕМ И КАК УЧИТЬ


ДЕТЕЙ ПРОГРАММИРОВАНИЮ

ТРИ КАТЕГОРИИ граммирования, ни особенностей


программирования на конкретных
ПРОГРАММИСТОВ компьютерах, умеют описать задачи
из своих предметных областей на од-
С каждым годом всё больше становит- ном из наиболее подходящих для этой
ся вычислительных машин. Ещё быст- цели языков программирования. При-
рее увеличивается количество задач, кладных программистов готовят
решаемых с помощью компьютеров. обычно профильные высшие учебные
Казалось бы, перспектива ясна: скоро заведения.
всем придётся писать программы на Усилиями системных и приклад-
алгоритмических языках. ных программистов решение задачи
С первых шагов развития вычис- на машине может быть сведено до
лительной техники среди програм- уровня подстановки параметров
мистов наметилось разделение труда,
ставшее особенно отчётливым в на-
ши дни. Системные программисты —
это программисты-профессионалы.
Они создают программы (операци-
онные системы, трансляторы с языков
высокого уровня, программы управ-
ления базами данных и т. д.), облегча-
ющие общение с машиной для всех
компьютерных пользователей. Сис-
темные программисты получают вы-
сшее, как правило университетское,
образование.
Второй «слой» программистов —
прикладные программисты. Это спе-
циалисты по экономике, геологии, по-
лиграфии, метеорологии, медицине
и т. д., которые, не зная ни теории про-

77
Информация и информатика

Число системных и прикладных


программистов сравнительно неве-
лико, да и увеличивается со време-
нем не так уж значительно. А вот
число «простых» параметрических
пользователей растёт и будет расти
стремительно. Сейчас совершенно яс-
но, что скоро ими станет бо’ льшая
часть населения земного шара. Но для
успешного общения с компьютером
даже параметрическим пользователям
необходимы определённые умения
и навыки.

ЧТО МОЖЕТ
ПРОГРАММИСТ

Вот только часть умений и навыков,


которые понадобятся каждому пара-
метрическому пользователю.
Компьютерный класс. в уже готовые процедуры. Именно та- Во-первых, необходимо научить-
ким путём открывается доступ к ком- ся планировать действия исходя из ог-
пьютерам для более широкого круга раниченного набора средств.
людей — параметрических пользо- Во-вторых, уметь формально и
вателей. Они могут не знать ни уст- полно описать все объекты в качест-
ройства компьютера, ни алгоритма ве данных или результатов, указать их
решаемой задачи, ни языка, на кото- взаимосвязи, или, как говорят про-
ром написана программа. Таким па- граммисты, построить информаци-
раметрическим пользователем явля- онную модель задачи.
ется и кассир в железнодорожной В-третьих, требуется знать, как бы-
кассе, и оператор банка, и почтовый стро найти нужную информацию
служащий. (ведь большую часть времени, затра-

Вы прирождённый
программист, если
в ваших наручных
часах стоит про-
цессор классом не
ниже Pentium IV.

78
Наука информатика

ченного на решение задач на маши-


не, занимают операции поиска ин-
формации). ИДЁМ ПО МАГАЗИНАМ...
В-четвёртых, очень важно пра-
вильно строить свои команды маши- Информатика окружает нас со всех
не: если компьютер имеет богатый сторон. Иногда кажется, что зна-
набор процедур (или, как сказал бы ния информатики даются нам
системный программист, хорошее с рождения. Большинство педаго-
программное обеспечение), то с ним гов волнует вопрос: происходит ли
можно общаться с помощью крупных обучение алгоритмическому мыш-
порций информации — процедур; ес- лению в естественных условиях?
ли же такие процедуры заранее не на- К сожалению, нет. Вот факт, пора-
писаны, то обращаться к машине жающий преподавателей инфор-
можно, лишь описав требуемые дей- матики из года в год уже много лет.
ствия с помощью более мелких пор- Через неделю после начала кур-
ций информации — операторов или са информатики на уроке, который
директив. назовём «прививка интереса», пред-
Действительно, приведённые вы- лагается среди прочего простенькая задача: «Вам нужно, купив моло-
ше навыки и умения связывались до ко и хлеб, вернуться домой. При этом не надо выполнять ничего сверхъ-
сих пор исключительно с необходи- естественного и выдумывать дополнительные условия. Просто купить
мостью эффективного использования и вернуться».
вычислительной техники. Между тем Ни разу ни в одном классе ни один ученик не купил сначала
каждому из них соответствует и более хлеб, потом молоко, а только наоборот, т. е. попусту тратил свои
широкое значение. силы. Все тащили молоко до магазина «Хлеб» и обратно.
Например, умение планировать С прискорбием можно констатировать, что планирование (или
необходимо не только компьютер- назовём его программированием) не является обычным (т. е. есте-
ному пользователю, но и инженеру, ственным) и распространённым способом мышления. Алгоритмичес-
агроному, офицеру, учителю, эконо- кое мышление не «автоматическое» умение, как, например, поддержа-
мисту и т. д. ние равновесия при ходьбе или чтение знакомых букв. То есть
Умение моделировать, т. е. пред- оказывается, что это умение (даже если ему научить) надо специально
видеть свойства создаваемой кон- «включать» в каждом отдельном случае. Сигналом для включения обыч-
струкции, наиболее важно для твор- но бывает неуспех при лобовом решении задачи.
ческих работников — технологов, Пока не возникнет препятствий, последовательность действий все-
инженеров, физиков, астрономов... гда примитивна (сначала — молоко, потом — хлеб) и очень часто не-
Правильная организация поис- эффективна.
ка — залог успеха в работе всякого,
кто обращается за нужными сведе-
ниями к разнообразным хранили-
щам человеческих знаний: библио-
текам, архивам, информационным
системам. Недаром говорят, что,
не имея возможности передать уче-
нику за его школьные годы все на- ПРОГРАММИРОВАНИЕ
копленные человечеством знания,
учитель должен в первую очередь ПРИДЁТ НА ПОМОЩЬ
научить школьника учиться, т. е.
уметь отыскивать нужную ему ин- Умения планировать, моделировать,
формацию. искать информацию, общаться на-
Наконец, дисциплина общения столько фундаментальны, что обуче-
в любом человеческом коллективе ние следует начинать как можно
не менее существенна, чем при «раз- раньше. Но ни физика, ни литерату-
говоре» с компьютером. И дело здесь ра, ни даже математика не распола-
не в одной лишь точности высказы- гают (в полном объёме) необходи-
ваний или вежливости формы. Чтобы мыми инструментами для этого.
беседа получилась деловой, надо учи- В программировании же такие инст-
тывать, например, уровень знаний со- рументы есть! Действительно, тому,
беседника. кто понял, что такое процедура,

79
Информация и информатика

пользуются различные поисковые ме-


ханизмы (каталоги, многоуровневые
индексы, функции расстановки и т. д.),
а для организации процессов обще-
ния — синтаксические описания и ма-
кросредства.
На вопрос, как обучать детей, от-
вет подсказал опыт учителей и про-
граммистов, занимающихся разработ-
кой учебных программ. Они считают,
что в первую очередь необходимо
научиться управлять простыми испол-
нителями-роботами, каждый из ко-
торых предназначается для конкрет-
ной, в том числе учебной, задачи.
Поэтому на уроках информатики у
учащихся начальной школы на экра-
нах можно увидеть совсем не строч-
ки программ, написанных на языке
ЛОГО или Pascal, а исполнителей —
Перевозчика, Плюсика, Чертёжника,
Кенгурёнка, Кукарачу... Малыши учатся
условный оператор, цикл, умению играя. И только узнав в игре с испол-
планировать легко обучиться. Для ин- нителями главные понятия, нужные
формационного моделирования хо- для программирования (команда, си-
рошо служат средства описания дан- стема команд, имя информационно-
ных, имеющиеся в современных го объекта, ветвления, повторения),
языках программирования: множест- можно приступать к освоению язы-
ва, таблицы, каталоги, файлы. Точно ков программирования, сначала учеб-
так же для организации поиска ис- ных, а затем и профессиональных.

ПРОГРАММИРОВАНИЕ — ВТОРАЯ ГРАМОТНОСТЬ

Содержание курса информатики в


советской (теперь российской) шко-
ле значительно изменилось с момен-
та его введения — от обязательного
обучения алгоритмизации, когда
школьников учили программирова-
нию на одном из популярных языков
типа Basic и Pascal, до редактирования
текстов с помощью Microsoft Word, ко-
гда из учащихся готовят секретарей-
машинисток. Умение предваритель-
но планировать свои (или чужие)
действия, составлять программы (план
дальнейших работ) используется
повсеместно. Например, чтобы запи-
сать в определённое время кинофильм
с телевизора на видеомагнитофон,
сначала придётся освоить инструк-
цию по эксплуатации, которая в дан-
ном случае описывает язык програм-
мирования видеомагнитофона:

80
Наука информатика

установить дату записи = сегодня; компьютер, человек или абстракт-


установить начало записи = 10.00; ный универсальный выполнитель,
установить окончание записи = 11.25; который понимает язык и умеет за- Вы прирождённый
установить номер телеканала = 4; ставлять исполнителей выполнять программист, если
установить скорость записи = LP. команды. Так мама учит ребёнка зво- на ваших наручных
нить бабушке по телефону: часах кнопок не
Действительно, программирова- меньше, чем на кла-
ние видеомагнитофона — неслож- «Нажми клавишу 2, виатуре вашего ноут-
ный процесс. Но число современных нажми клавишу 3, бука.
программируемых домашних при- нажми клавишу 2...».
боров растёт с каждым днём. Это и
мобильные телефоны, где програм- Здесь ребёнок является выполни-
мируется не только запоминание но- телем программы, а телефон — испол-
меров, установка различных пара- нителем.
метров, это и микроволновые печи, На уроках математики тоже про-
кухонные кофеварки, хлебопечки исходит выполнение программ, на-
и т. д. Компьютер — тот же домаш- пример, когда для решения квадрат- Вы прирождённый
ний прибор, только более сложный ного уравнения ax 2+bx+c=0 нужно программист, если
и универсальный. вычислить дискриминант D=b2–4ac: ваш консервный нож
В голове или на листке бумаги мож- имеет разъём USB и
но составить программу, используя если D<0, то корней нет, используется вами
универсальный язык программиро- если D=0, то корни совпадают, как MP3-плеер.
вания. Выполнять программу может если...

В этом случае ученик по сути явля-


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

81
Информация и информатика

граммирования и выполняющих про-


граммы.
ЧТО ТАМ ВНУТРИ? Примеры удачной формализации
языков существуют. У военных есть ус-
Ребёнок, разобрав электронные часы, принцип их работы по- тавы, где прописано всё — от языка
нять не сможет (и взрослый подчас тоже). Так же происходит управления (программирование воен-
мифологизация объекта под названием « компьютер » . нослужащих) до программы (поведе-
Для многих людей он — чудо. И это абсолютно естественно ние солдат и офицеров). Почти фор-
для человека. мализован «канцелярский» язык.
С другой стороны, подавляющее большинство детей к 9— На этом языке ведётся переписка в уч-
10 годам представляют, как работают механические часы. реждениях, издаются приказы и рас-
Про пружину, шестерёнки и стрелки разными способами им поряжения.
рассказывали не один раз. А некоторые разбирали будильни- Ребёнок в начальных классах дол-
ки и всё видели собственными глазами. жен получить объём знаний, позволя-
Что получается? Если мы видим поверхность, из которой ющий сознательно выполнять програм-
торчат две стрелки, и знаем про шестерёнки (но не знаем ни об мы по всем школьным дисциплинам.
их количестве, ни о размере, ни о последовательности их сцеп- Сила математики и других предметов,
ления), то этого оказывается достаточно, чтобы эффект чуда сила, в конце концов, инструкций по
не возникал. эксплуатации сложной бытовой аппа-
Сделаем очевидный вывод. О любом объекте (в частности, ратуры именно в методических приё-
электронных часах или компьютере) нужно рассказать очень не- мах, позволяющих, не описывая языка
много, чтобы он был демифологизирован. Обязательно надо программирования, использовать че-
разъяснить принципы устройства компьютера и составления ловека в качестве выполнителя.
программ для него (и лишь попутно учить включать компьютер). В средних классах для ученика важ-
Иными словами, в курсе информатики следует говорить о ше- но научиться составлять программу
стерёнках, а не показывать, как заводить будильник, и слушать, на языке универсального выполните-
как он тикает. ля. От предмета к предмету меняется
набор исполнителей — от арифмети-
ческих действий к химическим или
физическим опытам. Ученик как вы-
полнитель программ учителей в со-
стоянии понимать и создавать про-
граммы на различных языках.
В старших классах возрастёт труд-
ность задач, появятся сложные выпол-
нители и языки с развитой структурой.
Это потребует изучения определён-
ной технологии программирования
(составления программ). В итоге уче-
ник обязан уметь проектировать язык
программирования выполнителей
и исполнителей, необходимых для ре-
шения конкретной задачи. Это уже не
на котором излагаются программы умение заполнять и использовать еже-
(последовательность действий). Шко- дневник, а проектирование такого
льники с той или иной долей успеха ежедневника.
учатся его понимать. Качество испол- Можно было бы закончить на ма-
нения порой зависит не от умения жорной ноте, высоко подняв лозунг —
и сообразительности школьника, а от название статьи, призвав молодое
таланта и опыта педагога, сумевшего поколение к глубокому изучению про-
формализовать язык изложения и на- граммирования как основе поведения
учить ему школьников. Вот где при- современного человека. Но программи-
годились бы навыки алгоритмизации! рование и проектирование (а с ним и
Учителя, конечно, считают идеаль- аналитическое мышление) не свойст-
ными учеников, понимающих их венно не только большей части общест-
с полуслова и выполняющих все за- ва, но и принципы функционирования
дания, т. е. понимающих язык про- самого общества, закреплённые за-

82
Наука информатика

конодательно, часто далеки от простой он цитировал передовые центральных


логики. газет, он воспевал науку и наших муд-
Не секрет, что юриспруденция одна рых организаторов, но всё было вотще.
из сложнейших для изучения и по- Лавра Федотовича это затруднение
нимания наук. Не случайно, что мало наконец утомило, и, прервавши ора-
кто из граждан в состоянии само- тора, он произнес только одно слово:
стоятельно разобраться в тонкостях — “Неубедительно”.
законодательства, хотя каждый обязан Раздался тяжёлый удар. Большая
это законодательство выполнять. Та- Круглая Печать впилась в мою заявку».
ким образом, имеется уникальная
ситуация, когда нужно выполнить про-
грамму, не понимая языка программи-
рования. Для разъяснения этого языка
гражданам (исполнителям) и сущест-
вуют юристы, которые также часто не
могут однозначно истолковать, как
надо выполнять тот или иной закон
(программу). Спорные моменты раз-
решает суд, который в силу своей
независимости (в том числе и от ло-
гики) также вправе неоднозначно
истолковать и(или) применить тут или
иную норму права (правила выпол-
нения программы). То есть по закону
суд может принять неверное решение
(неправильно выполнить программу).
Здесь правильно или неправильно
принятое решение (исполнение про-
граммы) зависит только от судьи (вы-
полнителя), что с точки зрения про-
граммирования достаточно странно.
Так в Гражданско-процессуальном
кодексе Российской Федерации (основ-
ной программы) есть статья 67 про
оценку доказательств судами. Начало
этой статьи звучит так: «Суд оценивает
доказательства по своему внутреннему НА ОШИБКАХ УЧАТСЯ...
убеждению, основанному на всесто-
роннем, полном, объективном и непо- За ошибку наказывают. И потому ошибаться не просто не лю-
средственном исследовании имею- бят, а боятся. А за страхом следует либо бездействие, либо но-
щихся в деле доказательств». Если вая ошибка.
внимательно прочитать начало пред- Однако мы знаем, что есть люди, которые начинают рабо-
ложения, то можно сделать ошелом- ту с мыслью: «Сейчас я всё напишу неправильно». И они этого
ляющий вывод о том, что алгоритм не боятся. Эти люди — программисты. В процессе преподава-
поведения судьи при принятии дока- ния информатики можно научить не только не бояться делать
зательств недетерминирован, потому ошибки, но и радоваться им, поскольку каждая найденная ошиб-
что результат принятия судом до- ка уменьшает количество ещё не найденных.
казательства (выполнение програм- Продолжая тему ошибок, заметим, что попутно (если за-
мы) — «внутренняя убеждённость» нятия сопровождаются работой на компьютерах) можно на-
судьи (неизвестное свойство испол- учить разумно и быстро отлаживать свою программу, говоря
нителя). Таким образом, никто не за- иначе, «ставить диагноз по симптомам» (а это необходимо сле-
страхован от событий аналогичных дователю, врачу, политику, журналисту, геологоразведчику
тем, что произошли с двумя молодыми и др.), поскольку поиск ошибки в программе позволяет уста-
учёными в «Сказке и тройке» — клас- навливать и перепроверять причину сбоя. Но обучение это-
сическом произведении А. и Б. Стру- му — отдельная задача, которая никак не должна смыкаться
гацких: «Эдик снова заговорил. Он взы- с обучением думать алгоритмически.
вал к теням Ломоносова и Эйнштейна,

83
АЛГОРИТМ
АЛГОРИТМЫ И ПРОГРАММЫ

ПОНЯТИЕ АЛГОРИТМА столь просты и привычны, что реша-


ются автоматически. Решение задачи
Каждый человек в своей повседнев- «Поступить в институт» намного труд-
ной жизни, в учёбе или на работе нее и требует выполнения гораздо
сталкивается с необходимостью ре- большего количества сложных дей-
шения огромного количества задач ствий, чем решение задачи «Купить
самой разной сложности. Некоторые мороженое». При этом выполнение
из них настолько трудны, что требу- даже самой простой задачи обычно
ют длительных размышлений для по- осуществляется в несколько последо-
иска решения (а иногда найти его так вательных этапов, или шагов. Если
и не удаётся). Другие же, напротив, проанализировать ход выполнения
этих задач, то окажется, что практи-
чески любое действие, которое надо
при этом произвести, может быть чёт-
ко сформулировано и записано.
Например, процесс приготовле-
ния обеда можно описать так:
1) сварить суп;
2) приготовить второе блюдо;
3) приготовить десерт.
Такая запись (назовём её инструк-
цией) малополезна на практике. Ясно,
что шаги должны быть более просты-
ми, поэтому необходимо несколько
детализировать её (ограничимся пер-
вым пунктом):

86
Алгоритм

1) вымыть, почистить и нарезать няя которую к исходным данным,


овощи; можно получить решение задачи.
2) зажечь плиту; Многие алгоритмы обладают тем
3) вскипятить в кастрюле воду; свойством, что остаются правильны-
4) положить в кипящую воду мясо; ми для разных наборов исходных дан-
5) когда мясо сварится, положить ных (приготовление супа одинаково
в кастрюлю овощи; для разных используемых овощей; вы-
6) когда овощи сварятся, выклю- числение площади прямоугольника
чить плиту. одинаково для любых значений a и b).
Здесь определена последователь- Такое свойство алгоритмов называют
ность действий, следуя которой любой массовостью. Оно позволяет много-
человек сумеет приготовить суп. Ана- кратно применять один и тот же алго-
логично в виде последовательности ритм для решения задачи. При этом не-
шагов можно описать процесс реше- обходимо иметь в виду, что для
ния многих задач, известных из школь- каждого алгоритма есть некоторое
ного курса математики: приведение множество объектов, допустимых в ка-
дробей к общему знаменателю, реше- честве исходных данных. Например, a
ние системы линейных уравнений пу- и b могут быть только вещественными
тём последовательного исключения положительными числами; в алгорит-
неизвестных, построение треугольни- ме деления вещественных чисел дели-
ка по трём сторонам с помощью цир- мое может быть любым, а делитель не
куля и линейки и т. д. Такая последова- должен быть равен нулю.
тельность шагов в решении задачи Всегда ли удаётся получить резуль-
и называется алгоритмом. тат, применяя алгоритм к некоторому
Каждое отдельное действие — это набору из множеств допустимых ис-
шаг алгоритма («почистить овощи», ходных данных? Не всегда: так, при де-
«умножить a на b» и т. д.). Последова- лении 7 на 3 оба целых числа допусти-
тельность шагов алгоритма строго мы, но результат 2,333... является
фиксирована, т. е. шаги должны быть бесконечной десятичной дробью.
упорядоченными. Правда, существуют Об алгоритмах такого рода говорят,
так называемые параллельные алго- что они потенциально выполнимы,
ритмы, для которых это требование но состоят из бесконечного числа
не соблюдается. Порядок записи ша- шагов. В связи с этим надо ввести по-
гов в них не обязательно должен сов- нятие конечности алгоритма. Смысл
падать с порядком выполнения соот- его состоит в том, что выполнение
ветствующих действий.
Понятие алгоритма близко к дру-
гим понятиям, таким, как метод (ме-
тод Гаусса решения систем линейных
уравнений), способ (способ построе-
ния треугольника по трём сторонам
с помощью циркуля и линейки) или
даже рецепт. Другие понятия, такие,
как процедура (судебная процедура),
программа (программа действий пра-
вительства по выводу экономики из
кризиса), процесс (мирный процесс
на Ближнем Востоке), также имеют
немало общего с алгоритмом. Поэто-
му необходимо чётко сформулиро-
вать отличительные особенности
именно алгоритмов.
Прежде всего, алгоритм подразуме-
вает наличие исходных данных и не-
которого результата. Следовательно,
алгоритм — это точно определённая
инструкция, последовательно приме-

87
Алгоритмизация

альная, а именно реальная выполни-


мость алгоритма.
Вернёмся к примеру с делением.
Если оборвать процесс на каком-ли-
бо шаге, то полученное число, вооб-
ще говоря, не будет частным от де-
ления, но его тем не менее можно
принять за приближённый результат,
вычисленный с устраивающей в кон-
кретной задаче точностью.
С понятием алгоритма тесно свя-
зано представление об исполнителе
алгоритма. Неважно, кто выступает
в этой роли: человек (повар, абитури-
ент или математик в приведённых вы-
ше примерах) или же некоторое тех-
ническое устройство (в том числе
компьютер). Главное требование —
алгоритма должно обязательно приво- исполнитель алгоритма должен уметь
дить к его завершению. В то же время выполнять каждый его шаг.
можно привести примеры формаль- Отсюда вытекает следующее важ-
но бесконечных алгоритмов, широко ное требование к алгоритму — опре-
применяемых на практике. Например, делённость. На каждом шаге у ис-
алгоритм работы системы сбора ме- полнителя алгоритма должно быть
теорологических данных состоит достаточно информации, чтобы его
в непрерывном повторении последо- выполнить. Кроме того, исполните-
вательности действий «Измерить тем- лю алгоритма нужно чётко знать, ка-
пературу воздуха» и «Определить ат- ким образом он выполняется. Легко
мосферное давление», выполняемых заметить, что некоторые шаги при-
с некоторой частотой (ежеминутно, ведённого выше алгоритма приго-
ежечасно или ежедневно) всё время товления супа, в свою очередь, нуж-
существования данной системы. даются в уточнении (так, пункт
На практике обычно интересует «Зажечь плиту» потребует выполне-
результат, выдаваемый алгоритмом ния последовательности действий:
через конечное число шагов и за ко- «Взять коробок спичек», «Зажечь
нечное время (в самом деле, какова спичку», «Повернуть вентиль газо-
польза от алгоритма расчёта прогно- вой плиты», «Поджечь газ»). Следо-
за погоды на завтра, если результат вательно, чтобы выполнялось тре-
вычисляется неделю). Свойство ко- бование определённости, шаги
нечности имеет особо важный смысл, инструкции должны быть достаточ-
так как часто требуется не потенци- но простыми, элементарными, а ис-
полнитель алгоритма должен одно-
значно понимать смысл каждого
шага последовательности действий,
составляющих алгоритм (при вычис-
лении площади прямоугольника лю-
бому исполнителю алгоритма, осуще-
ствляющему алгоритм, необходимо
уметь умножать, а также трактовать
знак операции «х» именно как умно-
жение, а не как, например, сложе-
ние). Здесь возникает важная про-
блема: в каком виде, в какой форме
будет представлен алгоритм, чтобы
выполнялось это условие. Фактиче-
ски речь идёт о том, на каком языке
записан алгоритм.

88
Алгоритм

ПЕРВЫЕ АЛГОРИТМЫ

Считается, что самым древним нетривиальным алгоритмом горитмы за полторы тысячи


является способ нахождения наибольшего общего делите- лет до греков, историки науки
ля двух целых чисел. Он был изложен в трудах древне- единодушно признают при-
греческого математика Эвклида — седьмой книге «Начал» оритет Евклида. Дело в том,
около 2300 лет тому назад. (Правда, есть предположение, что алгоритм Евклида имеет
что алгоритм Евклида лишь интерпретация алгоритма, пред- достаточно сложную структу-
ложенного Эвдоксом за 75 лет до этого.) ру: он является итерационным
Алгоритм Евклида нахождения НОД двух целых по- (так называют алгоритмы, со-
ложительных чисел. держащие неоднократное по-
«Пусть A, C — два данных положительных целых чис- вторение некоторых действий).
ла. Надо найти их наибольший общий делитель. Если C Вавилонские алгоритмы пред-
делит A, то C является общим делителем чисел C и A, так ставляют исключительно исто-
как делит и само себя. Очевидно, что C будет и наиболь- рический интерес, в то время Эвдокс.
шим делителем, поскольку нет числа, большего C, кото- как алгоритм Евклида не поте-
рое делило бы C. рял своего практического значения до сих пор.
Если же C не делит A, то начинаем непрерывно вычи- Ещё один старинный алгоритм, который широко ис-
тать меньшее из чисел A, C из большего до тех пор, по- пользовался на практике.
ка не получим некоторое число, которое нацело делит Алгоритм аль-Каши вычисления значения x n, где n —
предыдущее вычитаемое. Рано или поздно такое число положительное число.
получится, потому что если разность будет равна едини- Шаг 1. Вводим три величины — N:= n; y:= 1; z:= x.
це, то единица будет делить предыдущее вычитаемое. В этот момент справедливо соотношение xn = y × zn.
Итак, пусть E — положительный остаток от деления Шаг 2. Делим N нацело на 2, N:= N div 2; одновременно
A на C, F — положительный остаток от деления C на E, F определяем, было ли до того N чётным.
делит E. Так как F делит E, а E делит C – F, то F также де- Если N было чётным, то переходим к шагу 5.
лит C – F, но F делит само себя, следовательно, F делит C. Шаг 3. Умножаем y на z, y:= y × z.
Но C делит A – E; поэтому F также делит A – E. Но оно Шаг 4. Если N равно нулю, то ответ равен y.
также делит E, поэтому оно делит и A. Следовательно, Шаг 5. Умножаем z на себя, z:= z × z.
F — общий делитель чисел A и C. Возвращаемся к шагу 2.
Теперь я утверждаю, что он является и наибольшим Этот алгоритм был предложен в самом начале XV в.
таким делителем. Действительно, если F — не наиболь- (впрочем, около 200 г. до н. э. в индийском математиче-
ший общий делитель чисел A и C, то некоторое большее ском трактате «Чанда-сутра» приводится описание ана-
число будет делить их оба. Пусть таким числом будет G. логичного метода). Именно такую процедуру ещё в
Поскольку G делит C, которое, в свою очередь, де- XVIII в. до н. э. египетские математики использовали для
лит A – E, то G делит A – E; G делит также все A, следо- умножения.
вательно, оно делит и остаток E. Но E делит C – F, поэто- Шаг 1. Вводим три величины — N:= n; y:= 0; z:= x.
му G делит C – F. Но G делит также все C, следовательно, Шаг 2. Делим N нацело на 2, N:= N div 2; одновременно
оно делит и остаток F; таким образом, большее число де- определяем, было ли N до того чётным.
лит меньшее, а это невозможно. Если N было чётным, то переходим к шагу 5.
Поэтому нет такого числа, большего, чем F, которое Шаг 3. Увеличиваем y на z, y:= y + z.
делило бы числа A и C, и, значит, F — их наибольший об- Шаг 4. Если N равно нулю, то ответ равен y.
щий делитель». Шаг 5. Складываем z с собой, z:= z + z.
В древнеегипетских папирусах можно найти ещё бо- Возвращаемся к шагу 2.
лее древние примеры вычислительных процедур. Так, В шагах 3 и 5 умножение заменено сложением, и в ша-
египтянам был известен метод умножения, основанный ге 1 y приравнивается не единице, а нулю. В результате
на удвоении и сложении (кстати, на этой же идее бази- выполнения такого модифицированного алгоритма полу-
руются некоторые широко применяемые современные чаем произведение двух чисел n и x: y = n × x. Это весьма
алгоритмы). удобный для практических вычислений «вручную» способ
В отличие от Древнего Египта в Вавилоне было приня- умножения, который сводится к более простым операци-
то кроме решения примера давать пояснения процесса вы- ям удвоения, деления пополам и сложения. Именно такой
числений, пригодные в общем случае. Например, если один приём применяется при вычислениях на счётах — в Евро-
из сомножителей оказывался равным единице, умножение пе он традиционно носит название «русский крестьянский
всё-таки выполнялось. И хотя вавилоняне использовали ал- метод».

89
Алгоритмизация

Неоднозначность восприятия ал- если алгоритм многократно приме-


горитма часто может быть связана не нять к одному и тому же набору ис-
с его сутью, а с особенностями пред- ходных данных, то всегда должен по-
ставления. Даже в детализированной лучаться один и тот же результат.
инструкции не определено точно, что Итак, алгоритм — это система пра-
означает «мясо сварилось» или «ово- вил, которая сформулирована на язы-
щи сварились». В зависимости от осо- ке, понятном исполнителю алгорит-
бенностей того или иного исполни- ма, определяет процесс перехода от
теля алгоритма (предположим, от допустимых исходных данных к не-
опытности повара) эти шаги могут которому результату и обладает
быть выполнены по-разному: мясо, свойствами массовости, конечнос-
например, окажется недоваренным, ти, определённости, детерминиро-
Урбен Жан Жозеф а овощи, напротив, разварятся. Итак, ванности.
Леверье. каждый шаг алгоритма должен быть Это определение алгоритма не яв-
таким, чтобы не возникало разночте- ляется строгим (хотя бы потому, что
ний. в нём используются не определённые
С определённостью перекликает- точно термины, например «правило»).
ся ещё одно важное свойство алгорит- На протяжении многих веков по-
ма — детерминированность. Его мож- нятие алгоритма связывалось с числа-
но понимать следующим образом: ми и относительно простыми дейст-
виями над ними. Да и сама математика
была по большей части наукой о вы-
числениях, наукой прикладной. Чаще
ЕЩЁ ОДНА ФОРМАЛИЗАЦИЯ АЛГОРИТМА всего алгоритмы представлялись в ви-
де математических формул. Порядок
Алгоритм есть описание действий; изу- элементарных шагов алгоритма зада-
чая лишь запись алгоритма, нельзя по- вался расстановкой скобок, а сами ша-
нять его динамику. Да и результат выпол- ги заключались в выполнении ариф-
нения при таком изучении далеко не метических операций и операций
всегда очевиден. отношения (проверки равенства, не-
Схема Колмогорова — Успенского бы- равенства и т. д.). И хотя эти форму-
ла одной из попыток построить некото- лы могли быть достаточно громоздки-
рый формальный механизм выполнения ми, а вычисления вручную — крайне
алгоритмов, в котором алгоритм и его ис- трудоёмкими (французский астроном
полнитель — человек или некоторый при- Жан Жозеф Леверье провёл десятки
бор — рассматриваются в неразрывном лет в расчётах орбит планет Солнеч-
единстве. Здесь действия исполнителя ной системы, в результате чего ему
алгоритма чётко определены, а их коли- удалось обнаружить неизвестную ра-
чество ограниченно. нее планету Нептун), суть самого вы-
В. А. Успенский. Предполагается, что обрабатываемая числительного процесса оставалась
человеком информация записывается на вполне очевидной. У математиков не
листах бумаги, при этом имеется неограниченный запас чистых лис- возникала потребность в осознании
тов и неограниченный резерв места для хранения исписанных листов. и строгом определении понятия ал-
Преобразование информации, реализуемое человеком, разбивается горитма, в его обобщении.
на отдельные дискретные шаги. На каждом шаге человек обозревает Но с развитием математики появ-
некоторое число исписанных листов и в зависимости от содержания лялись новые объекты, которыми при-
записей на них по строго заданным правилам производит изменения. ходилось оперировать учёным: век-
Изменения могут быть трёх видов: торы, матрицы, графы, множества
— стирание всей обозреваемой информации или некоторой её и др. Как определить для них одно-
части; значность или как установить конеч-
— запись на обозреваемых листах новой информации; ность алгоритма, какие шаги могут
— изменение совокупности обозреваемых листов. считаться элементарными (например,
Однако данная модель оказывается недостаточно формализо- является ли таковым обращение мат-
ванной, и её применение для реализации конкретных алгоритмов за- рицы или нахождение пересечения
труднено. По своему удобству она значительно уступает машинам По- двух множеств)?
ста и Тьюринга, хотя имеет с ними значительное сходство. Возникла идея о существовании ал-
горитмически неразрешимых проб-

90
Алгоритм

лем, таких, для которых нельзя найти именно и для чего делается, далеко не
процедуру решения. Следовательно, просто.
надо было научиться математиче- Для записи алгоритмов необходим
ски строго доказывать факт отсутст- некоторый язык. При этом крайне
вия соответствующего алгоритма. Это важно, какой именно язык выбран.
можно сделать только в том случае, Неудобство русского (равно как и лю-
если существует строгое определение бого другого естественного) языка
алгоритма. Попытки выработать та- для этих целей очевидно. Фраза
кое определение привели на рубеже «мальчик взял с собой тетрадь в клет-
20—30-х гг. XX в. к возникновению ку» может сообщать нам о школьни-
теории алгоритмов. ке, подготовившемся к уроку ариф-
Почти в это же время возникла метики. Но может иметься в виду
и практическая потребность в осуще- юный любитель животных, который
ствлении сложных вычислений. собирается у клетки с тигром запи-
На повестку дня встала необходимость сывать свои наблюдения и ощуще- Евклид.
решения задач из разных научных ния... Слова могут иметь самые раз-
и инженерных дисциплин: радиоло- ные смысловые оттенки, и понять их
кации, самолётостроения, моделиро- без детального анализа всего текста
вания физических процессов (осо- подчас просто невозможно.
бенно из области ядерной физики, Весьма распространённым явля-
баллистики и многих других). Вычис- ется графический способ записи ал-
лительные возможности человека горитмов на языке блок-схемы. Она
были существенно ограничены, сред- представляет собой набор элемен-
ства механизации, а тем более авто- тов (блоков), соединённых стрел-
матизации вычислений практически ками. Каждый элемент — это неко-
отсутствовали. Появление первых торая часть алгоритма. Элементы
проектов вычислительных машин блок-схемы делятся на два вида:
стимулировало исследование возмож- содержащие какие-либо действия
ностей практического применения обозначают прямоугольниками, а
алгоритмов, использование которых содержащие проверку условия —
ввиду их трудоёмкости было ранее ромбами. Из прямоугольников всег-
недоступно. Дальнейший бурный про- да выходит только одна стрелка
гресс вычислительной техники опре- (входить может несколько), а из
делил развитие как теоретических, так ромбов — две. Первая помечается
и прикладных аспектов изучения ал- словом «да», а вторая — «нет» (они
горитмов. показывают, выполнено условие или
нет).
На рисунке показана блок-схема
КАК ЗАПИСЫВАТЬ алгоритма нахождения НОД:
АЛГОРИТМЫ

Описание алгоритма Евклида нахож- x:= n да


x=y nod:= x
дения НОД двух целых положитель- y:= m
ных чисел состоит из трёх шагов и за-
нимает всего несколько строчек. нет
Шаг 1. Разделить m на n, где m>n. да
Пусть p — остаток от деления. x>y x:= x-y
Шаг 2. Если p равно нулю, то n
и есть искомый НОД. нет
Шаг 3. Если p не равно нулю, то сде-
лаем m равным n, а n — равным p. Вер- y:= y– x
нуться к шагу 1.
В то же время даже значительно
«упрощённое» описание, данное Евк- Такой способ удобен для анализа раз-
лидом, требует около страницы текс- рабатываемого алгоритма, для провер-
та(!), и понять из его описания, что ки правильности логики его работы.

91
Алгоритмизация

Каждый блок на рисунке соответству- нию y: = y – x), а через Pi — логичес-


ет элементарному шагу алгоритма. Ес- кие операторы (P1 соответствует про-
ли же записываемый алгоритм более верке x = y). Стрелки ↑ и ↓ означают
сложен, то неизбежно встаёт вопрос: переход, им соответствуют начало
как избежать его излишней детализа- и конец стрелки на блок-схеме. Ес-
ции? ли проверка даёт отрицательный ре-
Сделать это можно, укрупняя шаги зультат, то происходит переход по
алгоритма. Тогда каждый блок будет стрелке, иначе выполняется следую-
содержать достаточно сложные дей- щий оператор. S — это оператор ос-
ствия и даже представлять целый ал- тановки. Операторам-вычислителям
горитм (точнее, подалгоритм). Напри- соответствуют прямоугольники, а ло-
мер, блок может заменять написанный гическим операторам — ромбы
ранее и уже проверенный алгоритм. блок-схемы. Операторные схемы
Если при этом есть уверенность в пра- легко переписать в виде блок-схем,
вильности работы блока, то в детали но, в отличие от последних, они не
его работы лучше не вдаваться. Такое столь наглядны, и это затрудняет их
«крупноблочное» представление практическое использование.
бывает весьма полезно и на началь- Запишем теперь алгоритм Евкли-
ной стадии разработки алгорит- да на языке программирования Pascal:
ма, когда известно, что надо сделать
в этом блоке, но ещё не известно как. var
Уточнение алгоритма работы блока n, m, x, y, nod: integer;
может быть сделано позднее. begin
Построение блок-схем из элемен- x:= n; y:= m;
тов всего лишь нескольких типов да- while x<>y do
ёт возможность достаточно просто if x>y then x:= x – y
преобразовывать их в компьютерные else y:= y – x;
программы, позволяет формализо- nod:= x;
вать этот процесс. end;
Известны и другие способы нагляд-
ной записи алгоритмов — в первую Очевидно явное сходство с запи-
очередь операторные схемы, предло- сью как на языке блок-схем, так и на
женные А. А. Ляпуновым. Приведём языке операторных схем Ляпунова.
схему Ляпунова, описывающую алго- Конечно, компьютер по-прежнему
ритм НОД: не способен воспринимать этот текст
непосредственно, необходима его
4 1 21 3 43 42 предварительная обработка специ-
A1 ↓ P1(x = y)↑ A2 ↑↓ P2(x > y)↑ A3 ↑↓ A4 ↑↓ S альной программой — транслятором.
Однако по сравнению с другими
Здесь через Ai обозначены опера- формами записи алгоритма такую
торы, производящие вычисления (на- обработку реализовать значительно
пример, A4 соответствует присваива- проще. Кроме того, она достаточно
удобна и для человека.

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

92
Алгоритм

Именно данное значение слова


подчёркивает тесную связь алгорит-
мов и программ. Одним из первых об-
ратил внимание на эту связь в 1945 г.
английский математик Алан Тьюринг,
который считал, что программы (он
называл их «таблицами инструкций»)
должны создаваться математиками,
имеющими опыт вычислительной ра-
боты и склонность к творчеству («ре-
шению головоломок»). Тьюринг осо-
бо подчёркивал важность перевода
известного процесса (т. е. алгоритма)
в форму таблиц инструкций. При этом
он не сомневался, что такой перевод —
«очаровательное занятие».
Вообще же можно сказать, что про-
грамма — это запись алгоритма на язы- разрабатывался не только как сред-
ке, понятном исполнителю алгоритма. ство написания программ, но и как
Особый тип исполнителя алгорит- средство записи алгоритмов. Это под-
мов — компьютер, поэтому необходи- чёркивается самим названием языка:
мо создавать специальные средства, английские слова algorithmic language
позволяющие, с одной стороны, раз- можно понимать как «алгоритмиче-
работчику в удобном виде записывать ский язык» (синоним слов «язык про-
алгоритмы, а с другой — дающие ком- граммирования») и как «язык для за-
пьютеру возможность понимать на- писи алгоритмов». На протяжении
писанное, — языки программирова- многих лет Algol-60 фактически яв-
ния, или алгоритмические языки. лялся стандартом для записи алго-
Один из первых языков програм- ритмов, общепринятым при их пуб-
мирования — Algol-60 изначально ликации.

О ПРОИСХОЖДЕНИИ СЛОВА «АЛГОРИТМ»

Известно, что в раннем Средневеко- числа «больные»? Другие склонялись


вье слово algorism использовали для к ещё более экстравагантному объяс-
обозначения способа арифметиче- нению, связывая слово с неким ми-
ских вычислений на бумаге без при- фическим древним испанским пра-
менения счётных досок (абаков). вителем King Algor of Castil. Свой
Именно в таком значении оно вошло вариант предлагает и Энциклопеди-
в некоторые европейские языки. На- ческий словарь Брокгауза и Ефрона
пример, в авторитетном словаре анг- (1890 г.). В нём «алгорифм» (кстати,
лийского языка «Webster′s New World до революции использовалось и на-
Dictionary», изданном в 1957 г., оно писание «алгориθм», через «фиту»)
снабжено пометкой «устаревшее» производится от арабского слова
и объясняется как выполнение ариф- «аль-горетм», т. е. «корень».
метических действий с помощью Но истину удалось установить не
арабских цифр. лингвистам, а историкам математики.
Несмотря на то что известно, ког- Они доказали, что слово происходит
да появился термин «алгоритм», от имени великого среднеазиатского
лингвисты по-разному пытались тол- учёного, автора популярнейшего на
ковать его происхождение. Одни вы- протяжении многих веков учебника
водили algorism из греческих «алги- по математике аль-Хорезми, жившего
рос» — «больной» и «арифмос» — в первой половине IX в. В латинской
«число». Правда, не понятно, почему транскрипции его имя записывается

93
Алгоритмизация

как Abu ‘Abd Allah Muhammad ibn Musa в одном из германских математичес-
al-Khwarismi и означает «Мухаммад, ких словарей «Vollstandiges mathema-
сын Мусы, отец Абдуллы, родом из Хо- tisches Lexicon», изданном в Лейпциге
резма». Хорезм — это историческая об- в 1747 г. Термин algorithmus объясня-
ласть на территории современного Уз- ется в нём как понятие о четырёх ариф-
бекистана, центром которой является метических операциях. Но такое зна-
древний город Хива. чение не было единственным, ведь
Почти все словари сходятся в том, терминология математической науки
что первоначально слово имело фор- в те времена ещё только формирова-
му algorismi и лишь спустя какое-то вре- лась. В частности, латинское выраже-
Аль-Хорезми. мя потеряло последнюю букву, приоб- ние «algorithmus infinitesimalis» приме-
ретя более удобный для европейского нялось к способам выполнения
произношения вид algorism. Позднее действий с бесконечно малыми вели-
и оно, в свою очередь, неоднократно чинами.
подвергалось искажениям, последнее Постепенно все старинные значе-
из которых, скорее всего, связано со ния вышли из употребления. К нача-
словом arithmetic, имеющим гречес- лу XX в. слово «алгоритм» уже означа-
кое происхождение. Уже в новом на- ло «всякий арифметический или
писании слово встречается в XVIII в. алгебраический процесс, который вы-
полняется по строго определённым
правилам», именно так оно объясня-
ется в Большой советской энцикло-
СПОР АЛГОРИСМИКОВ И АБАЦИСТОВ педии (1926 г.).
Можно проследить процесс про-
Многие века абак фактически был единственным средством для прак- никновения слова «алгоритм» в рус-
тических вычислений. В историю математики вошло упорное проти- ский язык. Его не было ни в «Толковом
востояние лагерей абацистов и алгорисмиков (первых иногда называ- словаре живого великорусского язы-
ли гербекистами). Началось оно с появления в 1202 г. знаменитой ка» В. И. Даля (1863 г.; а вот слово «ал-
«Книги абака» Леонардо Пизанского (Фибоначчи), где впервые было гебра» там присутствует), ни в «Толко-
сказано, что кроме счёта на пальцах и на абаке возможен также счёт вом словаре русского языка» под
на бумаге. Алгорисмики предложили использовать для вычислений редакцией Д. Н. Ушакова (1935 г.). За-
арабские цифры, только-только начавшие проникать в Европу благо- то слово «алгорифм» есть и в популяр-
даря переводам сочинений восточных математиков. Но прошло це- ном дореволюционном Энциклопеди-
лых три столетия, прежде чем новый способ счёта окончательно ческом словаре братьев Гранат, и в уже
утвердился, — столько времени потребовалось, чтобы выработать упоминавшемся первом издании БСЭ,
общепризнанные обозначения, усовершенствовать и приспособить где говорится, что в Средние века так
к записи на бумаге методы вычислений. И хотя трактат Луки Пачоли называли «правило, по которому вы-
«Сумма знаний по арифметике, геометрии, отношениям и пропорцио- полняется то или другое из четырёх
нальности» (1494 г.) подвёл черту под этим спором, счётная доска ещё арифметических действий по десятич-
долго не выходила из употребления. ной системе счисления». А вот «Мате-
матическая энциклопедия» даёт его
расширенное толкование: не только
как искусства счёта в десятичной по-
зиционной системе счисления, но
и как самой десятичной системы.
То, что алгоритм воспринимался
как термин сугубо специальный и ма-
лозначительный, подтверждается от-
сутствием соответствующих статей
в менее объёмных изданиях. В част-
ности, его нет даже в десятитомной
Малой советской энциклопедии
(1957 г.), не говоря об однотомных
энциклопедических словарях. Но за-
то спустя десять лет в третьем изда-
Лука Пачоли. нии БСЭ (1969 г.) «алгоритм» уже ха-
рактеризуется как «одно из основных

94
Алгоритм

понятий (категорий) математики, За последние полтора-два десяти-


не обладающих формальным опре- летия XX в. компьютер сделался неотъ-
делением в терминах более простых емлемым атрибутом нашей жизни,
понятий, а абстрагируемых непо- общеупотребительной становится и
средственно из опыта». За 40 лет ал- компьютерная лексика. Слово «алго-
горитм из понятия, знакомого лишь ритм» в наши дни известно каждому.
узкому кругу специалистов, превра- Оно настолько уверенно шагнуло
тился в одно из ключевых понятий в разговорную речь, что сейчас мы не-
математики — и признанием этого редко встречаем на страницах газет,
стало включение слова не в энцикло- слышим в выступлениях политиков
педии, а в словари. Например, оно выражения вроде «алгоритм поведе-
присутствует в академическом «Сло- ния», «алгоритм успеха» или даже «ал-
варе русского языка» (1981 г.) — горитм предательства». Слово живёт, Фибоначчи.
именно как термин из области мате- обогащается всё новыми значениями
матики. и смысловыми оттенками, так что, ско-
Одновременно с развитием поня- рее всего, в словарях будущего его уже
тия алгоритма постепенно происхо- никогда не придётся снабжать помет-
дила и его экспансия из чистой мате- кой «устаревшее».
матики в другие сферы. И начало ей
положило появление компьютеров,
благодаря которому слово «алго-
ритм» обрело новую жизнь. Напри-
мер, в третьем томе «Детской энцик-
лопедии» (1959 г.) о вычислительных
машинах говорится немало, но они
всё ещё воспринимаются скорее как
некий атрибут светлого будущего, по-
этому и алгоритмы ни разу не упо-
минаются на её страницах. Но в на-
чале 70-х гг., когда компьютеры
перестали быть экзотической дико-
винкой, слово «алгоритм» стреми-
тельно входит в обиход. В «Энцикло-
педии кибернетики» (1974 г.) в статье
«Алгоритм» оно теперь связывается
с реализацией на вычислительных
машинах, а в «Военной энциклопе-
дии» (1976 г.) даже появляется отдель- Дама Арифметика ре-
шает спор абацистов
ная статья «Алгоритм решения зада- и алгорисмиков.
чи на ЭВМ». Гравюра. 1504 г.

95
ОСНОВЫ ПРОГРАММИРОВАНИЯ
ПРОСТЕЙШИЕ ПРОГРАММЫ

Любой компьютерной программе — всего выражается в передаче ей ка-


и простой, и сложной — совершенно ких-либо значений — величин, кото-
необходима связь с внешним миром: рые программа использует в качест-
с пользователем, в чьих интересах вы- ве исходных данных.
полняется программа, или с другой Даже в тех случаях, когда передача
программой, использующей нашу исходных данных формально отсут-
программу как вспомогательное сред- ствует (например, в демонстрацион-
ство. ных программах, которые показыва-
Эта связь с внешним по отноше- ют заранее запрограммированные
нию к программе окружением чаще картинки и сообщения), программа
начинает работать лишь после того,
как из внешнего мира поступит запу-
скающий её сигнал в виде команды
вызова программы.
Итак, необходимым элементом
обычной программы является коман-
да ввода, которая служит для переда-
чи вводимого извне (пользователем
или другой программой) значения
и сохранения его в указанном месте
памяти. Например, команда

ввод а

приостанавливает работу програм-


мы: она ждёт неограниченно долго,

96
Основы программирования

когда пользователь введёт (напри-


мер, наберёт на клавиатуре) полный
набор символов вводимого значе-
ния. При работе с клавиатуры окон-
чание ввода отмечается нажатием
клавиши выполнения Enter. После
нажатия на Enter программа продол-
жает свою работу. При этом самым
первым её действием становится раз-
мещение введённых данных в обла-
сти памяти, обозначенной в коман-
де ввод буквой а , т. е. а — это имя
величины, которая будет использо-
вана далее в программе.
Вот пример простейшей про-
граммы, которая вычисляет среднее
арифметическое двух величин a и b:

ввод a пашку по квадратному маршруту и да-


ввод b же вычертит на экране этот квадрат,
с := (a+b)/2 если ввести угол 90°, но никакое зна- Каким будет значение
чение или сообщение в результате величины один после
После того как введены исходные работы этой программы не будет вы- выполнения следую-
данные a и b, программа вычисляет дано: щей программы:
их среднее арифметическое и раз- ввод два
мещает результат этого вычисления вводчисла : сторона ввод три
в ячейке, названной с. Команду, со- вводчисла : угол один := два + три - 4
держащую символ := , называют при- опустить перо при условии, что при
сваиванием. вперёд : сторона первой команде вво-
Программа может считаться завер- вправо : УГОЛ да пользователь на-
шённой, если её результат нужен дру- вперёд : сторона бирает на клавиатуре
гим программам (которые «знают», вправо : УГОЛ число 5, а при вто-
что нужный им результат находится вперёд : сторона рой — число 6?
в ячейке с). Но если результат нужен вправо : УГОЛ Ответ: один = 7.
пользователю, который хочет увидеть вперёд : сторона
его выведенным на экран или распе- вправо : УГОЛ
чатанным на принтере, то програм-
му нужно завершить командой выво- Несколько пояснений:
да величины с: • непосредственно перед имена-
ми величин (без пробела) в ЛОГО
ввод a принято ставить двоеточие;
ввод b • слово «числа», написанное вслед за
с := (a+b)/2 словом «ввод», необходимо для того,
вывод с чтобы программа смогла распознать,

Далеко не всегда результатом вы-


полнения программы является чис-
ловое значение или текстовое сооб-
щение, которое программа выдаёт
пользователю. Нередко выполнение
программы состоит в осуществлении
действий, изменяющих среду, в кото-
рой она работает. Такая программа
не вырабатывает и не выдаёт никаких
значений.
Например, написанная на языке
ЛОГО программа переместит Чере-

97
Алгоритмизация

вперёд 20
вправо 90
вперёд 20
вправо 90
вперёд 20
вправо 90
вперёд 20
вправо 90

Программы, в которых предусма-


тривается выработка результирующе-
го значения для последующего ис-
пользования его в других программах,
называют функциями.
Программы, которые не выраба-
тывают результирующее значение, на-
зывают процедурами.
Приведённые здесь в качестве при-
меров программы относят к простей-
что вводимая величина является чис- шим, потому что они линейны: после-
лом (существует также команда «ввод довательность команд фиксирована,
текста» для ввода текстовых значе- при каждом осуществлении програм-
ний); мы (независимо от значений исход-
• наконец, вместо предложенно- ных данных) вторая команда выпол-
го здесь способа ввода в ЛОГО обыч- няется вслед за первой, третья после
но указывают необходимые значе- второй и т. д.
ния непосредственно в команде Большинство программ устроено
(в качестве её параметров). Таким об- сложнее. В них встречаются ветвле-
разом, более привычной будет сле- ния, которые заставляют менять по-
дующая запись той же программы рядок следования команд, и циклы,
(если перемещение выполняется на которые организуют многократные
20 шагов, а поворот — на 90°): повторения отдельных групп команд.

УПРАВЛЯЮЩИЕ СТРУКТУРЫ — ВЕТВЛЕНИЯ

Простейшие программы линейны: ко- программы. Во всех языках програм-


манды данных программ выполняются мирования предусматриваются управ-
в порядке, в котором они записаны, т. е. ляющие команды, которые позволя-
последовательно друг за другом. Ино- ют менять порядок выполнения
гда такую группу последовательно вы- команд в программе. Команды, управ-
полняемых команд называют серией. ляющие порядком исполнения про-
Программирование было бы очень граммы, называют управляющими
скучным и трудоёмким занятием, ес- структурами.
ли бы существовали только линейные Существует три основных типа
управляющих структур:
• серии;
• ветвления (условные команды);
Примеры условий: a = 15, a + 1 < c, 15 = 5. Первое из них вер- • циклы (команды повторения).
но (т. е. даёт ответ «да») лишь в случае, когда величина имеет Общий вид условной команды:
значение 15. Второе условие истинно для всех a и c, при кото-
рых может выполняться неравенство a+1<c. А вот третье усло- если <условие>
вие не выполняется никогда. Говорят ещё, что такое условие тож- | то <команда-1>
дественно-ложно. | иначе <команда-2>
всё

98
Основы программирования

Подчёркиванием выделяется клю-


чевое слово языка, а в угловых скобках
указывается языковая категория, тре-
бующая конкретизации — определе-
ния или толкования.
Условие обычно имеет вид утверж-
дения, проверка которого даёт одно-
значный ответ — «да» или «нет» (0 или
1, истина или ложь).
Первая операция, которая выпол-
няется любой условной командой, —
это проверка утверждения-условия.
Его значение используется для выбо-
ра одной из двух ветвей условной ко-
манды. Ветвь, на которой стоит <коман-
да-1>, называют иногда ветвью то,
а другую ветвь — <команда-2> — вет-
вью иначе.
Например,
В языке программирования КуМир, используемом, в частнос-
a:= 10 ти, для управления учебным исполнителем Робот, предусмат-
если a > 5 риваются условия, проверяющие значения двух физических ве-
| то вывод “всё в порядке” личин, характеризующих среду, в которой работает этот
| иначе вывод “аварийная ситуация” исполнитель, — радиацию и температуру. Текущее значение
всё этих величин находится в областях памяти (ячейках), назван-
c:= a + 1 ных ключевыми словами — «радиация» и «температура». Поэто-
му в этом языке допустимы, например, такие условия: радиа-
программа выведет на экран «спокой-
ция <0,7, температура >100.
ное» сообщение, поскольку истин-
ность условия a > 5 обеспечена дей-
ствием предшествующей команды
присваивание a:= 10. Сообщение “ава- одну команду. Однако если группа ко-
рийная ситуация” при этом не выводит- манд, которые желательно выполнить
ся, так как следующая исполняемая на ветви условной команды, может
команда — присваивание — c:= a + 1. понадобиться в программе неодно-
Обычно как на ветви то, так и на ве- кратно, то рекомендуется создать
тви иначе можно задавать не только процедуру из этой группы команд
(«запроцедурить» её), и тогда на со-
ответствующей ветви выражение
< команда > записывается как вызов
процедуры, т. е. как простое упоми-
нание имени процедуры.

99
Алгоритмизация

например, команду на ветви то следу-


ет выполнять только при положитель-
ном результате проверки условия,
а в случае отрицательного результата
никаких дополнительных действий
предпринимать не нужно, то услов-
ную команду можно записать так:

a:= 1
если a < 3
| то b:= “подходящий результат”
всё
c:= 10

Здесь ветвь иначе в условной коман-


де отсутствует, а величина b получает
текстовое значение “подходящий ре-
зультат” только в том случае, если ус-
ловие истинно.
Ветви то и иначе рекомендуется Вот программа, которая даёт совет,
записывать с небольшими смеще- как выбрать одежду по погоде:
ниями вправо от соответствующего
ключевого слова если и размещать вывод “надень рубашку”
знак окончания условной команды — если t < 0
слово всё — строго под её началом | то вывод “надень шубу”
(соответствующим слову если). Эта всё
рекомендация (но не требование
языка!) связана с тем, что на месте При любой температуре она поре-
выражений < команда-1 > и < коман- комендует надеть рубашку, но в холод-
да-2 > могут записываться, в свою ный день добавит ещё один совет —
очередь, ветвления, образующие це- надеть шубу.
почки вложенных условных команд. Уже приводился пример, когда од-
В этом случае аккуратные смещения на условная команда выполнялась внут-
ветвей условных команд помогают ри другой. Случаи подобного рода
человеку, читающему программу, ра- нередки, если приходится выбирать
зобраться в самых сложных ветвле- одну из нескольких возможностей.
ниях без использования громоздких В следующем примере проекти-
и избыточных блок-схем. Вот как вы- рования программы задаётся (напри-
глядит описание программы, кото- мер, с клавиатуры) код дня недели по
рая находит максимум среди трёх таблице:
чисел a, b и c:
понедельник 1
eсли a > b вторник 2
| то среда 3
| если a > c четверг 4
| | то max:= a пятница 5
| | иначе max:= c суббота 6
| всё воскресенье 7
| иначе
| если b > c Необходимо этот код преобразо-
| | то max:= b вать в текстовое значение величины
| | иначе max:= c день.
| всё Такую программу можно записать,
всё конечно, с помощью классической ко-
манды если. Эта программа представ-
Условные команды записываются ляет собой сложную вложенную услов-
иногда и в сокращённой форме. Если, ную команду.

100
Основы программирования

ввод код С помощью команды выбор наша


если код = 1 программа записывается короче и на-
| то день:= “понедельник” гляднее:
| иначе
| если код = 2 выбор
| | то день:= “вторник” | при код = 1: день:= “понедельник“
| | иначе | при код = 2: день:= “вторник“
| | если код = 3 | при код = 3: день:= “среда“
| | | то день:= “среда” | при код = 4: день:= “четверг“
| | | иначе | при код = 5: день:= “пятница“
| | | если код = 4 | при код = 6: день:= “суббота“
| | | | то день:= “четверг“ | при код = 7: день:= “воскресенье“
| | | | иначе | иначе вывод “ошибка кода“
| | | | если код = 5 всё
| | | | | то день:= “пятница”
| | | | | иначе При проектировании программы
| | | | | если код = 6 со сложными условиями следует про-
| | | | | | то день:= “суббота” являть внимательность: быть может,
| | | | | | иначе всё решается гораздо проще, чем ка-
| | | | | | если код = 7 жется вначале. Представим себе тест,
| | | | | | | то день:= “воскресенье” где компьютер должен распознать
| | | | | | | иначе вывод “ошибка кода” один из четырёх предложенных от-
| | | | | | всё ветов. Ответы закодированы числа-
| | | | | всё ми 1, 2, 3 и 4. Именно одно из этих
| | | | всё чисел программа ожидает от поль-
| | | всё зователя, вводящего с клавиатуры
| | всё значение после команды ввод. Пред-
| всё положим, что правильным в рассма-
всё триваемом тесте оказывается ответ,
закодированный числом 3. При всей
Однако подобные ситуации столь внешней схожести этой задачи с ко-
часты в программировании, что ряд дированием дней недели она реша-
языков предусматривает специальные ется существенно проще:
условные команды, позволяющие вы-
бирать одну ветвь из нескольких воз- ввод код
можных. если код = 3
| то вывод “ответ верный“
| иначе вывод “вы не правы“
всё

101
Алгоритмизация

УПРАВЛЯЮЩИЕ СТРУКТУРЫ — ЦИКЛЫ

как и условие команды ветвления. Ус-


ловие — это утверждение, требующее
проверки, в результате которой мо-
жет быть получен единственный из
двух возможных ответов — «да» или
«нет» (0 или 1, истина или ложь). На-
пример, утверждение-условие a < 10
истинно при значениях a, равных 0,
3, 7 и ложно при a, равных 12, 100,
105.
Группа (серия) команд, выполняе-
мых при каждом повторении цикла,
образует тело цикла. В нём могут при-
сутствовать и другие управляющие
Для выполнения многократно повто- структуры — команды ветвления и по-
ряющихся операций в языках про- вторения. Если в теле одного цикла ра-
граммирования существуют команды ботает другой цикл, такие команды по-
повторения, или циклы. вторения называют вложенными.
В языках программирования встре- Границы тела цикла отмечаются скоб-
чается четыре типа циклов (записы- ками. Например, в языке программи-
ваемых иногда в разной форме), рования КуМир открывающая скобка,
но в каждом из них присутствуют обя- или начало цикла, — это ключевое сло-
зательные элементы: во нц, закрывающая скобка, или конец
• заголовок цикла; цикла, — слово кц.
• условие завершения цикла; Наконец, элемент, который может
• тело цикла; отсутствовать в некоторых типах цик-
• счётчик числа повторений. лов, — это счётчик числа повторений,
Заголовком служит ключевое сло- часто оказывающий хорошую служ-
во, отмечающее начало команды по- бу программисту или пользователю,
вторения. Для каждого типа циклов когда важно зафиксировать число тре-
в качестве заголовка используется своё буемых повторений.
ключевое слово. Итак, четыре типа циклов, исполь-
Условие завершения цикла запи- зуемые в языках программирования:
сывается обычно в такой же форме, • циклы с фиксированным числом
повторений;
• циклы с предусловием;
• циклы с постусловием;
• циклы с задаваемым шагом из-
менения переменной цикла.
Наиболее простыми считаются
циклы с фиксированным числом по-
вторений. Их общий вид:

нц <выражение> раз
| <серия>
кц

По такой команде сначала опреде-


ляется числовое значение арифмети-
ческого выражения <выражение> (оно
должно быть целым), а затем найден-
ное значение n служит для фиксации
числа повторений. Таким образом, хо-
тя в этом типе циклов условие завер-

102
Основы программирования

шения формально отсутствует, его такого цикла? Для этого есть две воз-
участие в выполнении команды оче- можности:
видно: цикл завершается, как только • если группа команд, которые же-
неявно формируемое и увеличиваю- лательно выполнить в теле команды
щееся на единицу при каждом повто- повторения, может понадобиться
рении тела цикла значение счётчика в программе неоднократно, то реко-
сравняется с n. Так, цикл мендуется создать процедуру из этой
группы команд, и тогда на соответст-
a:= 10 вующей ветви выражение <команда>
b:= 12 записать как вызов процедуры. Вот как
i:= 1 Кукарача решает задачу спуска вниз
s:= 0 по лесенке:
нц a + b раз
| s:= s + m [i] ЭТО СПУСК
| i:= i+1 ПОВТОРИ 9 ЛЕСЕНКА
кц КОНЕЦ
ЭТО ЛЕСЕНКА
суммирует первые 22 значения мас- ВПРАВО
сива m, от m[1] до m[22]. ВНИЗ
В языке управления исполнителем КОНЕЦ
Кукарача, где в качестве тела цикла
<серия> допускается единственная ко-
манда, цикл с фиксированным числом
повторений выглядит совсем просто:

ПОВТОРИ n <команда>

Так, заставить погулять Кукарачу,


который понимает и умеет выполнять
четыре команды — ВВЕРХ, ВНИЗ, ВЛЕВО
и ВПРАВО, перемещаясь при их выпол-
нении на одну ячейку в заданном на-
правлении по квадратному полю раз-
мером 10 × 10, можно с помощью всего
четырёх команд:

ПОВТОРИ 9 ВПРАВО
ПОВТОРИ 9 ВНИЗ
ПОВТОРИ 9 ВЛЕВО
ПОВТОРИ 9 ВВЕРХ

Как же быть, если потребуется вы-


полнение нескольких команд в теле

103
Алгоритмизация

• если такая группа используется в теле цикла происходит изменение


однократно, в теле команды цикла, значения той переменной, которая
то тогда можно и не прибегать к за- фигурирует в условии. Если условие
процедуриванию, а заключить группу постоянно истинно, то цикл становит-
в фигурные скобки {} (по существу, те ся бесконечным, если, наоборот, ус-
же нц и кц); все команды, окаймлённые ловие изначально ложно, то тело не
открывающей и закрывающей скоб- выполнится ни разу, а управление пе-
ками, воспринимаются компьютером рейдёт к команде, записанной вслед
как единая команда: за циклом.
Задачу, поставленную в программе,
ЭТО СПУСК суммирующей первые 22 значения спи-
ПОВТОРИ 9 ска m, от m[1] до m[22], можно решить
{ и с помощью цикла с предусловием:
ВПРАВО
ВНИЗ a:= 10
} b:= 12
КОНЕЦ i:= 1
s:= 0
В цикле с предусловием число по- нц пока i < a + b
вторений тела не всегда легко опре- | s:= s + m [i]
делить заранее. Да в этом и нет необ- | i:= i+1
ходимости — завершение цикла кц
отслеживается условием, которое за- Цикл с постусловием имеет следу-
писывают в заголовке цикла: ющий вид:

нц пока <условие> нц
| <тело цикла> | <тело цикла>
кц кц при <условие>

Такая команда начинается с про- Он отличается от предыдущего тем,


верки условия. Если оно истинно, что условие проверяется не перед на-
то выполняется тело цикла и вновь чалом тела, а в конце повторяемой се-
проверяется условие — до тех пор рии. Это означает, что в любом случае
пока оно не перестанет быть истин- (независимо от условия) тело цикла
ным. Это последнее условие и явля- будет выполнено, по крайней мере,
ется признаком завершения команды один раз. Вариант программы с цик-
повторения. Такая последователь- лом с предусловием, записанный в ви-
ность операций предполагает, что де цикла с постусловием, имеет вид:

a:= 10
b:= 12
i:= 1
s:= 0
нц
| s:= s + m [i]
| i:= i + 1
кц при i < a + b

В циклах с задаваемым шагом из-


менения переменной цикла появля-
ется ещё два понятия — переменная
цикла и шаг её изменения при каж-
дом повторении тела. В таком цикле
нет необходимости устанавливать на-
чальное значение счётчика (или, как
говорят, инициализировать значение
этой переменной), поскольку и на-

104
Основы программирования

чальное, и конечное значения этой


переменной и шаг её изменения мо-
гут быть заданы в команде повторе-
ния, имеющей такой вид:

нц для <переменная> от <выражение-1>


| до <выражение-2>
| [шаг <выражение-3>]
| <тело цикла>
кц

Вообще говоря, переменная цик-


ла совсем не обязательно должна сов-
падать со счётчиком. Однако в таком
виде переменную цикла используют
чаще всего. В общем представлении
этого цикла элемент заголовка связана с тем, что в теле цикла могут
окаймлён квадратными скобками. встречаться, в свою очередь, циклы
Это означает, что данных элементов и ветвления, образуя цепочки вложен-
в конкретном представлении коман- ных управляющих структур. В этом слу-
ды может и не быть. Так, отсутствие чае аккуратные смещения команд по-
элемента шага <выражение-3> застав- вторения и условных команд помогают
ляет команду повторения менять зна- человеку, читающему программу, ра-
чение цикла при каждом выполне- зобраться в самых сложных ветвлени-
нии тела на 1. Тем самым значение ях без использования громоздких и из-
выражения <выражение-3> по умолча- быточных блок-схем.
нию предполагается равным 1. Цикл Если вооружить математика каран-
с задаваемым шагом в нашем про- дашом и бумагой и попросить его ре-
стом примере записывается так: шить две задачи, одна из которых —
вычисление сложного интеграла,
a:= 10 а вторая — сложение трёх сотен чи-
b:= 12 сел, то результат получится удиви-
s:= 0 тельный: первую задачу математик,
нц для i от 1 до a + b конечно, решит, а во второй почти
| s:= s + m [i] наверняка допустит ошибку. Хотя
кц каждое отдельное сложение без тру-
да выполнит даже младший школь-
Здесь переменной цикла объявле- ник. Поэтому если математику при-
на величина i. Необходимости в из- дётся делать выбор, какую из этих
менении счётчика в теле цикла нет, двух задач он предпочёл бы решать,
так как команда i:= i+ 1 предполагает- то, без сомнения, он остановится на
ся определением цикла (единица в ка- первой: со сложной задачей иметь
честве шага изменения в этом приме- дело интереснее, она соответст-
ре принята по умолчанию). вует его интеллекту. А вторая
Последний тип цикла наиболее
компактен. Если же учесть, что на ме-
сте элементов <выражение-1>, <выраже-
ние-2> и <выражение-3> можно записы-
вать сложные формулы, то становятся
очевидными широкие возможности
этого типа команды повторения.
Заметим, что во всех записях при-
меров программ с командами повто-
рения тело цикла смещено вправо
относительно команд нц и кц, располо-
женных на одной вертикали. Эта реко-
мендация (но не требование языка!)

105
Алгоритмизация

задача — это скучная, но тем не ме- ница человеческих и машинных воз-


нее требующая высокой сосредото- можностей.
ченности рутинная работа, и потому Машина без усталости, напряже-
в ней неизбежны ошибки. ния и негативных эмоций справится
Именно здесь — между оригиналь- не только с тремя сотнями выполняе-
ной задачей, требующей творческого мых подряд однотипных арифметиче-
к себе отношения, и однообразной, ских операций, но и с тремя тысяча-
трудоёмкой работой — пролегает гра- ми, и с тремя миллионами действий.

МАССИВЫ

Одна из фундаментальных структур ных по четырём забегам, в каждом из


данных, применяемых в информати- которых по семь бегунов).
ке, — массивы. Это понятие часто Описания данных таблиц (в соот-
встречается и в иных, синонимичных ветствии с правилами языка КуМир)
терминах — «векторы», «матрицы» построены следующим образом:
и др. Например, язык программиро- 1) сначала указывается тип эле-
вания КуМир (используемый здесь для ментов, образующих таблицу; первая
иллюстрирования различных меха- таблица составлена вещественными
низмов программирования) опери- числами (вещ), вторая — литерными
рует термином «таблица» или «таб- величинами (лит);
личные величины», т. е. конечные 2) затем следует тип табличной ве-
упорядоченные совокупности одно- личины — ключевое слово таб;
типных элементов. 3) далее задаётся имя описыва-
Вот примеры массивов-таблиц: емой табличной величины (зарплата,
1) вещ таб зарплата [1:20] забег, кросс);
(табличная величина названа зарпла- 4) завершает описание конструк-
та, её элементы — 20 вещественных ция, определяющая размеры табли-
чисел); цы.
2) лит таб забег [1:7] Поскольку таблица относится к со-
(в таблицу забег входит семь элемен- ставным (а не простым) структурам
тов — текстовых, или литерных, вели- данных, то именно конструкция, за-
чин; в ней собраны фамилии участ- дающая размеры таблицы, является
ников легкоатлетического забега); специфической в её описании. В квад-
3) лит таб кросс [1:4, 1:7] ратных скобках дана пара целых чи-
(таблица кросс состоит из четырёх сел, разделённых двоеточием. Пер-
строк и семи столбцов; в ней перечис- вое число в этой паре указывает
лены фамилии всех участников лег- номер первого элемента таблицы,
коатлетического кросса, распределён- второе — номер её последнего эле-
мента (предполагается последова-
тельная порядковая нумерация). Это
означает, что если первый элемент
в паре является единицей, то её вто-
рой элемент выражает число элемен-
тов в таблице. Так обстоит дело в пер-
вых двух приведённых примерах:
в таблице зарплата — 20 элементов,
в таблице забег — 7.
Указанные таблицы — линейные,
или одномерные. Этот факт отражён
тем, что в квадратных скобках указа-
на только одна пара целых чисел. Но-
мер элемента в линейной таблице на-
зывается его индексом.

106
Основы программирования

Например, таблица забег имеет вид: соких размерностей. Чтобы указать


элемент таблицы, имеющей размер-
лит таб забег [1:7] ность n, надо использовать не один
индекс, а n — по значению размерно-
Значения Индексы сти. Так, в двухмерной таблице кросс
элементов элементов
Кошкин 1 кросс [3, 1] = «Иванов»,
Мышкин 2 кросс [2, 4] = «Залкинд»,
кросс [4, 5] = «Лосев».
Блошкин 3
Плошкин 4 Поскольку каждый элемент одно-
Мошкин 5 значно в ней распознаётся с помощью
индексов, то над элементами табли-
Ложкин 6 цы допустимы все операции, приме-
Рожкин 7 няемые к величинам соответствую-
щего типа. Например, по команде
Фамилия Мошкин — это значение
5-го элемента таблицы забег. С помо- зарплата [17]:= зарплата [1] + зарплата [3]
щью индекса этот факт записывается
так: компьютер выберет из таблицы зар-
плата два числа — зарплата [1] и зар-
забег [5] = «Мошкин» плата [3], сложит их и результат при-
своит элементу этой же таблицы
А вот таблица кросс — двухмерная: с индексом 17, а по команде
в ней четыре строки, и в каждой —
семь элементов. Эти параметры лег- вывод кросс [4, 7]
ко прочитываются в двух парах целых
чисел, стоящих в квадратных скобках напечатает слово — Зайцев.
после имени таблицы кросс. Анало- Упорядоченность элементов таб-
гичным образом описываются трёх- лицы позволяет эффективно осуще-
мерные таблицы и таблицы более вы- ствлять групповые операции. Вот как

лит таб кросс [1:4, 1:7]

Кошкин Мышкин Блошкин Плошкин Мошкин Ложкин Рожкин


Галкин Палкин Ёлкин Залкинд Чалкин Салкин Малкин
Иванов Петров Сидоров Семёнов Кузьмин Фомин Егоров
Волков Бобров Лисицын Енотов Лосев Сурков Зайцев
1 2 3 4 5 6 7

107
Алгоритмизация

можно, воспользовавшись циклом, вы- алг повышение


полнить увеличение сразу для всех (рез вещ зарплата [1:n])
элементов таблицы зарплата на 9 %: нач цел i
| нц для i от 1 до n
алг увелич | | зарплата [i]:= зарплата [i] * 1.09
(арг рез вещ зарплата [1:20]) | кц
нач цел i кон
| нц для i от 1 до 20
| | зарплата [i]:= зарплата [i]*1.09 Таблицы удобны при поиске среди
| кц множества элементов по заданным
кон признакам, при определении наиболь-
ших и наименьших значений, в разно-
Здесь i — имя величины целого ти- образных сортировках.
па (управляющая переменная цикла), Пример: найти в упорядоченном
которая в этом примере увеличивает- множестве числовых положительных
ся на 1 при каждом выполнении тела элементов, т. е. в таблице, наибольший
цикла от 1 до 20. Таблица зарплата яв- элемент и его индекс — номер в этом
ляется в этом алгоритме одновремен- множестве.
но и аргументом, и результатом.
В описанных выше трёх примерах алг максимум
таблицы имели фиксированное число (арг вещ зарплата[1:n],
элементов. Вместе с тем лучше исполь- рез вещ мак, цел инд)
зовать в качестве этих количествен- нач цел i; мак:= 0; инд:= 1
ных значений переменные величины. | нц для i от 1 до n
Если, например, в описании таблицы | | если зарплата [i] > мак
зарплата указать не фиксированные | | | то мак:= зарплата [i]; инд := i
ограничения, а поставить после дво- | | всё
еточия целую переменную n, то такую | кц
таблицу можно применить в алгорит- кон
ме при любом числе элементов:

СТРУКТУРЫ ДАННЫХ

«Алгоритмы + структуры данных = про- МАССИВ КАК


граммы» — так называется книга Ник-
лауса Вирта, известного швейцарско- БАЗОВАЯ СТРУКТУРА
го специалиста по программированию,
блестящего педагога, автора языков Как известно, две главные составные
программирования Pascal, Modula-2, части компьютера — это процессор
Oberon. Обе составляющие програм- и оперативная память. Оперативная
мы, обозначенные Виртом, в равной память компьютера состоит из эле-
степени важны. Не только несовершен- ментов, каждый из которых имеет
ный алгоритм, но и неудачная органи- свой адрес. В современных компью-
зация работы с данными может приве- терах минимальным адресуемым эле-
сти к замедлению работы программы ментом является байт. Важно также
в десятки, а иногда и в миллионы раз. понятие машинного слова — это не-
С другой стороны, владение теорией сколько подряд идущих байтов, обо-
программирования и умение система- значающих одно целое число. Разряд-
тически применять её на практике поз- ность машинного слова (количество
воляют разрабатывать эффективные битов) в современных процессорах
и в то же время красивые программы. составляет 32 или 64 бит, соответст-
Искусство работы с данными является венно машинное слово включает 4
важнейшей составляющей искусства или 8 байт. Процессор все действия
Никлаус Вирт. программирования. производит со словами (машинное

108
Основы программирования

слово — наиболее естественный эле-


мент данных для процессора). Адресом
машинного слова является наимень-
ший из адресов байтов, составляю-
щих его. Таким образом, адреса ма-
шинных слов кратны четырём или
восьми в зависимости от разряднос-
ти процессора.
Оперативная память, с точки зре-
ния программиста, — это массив эле-
ментов. Каждый элемент массива
имеет свой адрес, который обычно
называют индексом. Любой элемент
можно прочитать или записать мгно- осуществляется исключительно бы-
венно, за одно элементарное дейст- стро, они доступны без каких-либо
вие. Структуры данных, в которых предварительных действий.
непосредственный доступ возможен Тем не менее одних массивов
к любым их элементам, называют недостаточно для написания эффек-
структурами данных с прямым, или тивных программ. Большинство ре-
произвольным, доступом (англ. ran- альных задач требует более сложной
dom access). Примером такой струк- организации работы с данными.
туры является массив (или, как его Массивы выступают лишь в роли ба-
ещё называют, таблица). Структуры зовых элементов, из которых стро-
данных, в которых непосредствен- ятся более сложные структуры.
ный доступ возможен лишь к одно- В качестве примера можно рас-
му или нескольким элементам (для смотреть библиотеку. С точки зре-
доступа к остальным элементам на- ния программирования библиоте-
до произвести дополнительные дей- ка — это структура данных для
ствия), называются структурами по- работы с книгами. Стеллажи в биб-
следовательного доступа. Бытовым лиотеке с пронумерованными пол-
примером такой структуры являет- ками являются аналогом массива. Ро-
ся магнитофонная кассета, на кото- ли элементов этого массива играют
рой записаны песни. В любой мо- книги на полках, роли индексов —
мент времени можно слушать лишь номера полок. Но библиотека — это
одну песню. Чтобы добраться до не только набор стеллажей. Её струк-
иных музыкальных фрагментов, на- тура включает каталоги (алфавит-
до перемотать ленту в ту или другую ный и систематический). Существу-
сторону. ют также системы доставки запросов
Третья важнейшая составляющая в книгохранилище (например, пнев-
компьютера — магнитный диск с ло- матическую почту) и доставки книг
гической точки зрения также явля- читателям, наконец, персонал биб-
ется массивом. Элементарной еди- лиотеки, выполняющий запросы
ницей чтения и записи для него читателей, а также осуществля-
является блок. Размер блока зависит ющий хранение и пополнение
от конструкции конкретного диска, библиотечного фонда.
обычно он кратен числу 512. За од-
ну элементарную операцию можно
прочесть или записать один блок
с заданным адресом.
Итак, наиболее важные запоми-
нающие устройства компьютера —
оперативная память и магнитный
диск представляют собой массивы.
Массив для программиста — это не-
кая данность, так же как, например,
для математика данность — целые
числа. Работа с элементами массива

109
Алгоритмизация

ПРОСТЕЙШИЕ рую всегда можно при желании поки-


СТРУКТУРЫ ДАННЫХ нуть, в программе из середины оче-
реди удалять элементы нельзя.
Очередь можно представить в виде
Наиболее важными из простейших трубки. В один конец трубки (конец
структур данных являются стек и оче- очереди) добавляются шарики — эле-
редь. Эти структуры встречаются в про- менты очереди, из другого конца (на-
граммировании буквально на каждом чало очереди) они извлекаются. Эле-
шагу, в самых разнообразных случа- менты в середине очереди, т. е. шарики
ях. Особенно интересен стек, который внутри трубки, недоступны. Таким об-
может иметь весьма неожиданные разом, концы трубки несимметричны,
применения. При разработке серии шарики внутри неё движутся только
компьютеров IBM 360 в начале 70-х гг. в одном направлении.
XX в. фирма IBM совершила драмати- Если продолжить аналогию с труб-
ческую ошибку, не предусмотрев ап- кой, то ясно, что в принципе можно
паратную реализацию стека. Эта серия добавлять элементы в оба её конца
содержала много других неудачных и забирать их также из обоих концов.
решений, но, к сожалению, была ско- Подобная структура данных в про-
пирована в Советском Союзе под на- граммировании тоже существует, её
званием ЕС ЭВМ («Единая серия»). название — «дек» (от англ. Double Ended
Queue — «очередь с двумя концами»),
но используется она значительно ре-
же, чем очередь.
Роль очереди в программирова-
нии почти соответствует её роли
в обыденной жизни. Очередь практи-
чески всегда связана с обслуживани-
ем запросов в тех случаях, когда они
не могут быть выполнены сразу. На-
пример, когда человек, набирая текст,
нажимает клавишу на клавиатуре (т. е.
Машина серии просит машину выполнить какое-то
ЕС ЭВМ 1022. действие), то действие компьютера
состоит в добавлении к тексту одно-
го символа или же перерисовке обла-
ОЧЕРЕДЬ сти экрана, прокрутке окна, перефор-
матировании абзаца и т. п.
Очередь в программировании анало- Любая, даже самая простая, опера-
гична очереди в повседневной жиз- ционная система всегда в той или
ни. Она содержит элементы, как бы иной степени многозадачна. Это зна-
выстроенные друг за другом в цепоч- чит, что в момент нажатия пользова-
ку. У очереди есть начало и конец. телем клавиши операционная систе-
В отличие от обычной очереди, кото- ма может быть занята какой-либо
другой работой. Тем не менее опера-
ционная система ни в коем случае
не имеет права проигнорировать
команду пользователя. Поэтому при
нажатии клавиши на какое-то время
прекращается выполнение предыду-
щей задачи. Машина запоминает те-
кущий момент в работе и переключа-
ется на обслуживание запроса. Эта
операция должна быть очень корот-
кой, чтобы не нарушилось выполне-
ние других задач. Поэтому команда,
отдаваемая нажатием на клавишу, про-
сто добавляется в конец очереди за-

110
Основы программирования

просов, ждущих выполнения. После


этого компьютер возвращается к той
работе, которая была прервана нажа-
тием на клавишу. Запрос, поставлен-
ный в очередь, будет выполнен не сра-
зу, а только когда наступит его черёд.
Каждая программа имеет свою оче-
редь запросов. По мере продвижения
в работе она считывает очередной за-
прос из начала очереди и выполняет
его. Очередь поддерживается опера-
ционной системой.
Подход, состоящий не в прямом
запуске нужных процедур, а в посыл-
ке сообщений, которые добавляют- лизации. Вообще, все реализации
ся в очередь запросов, имеет много структур данных делятся на два клас-
преимуществ и является одной из са — непрерывные и ссылочные. В не-
характеристик объектно-ориенти- прерывных реализациях элементы
рованного программирования, ши- структуры данных хранятся в масси-
роко распространившегося на рубе- ве подряд, без промежутков, занимая
же XX—XXI вв. Например, если таким образом непрерывную часть
программе нужно завершить свою массива. В ссылочных, или списковых,
работу по какой-либо причине, она реализациях элементы структуры дан-
не вызывает сразу команду заверше- ных хранятся в хаотическом порядке,
ния, которая опасна, потому что на- в массиве или непосредственно в
рушает логику работы и может при- динамической оперативной памяти,
вести к потере данных. Вместо этого которую программисты называют «ку-
программа посылает самой себе со- чей». При этом вместе с каждым эле-
общение о необходимости заверше- ментом хранятся ссылки на соседние
ния работы, которое ставится в оче- элементы. В случае списка таких ссы-
редь запросов и выполняется после лок может быть две (на следующий
запросов, поступивших ранее. и предыдущий) или одна (ссылка на
следующий элемент). Элементы спи-
ска как бы образуют связную цепоч-
РЕАЛИЗАЦИЯ ОЧЕРЕДИ ку, и чтобы добраться до элементов
в середине списка, нужно пройти по
НА БАЗЕ МАССИВА этой цепочке, начиная с её первого
элемента.
Если принять массив как изначальную В случае очереди наиболее попу-
данность, все остальные структуры лярны две реализации — непрерывная
данных должны реализовываться на на базе массива, которую называют
его базе. Реализация одной структу- также реализацией на базе кольцево-
ры данных на основе другой — это го буфера, и ссылочная реализация,
описание её работы в терминах. Реа- или реализация на базе списка.
лизация обязательно включает в себя При непрерывной реализации очере-
описание «идеи реализации» (т. е. то- ди в качестве базы выступает массив
го, как хранить элементы реализуе- фиксированной длины N, таким об-
мой структуры в базовой структуре, разом очередь ограничена и не может
какие дополнительные переменные содержать более N элементов. Индек-
нужны) и набор подпрограмм, каждая сы элементов массива изменяются
из которых моделирует определён- в пределах от 0 до N–1. Кроме масси-
ное предписание реализуемой струк- ва реализация очереди содержит три
туры при помощи предписаний базо- простые переменные: индекс начала
вой структуры. очереди, индекс конца очереди, чис-
Реализация может быть многоэтап- ло элементов очереди. Элементы оче-
ной, а массив не всегда выступает в ка- реди хранятся в отрезке массива от
честве непосредственной базы реа- индекса начала до индекса конца.

111
Алгоритмизация

0 1 N–1 ляет собой запоминающее устрой-


ство, из которого элементы извлека-
ются в порядке, обратном их добав-
лению. Это как бы неправильная
очередь, в которой первым обслужи-
Индекс начала Индекс конца вают того, кто встал в неё последним.
очереди очереди В литературе по программированию
общепринятыми являются аббреви-
При добавлении нового элемента атуры, обозначающие порядок рабо-
в конец очереди индекс конца снача- ты очереди и стека. Порядок работы
ла увеличивается на единицу, а затем очереди — FIFO, что означает «пер-
новый элемент записывается в ячей- вым пришёл — первым уйдёшь»
ку массива с этим индексом. Анало- (англ. First In First Out). Порядок ра-
гично при извлечении элемента из боты стека — LIFO, «первым при-
начала очереди ячейка массива с ин- шёл — последним уйдёшь» (англ. Last
дексом начала очереди запоминает- In First Out).
ся в качестве результата операции, Примером стека может служить
а затем индекс начала очереди увели- стопка бумаг на столе или стопка та-
чивается на единицу. релок. Само слово «стек» так и пере-
Ключевая идея реализации очере- водится с английского — «стопка». Та-
ди состоит в том, что массив как бы релки берутся в порядке, обратном
замыкается в кольцо. За последним их добавлению. Доступна только
элементом массива следует его пер- верхняя тарелка, т. е. тарелка «навер-
вый элемент (напомним, что послед- ху» стека.
ний элемент имеет индекс N–1, а пер-
вый — индекс 0). При сдвиге индекса
Вершина
конца очереди вправо в случае, когда
стека
он указывает на последний элемент
массива, он переходит на первый эле-
мент массива.
0 1 N–1

Дно
стека

Индекс конца Индекс начала


очереди очереди

Пружина

СТЕК
Стек легко представить в виде рас-
Стек — самая популярная и, пожалуй, положенной вертикально трубки
самая важная структура данных с пружинным дном. Верхний конец
в программировании. Стек представ- трубки открыт, и в него можно до-
бавлять элементы. Каждый новый
элемент проталкивает на одну пози-
цию вниз элементы, помещённые
в стек ранее. При извлечении эле-
мента из стека все остальные как бы
выталкиваются вверх. (Общеприня-
тые английские термины здесь очень
выразительны: операция добавления
элемента в стек обозначается словом
push — «затолкнуть», «запихнуть»,
а операция удаления словом pop —
«выстреливать».) Пример стека — ма-
газин карабина.

112
Основы программирования

ИСПОЛЬЗОВАНИЕ СТЕКА
В ПРОГРАММИРОВАНИИ

Стек используется чрезвычайно ча-


сто, причём в самых разных ситуа-
циях. Объединяет их общая цель: тре-
бование запомнить текущий момент
в работе, которая ещё не выполнена
до конца, при необходимости пере-
ключения на другую задачу. Почему
именно стек используется для «замо-
раживания» прерванного задания?
Предположим, компьютер выполня-
ет задачу A. В процессе её выполне-
ния возникает необходимость сде- работу с того места, где она была пре-
лать задачу B. Текущий момент рвана обращением к самой себе.
решения задачи A запоминается, При этом не приходится специ-
и компьютер переходит к выполне- ально сохранять в стеке значения ло-
нию задачи B. Но и здесь компьютер кальных переменных подпрограммы,
может переключиться на задачу C, так как это происходит автоматиче-
и нужно будет запомнить состояние ски: в самом начале работы подпро-
задачи B, прежде чем перейти грамма захватывает место в аппа-
к C. Позже, когда задача С окажется ратном стеке под свои локальные
выполненной, сначала будет восста- переменные — этот блок памяти на-
новлен текущий момент задачи B, зывают обычно «блок локальных пе-
затем, по окончании B, — текущий ременных подпрограммы» (англ.
момент задачи A. Таким образом, вос- frame — «кадр»). В момент окончания
становление происходит в последо- работы подпрограмма освобождает
вательности, обратной запомина- память, удаляя из стека блок своих
нию, что соответствует порядку локальных переменных.
работы стека. Кроме локальных переменных
Стек позволяет организовать ре- в аппаратном стеке сохраняются ад-
курсию, т. е. обращение подпрограм- реса возврата при вызовах подпро-
мы к самой себе либо непосредст- грамм. Предположим, в какой-то
венно, либо через цепочку других точке программы A вызывается под-
вызовов. Пусть, например, подпро- программа B. Перед её вызовом адрес
грамма A выполняет алгоритм, зави- инструкции, следующей за инструк-
сящий от входного параметра X и, воз- цией вызова B, сохраняется в стеке.
можно, от состояния общих данных. Это так называемый адрес возврата
Для самых простых значений X алго- в программу A. По окончании работы
ритм реализуется непосредственно.
В случае более сложных значений X
алгоритм осуществляется через при-
менение того же алгоритма для более
простых значений X. При этом под-
программа A обращается сама к себе,
передавая в качестве нужного па-
раметра более простое значение X.
В этом случае подпрограмма A пере-
ключается на новый набор перемен-
ных, не уничтожая предыдущего на-
бора, который сохраняется в стеке.
По окончании этих промежуточных
действий начальное значение вход-
ного параметра X восстанавливается
из стека и подпрограмма продолжает

113
Алгоритмизация

такую память статической, оттого что


статические переменные занимают
всегда одно и то же место в любой мо-
мент работы программы. При исполь-
Y
зовании только этой памяти рекурсия
A невозможна, поскольку при каждом
G
D
новом вызове разрушаются предыду-
щие значения локальных переменных.
K

РЕАЛИЗАЦИЯ СТЕКА
НА БАЗЕ МАССИВА

Реализация стека на базе массива яв-


ляется «классикой» программирова-
ния. Иногда даже само понятие стека
неправильно отождествляется с этой
реализацией.
Базой реализации является массив
подпрограмма B извлекает из стека размера N, т. е. реализован может быть
адрес возврата в программу A и пере- стек ограниченного размера, макси-
Современный стан- даёт управление по этому адресу. Та- мальная глубина которого не превы-
дарт FORTRAN 90 ким образом, компьютер продолжа- шает параметра N. Индексы ячеек
уже вводит стековую ет выполнение программы A, начиная массива изменяются от 0 до N –1. Эле-
память, устраняя не- с инструкции, следующей за инструк- менты стека хранятся в массиве следу-
достатки ранних вер- цией вызова. В большинстве процес- ющим образом: элемент на дне стека
сий языка. соров имеются специальные команды, располагается в начале массива, т. е.
поддерживающие вызов подпрограм- в ячейке с индексом 0. Элемент, распо-
мы с предварительным помещением ложенный над самым нижним элемен-
адреса возврата в стек, а также возврат том стека, хранится в ячейке с индек-
из подпрограммы по адресу, извлека- сом 1 и т. д. Вершина стека расположена
емому из стека. Обычно команда вы- где-то в середине массива. Индекс эле-
зова обозначается словом call, коман- мента на вершине стека обозначается
да возврата — словом return. специальной переменной, которую
В стек помещаются также парамет- обычно называют указателем стека
ры подпрограммы или функции перед (англ. Stack Pointer, или SP).
её вызовом. Порядок их помещения Когда стек пуст, его указатель име-
в стек зависит от соглашений, приня- ет значение –1. При добавлении эле-
тых в компиляторах языков высокого мента в стек указатель сначала увели-
уровня. Так, в языке С или C++ наверху чивается на единицу, затем в ячейку
стека лежит первый аргумент функции, массива с индексом, содержащемся
под ним второй и т. д. В языке Pascal всё в указателе стека, записывается добав-
наоборот — наверху стека лежит по- ляемый элемент. При извлечении эле-
следний аргумент функции. мента из стека содержимое ячейки
В FORTRAN IV (одном из самых ста- массива с индексом, обозначенным
рых и удачных языков программиро- в указателе стека, запоминается во вре-
вания) аргументы передавались через менной переменной в качестве резуль-
специальную область памяти, которая тата операции, затем указатель стека
располагалась не в стеке, поскольку уменьшается на единицу. В описанной
в 60—70-х гг. XX в. ещё существовали реализации стек растёт в сторону уве-
компьютеры (например, IBM 360 или личения индексов ячеек массива.
ЕС ЭВМ) без аппаратной реализации
стека. Точно так же адреса возврата со- 0 1 Вершина стека N–1
хранялись не в стеке, а в фиксирован-
ных для каждой подпрограммы ячей-
ках памяти. Программисты называют

114
Основы программирования

Часто используется и другой ва- SP (Stack Pointer). Регистр PC содер-


риант реализации стека на базе век- жит адрес машинной команды (ин-
тора, когда дно стека помещается струкции), которая будет выполнять-
в последнюю ячейку массива, т. е. ся на следующем шаге. Регистр SP
в ячейку с индексом N–1. Элементы содержит текущий адрес вершины
стека занимают непрерывный отре- стека. Аппаратная реализация стека
зок массива, начиная с ячейки, ин- совпадает с вариантом реализации
декс которой хранится в SP, и закан- стека на базе массива, в котором стек
чивая последней ячейкой массива. растёт в сторону уменьшения индек-
В этом варианте стек растёт в сторо- сов ячеек массива.
ну уменьшения индексов. Если стек
пуст, то его указатель имеет значе- 0
ние N.
2

0 1 Вершина стека N–1 4

Вершина стека SP
Элементы
стека

АППАРАТНАЯ АППАРАТНЫЙ СТЕК


РЕАЛИЗАЦИЯ СТЕКА И ЛОКАЛЬНЫЕ
ПЕРЕМЕННЫЕ
Строго говоря, в компьютере нет ни-
какого аппаратного стека. Есть толь- ПОДПРОГРАММЫ
ко оперативная память, которую
можно рассматривать либо как мас- Аппаратный стек — это просто об-
сив байтов, либо как массив машин- ласть оперативной памяти плюс ре-
ных слов. Аппаратный стек реализу- гистр SP, который хранит адрес вер- На использовании
ется на базе оперативной памяти. шины стека. В аппаратном стеке нитей основана рабо-
Машинное слово вмещает в себя можно размещать обычные перемен- та графических при-
адрес ячейки памяти, например, ные программы. Размещение локаль- ложений в системе
в 32-разрядной архитектуре адреса ных переменных в стеке обладает ря- Microsoft Windows.
байтов могут изменяться от 0 до дом серьёзнейших преимуществ по
232–1. Адреса машинных слов крат- сравнению со статическим размеще-
ны четырём и принимают значения нием переменных в фиксированных
0, 4, 8, ... , 232–4. ячейках оперативной памяти — напри-
Кроме оперативной памяти про- мер, это позволяет организовывать
цессор имеет свою внутреннюю, рекурсию. В современных архитекту-
очень быструю память, которую на- рах весьма важное значение имеет
зывают регистрами процессора. Сре- поддержка параллельных процессов,
ди них есть регистры общего назна- работающих над общими статичес-
чения, хранящие целые числа или кими переменными. Это так называ-
адреса ячеек памяти, и так называ- емые легковесные процессы, или ни-
емые плавающие регистры, храня- ти (Thread), работающие параллельно
щие вещественные числа (на про- в рамках одной программы. Разные
граммистском сленге вещественные нити работают параллельно над об-
числа называются плавающими). щими статическими данными, совер-
В дешёвых процессорах плавающие шая таким образом некоторую сов-
регистры могут отсутствовать, но ре- местную работу. При этом одна и та же
гистры общего назначения имеются подпрограмма может вызываться из
обязательно. Два из них играют осо- разных нитей. В отличие от статиче-
бую роль — это счётчик команд PC ских переменных, которые являются
(англ. Program Counter, иногда упо- общими для всех нитей, локальные
требляется также обозначение IP, переменные подпрограммы должны
Instruction Pointer) и указатель стека располагаться в стеке, выделенном

115
Алгоритмизация

функции в стек помещается также ад-


рес возврата. В начале работы функ-
ции f стек имеет следующий вид:

Адрес возврата SP
222

333

Перед выполнением функция f


должна захватить в стеке область па-
мяти под свои локальные переменные
a, b, c. В языке С принято следующее
соглашение: адрес блока локальных
переменных функции в момент её ра-
для каждой нити. Тогда наборы локаль- боты помещается в специальный ре-
ных данных одной и той же подпро- гистр процессора, который называ-
граммы, вызываемой из разных нитей, ется FP (англ. Frame Pointer —
будут различны, поскольку они распо- «указатель кадра»). В первую очередь
лагаются в разных стеках. Если бы это функция f сохраняет в стеке преды-
было не так, то вызов подпрограммы, дущее значение регистра FP. Затем
уже работающей в рамках одной ни- значение указателя стека копируется
ти, из другой нити разрушил бы набор в регистр FP. Потом функция f захва-
локальных переменных этой подпро- тывает в стеке область памяти разме-
граммы. ром в три машинных слова под свои
Как же размещаются локальные пе- локальные переменные a, b, c. Для это-
ременные подпрограммы в стеке? го функция f просто уменьшает зна-
В языке С подпрограммы называются чение регистра SP на 12 (три машин-
функциями. Функция может иметь ар- ных слова равны 12 байтам). После
гументы и локальные переменные, т. е. захвата кадра локальных переменных
переменные, существующие только стек выглядит следующим образом:
в процессе выполнения функции. Пред-
положим, функция зависит от двух c SP
входных аргументов x и y целого типа
и использует три локальные перемен- b
ные a, b и c также целого типа. Функ- a
ция возвращает целое значение. Cтарое значение FP FP
Адрес возврата
int f(int x, int y) {
int a, b, c; x=222
... y=333
} …

Пусть, в определённом месте про-


граммы вызывается функция f с аргу- Аргументы и локальные перемен-
ментами x = 222, y = 333. ные функции f адресуются относи-
тельно регистра FP. Так, аргумент x
z = f(222, 333); имеет адрес FP + 8, аргумент y — адрес
FP +12. Переменная a имеет адрес
Вызывающая программа помеща- FP–4, переменная b — адрес FP –8, пе-
ет фактические значения аргументов ременная c — адрес FP–12.
x и y функции f в стек, при этом на вер- По окончании работы функция f
шине стека лежит первый аргумент сначала увеличивает указатель стека
функции, под ним — второй аргумент. на 12, удаляя таким образом из него
При выполнении инструкции вызова свои локальные переменные a, b, c. За-

116
Основы программирования

тем старое значение FP извлекается из объекты, над которыми оно должно


стека и помещается в FP (т. е. регистр быть совершено, уже даны. Предполо-
FP восстанавливает своё значение, су- жим, что кого-то просят налить стакан
ществовавшее до вызова функции f). чаю. В обратной польской записи сна-
Затем происходит возврат в вызыва- чала дают стакан, затем чайник и толь-
ющую программу: адрес возврата сни- ко потом уже просят налить чай. В ин-
мается со стека, и управление переда- фиксной форме прежде дают стакан,
ётся по адресу возврата. Результат затем просят налить чай, кто-то дол-
функции f передаётся через нулевой жен сходить на кухню за чайником
регистр. Вызывающая программа са- и только потом налить чай. В прямой
ма удаляет из стека фактические зна- польской записи сначала просят на-
чения аргументов x и y, помещённые лить чай, кто-то должен раздобыть ста-
в стек перед вызовом функции f. кан, затем чайник и только потом вы-
полнить требуемое действие.
Обратная польская запись форму- Ян Лукасевич.
СТЕКОВЫЙ КАЛЬКУЛЯТОР лы позволяет проводить вычисле-
ния любой сложности, используя стек
И ОБРАТНАЯ ПОЛЬСКАЯ как запоминающее устройство для
ЗАПИСЬ ФОРМУЛЫ хранения промежуточных результа-
тов. Такой стековый калькулятор был
В 1920 г. польский математик Ян Лу- впервые выпущен фирмой Hewlett
касевич предложил способ записи Packard (США). Обычные модели
арифметических формул без исполь- калькуляторов не позволяют вычис-
зования скобок. В привычной нам за- лять по сложным формулам без ис-
писи знак операции записывается пользования бумаги и ручки для за-
между аргументами: например, сум- писи промежуточных результатов.
ма чисел 2 и 3 записывается как 2+3. В некоторых моделях предусмотре-
Ян Лукасевич предложил две другие ны скобки с одним или двумя уров-
формы записи: префиксную форму, нями вложенности, но более слож-
в которой знак операции записыва- ные вычисления провести на них
ется перед аргументами, и постфикс- невозможно. Кроме того, в обыч-
ную форму, в которой знак операции ных калькуляторах трудно понять,
записывается после аргументов. как результат и аргументы переме-
В честь родины математика эти фор- щаются в процессе ввода и вычис-
мы записи называют прямой и обрат- ления между регистрами калькулято-
ной польской записью. Обычная же ра. Напротив, устройство стекового
форма записи называется инфиксной. калькулятора вполне понятно и лег-
В польской записи скобки не нуж- ко запоминается. Калькулятор име-
ны. Например, выражение ет память в виде стека. При вводе чис-
ла оно просто добавляется в стек.
(2 + 3) × (15 – 7) При нажатии на клавишу операции,
например на клавишу «+», аргументы
записывается в прямой польской за- операции сначала извлекаются из
писи как

× + 2 3 – 15 7,

а в обратной польской записи как

2 3 + 15 7 – × .

Если прямая польская запись не по-


лучила большого распространения,
то обратная польская запись оказалась
чрезвычайно полезной. Её преимуще-
ство можно объяснить тем, что гораз-
до удобнее выполнять действие, если

117
Алгоритмизация

работы с компьютером. Для вычисле-


ний используется стек, что позволяет
работать с выражениями любой сте-
пени сложности. Реализация стеково-
го вычислителя не представляет ни-
какого труда. Кроме того, имеется
простой алгоритм преобразования
выражения из обычной записи в об-
ратную польскую запись. Всё это при-
вело к тому, что многие компиляторы
языков высокого уровня используют
обратную польскую запись в качест-
ве внутренней формы представления
программы.
Например, язык программирова-
ния Java является интерпретируемым,
Калькулятор фирмы а не компилируемым языком. Это зна-
Hewlett Packard. чит, что компилятор Java преобразует
исходную Java-программу не в машин-
стека, затем над ними выполняется ные коды, а в некоторый промежу-
действие, наконец, результат опера- точный язык, предназначенный для
ции помещается обратно в стек. выполнения (интерпретации) на спе-
Вершина стека всегда содержит ре- циальной Java-машине. В случае Java
зультат последней операции и высве- этот промежуточный язык называют
чивается на дисплее калькулятора. байт-кодом. Байт-код представляет со-
Для вычисления надо сначала пре- бой, условно говоря, обратную поль-
образовать выражение в обратную скую запись Java-программы, а Java-ма-
польскую запись (при некотором на- шина — стековый вычислитель.
выке это легко сделать в уме). Затем
запись просматривается последова-
тельно слева направо. Если видим чис- ЯЗЫК POSTSCRIPT
ло, то вводим его в калькулятор, до-
бавляя его таким образом в стек. Если Другой яркий пример использования
видим знак операции, то нажимаем обратной польской записи — графи-
соответствующую клавишу калькуля- ческий язык PostScript, предназна-
тора, выполняя должную операцию ченный для высококачественной пе-
с числами наверху стека. чати текстов на лазерных принтерах.
Фрагмент программы Обратная польская запись формул Он является стандартом типограф-
на языке Java. оказалась исключительно удобной для ского качества представления текс-
тов, не зависящим от конкретной мо-
дели принтера.
То, что PostScript — это язык про-
граммирования, для многих людей,
знакомых с типографским делом, но да-
лёких от программирования, звучит
непривычно. Общепринятое мнение,
что компьютер работает с числами и в
основном что-то вычисляет, не впол-
не верно. Не менее часто компьютер-
ная программа работает с текстами и
изображениями. Текст, содержащийся
в текстовом файле, можно рассматри-
вать с двух точек зрения. Например,
трактовать его просто как текст статьи
или книги. Но рассмотрим процесс пе-
чати текста на обычном (не графичес-
ком) принтере. Принтер соединён

118
Основы программирования

с компьютером кабелем, и компьютер % Программа Крест


посылает через этот кабель один за дру- 2.83 2.83 scale % установить мил-
гим коды символов, составляющих лиметровую шкалу
текст. В этом случае букву «А», имеющу- 0.2 setlinewidth % установить
юся в тексте, следует рассматривать как толщину линии 0,2 мм
команду, предписывающую принтеру 100 0 moveto % переместиться
напечатать символ «А» в текущей точ- в точку (100, 0)
ке страницы, используя заданный за- 100 350 lineto % провести линию
ранее шрифт. Затем координату X те- к точке (100, 350)
кущей точки надо увеличить на ширину stroke % и начертить её
буквы «А». 0 150 moveto % переместиться
С этих позиций весь текст можно в точку (0, 150)
трактовать как программу его собст- 250 150 lineto % провести линию
венной печати. В случае любого тек- к точке (250, 150)
стового файла эта программа весьма stroke % и начертить её Доналд Кнут.
примитивна, в ней, например, нет ко- showpage % выдать страницу
манд смены шрифтов, изменения те-
кущей позиции, рисования линий В первой строке программы уста-
и т. д. Понятно, что текст типограф- навливается миллиметровая шкала.
ского качества не может быть пред- Дело в том, что по умолчанию для
ставлен текстовым файлом. принтера единицей измерения явля-
В случае языка PostScript файл, пе- ется один пункт, или 1/72 дюйма. Лю-
ресылаемый на PostScript-принтер, бой программист знает, что 1 дюйм
представляет собой программу печа- равен 25,4 мм. Надо вычислить соот-
ти текста. Язык PostScript весьма богат, ношение одного миллиметра и одно-
и вряд ли найдётся много людей, вла- го пункта:
деющих им. Чаще всего PostScript-
программа создаётся другой програм- 1 мм / 1 pt = 1 мм / (1/72) =
мой обработки текста. Например, = 1 мм / (25,4/72) мм = 2,834645.
PostScript-файл создаётся для печати
на принтере при помощи языка TeX. Если увеличить масштаб в 2,83 раза,
(TeX — это язык записи текстов, со- происходит переход от пунктов к мил-
держащих математические формулы, лиметрам. Для изменения масштаба
созданный замечательным математи- в стек сначала помещается число 2,83,
ком и теоретиком программирования соответствующее увеличению мас-
Доналдом Кнутом.) Некоторые текс- штаба по X, затем в стек добавляется
товые редакторы, например Adobe второе число 2,83, соответствующее
Acrobat или MS Word, в случае печати увеличению масштаба по Y, и после
на профессиональном принтере так- этого выполняется команда scale (из-
же преобразуют текст в PostScript-про- менить масштаб). Из стека при этом
грамму. PostScript-файлы очень удоб- вынимаются два числа, и масштаб по
ны для распространения, поскольку X и Y изменяется.
записываются в обычном текстовом Разные команды могут иметь раз-
формате и будут одинаково напеча- ное число аргументов. Например,
таны в любой стране, независимо от вторая строка программы устанавли-
национальных кодировок, версий вает толщину линии. Команда set
операционных систем, наличия нуж- linewidth имеет один аргумент, кото-
ных шрифтов и т. п. рый помещается в стек перед её вызо-
PostScript-программа представляет вом. При выполнении команды он
собой обратную польскую запись, т. е. снимается со стека, и толщина линии
любая команда записывается после устанавливается равной этому снято-
своих аргументов. При выполнении му числу.
PostScript-программы используется Третья строка перемещает теку-
стек. Рассмотрим для примера простей- щую позицию курсора в точку с коор-
шую программу, рисующую крест на динатами X = 100, Y = 0. (В качестве
странице. Символ % используется в язы- единиц используются миллиметры,
ке PostScript в качестве комментария. о чём мы позаботились в первой стро-

119
Алгоритмизация

ординаты были получены из стека.


Язык PostScript является достаточно
мощным языком программирования,
в нём предусмотрены функции, цик-
лы, ветвления и т. п. Используемая
в нём обратная польская запись
очень удобна для выполнения на ком-
пьютере. Поэтому интерпретатор
языка PostScript легко встраивается
в конструкцию принтера (который,
конечно же, всегда оснащён более
или менее сложным процессором),
совсем ненамного увеличивая его
стоимость.
Язык Java, байт-код которого пред-
ставляет собой обратную польскую
запись, тоже был первоначально раз-
работан для программирования не-
Фрагмент программы ке; начало координат находится в ле- дорогих бытовых приборов, таких,
на языке TeX. вом нижнем углу страницы.) В стек как телевизор, стиральная машина
сначала добавляются два числа, соот- и т. п. Стековый вычислитель устроен
ветствующие координатам X и Y, и за- просто и может быть применён там,
тем выполняется команда moveto, ко- где быстродействие не играет особой
торая снимает эти числа со стека роли, зато важны скорость и дешевиз-
и перемещает курсор в точку, чьи ко- на разработки.

ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ


И ССЫЛОЧНЫЕ РЕАЛИЗАЦИИ

Все структуры данных можно услов- последовательно друг за другом в неко-


но разделить на два класса — структу- тором непрерывном отрезке массива,
ры последовательного и произвольно- причём порядок их расположения в
го доступа. В первых структурах доступ массиве соответствует их порядку в ре-
возможен к одному или нескольким ализуемой структуре. В ссылочных ре-
элементам. Обычно это элементы в на- ализациях элементы структуры данных
чале или конце структуры, а также ино- хранятся в совершенно произвольном,
гда вблизи некоторого «выделенного» хаотичном порядке. При этом вместе
места, отмеченного специальным «ука- с каждым элементом хранятся ссылки
зателем». Так, в случае очереди доступ- на один или несколько «соседних» эле-
ны лишь элементы в её начале и кон- ментов. В качестве ссылок могут высту-
це, в случае стека — элемент в его пать либо индексы ячеек массива, либо
вершине. В структурах произвольно- адреса памяти. Можно представить се-
го, или «прямого», доступа можно про- бе шпионскую сеть, в которой каждый
изводить действия с любыми элемен- участник знает лишь координаты одно-
тами структуры, при этом не требуется го или двух своих коллег. Контрразвед-
никаких переборов всех или части эле- чикам, чтобы обезвредить сеть, нужно
ментов. пройти последовательно по всей цепоч-
Большинство структур данных ре- ке, начиная с выявленного шпиона.
ализуется на базе массива. Все реали- Ссылочные реализации обладают