Г л а в а 7 формальные языки

§ 1.Анализ естественного языка

Испокон веков наука пользовалась естественными язы­ками, в частности — русским. При этом алгоритмы, допусти­мые для них исходные данные и получаемые результаты опи­сывались нередко тоже на них. Каждая отрасль науки при­спосабливала для себя некоторую часть языка, порой до­полняла или видоизменяла эту часть, но четкой ее границы не устанавливала. Читатель увидит дальше, что в теории алгоритмов и ее практических применениях естественным языком обойтись нельзя.

Пути развития языков можно проследить только на срав­нительно коротком промежутке времени, кончающемся се­годняшним днем. Их зарождение началось очень давно, по-видимому, еще до того, как далекие наши предки стали людьми.

Современные естественные языки существуют в трех формах: звуковой, жестовой и письменной. Наименее раз­вита жестовая форма. При воспитании нормального ребенка его обучают лишь звуковой и письменной формам. Жесто-вую форму в большей или меньшей степени он воспринимает от окружающих и усваивает самостоятельно. Правда, в некоторых условиях жесты начинают играть очень боль­шую роль, например, для глухонемых, которые лишены возможности пользоваться звуковым языком. Можно пред­полагать, что все три формы языка начали зарождаться од­новременно.

Наблюдая диких животных в естественных условиях, мы обнаруживаем зародыши звукового языка в виде на­бора различных по характеру звуков, издаваемых животны­ми: рычание или рев для устрашения, визг — как призыв на помощь (детеныш визжит, а мать его понимает и спешит к нему), звуковые призывы, которыми обмениваются сам­цы и самки. Стадные животные, как теперь установлено, пользуются довольно обширными системами звуковых сиг­налов.

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

Наука о языке очень многогранна и интересна. Но мы не можем уделить ей места в нашей книге. Да к тому же ав­тор не является специалистом в области лингвистики и не смог бы сообщить что-нибудь действительно ценное об этой науке. Нас интересует естественный язык только с одной точки зрения — его пригодности в теории алгоритмов.

Жестовую форму мы оставим в стороне, как наименее развитую. Остаются звуковая и письменная формы языка. Между этими двумя формами существует хорошо заметное соответствие, хотя и не взаимно однозначное. Сказанное устно может быть записано. Правда, устная речь богаче оттенками. Многие оттенки теряются при записи. Например, исчезают интонации. Для передачи интонаций в письменной форме языка применяют слишком небольшое число специ­альных знаков и приемов: многоточие, вопросительный знак, восклицательный знак. Иногда пользуются различными ви­дами шрифта или подчеркиванием отдельных слов. Интона­ция является важным элементом звукового языка. Напри­мер, четыре предложения: 1) «.Завтра я пойду гулять»; 2) «Завтра я пойду гулять»; 3) «Завтра я пойду гулять» и 4) «Завтра я пойду гулять» имеют различный смысл.

Несмотря на то, что письменный язык обладает мень­шими выразительными средствами, чем звуковой, значе­ние его очень велико. Только после того, как письменная форма языка получила высокое развитие благодаря письмен­ности, и особенно после изобретения книгопечатания, ес­тественный язык, в частности и звуковой, приобрел устой­чивость и четкость форм.

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

Завершенными конструкциями естественного языка яв­ляются предложения. При этом характерной особенностью языка является наличие смысла у его предложений.

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

В естественном языке предложения не являются мини­мальными элементами, наделенными смыслом. Например, некоторые отдельные слова имеют смысл. Слово «собака» имеет смысл. Слово «лаять» тоже имеет смысл. Предложе­ние «собака лает» имеет смысл, который определенным об­разом сконструирован из смыслов составляющих его слов. Но есть и другие слова, которые играют в языке определен­ную роль, но смысла не имеют. Например, слова: «и», «а», «который», «если», «то». Эти слова используются при кон­струировании предложений из слов. Но сами ничего не оз­начают.

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

В обычной грамматике применяют несколько другую терминологию, различая морфологию — раздел, изучающий правила построения слов, и синтаксис — изучающий пра­вила построения предложений из слов. Мы эти оба раздела объединили в один, назвав его синтаксисом.

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

Теперь рассмотрим вторую из неудобных для нас осо­бенностей естественного языка: его многозначность. Много­значность бывает синтаксическая и семантическая.

Синтаксическая многозначность выражается в том, что предложения, построенные по разным правилам, оказы­ваются одинаковыми между собой. Семантическая много­значность состоит в том, что предложение имеет много смыс­лов. В естественных языках смысл предложения связан со способом его построения и потому синтаксическая много­значность всегда сопровождается и семантической много­значностью. Приведем примеры: слово «коса» имеет много смыслов, и фраза «То, что я вижу — коса» тоже имеет мно­го смыслов. В данном случае неоднозначность — семанти­ческая. Слово «коса» означает: 1) сельскохозяйственное ору­дие; 2) сплетенные пряди волос на голове; 3) длинная узкая отмель, идущая от берега. Фраза «Косой шел с косой» ос­ложнена еще синтаксической многозначностью, потому что часть фразы «с косой» может происходить от слова «коса» и от слова «косая». Общеизвестная фраза, выражающая кре­до материалистов: «бытие определяет сознание» является примером синтаксически неоднозначного предложения. Подлежащим в этом предложении может быть первое слово: «бытие (кто, что) определяет (кого, что) сознание» — это результат применения одной цепочки синтаксических пра­вил, но не исключено, что подлежащим является последнее слово «(кого, что) бытие определяет (кто, что) сознание». Здесь уже применена другая цепочка синтаксических пра­вил. Мы обычно «правильно» понимаем приведенное пред­ложение, но только потому, что привлекаем для этого ряд сведений, не имеющих отношения к языку. Нежелатель­ность многозначности языка для теории алгоритмов не тре­бует дальнейших разъяснений.

Близким на первый взгляд к многозначности является свойство неточности. Но это другое свойство. Оно связано только с семантикой языка и далеко не всегда применение его ведет к отрицательным последствиям. Например, у И. С. Тургенева есть сравнение: «Девушка была похожа на цветок». Вряд ли в данном случае нужна большая точность смысла слова «цветок». Наверное, это сравнение проиграло бы, если бы мы уточнили название цветка, его цвет, разме­ры и т. п. После таких уточнений многие, вероятно, сочли бы девушку несимпатичной. Однако для формулировки алгоритмов неточность недопустима.

Приведем теперь примеры предложений языка, которые мы называем парадоксальными. Как, например, читатель расценит предложение «данное предложение ложно»? Его парадоксальность легко установить с помощью несложных рассуждений. Допустим, что это предложение истинно. Тог­да содержащееся в нем утверждение соответствует действи­тельности, и, следовательно, это предложение ложно. Пока что мы еще не установили его парадоксальности, а только доказали, что это предложение нельзя считать истинным. Предположим теперь, что оно ложно. Но это значит, что содержащееся в нем утверждение не соответствует действи­тельности. Неверно, что оно ложно. А если так, то оно ис­тинно. Из предположения, что оно ложно, мы сделали вы­вод, что оно истинно. Вот теперь парадоксальная ситуация налицо.

Приведем еще известный парадокс Ришара: «Наимень­шее из натуральных чисел, которые нельзя назвать с по­мощью меньше чем пятнадцати русских слов». Известно, что любое бесконечное подмножество множества натураль­ных чисел содержит в себе свое наименьшее число. Это факт, доказанный в математике. Нетрудно также убедиться в том, что существует подмножество натуральных чисел, ни одно из которых нельзя назвать с помощью меньше чем пятнадцати русских слов. Связано это с тем, что слов в рус­ском языке хотя и много, но число их конечно. Значит, и всевозможных групп, в которых не больше пятнадцати слов, тоже конечное число. Значит, существует среди таких чи­сел и наименьшее. Наша фраза именно его называет. Но сосчитаем, сколько в ней слов: четырнадцать! Она называет такое число, которое не может называть! Подобные пара­доксы не будут возникать, если мы будем обходиться та­кими языками, в которых невозможны предложения, со­держащие утверждения о них же самих.

Аналогичные предложения могут возникать и в тех слу­чаях, когда существует циклическая цепочка предложе­ний, в которых первое нечто утверждает о втором, вто­рое— о третьем и т. д., наконец последнее — о первом. Ограничиваясь кратчайшей цепочкой из двух, приведем пример такой парадоксальной цепочки: «Предложение, ко­торое получается из данного заменой слова «ложно» на сло­во «истинно», а слова «истинно» на слово «ложно», является ложным». Предложение, о котором идет речь выше, имеет вид: «предложение, которое получится из данного заменой слова «истинно» на слово «ложно», а слова «ложно» на сло­во «истинно», является истинным». В этом предложении, само собой разумеется, речь идет о первом. Но если первое истлнно, то второе ложно, а из ложности второго вытекает ложность и первого. Итак, из предположения, что первое предложение истинно, следует его ложность. Но, может быть, оно ложно? Тогда второе предложение должно быть истинным и в силу этого первое тоже должно быть истин­ным. Парадокс налицо!

Подобные парадоксы можно строить и тогда, когда име­ются два языка, причем на одном из них мы можем говорить о предложениях другого, а на другом — о предложениях первого. Если мы о некотором языке говорим на каком-то языке, то язык, о котором идет речь, называют языком-объектом, а язык, на котором говорят о языке-объекте, на­зывают метаязыком.

Возможность парадоксов возникает, грубо говоря, тог­да, когда язык-объект сам является для себя метаязыком. Почему же, скажет читатель, «грубо говоря»? Потому что язык может быть для самого себя метаязыком, но не допус­кать появления подобных парадоксов. Важно, чтобы в нем были невозможны циклические цепочки предложений, в которых первое предложение говорит о втором, второе — о третьем и т. д., а n-е —о первом. Если же мы имеем дело с несколькими языками, из которых второй является мета­языком для первого, третий—для второго и т. д., наконец n-й—для первого, то нужно, чтобы в нашей системе языков не возникали аналогичные замкнутые цепочки предложений. Из остальных характерных особенностей естественных языков нужно упомянуть еще две: зависимость смысла предложений от не относящихся к языку причин, например, от ситуации, сложившейся в обществе или реальном мире, и изменчивость языка, благодаря которому он всегда остает­ся живым, всегда служит потребностям общества. Эти его особенности уже не могут быть названы отрицательными, но они создают определенные трудности при использовании естественного языка в теории алгоритмов.

Наши рекомендации