О соотношении естественного языка и формальной модели

Г.С.Цейтин

1. Формальные или машинные модели естественного языка, создаваемые в основном в расчете на использование в автоматических системах, рассматриваются обычно как весьма грубое приближение к столь сложному объекту, каким является реальный язык. Приступая к созданию модели, автор обычно сразу задается некоторыми ограничениями, заранее обуславливает, что модель и не будет стремиться учитывать те или иные языковые явления. Дополнительные отклонения модели от реального языка выявляются (и иногда исправляются) в ходе экспериментальной проверки модели.

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

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

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

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

2. Разработке формальной модели языка предшествует создание общей схемы модели: заранее фиксируется, какого рода формальные объекты и действия над ними будут возможны в модели. Такое ограничение в определенной мере неизбежно, поскольку без него невозможна экспериментальная проверка модели. Однако формальные модели обычно идут в этом отношении дальше, подчиняя единому плану не только технический аппарат модели, но и моделируемый фрагмент реального языка (подобно тому, как в контекстно свободной модели предполагается, что любое предложение языка должно выводиться из фиксированного исходного символа по правилам из фиксированного набора). С моделируемого фрагмента языка представление о единой глобальной схеме неявно переносится на язык вообще: считается, что, если данная система в чем-то описывает язык неудовлетворительно, то причина не в том, что в языке параллельно с данной системой существуют какие-то другие системы, а в том, что имеющаяся система требует дальнейшего усложнения и уточнения, а в пределе можно было бы представить себе единую систему, описывающую язык безошибочно.

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

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

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

Простейший случай специализированного языка - это использование небольшого набора готовых слов или фраз обычного языка для обозначения определенных стандартных действий или ситуаций (например, в надписях на панели управления). Обычно считается, что этот случай не имеет никакой научной ценности, поскольку здесь не отражены многие хорошо известные закономерности языка (словоизменение, синонимические преобразования и т.п.). Между тем представляет интерес сам факт использования элементов естественного языка в этой искусственной ситуации. Здесь дело не только в мнемоничности обозначений (т.е. в установлении соответствий между искусственным языком и родным языком оператора): иногда, наоборот, в профессиональный язык переходят аббревиатуры из искусственного языка; бывает также, что пользователи систем программирования сопротивляются замене привычной им иноязычной мнемоники на слова родного языка.

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

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

Сказанное относится не только к именованию функций целой системы и не только к функциям с двоичным выбором (использовать - не использовать). В более сложных системах те же вопросы возникают в связи с заданием характеристик отдельных объектов в виде набора атрибутов, каждому из которых приписывается некоторое значение (одно из фиксированного набора, или число, или что-нибудь более сложное). В операционных системах, например, в OS/360 IBM, для этой цели используются для одних атрибутов (позиционных) порядковые номера, для других (ключевых) - имена. Значения позиционных атрибутов выписываются подряд в порядке их номеров, ключевые атрибуты даются после них в произвольном порядке с указанием и имени атрибута, и его значения. В операционной системе есть много языковых подсистем (макрокоманд языка ассемблера, каталогизированных процедур языка управления заданиями и т.п.), Каждая из которых предусматривает свой набор атрибутов, причем количество позиционных атрибутов чаще всего не превышает двух - трех.

Широко распространено использование одинаковых имен ключевых атрибутов, а также групп одинаковых имен в различных подсистемах, что отражает сходство функций одинаково именуемых атрибутов и отношений между атрибутами внутри одинаково именуемых групп. В принципе есть возможность оперировать именами атрибутов, не зная в точности, к какой из подсистем они относятся. Эта возможность самой системой OS/360, по-видимому, не используется, но удобна для людей, работающих с системой. Для более сложных задач такое использование имени атрибута вне определившей его подсистемы играет существенную роль (такая возможность имеется, например, в языке УТОПИСТ системы программирования ПРИЗ).

Другим преимуществом ключевых атрибутов является то, что способ записи никак не изменяется, если задаются не все предусмотренные системой атрибуты, а лишь некоторые из них. Как правило, пользователь даже не знает полного списка атрибутов; таким образом, эта форма записи обеспечивает возможность расширения не только языка системы, но и индивидуального подъязыка ее пользователя.

4. Некоторый набор слов, используемый аналогичным образом в разных системах, может рассматриваться как самостоятельная языковая подсистема , вспомогательная по отношению к этим системам. Широкое распространение такой подсистемы может возвести ее в ранг общего правила, следование которому при разработке новых систем целесообразно, хотя и не обязательно. Если это оправдано особенностями разрабатываемой системы, ее автор может следовать общему правилу лишь частично или вообще сделать по-другому. Таким образом, исключение из правила здесь оказывается нормальным явлением и не воспринимается как "порча" правила.

Выделение такой вспомогательной подсистемы может породить попытки ее внеязыковой интерпретации в двух направлениях. Первое из них связано с желанием создать для этой подсистемы общий механизм, который применялся бы в реализации всех систем, использующих данную подсистему. Например, несколько машинных программ, использующих в своих языках входных данных общие элементы, могли бы использовать для их распознавания и обработки одну и ту же подпрограмму. На практике это не всегда целесообразно. Иногда оказывается, что, несмотря на значительную аналогию между несколькими программами на языковом уровне, общие элементы программ настолько рассредоточены или изменены в соответствии с назначением каждой отдельной программы, что строить общую подпрограмму не имеет никакого смысла. Кроме того, программы со сходными языками могут быть реализованы на совершенно различных машинах. В современном программировании существует тенденция к унификации языков разных машин, причем не только тех языков, которые, подобно Алголу, были задуманы как машинно независимые, но и тех, которые ориентированы непосредственно на ресурсы машины и операционной системы. Уже в значительной степени унифицированы способы представления чисел и текстовой информации на машинных носителях, интерфейс процессора с периферийными устройствами, процедуры телекоммуникационного обмена для ЭВМ и т.п. Другой пример - разработка единых обозначений органов управления для автомобилей различных моделей.

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

Рассмотрим для примера человека (или человекоподобного робота) с двумя руками и двумя ногами, каждую из которых можно поднять и опустить, согнуть и разогнуть. Каждая из конечностей обладает своей, отдельной реализацией для этой системы функций, одинаково называемых во всех четырех случаях. Можно подумать, что, помимо этого соответствия, существуют общие понятия "поднять" и т.д., и попытаться дать им независимые от конкретной реализации общие определения (например, разогнуть - сделать так, чтобы объект помещался внутри цилиндра наименьшего возможного диаметра). Однако подобные определения обычно оказываются очень условными и неточными (для приведенного примера, во-первых, надо предварительно выделить руку или ногу как самостоятельное физическое тело, во-вторых, если сильно согнутую руку разогнуть только до прямого угла в локтевом суставе, то это увеличит диаметр охватывающего цилиндра); главное же - то, что такие определения практически бесполезны и вряд ли имеют отношение к функционированию языка.

Другой пример - система направлений в пространстве (вверх - вниз, вправо - влево, вперед - назад), устанавливаемая независимо в каждой отдельной ситуации. Можно, конечно, попытаться сделать понятия верха и низа объективными, связав их с направлением гравитационного поля, однако интересно отметить, что в языке ничего не изменилось, когда люди узнали, что это направление различно в различных точках земного шара; более того, для ориентации в невесомости эту систему направлений пришлось ввести искусственно. Для направлений вправо - влево не удается дать даже такого "объективного" определения. С аналогичным успехом можно пытаться найти объективную основу для понятий открыть - закрыть (кран, дверь, государственную границу) или прийти - привести (домой, к выводу, в отчаяние).

Можно было бы (особенно в последних примерах) попытаться выделить у рассматриваемых слов по нескольку самостоятельных значений и определять каждое из них по отдельности, но это привело бы к сильному (возможно, необозримому) дроблению значений и, кроме того, не объяснило бы, почему во всех этих случаях мы можем пользоваться одним и тем же словом. Скорее, та легкость, с которой слова принимают в языке дополнительные значения, говорит о том, что для языка важнее соотношения между словами, чем реальные денотаты слов.

Разумеется, во всех приведенных примерах имеются в виду соотношения не только между явно указанными словами. В характеристику рассматриваемого значения слова открыть входит не только то, что открыть значит аннулировать результат действия закрыть, но и то, что открыть значит "сделать возможным проход чего-то через то, что открыто". Последнее соотношение также не может быть принято в качестве объективной интерпретации слова открыть, поскольку само слово проход имеет самые разнообразные реальные соответствия (через открытый вентиль электронной схемы проходят не материальные объекты, а сигналы, а через государственную границу можно пройти внутри территории страны, в аэропорту).

В языке математики общность вспомогательных языков подсистем иногда проявляется в создании новых абстрактных понятий, таких как группа или поле, имеющих под собой строгую аксиоматическую базу. Существенно, что эти понятия формируются не прямым обобщением, а задаются аксиоматически, т.е. снова через внутренние взаимоотношения. Вместе с тем, встречаются математические термины, употребление которых не столь регламентировано: например, термин сложение (и связанные с ним слагаемое, сумма, + , знак "сигма") употребляется для обозначения двухместных операций в самых различных системах. Как правило, сложение коммутативно, поскольку по традиции аддитивная запись не используется для операций, не удовлетворяющих этому закону.

Разновидностью попыток объективной интерпретации значений слов является их интерпретация посредством теоретико-множественных объектов. Например, со словом стол связывают множество всех столов, которые когда-либо были, есть или будут; предполагается, что каждый объект сам по себе обладает какими-то признаками, позволяющими включать или не включать его в это множество. Как всегда, можно найти сомнительные случаи (откидной стол в железнодорожном вагоне не имеет традиционных ножек, а табуретка имеет, и по высоте может быть не ниже детского стола). Предлагаемое теорией нечетких множеств объяснение, что некоторый объект может быть "на 62,5% столом", вряд ли поможет: важнее не то, каков объект сам по себе, а то, служит ли он столом в конкретной ситуации.

Для таких слов, как отец, интерпретация посредством "множества всех отцов" уже не предлагается; считается с самого начала, что таким словам соответствуют бинарные отношения (отец - сын или дочь). Однако при этом непонятно, почему, говоря отец и сын, мы не имеем в виду отца и сына одного и того же лица (которые были бы друг другу дедом и внуком) и почему мать семейства могут называть матерью не только ее дети, но и ее супруг. Интерпретация слов как постоянных обозначений сходных ролей в разных ситуациях объясняет такое употребление.

Теоретико-множественную интерпретацию значений слов можно развивать и далее, включая в рассмотрение все новые и новые переменные, вплоть до абстрактной переменной, изображающей в модальной логике "один из возможных миров". Однако даже на этом пути иногда приходится учитывать не объекты, а те слова, которые с ними связываются. Уточнение уже упоминавшихся понятий вправо - влево потребует учета положения тела наблюдателя в пространстве, положения объекта, от которого наблюдатель отсчитывает направление и, наконец, того, приписывает ли наблюдатель этому объекту его собственную ориентацию, т.е. того, как наблюдатель его называет. Для интерпретации посредством предикатов (хотя бы и нечетких) таких слов, как большой или хороший, аргументом придется сделать не только описываемый объект, но и слово, которым он назван (один и тот же человек может быть хорошим мастером, но плохим товарищем). Правильнее было бы считать, что здесь одно и то же слово хороший (вместе со всеми связями) используется независимо несколькими разными системами.

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

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

5. Рассмотрим подробнее, в каких отношениях могут находиться между собой подсистемы в более сложных языках, таких, как языки программирования и языки операционных систем (и вообще языки управления); аналогичные средства предлагается применять и для описания естественного языка. При этом для искусственных языков будем учитывать не только те подсистемы, которые отражены в исходном определении языка (новые идентификаторы, процедуры, макроопределения и т.п.). Подобные пользовательские расширения по существу создают возможность использования, хотя бы в малой степени, подсистем из естественного языка.

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

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

В алгорифмических языках аналогичный характер имеет отношение между процедурой и вызывающей программой, но там взаимодействие между ними ограничено жесткими рамками конструкции вызова: вызывающая программа должна сама определить, какие из ее объектов должны быть включены в вызов в качестве фактических параметров, а вызванная процедура находит среди них соответствия для своих формальных параметров на основе порядковых номеров (и иного доступа к объектам вызвавшей программы не имеет). Хотя такая жесткость и создает некоторые затруднения (например, при обнаружении процедурой нестандартной ситуации, реакция на которую должна зависеть от места ее вызова), алгорифмические языки (не считая Лиспа и основанных на нем языков) почти не выходят за эти рамки (разве что в некоторых встроенных средствах). Это связано с (несвойственной естественному языку) тенденцией к отграничению метаязыкового уровня от языкового, трансляции от счета с вынесением всей работы с именами на фазу трансляции. Языки операционных систем более либеральны в этом отношении, поскольку описывают ситуации, более близкие к жизни (и поскольку их разработка в меньшей степени испытала влияние теоретиков).

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

Далее необходимо уточнить, что представляют собой объекты и отношения, описываемые подсистемой. Имеются в виду не столько пассивные соотношения (типа оппозиций в лингвистике), сколько функционирование рассматриваемых систем. В применении к естественному языку постановка вопроса о функциональном моделировании встречается с определенными трудностями, так как прежде всего необходимо решить, какой вид языковой деятельности будет моделироваться: анализ, синтез, перевод на другой язык, ответы на вопросы, синонимические преобразования и т.п. Здесь такой вопрос не ставится. Рассматриваются любые операции, связанные с использованием языка, без попытки отграничения действий, основанных только на знании языка, от действий, требующих знания внеязыковой реальности. Предполагается, что при функционировании некоторой подсистемы в роли объектов могут выступать процедуры, имена, другие подсистемы, а в отдельных случаях и реальные объекты (так как в конечном случае функционирование будет проявляться во внешних действиях). Само функционирование подсистемы представляет собой выполнение одной из связанных с ней процедур - какой именно и в каком окружении, определяется предыдущей работой, а в конечном счете - поступившим запросом.

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

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

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

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

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

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

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

Классическим примером языка-оболочки служит язык ПЛ-1 (заметим, что в своих встроенных средствах он широко использует технику умолчания и, подобно естественному языку, более однороден на синтаксическом уровне, чем на семантическом); примером эквивалентным ему по возможностям языком-ядром является Алгол-68. Естественно, Алгол-68 превосходит ПЛ-1 по систематичности, точности и компактности описания, возможностям безошибочной и эффективной (особенно на фазе трансляции) реализации. Вместе с тем надо отметить, что разработка Алгол-68 потребовала значительно больших усилий гораздо более квалифицированного коллектива. Особенно трудно было вносить в язык изменения: переработка языка после появления первого варианта заняла более пяти лет, а многие полезные дополнения к языку так и остались не включенными; в настоящее время Алгол- 68 "заморожен" в неизменном состоянии. Кроме того, общепризнано, что формальное описание Алгол-68 непригодно для обучения начинающих; обучаемого вначале знакомят на примерах с различными частными случаями (т. е. формируют у него своего рода язык-оболочку) и лишь затем открывают ему стоящую за ними общую систему.

Это положение дел интересно сопоставлять в случае естественного языка с тем, что глобальное моделирование не приспособлено для описания эволюции языка (которая за длительный срок может привести к полной перестройке системы языка) или постепенного овладения языком. Предлагаемый здесь "децентрализованный" подход дает такую возможность, поскольку он не постулирует в языке доминирующей системы и позволяет говорить о локальных изменениях в подсистемах, их конкуренции, взаимовлиянии и сближении, о заимствовании подсистем и т.п.

8. Изображая язык в виде совокупности подсистем, не связанных формальной общей дисциплиной, естественно спросить, согласуется ли это с возможностями реализации языка в искусственной (или естественной) системе. Действительно, любая машинная реализация потребует от всех подсистем использования одной и той же системы машинных команд и операционной системы, общих структур данных и соглашений о связях и т.п. Соответственно, "человеческая" реализация языка накладывает ограничения, связанные с возможностями речевого и слухового аппарата, скоростью переработки информации в мозгу, объемом промежуточной "магазинной" памяти и т.п. Однако эти ограничения меняются от реализации к реализации: в письменном языке они отличаются от устного, различны для рукописи, типографского издания и телеграммы и т.д. Можно считать, что все такие всеобщие ограничения являются характеристикой реализации, а языку самому по себе не свойственны.

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

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

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