Biographies Characteristics Analysis

The David Kolb Learning Cycle: An Introduction. They appear in the form

» Andrew Hunt and David Thomas are probably known to everyone involved in programming, and many - mainly from mentions in collections and quotes in more contemporary articles. Considering that this collection practical advice for developers will soon celebrate its twentieth anniversary, the fact that it is still cited as a source of valuable information is respected. The secret is simple: the authors, although they emphasized the practical applicability of their tips, talked for the most part about the fundamental principles of building a workflow. Many of the technical points that are mentioned in the text are indeed outdated for a long time, but the basic approaches to development, testing, interaction within the team and with the audience remain relevant.

Below you will find a synopsis of the first four chapters; they are about the author's concept of self-education, the basics of a pragmatic approach to programming and the rules for selecting tools. The book is very convenient for "point" reading: the material is presented in the form of separate paragraphs-hints, provided with cross-references. Outside the scope of this abstract, there are examples from specific languages, analysis of cases from the author's practice, those very links, reinforcement exercises and some funny analogies that enliven the text - so I recommend that you read the original if some of the theses interest you. Enjoy reading!

Tip 1: Take care of your craft

There's no point in developing software if you don't care about the quality of the work. This should be done not only in the short term, in relation to specific projects, but also in the long term - by forming the right approach and principles of work.

What distinguishes a pragmatic programmer?

  • Anticipatory perception and rapid adaptation. Pragmatists have an instinct for useful technologies and methods that they are happy to test in practice. They are able to quickly grasp new information and combine it with existing knowledge.
  • Curiosity. Pragmatists ask questions, collect small facts, are interested in other people's experience.
  • Critical reflection. Pragmatists do not take anything for granted without first knowing the facts.
  • Realism. Pragmatists try to find where the pitfalls are in every problem they face.
  • Versatility. Pragmatists seek to become familiar with more technologies and operating systems and work to keep up with the times.
Tip 2: Think about work

When writing code, you should fully concentrate on what you are doing. Never go into autopilot mode. Think constantly, critically reflecting on your work in real time. This is called conscious programming. It will take some time and effort to master, but the reward will be the habit of constantly making small improvements, improving the quality of the code as a whole and reducing development time.

Chapter 1: Pragmatic Philosophy

Pragmatic programming originates from the philosophy of pragmatic thinking. This chapter provides its main provisions.

Tip 3: Present Solutions, Not Excuses

One of the cornerstones of pragmatic philosophy is the idea of ​​taking responsibility for oneself and for one's actions. A pragmatic programmer assumes that his career and results of his work depend primarily on him, and is not afraid to admit his ignorance or mistake.

Taking responsibility for results means being accountable. If you make a mistake (and we all do), admit it honestly and try to suggest ways to fix it. Do not shift the blame to colleagues, partners, tools or invent excuses - this is an unproductive waste of time. The same goes for situations where you're faced with demands that you can't meet: don't just say, "It's not possible," but explain what is needed to save the situation (additional resources, reorganization, etc.).


Tip 4: Don't Leave Broken Windows

Entropy is a physics term for the level of "disorder" in a system. Entropy in the universe tends to a maximum, and the same pattern is observed in development. Increasing the degree of disorder in programs in professional jargon is called software corruption. There are many factors that contribute to software corruption, but the most important of these is the culture of the project.

According to the broken windows theory, sloppy solutions and problem areas tend to multiply. Don't leave "broken windows" (bad designs, bugs, bad code) unattended. If there is no time for a proper repair, at least comment out the erroneous snippet, or display the message "Under construction", or use bogus data. It is necessary to take at least the slightest action to prevent further destruction, and to show that you are in control of the situation. Carelessness accelerates spoilage faster than any other factor.

Tip 5: Be a catalyst for change

If you see what needs to be done, do not wait for the initiative from others. Make a plan, work out the details - people will be more willing to support you if they see that the work has already begun.

Tip 6: Watch for changes

Keep your eyes on the big picture. Constantly observe what is happening around you, and not just what you are doing personally. Most disasters in code start as little things that build up until one day the project goes haywire. Step by step, the system deviates from the requirements, the code is overgrown with "patches" until nothing remains of the original. Often, it is the accumulated little things that lead to the destruction of morality and teams. But if you capture this process on early stages and immediately take action (see the previous paragraph), you can get off with a little blood.

Tip 7: Make quality a requirement

Quality should be a contractual clause in the contract you make with your users. Of course, ideally it should be the maximum, but often you will find yourself in situations where you have to compromise due to tight deadlines or lack of resources. And here it is useful to accustom yourself to creating acceptable programs. "Acceptable" does not mean "done": you just give users a say in determining the quality threshold that can be considered acceptable. Surprisingly, many will prefer to use programs with some flaws today, instead of waiting a year for a multimedia version to be released.

Also, programs sometimes get better by shortening the incubation period. In development, there is a problem of "resurfacing" - external restrictions help to stop in time in pursuit of perfection.

Tip 8: Invest in your knowledge portfolio regularly

The portfolio of knowledge refers to everything that the programmer knows about the development in his field, as well as the experience he has accumulated. Knowledge portfolio management is very similar to financial portfolio management:

The general principles are:

  1. Invest regularly. Even if the amount of investment is small, this habit is useful in itself.
  2. Invest in different areas. How more areas you capture, the more valuable you are. At a minimum, you must know the specific technologies that you are currently working with, inside and out. But don't stop there. The demand for technology and its applicability is constantly changing. The more tools you have in your arsenal you master, the easier it will be for you to adapt.
  3. Weigh the Risks. Technologies exist in a certain range - from risky and potentially high-return to low-risk and low-return. Investing everything in risky options, the rate of which can suddenly collapse, is not best idea, but also excessive caution that does not allow you to take advantage of profitable opportunities - too. It is better to stick to the middle line.
  4. Buy low, sell high. Mastering cutting-edge technology before it becomes popular is a difficult task, but it's worth it: early adopters often go on to exhilarating careers.
  5. Review and rebalance regularly. Programming is a very dynamic industry. Be prepared to periodically critically review your assets: abandon outdated options, restore those that have risen in price and fill empty niches.
The learning process will expand your thinking, opening up new possibilities for you and new creative paths. If you have learned something new, try to apply this knowledge to the project you are currently working on, to the best of your technology.

Tip 9: Critically analyze what you read and hear

You need to make sure that the knowledge in your portfolio is accurate, that it is not misrepresented by those who benefit from it, and that its value is not inflated by hype. Beware of fanatics who insist that their dogma provides the only correct answer - it is quite possible that in your project it does not apply.

Tip 10: What to say and how to say is important

Most of a programmer's day is spent in communication - with the team, management, users, future generations of developers through documentation and comments in the code. Therefore, it is necessary to master its art. The more effective this communication, the greater your ability to turn ideas into action.

Principles of effective communication:

  1. Know what you want to say: Plan what you will say in advance, sketch out a plan and a couple of strategies for how best to get the message across. This works both for drafting documents and for important negotiations.
  2. Know Your Audience: You communicate only if you convey information. To do this, you need to be aware of the needs, interests and abilities of the audience. Present information in a way that is understandable and interesting to the listener.
  3. Choose the Right Moment: Important point to understand the audience - understanding its momentary priorities. What you say should be not only relevant in content, but also timely. If necessary, ask directly: "Is it convenient to talk about ...?"
  4. Choose the right style: Determine the style of presentation of the material in accordance with the requirements of the audience: someone prefers bare facts, someone prefers details, examples and lengthy introductions. Again, if in doubt, ask.
  5. Met by clothes: Know how to properly "serve" your ideas. Everything must be verified in the final document: spelling, layout, text styles, printing design.
  6. Engage your audience: If possible, involve future readers in the process of creating documents. Use their ideas. This way you will get the best result and strengthen working relationships.
  7. Know how to listen: Engage people in conversation by asking questions or getting them to summarize what you have said. Turn the meeting into a dialogue, and you will better convey what you wanted to say, and perhaps learn something for yourself at the same time.
  8. Keep the conversation going: Always respond to requests and messages with at least a promise to come back to the subject later. If you keep people in the loop, they feel like they have not been forgotten, and it's much easier to forgive the occasional slip up.

Chapter 2: Pragmatic Approach

There are a number of tips and tricks that apply to all levels of software development - ideas that can be considered axioms, processes that are almost universal. This chapter provides an overview of these ideas and processes.

Tip 11: Don't repeat yourself

Each piece of knowledge must have a unique, unambiguous, reliable representation in the system. An alternative is to present the same item in multiple places. This is inconvenient: if something is edited in one place, changes must be made immediately in all the others, otherwise the program will collapse under the weight of contradictions. Sooner or later you will forget something, it is a matter of time.

Most duplications fall into one of the following categories:

  • Imposed duplication. Developers feel that they have no choice - duplication is necessary for some external reasons: documentation standards, the combination of several platforms with different environments, languages ​​\u200b\u200band libraries, the specifics of the language itself. In some cases, you can only accept, but in others you can still find workarounds with filters, active code generators, metadata, and the right approach to commenting.
  • Unintentional duplication. Developers do not realize that they are duplicating information. This usually happens as a result of errors or inconsistencies at a deep level (for example, the same attribute is written in several objects), and the elimination requires reorganization. In some of these cases, it is permissible to break the principle for the sake of performance, but only within the class.
  • Eager duplication. Developers do duplication because they think it's easier. This usually happens by copying pieces of code. It all comes down to self-discipline - not too lazy to spend a few extra seconds to avoid headaches in the future.
  • Collective duplication. A piece of information is duplicated by several members of the same development team in the course of work. The most difficult case in terms of both detection and resolution. At a high level, the problem is solved through a clear design solution, a strong technical manager, and a clear division of responsibilities. On modular - through active communication between developers: create groups for communication, create a public place in the directory to store service routines and scripts, encourage the study and discussion of someone else's code.
Tip 12: Make the program easy to reuse

Try to create an environment where it is easier to find and reuse existing material than to create it yourself from scratch. This helps reduce the risk of duplication. Just keep in mind that if reuse is difficult, people won't do it.

Tip 13: Avoid interaction between objects that are not related to each other

This rule is also called the principle of orthogonality. Two or more objects are orthogonal if changes made to one of them do not affect the others. There are two big benefits to this scheme: increased productivity and reduced risk.

When changes in the system are localized, development and testing times are reduced. Once a small self-contained component is designed, implemented, and tested, it can simply be forgotten, instead of constantly making changes as new fragments are added to the code.

The orthogonal approach also encourages component reuse. The less coupling in systems, the easier it is to reconfigure or reengineer.

The reduction in risk is due to the fact that erroneous fragments are isolated and do not affect the entire system; accordingly, it is also easier to fix or replace them. As a result, the system becomes more stable - problem areas remain areas. It also helps that unit-level testing is usually done more thoroughly.

The principle of orthogonality should not be observed at the level of individual technologies, but should cover all processes: from design to selection of tools, from testing to product management. It minimizes duplication and makes the system more flexible and transparent.


Tip 14: There are no final solutions

Requirements, users and hardware change faster than we develop software. Therefore, you should always be prepared for the fact that any decision you make (not only within the code, but also, for example, when choosing a third-party tool, architectural pattern, deployment model) will have to be reconsidered in the future under the influence external factors. The principle of "minimum duplication", the principle of decoupling and the use of metadata make the system more reversible.

Tip 15: Use tracer bullets to find your target

Breaking the metaphor: when creating a new product, the development team often works blindly, working with unfamiliar techniques, languages ​​and libraries. The end result can be predicted either by hard prediction based on a very detailed analysis of technologies, or by using "tracing" - creating a series of simplified, trial, incrementally improved working versions to put together the components of the system and check how they work together.

An alternative to this approach - the isolated development of individual modules, which are assembled together at the final stage and then already tested at the system level - is more cumbersome and less convenient. Among other things, the tracing method gives you a draft version of the product (you can present it to users to show them the essence of the project, get them interested and get feedback); smoother and more focused integration of ready-made new modules into the environment and the ability to immediately identify and easily eliminate errors in interaction.

Tip 16: Prototype to learn from

Unlike the test versions described above, prototypes have a narrower focus: they are created to work out a few specific characteristics and require significantly less resource. All details that are not relevant to the problem under consideration are omitted, even if they are extremely important for the operation of the system as a whole. When working on a prototype, correctness, completeness, reliability, and style can be neglected.

For prototyping, it is not necessary to create a full-fledged working application, sometimes just a diagram on paper or a board is enough. If it is nevertheless necessary, then it makes sense to choose a language very high level- above the level of the language used by the rest of the project (a language like Perl, Python, or Tel). A high-level scripting language allows you to omit many details (including specifying data types) and still create a functional, albeit incomplete and slow, program fragment.

Tip 17: Code with Scope in Mind

Programming languages ​​affect how you think about a problem and how you interact with the user. Each language has its own characteristics that lead to certain solutions or, conversely, prevent them. A Lisp-style solution is different from a C-thinking solution, and vice versa. The reverse is also true - a language that reflects the specifics of the problem you are working with may, in turn, offer a solution in the field of programming.

By listening to the requirements of users, you can understand which language would be easiest to translate them into at a higher, abstract level. Different types of users (final - the audience for which you are doing the project, and secondary - managers, future generations of developers) may require the generation of their own mini-environments and languages.

Tip 18: Evaluate to Avoid Surprises

Giving a rough estimate is a skill, and an essential part of this skill is the ability to determine acceptable accuracy based on context. The unit of measurement you choose should also reflect the degree of accuracy (compare: a task will take two weeks and a task will take 75 working hours).

The assessment is carried out in several stages. First we get to the bottom question asked and evaluate the scale subject area; moreover, the very wording of the question often leads to an answer. Then a model of the problem is built - an approximate sequence of stages that will need to go through when solving it. The model is decomposed into components, for each of which a significance parameter is set. Based on these parameters and approximate values, calculations are made. The last step is carried out after the fact - the forecast is compared with the actual state of affairs, in case of serious deviations, work is carried out on the errors.

Tip 19: Refine the project schedule if the code requires it

This may not be to the liking of management, who usually wants the numbers to be announced before the start of the project, and not subject to change. You will have to convey to them that the schedule for completing tasks will be determined by the productivity of the team and the circumstances. By formalizing this procedure and refining the schedule during each iteration, you can give management the most accurate time estimates for each stage.

Chapter 3: Camping Toolkit

Tools are a means to enhance your talent. The better they are and the better you own them, the more you can do. Start with a versatile, "traveling" toolbox that you will use for everyone. basic operations. This set will grow as you gain experience and meet specific requirements.

Tip 20: Save Information in Plain Text Format

The best format for the permanent storage of knowledge is plain text, which allows information to be processed both manually and with the help of any available tools. The problem with most binary formats is that the context needed to understand the data is separate from the data itself. And with plain text that can be read without decryption, you can create a self-documenting data stream independent of the program that generated it.

Plain text has two main disadvantages: (1) it can take up more storage space than a compressed binary format, and (2) from a computational point of view, interpretation and processing of a plain text file can be slower. Depending on the application, one or both of the above situations may be unacceptable. But even in these cases, it is acceptable to save metadata that will describe the original data in plain text format.

Plain text is:

  • Ensure that data is not out of date
  • Shorter way to the goal
  • Easier testing
Tip 21: Use the Strengths of Shells

If you work only with a graphical interface, then you don’t use all the features provided by the operating system - you don’t automate typical tasks, you don’t use the available tools to their full potential, you don’t combine different solutions to create specialized macro tools. The advantage of the graphical user interface is that they work on the principle of "what you see is what you get." The main drawback of the graphical interface can be formulated as follows: "you get only what you see." The scope of such tools is usually limited to the tasks for which it was originally conceived. If you want to go beyond this pattern (and sooner or later you will), you are out of the way with them.

Put in a little effort to get familiar with the shell and you'll be surprised how much more productive your work becomes. Line commands can be confusing, but they are powerful and concise. By bundling them into script files, you can create sequences of commands to automate commonly used procedures.

Tip 22: Use one text editor, but make the most of it

Word processing should take a minimum of effort, so it is better to master a single editor to perfection and use it to solve all editing tasks: working with program text, documentation, notes, system administration, etc. It is difficult to be an expert at once in several software environments, bring the work with each to a reflex, given that each of them has its own set of commands and standards. Trying to combine several editors, you run the risk of repeating the situation with the Babylonian pandemonium.

Editor's choice is almost a religion, so no specific recommendations can be made here. However, when making a decision, the following parameters should be considered:

  • Customizability. All editor properties should be customizable, including fonts, colors, window sizes, and hotkeys.
  • Expandability. The editor should not become obsolete as soon as a new programming language appears. It should be able to integrate into whatever compiler environment you are currently using. You should have the option to "teach" him the nuances of any new programming language or text format.
  • Programmability. You must be able to program the editor to perform complex multi-step operations.
Tip 23: Always Use Source Code Control

Source code management systems keep track of any changes that are made to text and documentation. The best ones can also keep track of changes in compiler and operating system versions. With control system source code properly configured, you can always revert to a previous version of the program.

A source code management system provides much more than just undoing erroneous actions. A good system allows you to track changes and provides answers to specific questions: “Who made changes to this line of text? What is the difference between the version that exists now and the version that existed last week? How many lines of program text have been changed in this version? Which files change the most? This kind of information is invaluable for bug tracking, auditing, performance and quality assessments.


How is debugging going?

Tip 24: Focus on fixing the problem, not blaming

We move on to the topic of fixing bugs - very sensitive and extremely relevant for teamwork. Here, as nowhere else, the right attitude is important. Embrace the fact that debugging is a task like any other, and approach it from that perspective. In fact, it does not matter who is to blame for the error - you or someone else. It still remains your problem.

Tip 25: Don't Panic

It is very important to take a step back, suppress the first emotional reaction, and think about what is really the root cause of the symptoms and how to deal with it. Resist the temptation to simply eliminate the symptoms and thus solve the problem on a superficial level - work with the root cause.

Before you look at the error, make sure you are working on a program that passed the compilation stage cleanly - without warnings. Wasting time on errors that even the compiler sees does not make sense. Gather as much information as possible; if a bug was reported by a third party, ask those who encountered it in detail.

Tip 26: Look for bugs outside the operating system

Start with the assumption that operating system, database and other software are all right. If you “made just one change” and the system stopped working, then most likely it is the cause of what happened, no matter how absurd this statement may seem. If you don't know where to start, you can always rely on good old binary search.

Exception: If any of your tools have recently been updated, the problem may be caused by conflicts with new version. Track the schedule of upcoming changes to minimize the impact of such conflicts.

Tip 27: Don't Assume - Prove

The surprise you get when something goes wrong is directly proportional to the level of faith in the correctness of the program. Therefore, when faced with an unexpected program failure, you must accept that one or more of your assumptions are wrong. Don't blindly trust a piece of code that caused an error just because you "know" it works fine. Prove it first - in a real context, with real data and with real boundary conditions.

When faced with an unexpected error, try to take steps to ensure that it does not propagate, affect other code snippets, or reoccur. If it is the result of someone's misconceptions, discuss the issue with the entire team.

Tip 28: Learn a Word Processing Language

From time to time, we have to perform some transformations that cannot be done with the camping toolkit. In such cases, a universal text processing tool is needed. Using word processing languages, you can quickly solve utility problems and prototype ideas - while working with ordinary languages it would take five to ten times longer.

They also make it easier to create code generators, which will be discussed next.

Tip 29: Write code that will code for you

Programmers are often required to perform similar tasks: provide the same functionality but in a different context, reproduce information, or simply retype the same text ad infinitum. This is where templates come in. To create them, a programmer can build a code generator that can be used for the rest of the project's life at virtually no cost.

Code generators are active and passive. Passive generators run once to achieve a result, which then becomes independent. In fact, they are customized templates that save typing time and are used for operations such as creating new source files, performing binary transformations, or creating lookup tables and other resources that are too computationally expensive.

Active code generators are used whenever there is a need for the results of their work. They can be extremely helpful in following the “minimum duplication” principle. With an active code generator, you can take a representation of some piece of knowledge and transform it into whatever forms your application needs. This is not a duplication as these forms are consumable and are created by the generator as needed. When you need to organize the joint work of two completely different environments, you should consider using active code generators.

Chapter 4: Pragmatic Paranoia

Tip 30: It's Impossible to Write a Perfect Program

In the entire history of programming, no one has managed to write a single perfect piece of code. It is unlikely that you will be the first. And when you accept this as a fact, you will stop wasting time and energy in chasing a ghostly dream.

Tip 31: Design according to contracts

The design-by-contract methodology proposes to build the interaction of software modules on the basis of their documented rights and obligations in order to ensure the correct operation of the program. Correctness is understood as the ability to do exactly what is stated.

The contract between a subroutine and any potentially calling program can be formulated as follows: "If the calling program satisfies all the preconditions of the subroutine, then the subroutine guarantees that, at the end of its work, all postconditions and invariants will be true." If one of the parties violates the terms of the contract, then a previously agreed measure is applied, for example, an exception is added or the program is terminated. In development, adhere to the classic principles of concluding a contract: when prescribing preconditions, be extremely caustic, and when it comes to postconditions, on the contrary, do not make unnecessary promises.

The biggest benefit of using this principle is that it puts claims and guarantees at the forefront. During the life of a project, simply listing the factors—what is the range of inputs, what are the boundary conditions, what can be expected from the subroutine (or, more importantly, what cannot be expected from it)—is a huge step forward. By not specifying these positions, you slide into programming based on coincidence, on which many projects fail.

Tip 32: Let the program crash as soon as possible

In many cases, ending the program in this way is the best way out, as the alternatives will lead to serious, sometimes irreversible, consequences. Pragmatists look at the situation like this: if a mistake occurs, then something very bad has happened and it is better to play it safe.

It is clear that in some cases, an emergency exit from a running program is inappropriate (perhaps you need to first log something, close open transactions, or interact with other processes). However, the basic principle remains the same - if the program detects that an event that was considered impossible has occurred, it loses viability. Starting from this moment, all actions performed by the program fall under suspicion, and its execution should be interrupted as soon as possible. In most cases, a dead program does much less harm than a broken one.

Tip 33: If Something Can't Happen, Use Statements to Ensure It Won't Happen

Whenever you start thinking along the lines of “Of course, this just can’t happen,” verify this with code. The easiest way to do this is to use assertions. Most implementations of the C and C++ languages ​​have some kind of assert or _assert macro that checks for a boolean condition. These macros can be of great value. For example, if the pointer passed to your procedure should never take the value NULL, write down the obligatory fulfillment of this condition.

Assertions should not be used in place of actual error handling. They only test for something that should never happen. There is a point of view according to which approvals are needed only during the debugging period, and when the project is delivered, they turn into dead weight. This is an overly optimistic view: testing will most likely not reveal everything that can happen in real conditions. Even if there are performance issues, disable only those assertions that actually have a significant impact on performance.

Tip 34: Only Use Exceptions in Exceptional Cases

In practice, however, checking for every conceivable error can result in the program becoming ugly; normal logic can collapse due to overcrowding with error handling routines. Exceptions will help to implement everything more gracefully.

The main problem with exceptions is that you need to know when to use them. Do not abuse exceptions for the normal flow of program execution; they should be reserved for emergency situations.

An exception is an instantaneous non-local transfer of control - a sort of layered goto statement. Programs that use exceptions in their normal work experience the same readability and maintainability problems as classic unstructured programs. They violate the principle of encapsulation: subroutines and the programs that call them are more tightly coupled to each other due to exception handling.

Tip 35: Finish what you start

When writing programs, we have to manage resources: memory, transactions, threads, files, timers - in a word, different types of objects that are available in a limited amount. Most over time, resource usage follows a predictable pattern: the resource is assigned, used, and then released. However, many developers do not have a clear plan for the allocation and release of resources, which can lead to resource shortages. The solution here is simple: the routine or object that requests the resource should be responsible for releasing that resource.

If several routines need more than one resource at the same time, two more rules are added:

  1. Release resources in the reverse order of how they were allocated. At the same time, the appearance of “orphaned” resources can be avoided if one of them contains links to another.
  2. When distributing the same set of resources in different places in the program, it is necessary to carry out this operation in the same order. This reduces the chance of a deadlock.
In programs that use dynamic data structures, there are times when the underlying resource allocation scheme is no good. In this case, the trick is to establish a semantic invariant for memory allocation.

The problem of determining the boundaries of the subject area of ​​any scientific direction First of all, it is relevant in solving terminological and terminographic problems, including in terms inventory tasks, as well as in teaching relevant disciplines.

Determining the boundaries of the subject area of ​​such a scientific direction as "Computer Linguistics" is one of the most difficult tasks, in our opinion. Typically, the boundaries of the subject area are established by compiling a list of headings and subheadings (directions) that form it.

The main difficulty in this case is that computational linguistics is a relatively young science that originated at the end of the 20th century. This direction began to be actively developed abroad in the 60-70s, and it was primarily understood as the use of static methods in linguistics, hence the name "Computational Linguistics" (i.e. "Computational Linguistics"). In Russia, the related term "Mathematical Linguistics" became widespread in the 70s. In connection with the development of computer technologies and their active applications in linguistic tasks, this term as the name of science has been transformed, and science has received a clearer definition of "computer linguistics". Thus, we can say that there are two approaches in determining the directions considered under this term - this is our Russian approach and foreign.

As for the view of foreign linguists on the subject area of ​​computational linguistics, it can be noted that a large organizational and scientific work is conducted by the Association for Computational Linguistics, which has regional structures in several countries of the world. The official website of this organization gives a general definition - "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". This organization organizes international conferences on computer Corpus Linguistics: Investigating language and COLING. Computational Linguistics is published quarterly in the USA. Relevant issues are usually also widely represented at various conferences on artificial intelligence.

From the point of view of the Western approach, the main direction of computational linguistics is Natural Language Processing (Automatic processing of natural language and speech). When analyzing documents (conference archives, content of basic sites) of the COLING Association for Computational Linguistics, it was noted that Western linguists include the following applied areas in the field of computational linguistics:

Computational Morphology and Syntax (Computer morphology and syntax).

  • NLP (Automatic Language and Speech Processing).
  • Digital Libraries (Digital Libraries).
  • Information Extraction.
  • Information Retrieval.
  • Knowledge Representation and Semantics (Knowledge Representation and Semantics).
  • Machine Translation.
  • Speech Processing (Speech recognition and synthesis).
  • Statistical Language Processing.
  • Summarization (Summarization and annotation).

From the point of view of the Russian perception of the problem area under consideration, the main work in this direction is carried out by the Russian Association of Computational Linguistics COLINT, on the website of which you can find all the scientific reports presented at the conference on problems of computational linguistics. Although this site does not provide headings for problematic tasks, you can see that Russian linguists prioritize such areas as:

  • Machine translate;
  • Search and classification systems;
  • Computer lexicography;
  • Linguistic computer semantics;
  • Corpus linguistics;

Formal models of analysis and recognition of language structures.

An analysis of existing textbooks and reference books does not yet give a complete and clear picture of this practical direction linguistics.

Big Encyclopedic Dictionary: Linguistics, edited by V.N. Yartseva. does not include this term in the dictionary at all.

Famous Russian linguist Marchuk Yu.N. primarily defines computational linguistics as "the linguistic foundations of informatics", which actually involves solving problems related to the development and use artificial languages providing communication between a person and a computer. But at the same time in his work "Fundamentals of Computational Linguistics" Marchuk Yu.N. consistently considers computer modeling of natural language, namely, morphology, syntax, representation of semantics and pragmatics in computer environments. In addition, the work mentions applied tasks as an organization of machine dictionaries, terminological data banks, and even the basics of terminology are considered.

According to the Russian linguist, professor of Moscow State University Baranov A.N. The term "computational linguistics" refers to a wide area of ​​using computer tools - programs, computer technologies for organizing and processing data - to model the functioning of a language in certain conditions, situations, problem areas, etc., as well as the scope of computer language models in not only linguistics, but also in related disciplines". In his work, Baranov A.N. identifies some areas of computational linguistics as basic - these are communication modeling, plot structure modeling, hypertext technologies for text representation, computer lexicography, machine translation, processing systems natural language.

The problem of defining the boundaries of the subject area also faces the developers of curricula for academic disciplines in the field of applied and computational linguistics. For these purposes, curricula in computational linguistics of such Russian universities as Moscow State University, Moscow State Linguistic University, Russian State University.

The developers of the MSLU course program focus on computer modeling of natural language in solving problems artificial intelligence, the fundamental principles of language modeling, i.e. directions that are associated with modeling human-computer communication.

The developers of the course program at Moscow State University identify such tasks and areas as the problems of linguistic support for modern automated information systems, automatic processing of natural language, and the creation of dictionary and word processors.

The main areas covered in the course of computational linguistics at the Russian State University are: information retrieval, machine translation, terminology, terminology, terminography, computer lexicography, speech recognition and synthesis, computer-assisted language learning problems. The program of this university is closest to the program of the Ulyanovsk State Technical University.

The above analysis shows that in practice, almost everything related to the use of computers in linguistics is often referred to as computational linguistics, which is why problems are confused with practical solutions. Thus, when defining the boundaries of the subject area of ​​computational linguistics, it is necessary to more clearly distinguish 2 points of view:

1. AUTOMATIC LANGUAGE PROCESSING (Language Processing), which will include the tasks of analyzing and modeling the language structure, namely:

  • graphematic/phonemic analysis of the language;
  • morphological analysis;
  • lexical and grammatical analysis of the language;
  • parsing, or parsing;
  • analysis and modeling of the semantic structure;
  • the task of synthesizing language elements, incl. text generation;
  • automatic linguistic statistics.
2. APPLIED DIRECTIONS OF COMPUTER LINGUISTICS, namely:
  • Machine translate;
  • speech recognition and synthesis;
  • development and use of artificial languages, including programming languages, information systems languages;
  • computer lexicography and terminography;
  • linguistic foundations of information retrieval;
  • automatic indexing, abstracting and classification of texts;
  • automatic content analysis and authorization of texts;
  • hypertext technologies for text presentation;
  • corpus linguistics;
  • computer linguodidactics.

This distinction does not claim to be complete, but gives a more definite picture of the subject area of ​​this complex science, and can be used as a basis for developing a terminological dictionary or a work program for the course "Computer Linguistics".

LITERATURE

1. Baranov A.N. Introduction to applied linguistics. - M.: Editorial URSS, 2001. - 360 p.
2. Grinev S.V. Introduction to terminological lexicography. - M., 1986.-106s.
3. Marchuk Yu.N. Fundamentals of Computational Linguistics: Tutorial. - M., 1999. - 225 p.
4. Sosnina E.P. Introduction to Applied Linguistics: Textbook. - Ulyanovsk: UlGTU, 2000. - 46 p.
5. Yartseva V.N. Linguistics. Big encyclopedic dictionary. - 2nd ed. - Y41 M.: Great Russian Encyclopedia, 1998. - 685 p.
6. http://www.aclweb.org
7. http://www.dialog-21.ru

The turn in linguistic research towards the pragmatics of the language, the real conditions of its functioning, was natural and necessary. The leading trends in the science of language in the 60s - 70s - linguistic structuralism and logical semantics had one significant drawback - a weak connection with reality and the practical activities of people. The utterance (and speech in general) was associated in these theories with a conditional "average" native speaker, and real people using the language with their feelings, relationships, intentions and goals remained outside the analysis (Gak 1998: 555). Gradually, the understanding came that for a more complete explanation of the language, both its structure and the features of its use in speech, it is necessary to turn to the factors of the functioning of language units, i.e. to pragmatics.

The identification and formation of linguistic pragmatics proper was stimulated, on the one hand, by the ideas of Ch.S. Pierce and Chu. Morris, and on the other hand relied on the concept of the late Wittgenstein. According to V.V. Petrov, it was the works of L. Wittgenstein that largely contributed to the transformation of pragmatics as part of the general semiotic theory into an independent field of research, laying the foundation for a powerful stream of modern works on pragmatics (Petrov 1987). The beginning of the intensive development of pragmatics is conditionally attributed to 1970 - the time of the International Symposium on the Pragmatics of Natural Languages ​​(Bulygina 1981:333).

Pragmatics as a special direction in the study of language from the very beginning of its existence declared itself to be very extensive and very

indefinite scientific discipline. Almost every work on pragmatics (regardless of whether its author as a whole focuses on linguistic semantics, the philosophy of language, or formal logic) begins with the fact that the subject of research is redefined and, in accordance with this, the author's understanding of the pragmatic in language is determined.

Describing the tasks and problems of pragmatic research, N.D. Arutyunova and E.V. Paducheva note that, gradually expanding, they "reveal a tendency to blur the boundaries between linguistics and related disciplines (psychology, sociology and ethnography), on the one hand, and neighboring sections of linguistics (semantics, rhetoric, stylistics), on the other" (Arutyunova, Paducheva 1985 : 4).

Linguistic pragmatics is closely related to sociolinguistics and psycholinguistics. The presence of common interests in pragmatics and sociolinguistics is so great that it even caused a separate discipline in foreign science to be singled out - sociopragmatics (sociopragmatics), which studies the dependence of verbal communication on social factors (ARSLS 1996: 541; see also Leech 1983: 10).

The blurring of the boundaries of linguistic pragmatics is apparently connected with the fact that in a short time it absorbed the ideas of the theory of linguistic communication, text theory, communicative grammar, new concepts of rhetoric, the theory of speech acts, the theory of discourse, i.e. all those disciplines that have as their subject the use of language by man.

As a result, the understanding of pragmatics as a direction associated with the solution of a wide variety of problems of describing the functioning of a language is gradually being established in the scientific community. The development of the ideas of linguistic pragmatics, the definition of the areas of its application and tasks is reflected in numerous interpretations of the term "pragmatics".

The term "pragmatic" (language learning) appeared in the 1920s - in the form of an adjective, it was used in 1923 by B. Malinovsky in an appendix to the book "The Meaning of Meaning" by Ogden and Richards. Then, and this position in the "history of pragmatics" is generally accepted, the term "pragmatics" was created by C. Morris in 1938 for use in the well-known triad of syntactics (syntax), semantics and pragmatics as parts of semiotics (Nerlich & Clarke 1994; Nerlich 1995). C. Morris, conducting research aimed at studying the structure of a semiotic situation (semiosis) in a dynamic, procedural aspect, including the participants in this situation, distinguished the three above-mentioned aspects of semiotics, defining pragmatics as "the relationship of signs to those who interpret them" (Morris 1938 : 6). However, in the future, in connection with the development of the views of the researcher, and also due to the fact that the term has already managed to acquire unwanted ambiguity and blurring, Morris defines pragmatics as the study of "the origin, uses and effects of signs )" (Morris 1946: 219). From this definition it follows that the attention of the researcher should be directed to a comprehensive study of three interrelated processes of one chain - the formation, use (functioning) and impact of signs. We find an understanding of pragmatics consonant with Morris's definition in the work of G. Klaus, who refers to pragmatics "the psychological and social aspects of the use of linguistic signs" (Klaus 1967: 22).

The vision of pragmatics, as it is presented by C. Fillmore, seems interesting. His definition is quite detailed and reads as follows: "Pragmatics studies a three-dimensional relationship that combines (1) language forms, (2) the communicative functions that these forms are able to perform with (3) the contexts or environments in which these language forms can have data language functions" (cited in Pocheptsov (Jr.) 1984: 33).

A well-known linguistic definition of pragmatics in the late 70s and early 80s was the definition proposed by R.S. Stolnaker. Pragmatics according to Stolnaker deals with the study of speech acts and the contexts in which they are produced and implemented. The goal of pragmatics as a discipline should be to highlight the classification of speech acts and their products, i.e. corresponding statements (Stalnaker 1972).

It is often emphasized that pragmatics largely corresponds to the principle of activity, and thus introduces an actional (activity) aspect into the description of the language. The correspondence of pragmatics to the requirements of the principle of activity is reflected in the definition subject pragmatists given by E.S. Aznaurova. The subject of linguistic pragmatics, in her opinion, is "the study of language in the aspect of human activity in a broad social context" (Aznaurova 1988: 8). 1 The study of the facts of language in the aspect of human activity is considered as the main postulate of pragmatics. But, as E.S. Aznaurova, "the breadth of the postulate has led to a significant scatter of topics and problems discussed within this linguistic direction, ranging from the pragmatic interpretation of linguistic signs and the theory of speech acts, to the study of the pragmatic parameters of literary communication and the text in its dynamics, correlated with the "I" of the creating text. man" (ibid.: 10).

A broad understanding of pragmatics, when the scope of its interest includes issues of deixis, speech acts, presuppositions, conversional implicatures, problems associated with the interpretation of speech, when the task of pragmatics as a separate linguistic science is called "the study of correspondences between language units and the effects of their use" (Pocheptsov 1985 : 16) or "the study of the relationship between linguistic forms (entities) and users of these forms" (Yule 1996: 4) is opposed to the approach when the only real object of study in the field of pragmatics is considered to be realized in the text

Speaking about the subject of pragmatics, it should be borne in mind that although pragmatics is recognized as a special linguistic discipline according to a large number of linguists, this position is not generally accepted. A number of researchers deny pragmatics the possession own subject research and concludes that it is impossible to consider it as another component of the theory of language. It is only given the status of a special perspective (pragmatic perspective) in the consideration of linguistic phenomena (see Verschueren 1999). a pragmatic attitude, in the most general form, defined as "the conscious intention of the sender of the message materialized in the text to have a corresponding effect on the recipient of the speech" (Naer 1985: 16). Proponents of such an understanding of pragmatics believe that the proposed maximum limitation of the application of pragmatics makes it possible to single out in the language a sphere associated with a goal-setting speech influence similar to an act (Geliya 1988: 189).

Such an understanding of the tasks of pragmatics is reflected in studies in which the emphasis is on the final result of communication - the impact effect (perlocutionary effect according to Austin), when the issues of studying the verbal control of human behavior, modeling the social and individual behavior people through speech (Kiselyova 1978).

The pragmatic approach to understanding the nature of language has been formed and continues to develop under the sign of including the subjectivity of the speaker in this understanding. So, in the concept of Yu.S. Stepanov's category of the subject is defined as the central category of modern pragmatics (Stepanov 1981; 1985; 2001). At the same time, with increasing clarity, the need to take into account the factor of the addressee, i.e. subjectivity of the listener, which serves as a starting point for developing a theory of interpretation of speech works that appear in certain communicative contexts, when the object of interpretation is what is commonly called the pragmatic meaning of the statement (Arutyunova 1981).

Some researchers believe that the concept of interpretation allows the most natural way to formulate observations on the properties of the language and, one way or another, is present in any pragmatic study (Demyankov 1981: 369). The third point of view on the significance of the factors of the subject of speech and the addressee is an approach that defines the trajectory of pragmatics as a movement from egocentrism to the principle of total binarity "along the line of synthesis of the subjectivity of the sender and the subjectivity of the addressee into a single and cumulative factor" (Sidorov 1995: 470).

Comprehensive consideration of various factors, which are emphasized in pragmatic studies, "allows us to better understand the specifics of the language in its actual use" (Gak 1997: 361) and testifies to the extraordinary potential of pragmatics.

As can be seen from the above definitions, bringing to the fore a particular group of factors allows us to speak of different types or variants of pragmatics. Back in the early 1970s, T.M. Dridze confidently suggested the existence of two pragmatists - the "pragmatist of the communicator" and the "pragmatist of the recipient" (Dridze 1972: 34-35). J. Yule, already in the late 1990s, concretizes the concept of user ("user") and gives a capacious definition of pragmatics, which takes into account the position of the sender, the position of the recipient and defines different options for pragmatics, depending on the research angle. Pragmatics in J. Yule "deals with the study of meaning, as it is reported by the speaker (or writer) and interpreted by the listener (or reader), which allows us to talk about: (1) pragmatics as the meaning of the speaker (pragmatics is the study of speaker" s meaning ); (2) pragmatics is the study of contextual meaning; (3) pragmatics of implication (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).

Here it is interesting to compare the varieties of pragmatics proposed by J. Yule with a fairly detailed presentation of the tasks of pragmatics as they are formulated by N.D. Arutyunova. The author identifies four main problems, including a set of issues related to the speaking subject, the addressee, their interaction in communication and the situation of communication.

In connection with the subject of speech, pragmatics studies: (1) the explicit and hidden goals of the utterance; (2) speech tactics and types of speech behavior; (3) rules of conversation subject to the principle of cooperation; (4) the speaker's attitude or the pragmatic meaning of the utterance; (5) speaker's reference; (6) pragmatic presuppositions; (7) the attitude of the speaker to what he is reporting.

In connection with the addressee of speech, the following are considered: (1) interpretation of speech; (2) the impact of the statement on the addressee; (3) types of speech response to the received stimulus.

In connection with the relations between the participants in communication, the following are studied: (1) forms of verbal communication; (2) social and etiquette aspect of speech; (3) the relationship between the participants in communication in certain speech acts (i.e. role relations).

In connection with the situation of communication in pragmatics, the following are investigated: (1) the interpretation of deictic signs, as well as indexical components in the meaning of words; (2) the influence of the speech situation on the topics and forms of communication (Arutyunova 1990a: 390).

Comparing the variants of pragmatics by J. Yule and the scope of application, the tasks of pragmatics in N.D. Arutyunova, it is impossible not to notice that the pragmatics of implication singled out by Yul is included in N.D. Arutyunova in a wide range of issues studied in connection with the subject of speech, and Yul’s pragmatics of contextual meaning is nothing more than a narrowed range of issues considered in connection with the addressee of the speech. In general, we observe isomorphism in the definition of a set of basic issues, which can be interpreted as the gradual formation of the contours of pragmatics.

The appeal of linguists to the study of the functioning of language units in speech "allows us to talk about pragmatics in the sense of the communicative properties of the units under consideration. They talk about the "pragmatics of the word", "pragmatics of the sentence" (statement), etc. bearing in mind, firstly, the features of use language entities in certain pragmatic situations and conditions of functioning and, secondly, the realization of the meaning in the context under the influence of various pragmatic parameters. In the first case, we can talk about "external pragmatics", and in the second - about "internal pragmatics" (sometimes called pragmasemantics) "1 (Gorshunov 1999: 5-6). We believe that the division of pragmatics explicitly proposed by Yu.V. Gorshunov into "external" and "internal", contained implicitly in a number of works, is of theoretical interest and once again confirms all the grounds for talking about pragmatic meaning, as part of the linguistic meaning.

The understanding of "internal pragmatics" as socially conscious and fixed by usage at the level of the system of pragmatic information allows three interpretations: (1) semantic information is considered as part of communicative-pragmatic information; (2) both components are thought of as equal, autonomous, but fulfilling their purpose in close relationship with each other, or (3) pragmatic information is considered embedded in semantic information (cf. Leech 1983: 6).

The first approach (Malcolm and other Oxford philosophers) is based on the ideas of the late Wittgenstein, when "for a large class of cases - although not for all - in which we use words, the meaning can be defined as follows: the meaning of a word is its use in the language" ( cited after Arutyunov 1976: 44). The theory of meaning with this approach loses its denotative character and becomes a communicative theory of meaning, which was related not only to the meaning of the statement, but also to the meaning of the words included in it. For linguistics, this kind of theory, which does not make a fundamental difference between the meaning of a word, a sentence, and an utterance, can hardly be effective (for more details, see Arutyunova 1976: 39-45).

Within the framework of the second approach, there are attempts to attribute context-independent meanings of linguistic units to the scope of semantics, and to the scope of pragmatics - the speech functions of linguistic utterances and situationally

M.V. Nikitin defines pragmasemantics as the study of that part of the total meaning of statements and texts that relates to the intentions of speech, i.e. to those pragmatic tasks that the speaker solves through speech (Nikitin 1996. 619). Wed the definition of the language of interpretation used in the Moscow and Polish Schools of Semantics as a "pragmasemantic language" in Sannikov 1989. See also in this connection Pocheschov (Jr.) 1984; Stalnaker 1972.

The conditioned side of the propositions expressed in them. Some researchers define the boundaries of pragmatics by examining those aspects of meaning that are not covered by semantic theory (Levinson 1983). At the same time, by proposing such a distinction, one acknowledges the fact that an adequate (semantic or pragmatic) theory has not yet been developed that would allow an unambiguous answer to the question of where semantics ends and pragmatics begins (see, for example, Bulygiya 1981; The Semantics /Pragmatics interface... 1999).

On the other hand, many researchers point out that the most adequate results can be achieved if semantics and pragmatics are considered as interrelated parts of one whole: "There is no semantics without pragmatics - but there is also no pragmatics without semantics" (Kiefer 1985: 347 ). P. Sgall also notes that all attempts to study semantics without taking pragmatics into account are doomed to failure (Sgall 1986: 45).

Of great interest regarding the relationship between pragmatics and semantics is the point of view of Yu.D. Apresyan. Understanding pragmatics quite broadly, the author believes that only pragmatic information that is lexicalized or grammaticalized, i.e., is of linguistic interest. acquired a permanent status in the language (Apresyan 1988; 1995a). A similar point of view is expressed by another representative of the Moscow School of Semantics, V.Z. Sannikov, who understands the meaning of a linguistic unit as its semantics and pragmatics, interpreting the latter as "information about relation speaking and listening to the described objects and to each other" (Sannikov 1989: 84).

Much in common with the concept of Yu.D. Apresyan has a vision of pragmatics V.I. Zabotkina (Zabotkina 1989; 1993). Recognizing the existence of a complex dialectical relationship between pragmatics and semantics, the researcher defines the pragmatics of a word as part of the total semantics, which carries information about the social status of the speakers, the real conditions of consumption, and the expected effect of the impact on the listener. In other words, we are talking about pragmatic components that are fixed due to the usage in the semantic structure of the word, reflect the parameters of its use in typified situations of communication and ensure the pragmatic marking of the word at the system level.

A. Vezhbitskaya and her followers (E.V. Paducheva and others) solve the problem of the boundary between semantics and pragmatics in the most radical way. This question itself, Vezhbitskaya believes, does not make sense, due to the fact that such a boundary does not exist: pragmatics is a part of semantics that studies a certain range of linguistic meanings. In the concept of Wierzbicka, the autonomy of pragmatics in relation to semantics turns out to be imaginary, there is a single semantics of pragmatics, or simply pragmatics is one of the parts into which the author divides the task of describing the semantics of a language. "Linguistic meanings are pragmatic in principle: with a person, with speech situation connected in the language are not some specially selected expressive elements, but in general the meaning of the vast majority of words and grammatical units"(Paducheva 1996: 222). The boundaries of pragmatics, as they are understood in the work of Wierzbicka 1991, are outlined precisely on the basis of the nature of meaning, when those linguistic elements fall into the competence of pragmatics, in which the installation components (subjective, expressive, and others) dominate over denotative, i.e. linguistic elements of any formal type, united only by the fact that they carry predominantly "pragmatic information" (Paducheva 1996: 223).

It is known that the functions performed by them are closely related to the meanings of linguistic units, since the study of the functions of one form or another covers the analysis of its meaning: "The meaning is directly subordinate to the function that the corresponding unit performs; it is formed depending on the purpose of this unit" (Arutyunova 1976: 44). Distinguishing semantic and structural functions language, some linguists point to a complex relationship between the functions semantic and n ragmatic. The latter can be considered as a special aspect of semantic functions, the essence of which is to convey the relationship between the content of language units and the utterance as a whole to the participants in the speech act and its conditions (Boidarko 1987: 8-9). That is, it is rather difficult to draw a clear line between semantics and pragmatics. Both of them (to one degree or another) reflect the anthropocentrism that pervades modern science, widely use extralinguistic data, should take into account the context factor, etc.

In our dissertation research, we proceed from a broad understanding of pragmatics as a special linguistic discipline, taking as a basis the capacious, multifaceted definition of D. Crystal. Pragmatics is the science "studying language from the point of view of the person using it, in terms of the selection of language units, restrictions on their use in social communication and the effect of influencing participants in communication" (Crystal 1985: 240)."

In understanding pragmatics as part of linguistic meaning, we adhere to the pragmatic-semantic approach based on the concepts of Yu.D. Apresyan, A. Vezhbitskaya, V.I. Zabotkina.

There is no doubt that the study of "internal pragmatics" (pragmasemantics) is one of the tasks of linguistic pragmatics and concerns its little-studied and debatable area (Gorshunov 2000). Research, development and clarification of already established pragmatic components, identification of the features of their interaction and impact on the addressee in various lexical material, are of considerable theoretical and practical interest and play an important role in the study of the semantics and pragmatics of language units.

The development of pragmatics is probably not over yet. There are still many debatable questions. These are questions about the relationship between pragmatics and

Wed with a later definition by the same author: "Pragmatics studies the factors that determine our choice of linguistic means in social interaction and the impact of these choices on others" (Crystal 1997: 120) sociolinguistics, psycholinguistics, stylistics, rhetoric, with which pragmatics has extensive areas of intersection research interests. This is a circle of questions related to how a person embodies himself in a linguistic sign, in a statement, lives and acts as a linguistic personality, using language to achieve his goals, convey his attitude to reality, the content of the message, to communication partners, to influence them.

Profound and accurate in this regard is the thesis of J. Versuren that the dimension (dimension), which pragmatics is called upon to comprehend and reveal, is a space created by the connection between language and human life as a whole (Verschueren 1999: 6).

The history of the term "pragmatics" (Greek "pragma" - business, action) is usually traced back to C. Morris, who singled out in semiotics, the theory of sign systems, the area of ​​​​pragmatics along with the areas of semantics and syntactics. Like any science, pragmatics has its own object, subject , subject and research method. The object of study of pragmatics can be a speech act, a word, a text or a set of texts. Later, the term "pragmatics" began to be used in linguistics, but did not receive an unambiguous interpretation among linguists.

Pragmatics was understood as the science of the use of language, the science of language in context, or the science of the contextuality of language as a phenomenon, the study of language (or any other system of communication) in terms of the goals pursued, the various ways to achieve them, and the conditions under which these goals are achieved. theory of interpretation of speech acts, the study of linguistic means that serve to denote various aspects of the interactional context in which the proposition is expressed. In Russian linguistics, pragmatics is also understood as a theory that studies the pragmatic parameters of literary communication [Arutyunova 1981], as well as the text in its dynamics, correlated with the “I” of the person creating the text [Stepanov 1981, 1985].

Pragmatics is seen as "meaning minus truth conditions"; this is the field of study of those aspects of meaning that are not covered by semantic theory. Pragmatics is understood as a theory of speech influence [Kiselyova 1978]. The purpose of pragmatics is seen in the study of language as an instrument of human social practice [Susov 1974].

T. van Dyck believes that the competence of pragmatics includes the identification of systems that characterize the linguistic form, meaning and activity. According to T. van Dyck, in the most theorized and abstract sense, pragmatics is called upon to carry out the specification of (theoretically permissible) conditions for the (theoretically permissible) suitability of (theoretically permissible) utterance structures. The empirical tasks of the theory of pragmatics include the development of a cognitive model of production, understanding, memorization of speech acts, as well as a model of communicative interaction and the use of language in specific sociocultural situations.

Serious difficulty lies in the mutual definition of the concepts of pragmatics and semantics. According to G.V. Kolshansky: “... Any speech formation is the result of the conceptual processing of some cognitive act, which is inevitable and gives any meaningful statement a cognitive character, usually attributed to semantics in the broadest sense of the word. In this regard, the aspiration of linguists is quite understandable not to separate the factor of the pragmatic functioning of the language as a whole from its substantive nature and thus include pragmatics only as a component in the unified semantics of linguistic communicative units" [Kolshansky 1985: 175].

No matter how varied the options for defining pragmatics are, the main thing in them can be considered that they come from the scheme of Ch. Morris. One of the properties of a sign is the relationship between the sign and its user - a person. The human factor is recognized as the leading concept of pragmalinguistics [Arutyunova 1981; Bulygina 1981; Gak 1982; Stepanov 1981, 1985 and others]. Pragmatics studies all the conditions under which a person uses linguistic signs. At the same time, the terms of use are understood as the conditions for an adequate choice and use of language units in order to achieve the ultimate goal of communication - influencing a partner.

In modern studies of pragmatics, the subject of activity is becoming increasingly important, which in pragmatics is understood as “an abstract individual (virtual communicator) who is the bearer of a complex of characteristics: psychological, social, geographical, national-cultural, etc.” [Bagaturia 2004: 4]. This growing role of the subject determines the choice of methods for studying the subject of pragmatics. If we consider pragmatics as a science that studies a language from the point of view of "a person using it in terms of the choice of language units, restrictions on their use in social communication and the effect of influencing participants in communication", this science should be classified as practical, based on inductive methods of cognition of reality. .

The activity of transmitting a sign message by a person is studied primarily as a process communications- the whole cycle of scientific disciplines studying communication, and the first difficulties in singling out the actual subject of pragmatics arise precisely in this regard. According to V.G. Kolshansky: “ Pragmatics, as a branch that studies the relation of a person to a linguistic sign, generally loses its meaning for the reason that the relation to a sign cannot be revealed in language apart from using the language itself, which is, by definition, communication. (highlighted by us - A.Sh.)[Kolshansky 1985: 131].

Often, pragmatics is defined by focusing on a particular aspect of the communication process, namely, the impact or communicative impact: "... Regardless of the definition of the pragmatic aspect of language, the leitmotif remains, as a rule, the idea of ​​influencing human behavior with the help of verbal means of speech acts" [ibid: 139]. Currently communicative impact understood quite broadly. For example, Yu.K. Pirogova singles out "... Impact on consciousness by building rational argumentation (persuasion), or impact on consciousness through the emotional sphere, or impact on the subconscious (suggestion), impact using verbal (verbal) or non-verbal means" [Pirogov 2001: 541]. Speech impact in linguistics, it is studied in connection with the social side of verbal communication [Fedorova 1991: 46-50]. In the theory of speech communication, speech communication is presented as a two-level formation, including sociological and communicative levels. The content of the communicative level is understood as the exchange of information between the interlocutors, and the content of the sociological level implies the social interaction of the participants in communication, that is, their influence on the behavior, way of thinking and feelings of each other. Speech influence is defined as a speech form of the social influence of the speaker on the listener in the process of communication [ibid: 46].

It seems to us that the selection of the subject of pragmatics of the QMS text cannot be entirely based on the concept of "impact". A number of QMS materials really have the goal of influencing the knowledge, attitudes and intentions of the addressee, the goal is to achieve the assessment of a certain object necessary for the addressee - for example, in advertising or in a call to vote in elections. However, other goals can be found in the texts of the QMS, for example, the leading goal is to “entertain” or captivate the recipient (attract his attention). In this case, the publication satisfies the mental need of the subject for entertainment, stimulating the potential buyer to purchase more and more new editions of the entertainment materials of the publication. Thus, in the materials of the "yellow" press, the recipient subject initiates those states for which he is ready to pay: fear, surprise, indignation, tenderness, and others. Similarly, literary and journalistic texts appeal to the “sense of beauty”, which, with a sufficient degree of probability, the audience of these texts has an understanding of. In such cases, there are about the same grounds for talking about “impact on the knowledge, attitudes and intentions of the addressee ...” as in the case of broadcasting a football match on the SMK channel. Is it possible to find signs of communicative influence in entertainment or in artistic and journalistic materials? In a broad sense, of course, it is possible. At the same time, we risk again returning to comprehensive definitions (in this case, the concept of impact) and losing the subject of study that we need to implement in the first place. methodological tasks. For example, according to G.G. Matveeva: “... Influence, or behavior management, is the goal any (highlighted by us - A.Sh.) communication. Communication is a social orientation in which the adaptive function of a person is realized. It comes down to functional regulatory goals. These goals have direct and indirect impact. With the latter, management also takes place, for example, when informing, when expressing an assessment, relationships, on the basis of which a decision can also be made about the regulation of behavior” [Matveeva 1984: 44].

In our opinion, it is unacceptable to confuse the concepts of influence and pathos of the QMS. As Yu.V. Rozhdestvensky notes: “... The pathos of the mass media is to make messages about events (in principle, not related to the recipient) interesting for him, so that he becomes spiritually involved in these events. Therefore, mass information selects messages about events and comments on them so that its materials arouse interest. This is achieved by evoking emotions, curiosity, fear and compassion. The purpose of forming such an emotion is to include the recipient of information in mass actions” [Rozhdestvensky 1997: 593].

In turn, under the influence “in the direction necessary for the addresser”, it is more correct to understand such an impact that is built around a specific object of reality. At the same time, the addresser achieves a well-defined thought, emotion or line of behavior of the addressee in relation to this object of reality.

Thus, in practice, the concept of communicative influence is more effectively associated with those texts of the QMS, the content of which is intended to form a picture of the world of the recipient, his understanding of reality in relation to a selected object or group of objects. As we will show later, these texts can be grouped according to common goals: they can be aimed at persuasion, inducement or advertising. In these cases (texts), the pragmatics of the QMS text is associated with influence, but as a concept it has its own objective reality. Evidence of this can be, for example, the pragmatics of the texts of the QMS with the leading goals of informing or entertaining the audience, which do not have a clearly expressed potential for impact.

Let us consider another possibility in defining the subject of pragmatics. Let's say research pragmatic characteristics of linguistic signs possibly in the language system. The natural development of such logic is the selection as the subject of study of a certain linguistic material, units of language that have a narrowly pragmatic orientation.

Such units are singled out by L.A. Kiseleva: “...Pragmemes are units different levels languages ​​that have a pragmatic purpose: they are designed to regulate human behavior. These include, first of all, those language units that reflect the phenomena of the emotional-volitional sphere of the addressee's psyche and through it - his intellectual sphere (by emotional suggestion, infection, persuasion) in order to regulate his behavior. These are the units that belong to the core of the pragmatic field (for example, emotional, emotional-evaluative and motivating interjections, as well as emotional-evaluative words such as disgusting, wonderful, my dear, lovely, etc.)” [Kiselyova 1978: 106].

This direction of research is criticized mainly for the isolation of the consideration of linguistic units, for the lack of expression of the connection between the sign and the recipient. As V.N. Komissarov notes: “... No evidence can be given that the so-called emotional words (of the type given in such works - ugly, delightful, etc.) are directly addressed to the pure psyche, bypassing the normal intellectual perception of such units, having an obvious conceptual content related to the category of so-called evaluative as a product of human mental activity” [Komissarov 1990: 140–141].

Having singled out a separate area in the sphere of language (after all, language, unlike speech, has an abstract and systemic essence), the researcher receives the necessary systemicity, logic and predictability of the functions of certain signs and the relationships between them, which directly follow from the systemicity and logic of language as a phenomenon. However, within the framework of this approach, the researcher is forced to open relationships between signs(within the framework of the language system), and not the relationship between the sign and the recipient - from which the definition of pragmatics comes. Thus, highlighting the subject of pragmatics in the system of language itself, in highlighting special linguistic signs, in our opinion incorrectly.

So, let's define our own position in the study subject of pragmatics: rather than the pragmatic aspect of the language, the pragmatic aspect of a specific text included in the totality of texts, in our case, the QMS, is subject to research. In the totality of the texts of the QMS, it is necessary to highlight the author's intentions that are sustainable, recurring levels of impact and, of course, language tools that successfully implement the established set of goals and objectives. The success factor of a linguistic sign in the context of the implementation of a set of goals and objectives of a particular text allows one to remain within the framework of the “sign-recipient” relationship, and not be limited to purely abstract relations of signs in the language system.

In itself, the logic of singling out the subject of pragmatics depending on the sphere of use of the text (in social practice) is not new. As G.V. Kolshansky writes: “... If we understand the achievement of any goal - practical, theoretical, physical, intellectual, etc. by the pragmatics of verbal communication, then we can to some extent talk about the characteristics of a person’s use of a linguistic sign, but only, apparently, in the sense of "successful" or "unsuccessful" was the communicative goal realized. Such success of verbal communication can be determined both for an individual speech act and for some social group as a whole. The question of the advisability of developing criteria for the "pragmatic success" of a speech act can only be resolved in purely applied terms and in relation to specific areas of human linguistic communication » (highlighted by us - A.Sh.)[Kolshansky 1985: 149].

Cognitive linguistics is closely related to communicative pragmatics and discourse theories. In relation to these topics, it differs sharply from structural linguistics. If for structural linguistics it was enough to postulate the existence of language as some kind of abstract network of interdependencies, then for cognitive linguistics the focus is not only on language in the inseparable unity of its form and substance, but also on a higher unity - the unity of language and a person acting in real world, thinking and knowing, communicating with his own kind.

Structural linguistics, static in its essence, in the cognition of the language came from such linguistic objects as the word and its grammatical form, sentence, text; linguistic pragmatics, based on cognitive linguistics, starts from a person, his needs, motives, goals, intentions and expectations, from his practical and communicative actions, from communicative situations in which he participates either as an initiator and leader, or as a performer of the "second" roles.

Disciplines such as discourse analysis and the analysis of conversation that develops within it (i.e. spontaneous oral speech) are guided by the settings of the activity paradigm. For representatives of this paradigm, language is not valuable in itself and is not studied in and for itself. It is ontologically and epistemically included in human activity, being both one of its most important tools and one of its most valuable products. Thus, communicative approach to language can be defined as an anthropological approach.

The introduction of an anthropological approach to language into linguistics has intensified interest in the personal and social aspects of the speaker's activity. It became clear that the implementation and interpretation of certain strategies of verbal communication cannot be carried out without taking into account the diverse personal and socio-cultural aspects of the communicative process. From positions modern approaches discourse is a complex communicative phenomenon that includes, in addition to texts, extralinguistic factors (knowledge of the world, opinions, attitudes, goals of the addressee) necessary for understanding the text.

How are cognitive processes taken into account in communicative pragmatics? In natural language communication- with a huge and infinite variety of factors determining it - the number of possible "moves" simply cannot be calculated. The most difficult task of calculating them is simplified only by identifying some recurrent, most typical structures that cause certain cognitive reactions. Many researchers distinguish two main aspects in the cognitive analysis of discourse - the structures of knowledge representation and ways of its conceptual organization.


Thus, for communicative pragmatics, as well as for cognitive psychology and artificial intelligence, the topic of knowledge representation is just as important. Any communicative action within the framework of spontaneous or organized discourse is the realization of certain communicative-cognitive structures. Such cognitive structures are frame models containing information of a sociocultural nature, or knowledge about what Wittgenstein called "language games".

For the understanding of texts - both written and oral - it matters how the "author" of the message and the recipient "model" knowledge about the world. Communication is possible only if there are certain semantic, informational “condensations” (“frames”, “mental models”, “scenarios”, “situation models”) in the mind of each speaker, in his picture of the world. Back in the 30s of the XX century. F. Bartlett gave a definition of the concept of "information schema", a schema presented in memory. This concept has also entered cognitive psychology. As already mentioned, in computational linguistics the concepts of "scenario", "frame" are used, in linguistics and sociology the concept of a frame is also used. Frames contribute to adequate cognitive processing of typical situations, text coherence, provide contextual expectations, and make it possible to predict upcoming events based on previously encountered ones. The communicative-cognitive pragmatics thus offers some ways of studying what makes texts solid and coherent for the perceiver.

When describing a single speech action, not only general typical schemes of practical and communicative activity are taken into account, but also typical schemes of organization inner world the speaker, in other words, the set of cognitive structures presented in his picture of the world (socially and ethno-culturally conditioned, but individual in terms of the way of existence). The generation and understanding of speech is based not only on abstract knowledge about stereotypical events and situations - as in mental models, scenarios and frames - but also on the personal knowledge of native speakers, accumulating their previous individual experience, attitudes and intentions, feelings and emotions. T. van Dyck formulates this in such a way that people act not so much in the real world and talk not so much about it, but about subjective models of phenomena and situations of reality. In this regard, we can quote from the book of the famous Russian linguist and philologist B. Gasparov: “The uniqueness of the life-linguistic experience of each of us all the time carries us away from each other” (B. Gasparov. Language, memory, image: Linguistics of linguistic existence. M., 1996. S. 16).

Nevertheless, we always somehow understand each other - rightly or wrongly; orientation to understanding is a fundamental condition of human communication. At the same time, successful understanding is carried out not only when people try to understand the meaning of words and phrases in the statement, but above all when they are focused on the interlocutor's intention, on what he wants to express, what speech action produces.

The first attempt to look at speech through the prism of the actions of a native speaker is expressed in the theory of speech acts, in the formation of which the views of such scientists as J. Austin, J. Searle, P. Grice played an important role.

In the theory of speech acts, first formulated by J. Austin, the main unit is a "speech act" - a quantum of speech that connects a single intention ("illocution"), a completed minimum segment of speech and an achieved result. The foundation of this thesis is the idea that the minimum unit of human communication is not a sentence or other expression, but an action - the performance of certain acts, such as a statement, a question, an order, a description, an explanation, an apology, gratitude, a congratulation.

The ideas of J. Austin were developed in the work of J. Searle "Speech Acts", in which speaking is considered as committing certain actions. Speech, according to Searle, has a performative character, its purpose is either a change in environment speaker, or in the mindset of the interlocutor. The “illocutionary intention” of the speaker is what the speaker is trying to convey with the help of language, and accordingly, the essence of the communication process is to unravel this intention. To explain understanding / misunderstanding in the process of communication, the term was proposed - "successful illocutionary act", the essence of which is to achieve a certain result, for the sake of which it was conceived and implemented.

The researcher of communication needs to know what exactly contributes to the correct perception of the speaker's intentions by the listener - and this is largely everything that remains outside the verbal expression and nevertheless turns out to be an integral part of the utterance. This “behind the scenes” content refers both to the individual experience of the individuals participating in the communication, and to the knowledge “background” that unites them or, on the contrary, separates them.

It is generally recognized that different types of linguistic communities and socio-cultural strata of society are characterized by the peculiarity of the use of the language. In the process of mastering the context of a speech, the participants in a speech event must have general background knowledge of both linguistic and historical, cultural, and social nature. I.V. Gubbenet defines background knowledge as a socio-cultural background that characterizes perceived speech. V.S. Vinogradov highlights the national aspect of background knowledge, without the study of which it is impossible to achieve a complete and correct understanding in the exchange of information. For the success of communication, the similarity of mentality is important, which allows you to achieve minimal changes in knowledge in the process of communication. The researcher of communication, therefore, needs to take into account "background knowledge", which is the mutual knowledge of the realities of the speaker and the listener, which is the basis of linguistic communication.

Currently, there are six main areas in the study of discourse: the theory of speech acts, interactional sociolinguistics, ethnography of communication, pragmatics, conversational analysis, and analysis of variations. The sources for the formation of models of understanding and methods for analyzing discourse in these approaches (with all the many differences between them) were the achievements of such disciplines as linguistics, anthropology, sociology, philosophy, communication theory, social psychology and artificial intelligence.

Despite the differences in these approaches, there is something common and unifying in them, which is at the same time common in all cognitive-oriented linguistic studies. This is the anthropocentricity of the language, more precisely, the practical, theoretical and cultural knowledge, experience embedded in the language, mastered, comprehended and directly or indirectly verbalized by native speakers, and ultimately restored - as a result of semantic and conceptual analysis - in the form of a linguistic picture of the world.