Биографии Характеристики Анализ

Цикл обучения Дэвида Колба: введение. Они проявляются в виде

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

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

Подсказка 1: Позаботьтесь о вашем ремесле

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

Что отличает программиста-прагматика?

  • Опережающее восприятие и быстрая адаптация. У прагматиков инстинкт на полезные технологии и методы, которые они с удовольствием проверяют на практике. Они способны быстро схватывать новую информацию и объединять ее с уже имеющимися знаниями.
  • Любознательность. Прагматики задают вопросы, собирают мелкие факты, интересуются чужим опытом.
  • Критическое осмысление. Прагматики не принимают ничего на веру, не ознакомившись предварительно с фактами.
  • Реализм. Прагматики пытаются нащупать, где находятся подводные камни в каждой проблеме, с которой приходится сталкиваться.
  • Универсальность. Прагматики стремятся познакомиться с большим числом технологий и операционных систем и работают над тем, чтобы идти в ногу со временем.
Подсказка 2: Думайте о работе

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

Глава 1: Прагматическая философия

Прагматическое программирование ведет свое начало от философии прагматического мышления. В данной главе приводятся ее основные положения.

Подсказка 3: Представляйте варианты решения проблемы, а не отговорки

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

Принятие ответственности за результат предполагает готовность отчитываться. Если вы допустили ошибку (а мы все их допускаем), признайте ее честно и попытайтесь предложить варианты исправления. Не стоит перекладывать вину на коллег, партнеров, инструменты или выдумывать отговорки - это непродуктивная трата времени. То же относится и к ситуациям, когда вы сталкиваетесь в требованиями, которые не сможете удовлетворить: не говорите просто: «Это невозможно», а объясните, что нужно для спасения ситуации (дополнительные ресурсы, реорганизация и т.д.).


Подсказка 4: Не оставляйте разбитых окон

Энтропия – это термин из физики, обозначающий уровень «беспорядка» в системе. Энтропия во вселенной стремится к максимуму, и в разработке наблюдается та же закономерность. Увеличение степени беспорядка в программах на профессиональном жаргоне называется порчей программ. Существует много факторов, вносящих свой вклад в порчу программ, но наиболее важный из них - культура работы над проектом.

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

Подсказка 5: Будьте катализатором изменений

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

Подсказка 6: Следите за изменениями

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

Подсказка 7: Сделайте качество одним из пунктов требований

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

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

Подсказка 8: Регулярно инвестируйте в свой портфель знаний

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

Общие принципы таковы:

  1. Инвестируйте на регулярной основе . Даже если объем инвестиций невелик, эта привычка полезна сама по себе.
  2. Инвестируйте в различные сферы . Чем больше областей вы захватываете, тем большую ценность представляете. Как минимум, вы обязаны знать конкретные технологии, с которыми работаете в данный момент, от и до. Но не останавливайтесь на этом. Спрос на технологии и их применимость постоянно меняются. Чем больше инструментов у вас в арсенале вы освоите, тем легче вам будет приспособиться.
  3. Взвешивайте риски . Технологии существуют в некоем диапазоне – от рисковых и потенциально высокодоходных до низкорисковых и низкодоходных. Вкладывать все в рискованные варианты, курс которых может внезапно обвалиться, не лучшая идея, но и излишняя осторожность, не позволяющая воспользоваться выгодными возможностями – тоже. Лучше держаться средней линии.
  4. Покупайте подешевле, продавайте подороже . Освоить передовую технологию до того, как она станет популярной, - сложная задача, но оно того стоит: ранние последователи часто делают головокружительную карьеру.
  5. Регулярно проводите пересмотр и повторную балансировку . Программирование – очень динамичная отрасль. Будьте готовы периодически критически пересматривать свои активы: отказываться от устаревших вариантов, восстанавливать поднявшиеся в цене и восполнять пустующие ниши.
Процесс обучения расширит ваше мышление, открывая для вас новые возможности и новые пути в творчестве. Если вы узнали что-то новое, постарайтесь применить это знание к проекту, над которым вы работаете в настоящее время, насколько позволяют используемые технологии.

Подсказка 9: Критически анализируйте прочитанное и услышанное

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

Подсказка 10: Важно, что говорить и как говорить

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

Принципы эффективного общения:

  1. Знайте, что вы хотите сказать : Спланируйте, что будете говорить заранее, набросайте план и пару стратегий, как лучше донести мысль. Это работает и для составления документов, и для важных переговоров.
  2. Знайте вашу аудиторию : Вы общаетесь только в том случае, если передаете информацию. Для этого вам необходимо осознавать потребности, интересы и способности аудитории. Представляйте информацию так, чтобы она была понятна и интересна слушателю.
  3. Выбирайте подходящий момент : Важный момент для понимания аудитории - понимание ее сиюминутных приоритетов. То, что вы говорите, должно быть не только уместным по содержанию, но и своевременным. Если нужно, спросите прямо: «Удобно ли сейчас поговорить о…?»
  4. Выбирайте нужный стиль : Определите стиль подачи материала в соответствии с требованиями аудитории: кто-то предпочитает голые факты, кто-то - подробности, примеры и пространные введения. Опять же, если сомневаетесь, уточните.
  5. Встречают по одежке : Умейте должным образом «сервировать» свои идеи. В конечном документе должно быть выверено все: правописание, макет, стили текста, печатное оформление.
  6. Привлекайте свою аудиторию : По возможности привлекайте будущих читателей к процессу создания документов. Используйте их идеи. Так вы получите лучший результат и укрепите рабочие взаимоотношения.
  7. Умейте слушать : Вступайте с людьми в беседу, задавая вопросы или заставляя их подытожить сказанное вами. Превратите собрание в диалог, и вы лучше донесете то, что хотели сказать, а возможно, заодно почерпнете что-то для себя.
  8. Не обрывайте разговор: Всегда отвечайте на запросы и сообщения хотя бы обещанием вернуться к этому вопросу позже. Если вы держите людей в курсе, они чувствуют, что о них не забыли, и намного легче прощают случайные промахи.

Глава 2: Прагматический подход

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

Подсказка 11: Не повторяйтесь

Каждый фрагмент знания должен иметь единственное, однозначное, надежное представление в системе. Альтернативой является представление одного и того же предмета в нескольких местах. Это доставляет неудобства: если в одном месте что-то редактируется, нужно немедленно внести изменения во всех остальных, иначе программа рухнет под грузом противоречий. Рано или поздно вы что-нибудь забудете, это вопрос времени.

Большинство случаев дублирования подпадает под одну из следующих категорий:

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

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

Подсказка 13: Исключайте взаимодействие между объектами, не относящимися друг к другу

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

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

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

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

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


Подсказка 14: Не существует окончательных решений

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

Подсказка 15: Пользуйтесь трассирующими пулями, для того чтобы найти цель

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

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

Подсказка 16: Создавайте прототипы, чтобы учиться на них

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

Для прототипирования необязательно создавать полноценное рабочее приложение, иногда достаточно просто схемы на бумаге или доске. Если оно все-таки необходимо, то имеет смысл выбрать для этой цели язык очень высокого уровня – выше уровня языка, который используется остальной части проекта (язык типа Perl, Python или Tel). Язык сценариев высокого уровня позволяет опускать многие детали (включая указание типов данных) и при этом создавать функциональный, хотя неполный и медленный, фрагмент программы.

Подсказка 17: Пишите код с оглядкой на область применения

Языки программирования влияют на то, как вы думаете о проблеме и о взаимодействии с пользователем. В каждом языке имеются свои особенности, которые наталкивают на определенные решения или, наоборот, препятствуют им. Решение, создаваемое в стиле Lisp, отличается от решения, основанного на мышлении приверженца языка С, и наоборот. Верно и обратное – язык, отражающий специфику проблематики, с которой вы работаете, может, со своей стороны, предложить решение в области программирования.

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

Подсказка 18: Проводите оценки во избежание сюрпризов

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

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

Подсказка 19: Уточняйте график ведения проекта, если того требует код

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

Глава 3: Походный набор инструментов

Инструменты – средство усиления вашего таланта. Чем они лучше и чем лучше вы ими владеете, тем больше сможете сделать. Начните с универсального, «походного» набора инструментов, который будете использовать для всех базовых операций. Это набор будет пополняться по мере того, как вы копите опыт и сталкиваетесь со специфическими требованиями.

Подсказка 20: Сохраняйте информацию в формате простого текста

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

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

Простой текст - это:

  • Гарантия того, что данные не устареют
  • Более короткий путь к цели
  • Более простое тестирование
Подсказка 21: Используйте сильные стороны командных оболочек

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

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

Подсказка 22: Используйте один текстовый редактор, но по максимуму

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

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

  • Настраиваемость . Все свойства редактора должны настраиваться по вашему пожеланию, включая шрифты, цвета, размеры окон и горячие клавиши.
  • Расширяемость . Редактор не должен устареть, как только появится новый язык программирования. Он должен обладать способностью интегрироваться в любую компиляторную среду, которую вы используете в данный момент. У вас должна быть опция «обучить» его нюансам любого нового языка программирования или текстового формата.
  • Программируемость . Вы должны располагать возможностью запрограммировать редактор для осуществления сложных многоступенчатых операций.
Подсказка 23: Всегда используйте управление исходным кодом

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

Система управления исходным текстом дает много больше, чем просто отмену ошибочных действий. Хорошая система позволяет отслеживать изменения и дает ответы на характерные вопросы: «Кто внес изменения в данную строку текста? В чем состоит разница между версией, существующей на данный момент, и версией, существовавшей на прошлой неделе? Сколько строк текста программы были изменены в данной версии? Какие файлы изменяются чаще всего?». Подобная информация бесценна при отслеживании ошибок, аудите, оценке производительности и качества.


Как продвигается дебаггинг?

Подсказка 24: Занимайтесь устранением проблемы, а не обвинениями

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

Подсказка 25: Не паникуйте

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

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

Подсказка 26: Ищите ошибки вне пределов операционной системы

Исходите из предположения, что с операционной системой, базой данных и прочим ПО все в порядке. Если вы «внесли всего одно изменение», и система перестала работать, то, скорее всего, именно оно является причиной случившегося, каким бы абсурдным ни казалось это утверждение. Если не знаете, с чего начать, то всегда можете положиться на старый добрый двоичный поиск.

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

Подсказка 27: Не предполагайте – доказывайте

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

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

Подсказка 28: Изучите язык обработки текстов

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

Они также облегчают создание генераторов кода, которые будут рассмотрены далее.

Подсказка 29: Пишите код, который будет писать за вас код

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

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

Активные генераторы кода используются всякий раз, когда возникает необходимость в результатах их работы. Они могут быть крайне полезны для следования принципу «минимум дублирования». С помощью активного генератора кода вы можете использовать представление некоторого фрагмента знания и преобразовать его во все формы, необходимые вашему приложению. Это не является дублированием, поскольку эти формы являются расходным материалом и создаются генератором по мере необходимости. Когда нужно организовывать совместную работу двух совершенно разных сред, стоит подумать об использовании активных генераторов кода.

Глава 4: Прагматическая паранойя

Подсказка 30: Невозможно написать совершенную программу

За всю историю программирования никому не удалось написать ни одного совершенного фрагмента кода. Маловероятно, что вы станете первым. И когда вы примете это как факт, то перестанете тратить время и энергию впустую в погоне за призрачной мечтой.

Подсказка 31: Проектируйте в соответствии с контрактами

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

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

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

Подсказка 32: Пусть аварийное завершение работы программы произойдет как можно раньше

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

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

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

Всякий раз, когда вы начинаете думать в ключе: «Ну конечно, такого просто не может произойти», удостоверьтесь в этом с помощью кода. Самый простой способ осуществить это – использовать утверждения. В большинстве реализаций языков С и С++ имеется некоторая разновидность макроса assert или _assert, который осуществляет проверку логического условия. Эти макрокоманды могут представлять огромную ценность. Допустим, если указатель, передаваемый к вашей процедуре, ни в коем случае не должен принимать значение NULL, пропишите обязательное выполнение этого условия.

Утверждения не должны использоваться вместо реальной обработки ошибок. Они лишь осуществляют проверку на то, что никогда не должно произойти. Существует точка зрения, согласно которой утверждения нужны только в период отладки, а когда проект сдан, превращаются в мертвый груз. Это чересчур оптимистичный взгляд: тестирование скорее всего не выявит всего, что может произойти в реальных условиях. Даже при наличии проблем с производительностью, отключайте только те утверждения, которые действительно оказывают на нее серьезное воздействие.

Подсказка 34: Пользуйтесь исключениями только в исключительных случаях

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

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

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

Подсказка 35: Доводите до конца то, что начинаете

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

Если нескольким подпрограммам одновременно необходимо более одного ресурса, добавляется еще два правила:

  1. Освобождайте ресурсы в последовательности, обратной той, в которой происходило их распределение. При этом можно избежать появления «осиротевших» ресурсов, если один из них содержит ссылки на другой.
  2. При распределении одного и того же набора ресурсов в различных местах программы необходимо осуществлять эту операцию в одном и том же порядке. Это уменьшает вероятность взаимоблокировки.
В программах, которые используют динамические структуры данных, возникают моменты, когда основная схема распределения ресурсов не годится. В этом случае хитрость состоит в установлении семантического инварианта для выделения памяти.

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

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

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

Что касается взгляда зарубежных языковедов на предметную область компьютерной лингвистики, можно отметить, что большую организационную и научную работу проводит Ассоциация компьютерной лингвистики, которая имеет региональные структуры в нескольких странах мира . На официальном сайте этой организации дается общее определение - "computational linguistics is the scientific study of language from a computational perspective. Computational linguists are interested in providing computational models of various kinds of linguistic phenomena". Эта организация проводит международные конференции по компь Corpus Linguistics: Investigating language strucютерной лингвистике COLING. В США ежеквартально выходит журнал "Computational Linguistics". Соответствующая проблематика обычно бывает также широко представлена также на различных конференциях по искусственному интеллекту.

С точки зрения западного подхода основным направлением компьютерной лингвистики является Natural Language Processing (Автоматическая обработка естественного языка и речи). При анализе документов (архивов конференций, содержания базовых сайтов) Ассоциации Компьютерной лингвистики COLING было отмечено, что западные лингвисты включают следующие прикладные направления в область компьютерной лингвистики:

Computational Morphology and Syntax (Компьютерная морфология и синтаксис).

  • NLP (Автоматическая обработка языка и речи).
  • Digital Libraries (Электронные библиотеки).
  • Information Extraction (Извлечение информации).
  • Information Retrieval (Информационный поиск).
  • Knowledge Representation and Semantics (Представление знаний и семантика).
  • Machine Translation (Машинный перевод).
  • Speech Processing (Распознавание и синтез речи).
  • Statistical Language Processing (Статистическая обработка языка).
  • Summarization (Реферирование и аннотирование).

С точки зрения российского восприятия рассматриваемой проблемной области, то основную работу в этом направлении проводит российская ассоциация компьютерной лингвистики КОЛИНТ , на сайте которой можно ознакомиться со всеми научными докладами, представленными на конференции по проблемам компьютерной лингвистики. Хотя на этом сайте не представлено рубрикации проблемных задач, можно заметить, что российские лингвисты приоритетно выделяют такие направления как:

  • Машинный перевод;
  • Системы поиска и классификации;
  • Компьютерная лексикография;
  • Лингвистическая компьютерная семантика;
  • Корпусная лингвистика;

Формальные модели анализа и распознавания языковых структур.

Анализ существующих учебных пособий и справочников пока не дает полной и четкой картины об этом практическом направлении языкознания.

Большой энциклопедический словарь: Языкознание под редакцией Ярцевой В.Н. вообще не включает этот термин в словник.

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

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

Проблема определения границ предметной области также стоит перед разработчиками программ учебных дисциплин в области прикладной и компьютерной лингвистики. Для этих целей были проанализированы учебные программы по компьютерной лингвистике таких российских университетов, как Московский Государственный Университет, Московский Государственный Лингвистический Университет, Российский Государственный Университет.

Разработчики программы курса МГЛУ основное внимание уделяют компьютерному моделированию естественного языка в решении задач искусственного интеллекта, фундаментальным принципам моделирования языка, т.е. направлениям, которые связаны с моделированием общения человека и компьютера.

Разработчики программы курса в МГУ выделяют такие задачи и направления, как проблемы лингвистического обеспечения современных автоматизированных информационных систем, автоматическую обработку естественного языка, создание словарных и текстовых процессоров.

Основными направлениями, рассматриваемыми в курсе компьютерной лингвистики в РГУ являются: информационный поиск, машинный перевод, терминология, терминоведение, терминография, компьютерная лексикография, распознавание и синтез речи, проблемы обучения языку с помощью компьютера. Программа этого университета наиболее близка программе Ульяновского государственного технического университета.

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

1. АВТОМАТИЧЕСКОЙ ОБРАБОТКИ ЯЗЫКА (Language Processing), что будет включать задачи анализа и моделирования языковой структуры, а именно:

  • графематический/фонематический анализ языка;
  • морфологический анализ;
  • лексико-грамматический анализ языка;
  • синтаксический анализ, или парсинг;
  • анализ и моделирование семантической структуры;
  • задача синтеза языковых элементов, в т.ч. генерация текстов;
  • автоматическая лингвостатистика.
2. ПРИКЛАДНЫЕ НАПРАВЛЕНИЯ КОМПЬЮТЕРНОЙ ЛИНГВИСТИКИ, а именно:
  • машинный перевод;
  • распознавание и синтез речи;
  • разработка и использование искусственных языков, в том числе языков программирования, языков информационных систем;
  • компьютерная лексикография и терминография;
  • лингвистические основы информационного поиска;
  • автоматическое индексирование, реферирование и классификация текстов;
  • автоматический контент-анализ и авторизация текстов;
  • гипертекстовые технологии представления текста;
  • корпусная лингвистика;
  • компьютерная лингводидактика.

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

ЛИТЕРАТУРА

1. Баранов А.Н. Введение в прикладную лингвистику. - М.: Эдиториал УРСС, 2001. - 360 с.
2. Гринев С.В. Введение в терминологическую лексикографию. - М.,1986.-106с.
3. Марчук Ю.Н. Основы компьютерной лингвистики: Учебное пособие. - М., 1999. - 225 с.
4. Соснина Е.П. Введение в прикладную лингвистику: Учебное пособие. - Ульяновск: УлГТУ, 2000. - 46 с.
5. Ярцева В.Н. Языкознание. Большой энциклопедический словарь. - 2-е изд. - Я41 М.: Большая Российская энциклопедия, 1998. - 685 с.
6. http://www.aclweb.org
7. http://www.dialog-21.ru

Поворот в лингвистических исследованиях к прагматике языка, реальным условиям его функционирования, был закономерным и необходимым. Ведущие направления в науке о языке 60-х - 70-х годов, - лингвистический структурализм и логическая семантика имели один существенный недостаток -слабую связь с реальностью и практической деятельностью людей. Высказывание (и речь в целом) связывалось в этих теориях с условным "средним" носителем языка, и за пределами анализа оставались реальные, пользующиеся языком люди с их чувствами, взаимоотношениями, намерениями и целями {Гак 1998: 555). Постепенно пришло понимание, что для более полного объяснения языка, - как его устройства, так и особенностей употребления в речи - необходимо обратиться к факторам функционирования языковых единиц, т.е. к прагматике.

Выделение и формирование собственно лингвистической прагматики было стимулировано, с одной стороны идеями Ч.С. Пирса и ЧУ. Морриса, а с другой стороны опиралось на концепцию позднего Витгенштейна. По мнению В.В. Петрова, именно работы Л. Витгенштейна во многом способствовали трансформации прагматики, как части общей семиотической теории в самостоятельную область исследований, положив начало мощному потоку современных работ по прагматике {Петров 1987). Начало интенсивного развития прагматики условно относят к 1970 году - времени проведения Международного симпозиума по прагматике естественных языков (Булыгина 1981:333).

Прагматика как особое направление в исследовании языка с самого начала своего существования заявила о себе как очень обширная и весьма

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

Характеризуя задачи и проблемы прагматических исследований, Н.Д. Арутюнова и Е.В. Падучева отмечают, что они, постепенно расширяясь "обнаруживают тенденцию к стиранию границ между лингвистикой и смежными дисциплинами (психологией, социологией и этнографией) с одной стороны, и соседствующими разделами лингвистики (семантикой, риторикой, стилистикой) - с другой" {Арутюнова, Падучева 1985: 4).

Лингвистическая прагматика тесно связана с социолингвистикой и психолингвистикой. Наличие общих интересов у прагматики и социолингвистики настолько велико, что послужило причиной выделения в зарубежной науке даже отдельной дисциплины - социопрагматики (sociopragmatics), изучающей зависимость речевого общения от социальных факторов (АРСЛС 1996: 541; см. также Leech 1983:10).

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

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

Термин "прагматическое" (изучение языка) появился в 1920-х годах, - в форме прилагательного он был использован в 1923 году Б. Малиновским в приложении к книге Огдена и Ричардса "The Meaning of Meaning". Затем, и это положение в "истории прагматики" является общепринятым, термин "прагматика" создал Ч. Моррис в 1938 году для использования в известной триаде синтактики (синтаксиса), семантики и прагматики как частей семиотики (Nerlich & Clarke 1994; Nerlich 1995). Ч. Моррис, проводя исследования, ставившие целью изучение структуры знаковой ситуации (семиозиса) в динамическом, процессуальном аспекте, включая и участников этой ситуации, разграничил три вышеуказанных аспекта семиотики, определив прагматику как "отношение знаков к тем, кто их интерпретирует" {Morris 1938: 6). Однако, в дальнейшем, в связи с развитием взглядов исследователя, а также в связи с тем, что термин уже успел приобрести нежелательную двусмысленность и размытость, Моррис определяет прагматику как исследование "образования, использования и воздействия знаков (the origin, uses and effects of signs)" (Morris 1946: 219). Из этого определения следует, что внимание исследователя должно быть направлено на комплексное изучение трех взаимосвязанных процессов одной цепи - образования, использования (функционирования) и воздействия знаков. Созвучное определению Морриса понимание прагматики находим в работе Г. Клауса, который относит к прагматике "психологические и социальные аспекты употребления языковых знаков" (Клаус 1967: 22).

Интересным представляется видение прагматики, как оно представлено у Ч. Филлмора. Его определение достаточно подробно и звучит следующим образом: "Прагматика изучает трехмерное отношение, которое объединяет (1) языковые формы, (2) коммуникативные функции, которые эти формы способны выполнять с (3) контекстами или окружениями, в которых эти языковые формы могут иметь данные языковые функции" (цит. по Почепцов (мл.) 1984: 33).

Известным лингвистическим определением прагматики конца 70-х -начала 80-х годов стало определение, предложенное Р.С. Столнейкером. Прагматика по Столнейкеру занимается изучением речевых актов и тех контекстов, в которых они производятся и реализуются. Целью прагматики как дисциплины должно быть выделение классификации речевых актов и их продуктов, т.е. соответствующих высказываний (Stalnaker 1972).

Часто подчеркивается, что прагматика в значительной степени отвечает принципу деятельности, и таким образом вводит в описание языка акциональный (деятельностный) аспект. Соответствие прагматики требованиям принципа деятельности находит отражение в определении предмета прагматики, данном Э.С. Азнауровой. Предметом лингвистической прагматики, по ее мнению, является "изучение языка в аспекте человеческой деятельности в широком социальном контексте" (Азнаурова 1988: 8). 1 Изучение фактов языка в аспекте человеческой деятельности рассматривается как основной постулат прагматики. Но, как далее отмечает Э.С. Азнаурова, "широта постулата привела к значительному разбросу тем и проблем, обсуждаемых в рамках этого лингвистического направления, начиная от прагматической интерпретации языковых знаков и теории речевых актов, до изучения прагматических параметров литературной коммуникации и текста в его динамике, соотнесенного с "Я" творящего текст человека" (там же: 10).

Широкому пониманию прагматики, когда в сферу ее интереса включаются вопросы дейксиса, речевых актов, пресуппозиций, конверсационных импликатур, проблемы, связанные с интерпретацией речи, когда задачей прагматики как отдельной лингвистической науки называется "изучение соответствий между единицами языка и эффектами их использования" (Почепцов 1985: 16) или "изучение отношений между лингвистическими формами (сущностями) и пользователями этих форм" (Yule 1996: 4) противопоставлен подход, когда единственным реальным объектом исследования в сфере прагматики считается реализованная в тексте

Говоря о предмете прагматики, следует иметь в виду, что хотя с признанием за прагматикой статуса особой лингвистической дисциплины согласно большое количество лингвистов, эта позиция не является общепринятой. Ряд исследователей отказывает прагматике в обладании собственным предметом исследования и делает вывод о невозможности ее рассмотрения в качестве еще одного компонента теории языка. Ей предоставляется лишь статус особой перспективы (pragmatic perspective) в рассмотрении языковых явлений (см. Verschueren 1999). прагматическая установка, в самом общем виде определяемая как "материализованное в тексте осознанное намерение отправителя сообщения оказать соответствующее воздействие на получателя речи" (Наер 1985: 16). Сторонники такого понимания прагматики считают, что предлагаемое максимальное ограничение приложения прагматики позволяет выделить в языке сферу, связанную с целеполагающим речевым воздействием, аналогичным поступку {Гелия 1988: 189).

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

Прагматический подход к пониманию природы языка сформировался и продолжает развиваться под знаком включения в это понимание субъективности говорящего. Так, в концепции Ю.С. Степанова категория субъекта определяется как центральная категория современной прагматики (Степанов 1981; 1985; 2001). Одновременно, с все большей ясностью, осознается необходимость учитывать и фактор адресата, т.е. субъективность слушающего, что служит отправной точкой для разработки теории интерпретации речевых произведений, которые появляются в тех или иных коммуникативных контекстах, когда объектом интерпретации является то, что принято называть прагматическим значением высказывания (Арутюнова 1981).

Некоторые исследователи считают, что понятие интерпретации позволяет самым естественным образом формулировать наблюдения над свойствами языка и, так или иначе, присутствует в любом прагматическом исследовании (Демъянков 1981: 369). Третьей точкой зрения на значимость факторов субъекта речи и адресата является подход, определяющий траекторию прагматики как движение от эгоцентризма к принципу совокупной бинарности "по линии синтеза субъективности отправителя и субъективности адресата в единый и совокупно действующий фактор" (Сидоров 1995: 470).

Комплексный учет различных факторов, на которые делается акцент в прагматических исследованиях "позволяет глубже постичь специфику языка в его реальном употреблении" (Гак 1997: 361) и свидетельствует о незаурядном потенциале прагматики.

Как видно из приведенных выше определений, выведение на передний план той или иной группы факторов позволяет говорить о разных видах или вариантах прагматики. Еще в начале 1970-х годов Т.М. Дридзе с уверенностью предположила существование двух прагматик - "прагматики коммуникатора" и "прагматики реципиента" (Дридзе 1972: 34-35). Дж. Юл, уже в конце 1990-х годов конкретизирует понятие пользователя ("user") и дает емкое определение прагматики, которое учитывает позицию отправителя, позицию получателя и определяет разные варианты прагматики, в зависимости от ракурса исследования. Прагматика у Дж. Юла "имеет дело с исследованием значения, как оно сообщается говорящим (или пишущим) и интерпретируется слушающим (или читающим), что позволяет говорить о: (1) прагматике как значении говорящего (pragmatics is the study of speaker"s meaning); (2) прагматике контекстного значения (pragmatics is the study of contextual meaning); (3) прагматике импликации (pragmatics is the study of how more gets communicated than said); (4) прагматике выражения дистанционных отношений между участниками коммуникации (pragmatics is the study of the expression of relative distance) (Yule 1996: 3).

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

В связи с субъектом речи в прагматике изучаются: (1) явные и скрытые цели высказывания; (2) речевая тактика и типы речевого поведения; (3) правила разговора, подчиненные принципу сотрудничества; (4) установка говорящего или прагматическое значение высказывания; (5) референция говорящего; (6) прагматические пресуппозиции; (7) отношение говорящего к тому, что он сообщает.

В связи с адресатом речи рассматриваются: (1) интерпретация речи; (2) воздействие высказывания на адресата; (3) типы речевого реагирования на полученный стимул.

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

В связи с ситуацией общения в прагматике исследуются: (1) интерпретация дейктических знаков, а также индексальных компонентов в значении слов; (2) влияние речевой ситуации на тематику и формы коммуникации (Арутюнова 1990а: 390).

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

Обращение лингвистов к изучению функционирования языковых единиц в речи "позволяет говорить о прагматике в смысле коммуникативных свойств рассматриваемых единиц. Говорят о "прагматике слова", "прагматике предложения" (высказывания) и т.д. имея в виду, во-первых, особенности использования языковых сущностей в определенных прагматических ситуациях и условия функционирования и, во-вторых, реализацию значения в контексте под влиянием различных прагматических параметров. В первом случае можно вести речь о "внешней прагматике", а во втором - о "внутренней прагматике" (называемой иногда прагмасемантикой)" 1 (Горшунов 1999: 5-6). Мы считаем, что эксплицитно предлагаемое Ю.В. Горшуновым разделение прагматики на "внешнюю" и "внутреннюю", содержащееся имплицитно в целом ряде работ, представляет теоретический интерес и еще раз подтверждает все основания говорить о прагматическом значении, как части языкового значения.

Понимание "внутренней прагматики", как социально осознанной и закрепленной узусом на уровне системы прагматической информации, допускает троякое толкование: (1) семантическая информация рассматривается как часть информации коммуникативно-прагматической; (2) оба компонента мыслятся равноправными, автономными, но выполняющими свое назначение в тесной взаимосвязи друг с другом, либо (3) прагматическая информация считается встроенной в информацию семантическую (ср. Leech 1983: 6).

Первый подход (Малкольм и другие философы-оксфордцы) опирается на идеи позднего Витгенштейна, когда "для обширного класса случаев - хотя и не для всех, - в которых мы пользуемся словами, значение можно определить так: значение слова есть его употребление в языке" (цит. по Арутюнова 1976: 44). Теория значения при таком подходе теряет свой денотативный характер и становится коммуникативной теорией значения, которая была отнесена не только к смыслу высказывания, но и к значению входящих в него слов. Для лингвистики такого рода теория, в которой не делается принципиального различия между значением слова, предложения и высказывания едва ли может оказаться эффективной (см. подробнее Арутюнова 1976: 39-45).

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

М.В. Никитин определяет прагмасемантику как исследование той части совокупного значения высказываний и текстов, которая относится к интенциям речи, т.е. к тем прагматическим задачам, которые говорящий решает посредством речи (Никитин 1996. 619). Ср. определение языка толкований, используемого в Московской и Польской школах семантики как "прагмасемантического языка" в Санников 1989. См. также в этой связи Почещов (мл.) 1984; Stalnaker 1972.

Обусловленную сторону выраженных в них пропозиций. Некоторые исследователи определяют границы прагматики изучением тех аспектов значения, которые не охватываются семантической теорией (Levinson 1983). Вместе с тем предлагая такого рода разграничения, признается тот факт, что пока еще не разработана адекватная (семантическая или прагматическая) теория, которая позволяла бы однозначно ответить на вопрос, где кончается семантика и начинается прагматика (см., например, Булыгииа 1981; The Semantics/Pragmatics interface... 1999).

С другой стороны, многие исследователи указывают на то, что наиболее адекватные результаты могут быть достигнуты, если рассматривать семантику и прагматику как взаимосвязанные части одного целого: "Не существует семантики без прагматики - но не существует также и прагматики без семантики" (Кифер 1985: 347). П. Сгалл также отмечает, что все попытки изучения семантики, не принимая во внимание прагматику, обречены на неудачу (Sgall 1986: 45).

Большой интерес по поводу соотношения прагматики и семантики представляет точка зрения Ю.Д. Апресяна. Понимая прагматику достаточно широко, автор считает, что лингвистический интерес представляет лишь та прагматическая информация, которая лексикализована или грамматикализована, т.е. приобрела постоянный статус в языке {Апресян 1988; 1995а). Аналогичную точку зрения высказывает еще один представитель Московской школы семантики, - В.З. Санников, который под значением языковой единицы понимает её семантику и прагматику, трактуя последнюю как "сведения об отношении говорящего и слушающего к описываемым объектам и друг к другу" {Санников 1989: 84).

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

Самым радикальным образом решает проблему границы между семантикой и прагматикой А. Вежбицкая и ее последователи (Е.В. Падучева и др.). Сам этот вопрос, считает Вежбицкая, не имеет смысла, в связи с тем, что такой границы не существует: прагматика - это часть семантики, изучающая определенный круг языковых значений. В концепции Вежбицкой автономность прагматики по отношению к семантике оказывается мнимой, существует единая семантика прагматики, или просто прагматика - одна из частей, на которые автор делит задачу описания семантики языка. "Языковые значения прагматичны в принципе: с человеком, с речевой ситуацией связаны в языке не какие-нибудь особо выделенные экспрессивные элементы, а вообще значение подавляющего большинства слов и грамматических единиц" (Падучева 1996: 222). Границы прагматики, как они понимаются в работе Wierzbicka 1991, очерчиваются именно на основании характера значения, когда в компетенцию прагматики попадают те языковые элементы, у которых установочные компоненты (субъективные, экспрессивные и прочие) доминируют над денотативными, т.е. языковые элементы любого формального типа, объединенные лишь тем, что они несут по преимуществу "прагматическую информацию" (Падучева 1996: 223).

Известно, что со значениями языковых единиц тесно связаны выполняемые ими функции, так как изучение функций той или иной формы охватывает анализ ее значения: "Значение прямо подчинено той функции, которую выполняет соответствующая ему единица; оно формируется в зависимости от предназначения этой единицы" (Арутюнова 1976: 44). Различая семантические и структурные функции языка, некоторые лингвисты указывают на сложное соотношение между функциями семантическими и прагматическими . Последние могут рассматриваться как особый аспект семантических функций, суть которого заключается в передаче отношения содержания языковых единиц и высказывания в целом к участникам речевого акта и его условиям (Боидарко 1987: 8-9). То есть, провести четкую грань между семантикой и прагматикой довольно затруднительно. И та и другая (в той или иной степени) отражают антропоцентризм, пронизывающий современную науку, широко применяют экстралингвистические данные, должны принимать во внимание фактор контекста и др.

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

В понимании прагматики как части языкового значения мы придерживаемся прагматико-семантического подхода основанного на концепциях Ю.Д. Апресяна, А. Вежбицкой, В.И. Заботкиной.

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

Становление прагматики, вероятно, еще не завершилось. Остается еще немало дискуссионных вопросов. Это вопросы об отношении прагматики и

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

Глубоким и точным в этой связи представляется тезис Дж. Версурена о том, что измерение (dimension), которое прагматика призвана постичь и раскрыть, является пространством, созданным связью языка и человеческой жизнью в целом (Verschueren 1999: 6).

Историю термина «прагматика» (греч. «прагма» – дело, действие) принято вести от Ч.Морриса, выделившего в семиотике, теории знаковых систем, область прагматики наряду с областями семантики и синтактики .Как любая наука, прагматика имеет свой объект, предмет, субъект и метод исследования. Объектом исследования прагматики может быть речевой акт, слово, текст или совокупность текстов. Позже термин «прагматика» стал употребляться в языкознании, но не получил в среде лингвистов однозначного толкования.

Прагматика понималась как наука об употреблении языка , наука о языке в контексте, или наука о контекстуальности языка как явления , исследование языка (или любой другой системы коммуникации) с точки зрения преследуемых целей, различных способов их достижения и условий, при которых эти цели достигаются , теория интерпретации речевых актов , изучение языковых средств, служащих для обозначения различных аспектов интеракционального контекста, в котором выражается пропозиция . В отечественной лингвистике прагматика также понимается как теория, изучающая прагматические параметры литературной коммуникации [Арутюнова 1981], а также текста в его динамике, соотнесенного с «я» творящего текст человека [Степанов 1981, 1985].

Прагматика рассматривается как «значение минус условия истинности» ; это область изучения тех аспектов значения, которые не охватываются семантической теорией . Прагматика понимается как теория речевого воздействия [Киселева 1978]. Назначение прагматики видится в изучении языка как орудия общественной практики человека [Сусов 1974].

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

Серьезная трудность заключена во взаимоопределении понятий прагматики и семантики. По мнению Г.В.Колшанского: «…Любое речевое образование есть результат понятийной обработки какого-либо познавательного акта, что неизбежно и придает любому осмысленному высказыванию когнитивный характер, относимый обычно к семантике в широком смысле слова. В этом плане вполне понятно устремление лингвистов не отрывать фактор прагматического функционирования языка в целом от его содержательного характера и включать, таким образом, прагматику лишь как компонент в единую семантику языковых коммуникативных единиц» [Колшанский 1985: 175].

Как бы ни были разнообразны варианты определения прагматики, основным в них можно считать то, что они исходят из схемы Ч.Морриса. Одним из свойств знака является отношение между знаком и его пользователем – человеком. Человеческий фактор признается в качестве ведущего понятия прагмалингвистики [Арутюнова 1981 ; Булыгина 1981; Гак 1982; Степанов 1981, 1985 и другие]. Прагматика изучает все те условия, при которых человек использует языковые знаки. При этом под условиями пользования понимаются условия адекватного выбора и употребления языковых единиц с целью достижения конечной цели коммуникации – воздействия на партнера.

В современных исследованиях прагматики все большее значение приобретает субъект деятельности, который в прагматике понимается как «абстрактный индивид (виртуальный коммуникант), являющийся носителем комплекса характеристик: психологических, социальных, географических, национально-культурных и т.д.» [Багатурия 2004: 4]. Эта возрастающая роль субъекта определяет выбор методов исследования предмета прагматики. Если рассматривать прагматику как науку, изучающую язык с точки зрения «использующего его человека в аспекте выбора языковых единиц, ограничений на их употребление в социальном общении и эффекта воздействия на участников коммуникации» , следует отнести эту науку к категории практических, основанных на индуктивных методах познания действительности.

Деятельность по передаче человеком знакового сообщения изучается прежде всего как процесс коммуникации – всем циклом научных дисциплин, изучающих коммуникацию, и первые трудности в выделении собственно предмета прагматики возникают именно в этом отношении. Как считает В.Г.Колшанский: «Прагматика как отрасль, изучающая отношение человека к языковому знаку, вообще теряет свой смысл по той причине, что отношение к знаку не может выявляться в языке помимо пользования самим языком, что и является по определению коммуникацией» (выделено нами – А.Ш.) [Колшанский 1985: 131].

Нередко прагматику определяют посредством акцентуации на отдельном аспекте процесса коммуникации, а именно – на воздействии или коммуникативном воздействии : «…Независимо от определения прагматического аспекта языка, лейтмотивом остается, как правило, идея о воздействии на поведение человека с помощью вербальных средств речевых актов» [там же: 139].В настоящее время коммуникативное воздействие понимается достаточно широко. Например, Ю.К.Пирогова выделяет «…Воздействие на сознание путем выстраивания рациональной аргументации (убеждение), или воздействие на сознание через эмоциональную сферу, или воздействие на подсознание (суггестия), воздействие с помощью вербальных (речевое) или невербальных средств» [Пирогова 2001: 541]. Речевое воздействие в лингвистике изучается в связи с социальной стороной речевого общения [Федорова 1991: 46-50]. В теории речевой коммуникации речевое общение представляется в виде двухуровневого образования, включающего социологический и коммуникативный уровни. Под содержанием коммуникативного уровня понимается обмен информацией между собеседниками, а содержание социологического уровня предполагает социальное взаимодействие участников коммуникации, то есть их влияние на поведение, образ мыслей и чувства друг друга. Речевое воздействие определяется как речевая форма социального воздействия говорящего на слушающего в процессе общения [там же: 46].

Нам представляется, что выделение предмета прагматики текста СМК не может целиком строиться на понятии «воздействие». Ряд материалов СМК действительно имеет цель воздействовать на знания, отношения и намерения адресата, цель добиться нужной для адресанта оценки определенного объекта – например, в рекламе или в призыве проголосовать на выборах. Однако в текстах СМК можно найти и другие цели, например, ведущую цель «развлечь» или увлечь реципиента (привлечь его внимание). В этом случае издание удовлетворяет психическую потребность субъекта в развлечении, стимулируя потенциального покупателя приобретать все новые и новые выпуски развлекательных материалов издания. Так, в материалах «желтой» прессы в субъекте-реципиенте инициируются те состояния, за которые тот готов платить: страх, удивление, негодование, умиление и другие. Аналогичным образом художественно-публицистические тексты апеллируют к «чувству прекрасного», пониманием которого, с достаточной степенью вероятности, обладает аудитория этих текстов. В подобных случаях оснований говорить о «воздействии на знания, отношения и намерения адресата...» примерно столько же, сколько в случае трансляции по каналу СМК футбольного матча. Можно ли в развлекательных или в художественно-публицистических материалах найти признаки коммуникативного воздействия? В широком смысле, безусловно, можно. При этом мы рискуем опять вернуться к всеобъемлющим определениям (в данном случае – понятия воздействия) и потерять предмет исследования, необходимый нам для реализации в первую очередь методических задач. Например, по мнению Г.Г.Матвеевой: «…Воздействие, или управление поведением, является целью всякого (выделено нами – А.Ш.) общения. Общение – это социальная ориентация, в которой реализуется приспособительная функция человека. Она сводится к функциональным регулирующим целям. Цели эти имеют прямое и непрямое воздействие. При последнем тоже происходит управление, например при информировании, при выражении оценки, отношения, на основании которых тоже может быть принято решение о регуляции поведения» [Матвеева 1984: 44].

На наш взгляд, недопустимо смешивать понятия воздействия и пафоса СМК. Как отмечает Ю.В.Рождественский: «…Пафос массовой информации состоит в том, чтобы сделать сообщения о событиях (в принципе, не касающихся получателя) интересными для него, так чтобы он стал вовлеченным в эти события духовно. Поэтому массовая информация подбирает сообщения о событиях и комментирует их так, чтобы ее материалы вызывали интерес. Это достигается вызыванием эмоций, любознательности, страха и сострадания. Цель формирования такой эмоции состоит в том, чтобы включить получателя информации в массовые действия» [Рождественский 1997: 593].

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

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

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

Такие единицы выделяет Л.А.Киселева: «…Прагмемы – единицы разных уровней языка, обладающие прагматической заданностью: они предназначены для регуляции человеческого поведения. К ним относятся прежде всего те языковые единицы, которые отражают явления эмоционально-волевой сферы психики адресата и через нее – его интеллектуальной сферы (путем эмоционального внушения, заражения, убеждения) с целью регуляции его поведения. Это те единицы, которые принадлежат к ядру прагматического поля (например эмоциональные, эмоционально-оценочные и побудительные междометия, а также эмоционально-оценочные слова типа отвратительный, чудный, голубчик, прелесть и т. п.)» [Киселева 1978: 106].

Подобное направление исследования критикуется, в основном, за изолированность рассмотрения языковых единиц, за невыраженность связи знака с реципиентом. Как отмечает В.Н.Комиссаров: «…Нельзя привести никаких доказательств того, что так называемые эмоциональные слова (типа приводимых в подобных работах – безобразный, восхитительный и т.д.) непосредственно обращены к чистой психике, минуя нормальное интеллектуальное восприятие подобных единиц, имеющих очевидное понятийное содержание, относящееся к разряду так называемых оценочных как продукта мыслительной деятельности человека» [Комиссаров 1990: 140–141].

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

Итак, определим нашу собственную позицию в исследовании предмета прагматики : исследованию подлежит скорее не прагматический аспект языка, а прагматический аспект конкретного текста, входящего в совокупность текстов, в нашем случае – СМК. В совокупности текстов СМК необходимо выделить авторские интенции, имеющие устойчивый характер, повторяющиеся уровни воздействия и, безусловно, языковые средства, успешно реализующие установленный комплекс целей и задач. Фактор успешности языкового знака в условиях реализации комплекса целей и задач конкретного текста позволяет оставаться в рамках отношения «знак – реципиент», а не ограничиваться сугубо абстрактными отношениями знаков в системе языка.

Сама по себе логика выделения предмета прагматики в зависимости от сферы употребления текста (в социальной практике) не нова. Как пишет Г.В.Колшанский: «…Если понимать под прагматикой речевого общения достижение какой-либо цели – практической, теоретической, физической, интеллектуальной и т. д., то можно в какой-то степени говорить о характеристике использования человеком языкового знака, но только, видимо, в смысле «успешно» или «неуспешно» была осуществлена коммуникативная цель. Такой успех вербальной коммуникации может быть определен как для индивидуального речевого акта, так и в целом для некоторого социального коллектива. Вопрос о целесообразности разработки критериев «прагматической успешности» речевого акта может быть решен только в чисто прикладном плане и применительно к конкретным областям языкового общения человека » (выделено нами – А.Ш.) [Колшанский 1985: 149].

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

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

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

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

Как же учитываются в коммуникативной прагматике когнитивные процессы? В естественном языковом общении – при огромном и бесконечном разнообразии определяющих его факторов – число возможных «ходов» просто не может быть исчислено. Сложнейшая задача их исчисления упрощается лишь за счёт выявления некоторых рекуррентных, наиболее типичных структур, вызывающих определённые когнитивные реакции. Многие исследователи выделяют два основных аспекта в когнитивном анализе дискурса – структуры представления знаний и способы его концептуальной организации.


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

Для понимания текстов – как письменных, так и устных – имеет значение то, как «автор» послания и реципиент «моделируют» знания о мире. Общение оказывается возможным только при наличии в сознании каждого говорящего, в его картине мира неких смысловых, информационных «сгущений» («фреймов», «ментальных моделей», «сценариев», «моделей ситуации»). Ещё в 30-тых годах XX в. Ф.Бартлетт дал определение понятию «схемы информации», схемы, представленной в памяти. Это понятие также вошло в когнитивную психологию. Как уже говорилось, в компьютерной лингвистике используют понятия «сценарий», «фрейм», в лингвистике и социологии также используется понятие фрейма. Фреймы способствуют адекватной когнитивной обработке типичных ситуаций, связности текста, обеспечивают контекстные ожидания, дают возможность прогнозирования предстоящих событий на основе ранее встречавшихся. Коммуникативно-когнитивная прагматика, таким образом, предлагает некоторые способы изучения того, что делает тексты цельными и связными для воспринимающего.

При описании единичного речевого действия во внимание принимаются не только общие типичные схемы практической и коммуникативной деятельности, но и типичные схемы организации внутреннего мира говорящего, иначе говоря, представленный в его картине мира (социально и этнокультурно обусловленной, но индивидуальной по способу существования) набор познавательных структур. В основе порождения и понимания речи лежат не только абстрактные знания о стереотипных событиях и ситуациях – как в ментальных моделях, сценариях и фреймах, – но и личностные знания носителей языка, аккумулирующие их предшествовавший индивидуальный опыт, установки и намерения, чувства и эмоции. Т. ван Дейк формулирует это таким образом, что люди действуют не столько в реальном мире и говорят не столько о нем, сколько о субъективных моделях явлений и ситуаций действительности. В связи с этим можно привести цитату из книги известного отечественного лингвиста и филолога Б. Гаспарова: «Уникальность жизненно-языкового опыта каждого из нас все время относит нас друг от друга» (Б. Гаспаров. Язык, память, образ: Лингвистика языкового существования. М., 1996. С. 16).

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

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

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

Идеи Дж. Остина были развиты в работе Дж. Серля «Speech Acts», в которой говорение рассматривается как совершение определенных действий. Речь, по Серлю, имеет перформативный характер, целью ее является либо изменение в окружающей среде говорящего, либо в образе мыслей собеседника. «Иллокуционное намерение» говорящего – это то, что пытается передать последний при помощи языка, и соответственно, суть процесса коммуникации заключается в разгадывании этого намерения. Для объяснения понимания/непонимания в процессе общения был предложен термин – «успешный иллокуционный акт», суть которого в достижении определенного результата, ради которого он был задуман и осуществлен.

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

Общепризнан тот факт, что для различных типов языковых сообществ и социально-культурных слоёв общества характерно своеобразие использования языка. В процессе овладения контекстом произведения речи участники речевого события должны иметь общие фоновые знания как языкового, так и исторического, культурного, социального характера. И.В. Гюббенет определяет фоновые знания как социально-культурный фон, характеризующий воспринимаемую речь. В.С.Виноградов выделяет национальный аспект фоновых знаний, без исследования которых невозможно достижения полного и правильного понимания при обмене информацией. Для успешности коммуникации имеет значение схожесть менталитета, которая позволяет добиться минимальных изменений знаний в процессе общения. Исследователю коммуникации, таким образом, необходимо учитывать «фоновые знания», которые представляют собой обоюдное знание реалий говорящим и слушающим, что является основой языкового общения.

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

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