Текст книги "Алло, робот"
Автор книги: Александр Кондратов
сообщить о нарушении
Текущая страница: 3 (всего у книги 8 страниц)
Значение работы Буля, его «алгебры высказываний» часто сравнивают со значением работ гениального русского ученого Н. И. Лобачевского, создателя неевклидовой геометрии. И, как Лобачевского, Буля ждала такая же участь: потребовалось много лет, прежде чем был понят великий революционный смысл трудов этих ученых.
Работы Буля считались бесполезной «математической забавой». Лишь немногие выдающиеся умы того времени понимали, что математические символы в логике так же важны, как буквенные обозначения в алгебре или символические знаки в химии.
Больше того, русский ученый П. С. Эренферст уже в 1910 году сумел предвидеть, какое огромное значение может иметь алгебра Буля для техники. Он указал и конкретный пример ее применения – составление схем проводов телефонной станции.
Но век электроники тогда еще не наступил. И лишь в конце 30-х годов начался настоящий триумф «алгебры Буля». В 1938 году американский математик Клод Шеннон, тогда еще студент Массачусетского технологического института, доказал, что алгебра Буля применима для релейных и переключательных схем – основы автоматики.
Значения истинности и ложности соответствуют состояниям «включено» и «выключено», «единице» и «нулю». Таким образом, появилась возможность поручить электричеству не только вычислять, но и «рассуждать». Вычислительные машины стали «разумными».
«НУЛЬ ПИШЕМ, ОДИН В УМЕ...»
Работой машины обязательно управляет человек... Это казалось таким естественным, таким очевидным, что никому и в голову не приходило другое решение. Человек-оператор управляет машиной, производящей вычисления. Он распоряжается, какие действия арифметики должна она выполнять, устанавливает порядок этих действий. Скажем, велит сначала сложить два миллиарда семьсот миллионов триста восемьдесят тысяч восемьсот двадцать пять с подобным же числом-гигантом; затем прикажет перемножить полученную сумму на самое себя, то есть возвести в квадрат, и т. д.
Сложить или перемножить число-гигант для машины – дело даже не одной секунды, а одной сотой, тысячной, сто тысячной доли секунды. Сто тысяч арифметических операций в секунду могут делать современные машины. И даже такая фантастическая скорость действия для них не предел.
А человек? За секунду нервный импульс проходит два, три, десять, самое лучшее – немногим больше ста метров в секунду. Ничтожная скорость по сравнению с электрическим током!
Нервную клетку нельзя использовать больше, чем сто раз в секунду. А за эту же секунду «нервная клетка» вычислительной машины – электронная лампа – может переключиться, «сработать» миллион и даже больше раз!
Несоответствие в скорости явное. И оно было ясно видно, когда «тихоход»-оператор управлял машиной. Выполнив со сказочной быстротой одну часть программы, машина ждала своего медлительного хозяина, когда он укажет, что делать дальше. То, что экономилось на быстроте машинной работы, тратилось человеком-оператором.
Как же быть? Выход был найден благодаря идее одного из крупнейших математиков мира Джона фон Неймана. И эта простая и гениальная идея состояла в том, чтобы передать управление машиной самой же машине!
Теперь машина должна стать самоуправляющейся, не зависящей от оператора. Она будет знать, что ей делать, в каком порядке производить арифметические действия.
И не только порядок действия должна знать машина. Прежде она имела дело лишь с заданными числами, с условием задачи. Теперь же она должна иметь дело и с самими правилами решения этой задачи, с самой программой.
Программа, порядок действий хранился раньше в памяти человека. По мысли фон Неймана, программу нужно поместить в «память» машины. И вычислительная машина с молниеносной быстротой должна сама справляться в своей «памяти», что и как ей делать, чтобы выполнить задание до конца.
Но откуда у машин «память»? Если иметь в виду нашу, человеческую, живую память, то ее, конечно, у машины нет. Но сделать «механическую память» очень легко. Магнитофонные ленты, кинопленки, книги, записные книжки, «узелки на память», дневники, школьный журнал с отметками – все это виды «механической памяти», нужной человеку.
«Нуль пишем, один в уме»... Как часто приходится делать эта, решая задачи и примеры с вычислениями. Примерно так же поступает и вычислительная машина, «запоминая» предварительные результаты вычислений.
Но ведь программу действий машин можно записать в виде чисел, в виде набора единиц и нулей, И тогда мы получаем возможность предоставить машине «самостоятельность» в решении любой вычислительной или логической задачи. Конечно, «самостоятельность» эта условная.
Программу действий составляет человек, он заранее продумывает, что должна делать машина.
Программирование требует кропотливого и тщательного труда. Нужно продумать, как разложить на простые, элементарные действия сложнейшие математические задачи, как лучше использовать машинную «память» – какую часть «памяти» отвести для запоминания программы, какую для хранения предварительных результатов вычислений. Наконец, требуется необычайная аккуратность и тщательность в записи программы. Одна малейшая ошибка или описка – и программа не годна.
Приведем один любопытный пример. Кандидат физико-математических наук Р. X. Зарипов составил программу для электронной вычислительной машины, по которой машина должна была сочинять музыку. Разумеется, все исходные данные и все команды были записаны в виде чисел.
Вычислительная машина «Урал» начала свое «творчество». Она успешно «сочиняла» вальсы, но, как только дело доходило до маршей, получалась заминка. Марши «Урал» отказывался «сочинять»! Оказывается, в программе вместо числа 01 по ошибке было поставлено 011. И как только описка была исправлена, «Урал» начал «сочинять» марши столь же успешно, как и вальсы.
ПОИСКИ «САМОСТОЯТЕЛЬНОСТИ»
Нельзя ли сделать так, чтобы и при составлении программы использовать работу машины? Сделать так, чтобы не человек, а сама машина «обдумывала» свои действия? Или хотя бы проверяла составленную человеком программу – нет ли в ней ошибок?
Оказалось, что проверку программы машина делать может (ее называют «отладка программы»). На первом этапе пробуют, не «заблокируется» ли машина. Если мы неправильно написали какую-либо операцию, машина не сможет выполнить программу от начала до конца.
Затем проверяется порядок выполнения операций: не перепутано ли в программе сложение и деление, и т. п. Наконец, с большим вниманием проверяется полученный результат. Не потому, что если мы зададим машине сложить 3 и 2, то может получиться 1; машина производит арифметические действия с большой точностью. Но ведь может случиться, что программист по ошибке написал не 3 + 2, а 3 – 2. И тогда, разумеется, машина выдаст ответ: 3 – 2= 1.
Вот почему перед отладкой программы вычисляется либо вручную, либо на арифмометре какой-нибудь числовой пример. А затем его поручают решать машине – совпадет ли ее решение с нужным? Если нет, тогда ищут ошибку в программе.
Так, шаг за шагом, с помощью самой же машины, идет исправление ошибок, пока не получится правильная программа.
Ну, а как быть с составлением программы самой машиной? Этот вопрос решают сейчас ученые разных стран мира.
Для автоматического составления программы в машину вводится особая программа. Она называется программирующей. Используя ее, машина может самостоятельно составлять большое число различных программ.
Машинам пробуют поручать и более творческие задачи. Вот, например, какой эксперимент был проделан в Гарвардском университете (США). В машину ИБМ-704 было введено много различных программ, осмысленных и бессмысленных. И, кроме них, задача: обработать четырнадцатизначное число с помощью 63 последовательных операций.
Вычислительная машина перебирала, разумеется наугад, всевозможные программы. Первое время правильный результат получался примерно один раз из четырех сотен попыток. Перепробовав несколько сотен тысяч «попыток», машина сумела найти «самостоятельное» суждение о правильном методе решения. И затем она неуклонно следовала найденному ею методу. Если же задача менялась, то и машина, не отходя от правильного метода, несколько видоизменяла его.
В настоящее время возникло даже целое направление, называемое «Эвристическое программирование» (от греческого слова «эврика» – «открытие», «находка»). Главная задача такого программирования – найти принципы действия мозга, или, как говорят математики, алгоритмы, а затем заставить машину работать по этим «алгоритмам мозга» и даже улучшать их.
УНИВЕРСАЛЬНЫЙ ЯЗЫК МАШИНЫ
Программа – основной язык машины. Записанная в ячейках «памяти» машины, она заставляет электрический ток производить все те «кибернетические чудеса», о которых часто сообщают газеты и журналы.
Отдельная программа – особый язык. К тому же вычислительные машины различных типов имеют разные программы. Конечно, это создает большие трудности. Приобрел вычислительный центр новую машину – нужно разрабатывать новый язык: кропотливо составлять программу, проверять ее, делать отладку. А новая машина все это время стоит без «языка», без программы.
То же самое получается и со старыми машинами, если они различных типов; для них надо составлять программы на разных языках. Общение людей друг с другом сильно затруднено тем, что нет всеобщего языка, понятного всем людям. Неужели даже для машин нельзя создать универсальный язык? Ведь машинная «память» – не живая память людей. Да и нет у них национальных традиций, многовековой литературы и других причин, из-за которых нельзя ввести всемирный язык для всего человечества.
Оказывается, и для машин создать всеобщий язык не так-то просто. «Машинный язык есть точное отражение конструкции вычислительной машины, – пишут французы Жак и Жанна Пуайе в книге «Электронный язык». – Унифицировать машинные языки – это все равно, что унифицировать все типы вычислительных машин». А этого никто, разумеется, делать не станет, как никто не станет стричь под одну гребенку все типы самолетов или телевизоров.
И все же в последнее время делаются попытки создать если не всеобщий язык машин, то хотя бы для отдельных видов вычислительных работ. Например, для научных исследований или бухгалтерских задач.
В 1959 году в Лондоне была созвана специальная конференция, в которой приняли участие ученые различных стран. На этой конференции было решено разработать универсальный язык для решения задач, связанных с бухгалтерским учетом.
Создаются и такие всеобщие языки машин, в которых обобщаются только самые общие правила. Наибольшей популярностью пользуется так называемый язык «алгол» (сокращение английских слов «algorithmic language» – «алгоритмический язык»). Он-то, по-видимому, и послужит основой всеобщего машинного языка будущего. Ведь, по словам программистов, он «располагает хорошо определенным словарем основных понятий, характер которых не отражает ограничений, вносимых вычислительными машинами и чисто математическими определениями; его целью является достижение наибольшей простоты понимания».
В записи на языке «алгол» не допускается использование дробей, верхних и нижних индексов и т. п. Поэтому программа, изложенная на «алголе», представляет собой линейную последовательность знаков, запись «в строку». Это устраняет двусмысленное толкование программы и делает запись лаконичной, сжатой. Но главное преимущество такой линейной, «строчной» записи в том, что язык машин также линеен: информация в машину поступает как последовательный ряд сигналов; «верха» и «низа» машина не различает.
В «алголе» установлены строгие и четкие правила описания каждого этапа работы машины (совокупность этих правил образует синтаксис языка). Из простейших «букв» алфавита «алгола» можно получать все другие, более сложные сочетания, более сложные синтаксические единицы. Вот весь алфавит «алгола», перечень основных символов:
1. Строчные и прописные буквы латинского алфавита и прописные буквы русского алфавита.
2. Арабские цифры 0, 1,2, 3, 4, 5, 6, 7, 8, 9.
3. Логические значения: «истина» и «ложь».
4. «Ограничители»: знаки четырех правил арифметики +, —, X, квадратные и круглые скобки, некоторые знаки препинания.
С помощью этих знаков на «алголе» может быть выражена любая программа, «понятная» электронной вычислительной машине.
Во многих странах созданы группы, работающие над всеобщим языком «алгол». Но уже сейчас ясно, что этот язык будет не единственным универсальным языком машин, а лишь первым по времени и признанию. С каждым днем расширяется область применения вычислительных машин. Значит, появляется больше новых программ. Изменяются и совершенствуются способы вычисления на машинах. Техника тоже не стоит на месте, и появляются все более надежные и мощные «электронные мозги». Строительство вычислительных машин становится развитой областью промышленности.
Универсальный язык, чтобы не быть простой забавой ума, должен меняться, должен жить, расти вместе с ростом науки и техники. И есть надежда, что в недалеком будущем будет создан такой развитый язык машин, который можно будет применить к задачам любого типа, к машинам любой конструкции – настолько он будет всеобъемлющ и гибок.
А КАК ЖЕ ЯЗЫКИ ЛЮДЕЙ
Мы рассказали лишь о машинном языке, специальных или всеобщих программах, которые создаются для машин. Но ведь разговор человека с машиной не ограничивается электронным языком, «внутренним» языком вычислительной машины.
Человеку нужно ввести в «память» машин знания, накопленные различными науками, и тогда они станут надежным помощником и консультантом. Человеку хочется заставить машину быть переводчиком «с двунадесяти языков». Наконец, заставить ее «понимать по-человечески» и отдавать приказы не в виде сухих цифр и программ, а обычным человеческим языком. Пусть сама машина решает, как ей лучше выполнить то или иное задание.
Все эти задачи можно успешно решить, если пользоваться математикой. Позволяет это сделать новая научная дисциплина – теория информации.
ИНФОРМАЦИЯ И СВЯЗЬ
В САМОМ начале книги речь шла о различных языках, различных средствах связи между людьми. Особые «языки» есть, как известно, и у животных: муравьев, птиц, обезьян, дельфинов. Наконец, существует машинный «язык» – язык чисел и логических команд.
Примитивный «язык» животных, ограниченный «язык» машин, невероятно гибкий и всемогущий человеческий звуковой язык, другие, неязыковые средства связи – у всех есть нечто общее.
Во-первых, отправитель сообщения, будь это человек, дельфин или робот. Во-вторых, получатель этого сообщения. В-третьих, материальная среда, через которую сообщение передается, или, как говорят языком теории информации, канал сьязи. Без него невозможно никакое общение; даже сторонники телепатии (возможности передачи мысли на расстояние) признают, что и при таком средстве связи должна быть некая материальная среда, через которую передается сообщение.
Итак, получаем схему:
Она относится к любому средству связи, к любым собеседникам человеческого, животного или машинного происхождения. Если в глубинах космоса нас ждет встреча с неведомыми «братьями по разуму», то и тогда эта схема останется верна.
Впрочем, в нее нужно внести дополнение, прибавить еще один необходимый элемент – код.
Это слово, вероятно, вам знакомо. Знаменитая азбука Морзе является телеграфным кодом, о котором слышал любой школьник. Каждой букве русского языка соответствует набор точек и тире, например: букве «а» – точка и тире (.—), букве «е» – точка (.), букве «о» – три тире (– ),
и т. д.
Но эти точки и тире, кодирующие русские буквы, в свою очередь, кодируются на телеграфе. Точка – быстрый нажим ключа, короткий импульс тока; тире – нажим более медленный, импульс длительный.
Впрочем, и сами буквы также являются кодовыми знаками по отношению к нашей разговорной речи. Устную речь можно кодировать и другими способами, например, записывать на магнитофонную ленту или граммофонную пластинку. Наша речь будет тогда закодирована в виде звуковых волн.
Общение невозможно, если не пользоваться каким-либо способом кодирования. Более того, необходимо, чтобы и отправитель и получатель сообщения пользовались одним и тем же кодом. Вы слышите слово «я». Нельзя считать, что это местоимение первого лица, единственного числа. А вдруг человек говорит по-немецки? Ведь тогда это будет означать «да».
Еще более многогранный пример. Один и тот же кодовый знак «!» может значить: сильный ход в шахматной нотации; знак опасности – «осторожно!» – в дорожной сигнализации; восклицательный знак в правилах правописания; знак факториала в математике, например: 5! означает 1Х2ХЗХ4Х5, 21 – это 1X2, и т. п.
Мы приводили в начале главы схему. Теперь, пожалуй, стоит несколько уточнить ее. Существует некий отправитель сообщения. Имеется устройство, которое кодирует это сообщение. Есть канал связи, через который оно передается в пространстве и во времени.
И, наконец, есть получатель сообщения и декодирующее устройство, «понимающее» знаки кода. В итоге получаем:
Какими бы кодовыми знаками ни записывали знаменитую теорему, ее смысл остается постоянным.
Этот смысл, математическая истина, не имеет ничего общего ни с точками и тире азбуки Морзе, ни со стенографическими значками, ни с аккуратными буквами, выведенными в ученической тетради.
Мы можем пойти на футбольный матч и видеть его своими глазами. Можем смотреть его по телевизору, можем слушать репортаж по радио. О результатах матча можно узнать от товарища, прочесть в газете «Советский спорт» или «Пионерская правда». Если вас нет дома, приятель может записать репортаж на магнитофонную ленту. Несмотря на то что матч давно закончился, вы, вернувшись домой, можете переживать весь его ход, слушая запись. .. В какие бы формы ни облекалось сообщение – в импульсы тока или звуки речи, сумели ли мы посмотреть весь матч своими глазами или узнали только о счете, – мы получили информацию.
Это слово всем вам знакомо. Но в науке оно имеет более узкий смысл, чем в обыденной жизни. Ведь и в физике слово «сила» гораздо уже, чем житейское понятие «сила». Однако такое сужение ведет к тому, что мы получаем возможность измерять информацию числами (подобно тому как в физике мы можем измерять силу). И с помощью чисел – универсального языка – мы можем привлекать к передаче, приему и переработке информации наших железных помощников – машины.
ЕДИНИЦА ИЗМЕРЕНИЯ – БИТ
Вероятно, вы читали рассказ писателя Н. Носова «Телефон». Легко можно представить себе, что его герои затеяли такую игру: один из ребят бросал монету,
а затем передавал по телефону, ка«кая сторона ее – «герб» или «решка» – оказалась сверху.
Обе стороны, если монета без вмятин, равноправны. И получатель сообщения, сидящий у телефона в соседней квартире, не знает заранее, о «гербе» или «решке» сообщит ему бросающий монету отправитель сообщения.
Информация уничтожает незнание... В нашем случае это незнание о том, какая из сторон монеты выпала, ибо обе они равноправны, или, как говорят математики, равновероятны. Информация, которая содержится в сообщении о том, какая из сторон монеты выпала, равна одному биту (сокращенное английское название «двоичный разряд» – binary digest).
Бит – это количество информации, которое содержится в сообщении, где возможно два выбора, два исхода. И оба исхода равноправны, равновероятны. Сила измеряется в динах, энергия – в эргах, масса – в граммах, время – в секундах, информация же – в битах.
Мы уже рассказывали об удивительных свойствах «машинной», двоичной арифметики, где все числа записаны в виде нулей и единиц. Теперь же стоит ознакомиться и с «машинными логарифмами» – логарифмами, у которых основанием степени взято число 2, а не 10, как в обычной школьной математике. Логарифм 2 будет равен единице; эта величина и равна одному биту, единице измерения информации.
Логарифм – это показатель степени. 2 во второй степени, то есть 4, будет равно 2 битам. Это значит, что в сообщении о том, какой масти карта, вытащенная наугад из колоды, содержится 2 бита. 23, то есть 8, равно 3 битам, 24, то есть 16, равно 4 битам, и т. д. Шахматная доска состоит из 64 квадратов. 64 – это 2 в шестой степени. Значит, если нам сообщат об одном задуманном наугад квадрате, мы получим информацию в 6 бит.
Двоичный логарифм 1 равен нулю; двоичный логарифм 3 равен 1,58496; числа 5 – 2,32193; числа 6 – 2,58496; числа 7 – 2,80735, и так далее. Значит, информация в сообщении о том, какая из шести сторон кубика выпала, равна 2,58496 бита. Точно так же можно найти, пользуясь таблицей двоичных логарифмов, значение в битах любого числа выборов.
ЗАЧЕМ НУЖНЫ ЛОГАРИФМЫ!
Но, может быть, проще обходиться без логарифмов? Ведь и так ясно, что чем больше выборов, чем больше неопределенности, тем больше информации несет сообщение, уничтожающее, «снимающее» эту неопределенность. А количество информации измерять просто числом возможных выборов, и только.
Разумеется, можно выбрать и такую меру. Но у нее есть явное неудобство по сравнению с мерой логарифмической.
Информацию, выраженную в битах, можно складывать и вычитать. Скажем, в сообщении о выборе из восьми возможностей содержится на 2 бита больше, чем в сообщении о выборе из двух исходов, так как 3 бита минус 1 бит равно 2 битам. Информация многих кодовых знаков равна сумме информации, которую несет каждый знак. Но если мерять информацию не логарифмически, в битах, то это было бы не так. И вот почему.
Мы говорили о равноправных, равновероятных выборах. Например, каждая из сторон монеты выпадает с равной вероятностью. Допустим, нам десять раз сообщили, какая из сторон монеты выпала при десяти подбрасываниях. Информация об этом равна 10 битам. Но не «20 выборам», если принять за единицу измерения просто число выборов.
Теория вероятностей говорит: вероятности надо не складывать, а умножать. У нас произошло десять событий, десять результатов подбрасывания монеты. И что бы узнать количество информации, которое мы получили, нужно перемножить число выборов десять раз, если мы хотим получить измерение информации в «числе выборов», а не в битах.
Гораздо проще не умножать, а складывать числа, особенно большие. Логарифмы и позволяют делать это.
Преимущество логарифмической меры стало особенно ясно после того, как в 1947 году американец Клод Шеннон заложил основы современной теории информации.
До сих пор речь шла лишь о равноправных, равновероятных исходах. Если брать падение монеты или кубика, то это будет так. Но большинство выборов неравновероятны. Например, в вашем классе единицы и двойки – явление гораздо менее частое, чем пятерки или четверки. Температура ниже нуля – обычное явление в январе и очень редкое в июле. Слово «целую» и «приезжаю» можно встретить почти в любой телеграмме, а чтобы найти слова «сумма синусов», вам, вероятно, пришлось бы пересмотреть не одну тысячу телеграмм.
Как же быть с такими событиями, «равновероятными» кодовыми знаками? До Шеннона считалось, что измерить количество информации, которое несут эти знаки, нельзя. Ведь вероятность хорошей или плохой оценки зависит от успеваемости в классе, от того, насколько хорошо выучен урок, а не от математики. Точно так же и погода, и телеграммы, посылаемые с почтамта, и многие другие «неравновероятные» события.
Клод Шеннон показал, что с помощью теории вероятностей можно учесть и эти причины, казалось бы, совершенно не «подведомственные» математике. Например, если в классе из 100 отметок по физике 65 – пятерки, 22 – четверки, 9 – тройки, 4 – двойки и ни одной единицы, можно считать, что вероятность получения «отлично» равна 0,65, «хорошо» – 0,22, «посредственно» – 0,09, «плохо» – 0,04, «очень плохо» – 0,00.
Зная эти вероятности, можно найти количество информации, которое получает классный руководитель, узнавая об успеваемости по физике.
Давайте посчитаем сами. Всего возможно пять разных оценок, пять различных исходов. Двоичный логарифм 5 равен 2,32193. Но все оценки, как мы говорили, имеют разную вероятность. Ученик, скорее всего, получит 5 или 4, а не 3 или 2. Учитывая разную вероятность этих оценок, по формуле Шеннона можно найти количество информации более точно. Оно равно вероятности первой оценки (пятерки), умноженной на двоичный логарифм вероятности этой же оценки, плюс вероятность второй оценки, умноженной на двоичный логарифм вероятности этой же оценки,
и т. д.
В итоге получается 1,3831 бита двоичных единиц информации. Почти в два раза уменьшилось количество информации, когда мы учли «неравноправие» различных выборов!
Формула Шеннона может помочь найти количество информации при любом числе выборов. Лишь бы нам была известна вероятность их появления. А вероятность эту можно определить, производя статистические подсчеты.
Погода не зависит от математики. Но если вести регулярные и многолетние наблюдения, можно знать, как часто бывают в данной местности дождь, засушливые дни, заморозки, иными словами – «вероятность появления» дождя, заморозков, засушливых дней.
С помощью формулы Шеннона можно найти и количество информации, которое несет одна буква письменной речи. А ведь зная это, легко высчитать, сколько битов информации содержится в любом печатном тексте.
БИТЫ И БУКВЫ
В русском языке 33 буквы. Двоичный логарифм числа 33 равен 5,04439.
Значит, одна буква русского языка несет примерно 5,04 бита информации.
Буквы «е» и «ё» обычно принято считать одной буквой. В одну букву можно объединить твердый и мягкий знаки. А промежуток между словами, «пробел», наоборот, можно причислить к буквам. В итоге – 32 буквы, 32 кодовых знака.
Двоичный логарифм 32 равен 5. Значит, 5 бит информации несла бы буква, если бы все буквы нашего языка одинаково часто встречались в словах. Однако это далеко не так.
Средняя длина русского слова 5—6 букв. Значит, пробел, разделяющий слова, будет встречаться очень часто. Было подсчитано, что в тексте из 1000 букв пробел встречается в среднем 175 раз.
Зато буква «х» в тексте из 1000 букв будет встречаться 9 раз, «ш» и «ю» – по 6 раз, «щ» и «э» – по 3 раза, «ц» – 4 раза, «ф» – 2 раза. Чаще же всего после «нулевой буквы» – пробела, будет встречаться буква «о» – 90 раз, затем «е» вместе с «ё» – 72 раза, буквы «а» и «и» – по 62 раза каждая.
Из-за того, что буквы языка «неравноправны», одни встречаются очень часто, другие – редко, третьи – очень редко, информация, которую несет одна буква нашего языка, уменьшается с 5 бит до 4,35.
Но ведь с различной частотой встречаются и различные сочетания букв.
Например, «ж» или «и» в сочетании с буквой «ы» в грамотно написанном тексте не встретится ни разу, какой бы длинный отрезок его мы ни брали. Недаром мы учим: «жи», «ши» пиши через «и».
Точно так же не встретим мы сочетания трех букв «и» или четырех «е» (да и три буквы «е» подряд имеются лишь в очень немногих русских словах – «длинношеее», «змееед»).
Число русских слов ограниченно, хотя и очень велико. Не каждое сочетание букв образует слово. Математики даже подсчитали, что только две десятитысячных процента сочетаний букв образуют русские слова. Из миллиона сочетаний только два пригодны быть словами!
Кроме того, не всякие сочетания русских слов могут образовывать текст. Во-первых, они должны подчиняться правилам грамматики. Нельзя говорить «мы пошел лес в» или «я буду купил марки иностранную». А во-вторых, и это самое важное, речь должна быть осмысленной.
Передача смысла – главная цель человеческого общения.
А какой может быть смысл в фразе, хотя и соблюдающей правила грамматики, вроде «тщеславие яблока сомневалось в безумном разуме стула»?
Если бы наша речь была беспорядочным набором букв вроде ъбьроапришенгтраствстькаепр, одна буква русского языка несла бы 5 бит информации. Осмысленная же речь сокращает это количество в пять раз. Как показали опыты, буква русского языка несет не пять, а всего лишь 1 бит информации.
ЗАПАС ПРОЧНОСТИ» ЯЗЫКА
Почему же бессмысленный набор букв несет в пять раз больше информации, чем осмысленный текст? Как же это так получается?
Дело в том, что мы измеряем количество информации, а не ее смысл. С помощью формулы Шеннона мы вычисляем в битах «степень незнания», которую уничтожают получаемые нами кодовые знаки – буквы. Разумеется, наше незнание гораздо больше, когда мы принимаем беспорядочный набор букв вроде ъапроатшезщбльоцнстьнронрб, а не осмысленную речь. Мы не знаем, какая буква будет следующей в этом наборе. А в осмысленной речи легко догадаться, что после слов «он учится только на пять, он круглый...» последует слово «отличник», что после букв «учительн...» последует окончание «ица», или «ицы», или «ицей», но никак не «ая» или «ой».
Вот и получается, что по количеству «уничтожаемого незнания» бессмыслица стоит выше, чем осмысленный текст.
Конечно, в будущем ученые смогут измерять не только общее количество информации, но и величину смысла. Правда, сделать это невероятно трудно: слишком сложен наш человеческий язык, чтобы выразить в числах не только кодовые знаки, но и смысл сообщения.
И еще более трудно определить ценность информации.
В книге из 10 тысяч букв содержится 10 тысяч бит информации. Вполне может случиться, что вы эту книгу читали и даже знаете наизусть. Ваш приятель читал ее давно и поэтому плохо помнит. А другой приятель вообще первый раз в жизни слышит о ней. Сколько же информации получит каждый из вас?
Если мерять количество информации, то, разумеется, оно будет одинаково – 10 тысяч бит. Но вы не получите ровно ничего нового. Первый приятель лишь подновит забытые сведения. А второй и в самом деле получит уйму новых сведений. Разумеется, ценность информации для всех трех различна. Однако попробуйте выразить ее в числах!
Но даже ограниченное измерение информации, без учета ее смысла и ценности, позволяет делать интересные выводы и наблюдения.
Мы уже говорили, что примерно лишь 0,0002 процента всех возможных сочетаний русских букв образуют слова. Почему же такая неэкономия? Нельзя ли сделать так, чтобы каждая буква, каждое сочетание букв было самостоятельным словом? Например, чтобы русскими словами были не только буквы «а», или «я», или «и», но и «з», «п», «м», «ю» или сочетания букв вроде «птп», «мн», «ашяс» и т. д.
В принципе, конечно, можно. Hq тогда нельзя было бы заметить или исправить ошибку в языке.
Когда мы пишем «электростанця» вместо «электростанция», пропустив букву «и» в конце слова, то любой легко поймет смысл слова, а порой даже и не заметит ошибки.
В языке, где каждое сочетание букв имеет смысл, «электростанця» было бы не искаженной «электростанцией», а каким-то новым, самостоятельным словом. Еще хуже было бы с разговором – ведь малейшие колебания воздуха, изменение тембра голоса, смена настроения меняли бы звуковой состав речи и тем самым давали бы новые слова!