Man invented the programming language in order to control the machine. Computers are becoming more powerful, and programming languages are constantly being innovated. So I boldly believe that the meaning of programming language will be beyond the control of the machine, it may be a starting point of civilization-robot civilization. To better envision the programming language, let's take a look at its evolution.
1 The development of programming language has gone through five dynasties:
First generation language: machine language
Second generation language: assembly language (also known as symbolic languages)
Third-generation languages: Advanced languages
|__ process oriented (e.g. C, BASIC, Pascal)
|__ object-oriented (e.g. C + +, Java, C #)
Fourth generation language: Database programming language (also called non-procedural language)
Fifth generation language: known as artificial intelligence language
2 Development of programming ideas:
Machine oriented
Process oriented
Object-oriented
Subject-oriented
Application oriented
Language-oriented
3 Types of programming languages:
3.1 Imperative language:
Most modern languages are of this type, such as Fortran, Pascal, Cobol, C, C + +, Basic, Ada, Java, C #, and so on.
3.2 Functional languages:
This language is very suitable for the calculation of artificial intelligence and other work. Like Lisp.
3.3 Logical languages:
This language is mainly used in the implementation of the expert system. such as Prolog.
3.4 Object-oriented language:
Most of modern languages provide object-oriented support, the main pure object-oriented language is Smalltalk.
After a general impression, let's take a look at some of the great wisdom crystals.
4 machine language and assembly language
They are machine-oriented, with high efficiency and a lot of drawbacks.
Machine language is really the language of machines, but it is the essence of all the current programming languages. It can be said that it is old, but its spirit is still in.
assembly language slightly subtotal, with symbols instead of binary code, simplifying the procedure, but the symptoms do not cure, it is still a low-level language, still make people feel heavy unbearable. But it seems to me that it inspires the high level of language that followed. Still, old, the spirit.
Now focus on the assembly language.
Because of its simplicity, occupy less memory, direct control of hardware, fast implementation of the advantages, it is not old, often with high-level language with the use.
It can accomplish functions that many other languages cannot. Take the Linux kernel, although the vast majority of the code is written in C language, but still inevitably in some key areas of the use of assembly code, which is mainly in the Linux boot part. Because this part of the code and hardware relationship is very close, even if the C language will be somewhat powerless, and assembly language can be very good to avoid weaknesses, maximize the performance of the hardware.
Through the study and use of assembly language, can perceive, realize and understand the logic function of the machine, up to understand the principles of various software systems, lay the technical theoretical foundation; down to master the principle of hardware system, lay the practical application Foundation. Learning assembly language, up to understand the software, down to feel the hardware, is our understanding of the entire computer system the best starting point.
5 Advanced languages
High-level language, also known as algorithmic language, is a similar to natural language, user-oriented language. Computer can not directly accept and execute the source program written in high-level language, the source program in the input computer, through the "translation program" translated into the machine language form of the target program, the computer can be recognized and implemented. This kind of "translation" usually has two ways, that is, the compiler and the way of interpretation.
5.1 FORTRAN (1954)
Also translated as Fu Chuan, is the world's earliest computer advanced programming language, widely used in science and engineering computing fields. The Fortran language plays an important role in the fields of numerical, scientific and engineering calculation with its special function. As early as 1951, John Backus, the American company of IBM, began to research and develop FORTRAN for the shortcomings of assembly language, and it was officially released in New York in 1954, John Bex. The successive introduction of fortran90,fortran95,fortran2003 makes Fortran language possess some features of modern advanced programming language. Fortran language is a very promising language, in the global epidemic process, the standardization of Fortran constantly absorbs the new features of modern programming language, and still occupies an important position in the field of engineering calculation. It is undeniable that the Fortran language is less creative than the current popular java,c# and other high-level languages. However, engineering students must note that, as Fortran in the field of engineering computing long-term dominance, many excellent engineering computing software is written in Fortran, in order to be able to use these commercial software advanced functions, must first learn Fortran language, in order to write application interface.
5.2 ALGOL (1958)
Algol is the first generation of advanced language in the development of computer history, at that time, the era of transistor computer is popular, because ALGOL statement and common language expression close, more suitable for numerical calculation, so ALGOL more for scientific computer. Algol is the first well-defined language, and its syntax is explained in a strictly formulaic way. Algol language is not widely used, but it is the conceptual foundation of many modern programming languages. Algol (1958), Algol (1960), Algol W (1966) are members of this family. Algol 60 is a milestone in the development of programming language, which indicates that the programming language becomes an independent science subject, And for the later development of software automation and software reliability laid a foundation.
5.3 COBOL (1959)
In enterprise management, numerical calculation is not complicated, but the information processing is very large. In 1959, some computer user organizations in the United States designed a computer language COBOL dedicated to business processes to address the issue of enterprise management specifically. COBOL language uses more than 300 English reserved words, a large number of common English vocabulary and sentence patterns, COBOL program is easy to understand, known as "English language" said. At present COBOL language is mainly used in information retrieval, business data processing and other management fields.
5.4 BASIC (1964)
It was born in 1964, because of simple, easy to learn the basic characteristics, quickly popular. Subsequently, quick basic and Visual Basic, developed by Microsoft, enriched and perfected the language. It has the following characteristics: 5.4.1 composition is simple. There are only 17 basic language sentences, and they are common English words or their variants, such as read, end, etc. 5.4.2 is a "adopts" type of language. Through the keyboard operation, the program written in basic language, can be written on the top of the computer, edge modification, side run. 5.4.3 function is more complete and suitable for wide area. In addition to the basic language can carry out scientific calculation and data processing, but also for character processing, graphics processing, music performance.
5.5 LOGO (1968)
Logo language is an early programming language, but also a very close to the natural language programming language, it through the "drawing" way to learn programming, for beginners, especially children to teach teaching methods. The logo language was founded in 1968 as a project study funded by the National Science Foundation and completed at the MIT Artificial Intelligence Lab. A psychologist named Pebert in the study of children's studies, discovering some teaching methods contrary to his ideas, and walking out on a holiday, occasionally seeing a mechanical device like a turtle triggering inspiration, he finally completed the design of the logo language with his vast knowledge and clever intellect. Drawing is the most important function of the logo language, Dr. Pebert is hoping to develop the students ' interest in learning computer and the correct learning concept through drawing. Chinese logo language has recently been issued a flash version of the logo language, but also 挻 easy to use, not only to achieve common commands, but also developed a number of robot intelligent command. The language of logo is the best language for children to learn computer programming, because it is a programming language for children, which can make children develop in cognition and skill.
5.6 PASCAL (1971)
Before you speak Pascal, you have to mention the third milestone in software development--structured programming. The three basic structures of structured programming are sequential structure, choice structure and cyclic structure. Gee, this is familiar to us, if judgment, for loop. Originally, this is also the crystallization of human wisdom. In order to deal with the so-called "software crisis", people begin to study the method of programming, and seek a new program design method which can adapt to simplicity, reliability and modification. E.w.dijkstra, a famous Dutch computer scientist and Turing Award laureate, proposed a "structured programming" approach. In order to adapt to this new program design method, people are actively developing the corresponding programming language. Pascal was created in this case and is considered to be the first language to implement structured programming. (In addition, QuickBasic is also a structured programming language) (software crisis: In the 60 's, the emergence of large capacity, high speed computer, so that the application of the scope of computer rapidly expanded, software development has increased dramatically. The development of the operating system has caused the change of computer application mode, and the large amount of data processing has led to the birth of the first generation database management system. The scale of software system is more and more large, the complexity is more and more high, and the software reliability problem is more and more outstanding. The original personal design, personal use of the way can no longer meet the requirements, the urgent need to change the software production mode, improve software productivity, software crisis began to explode) Pascal was published in 1971 by Professor Voss of the Federal University of Technology in Zurich, Switzerland, N.wirth. Pascal language is conducive to the smooth introduction of program design, which is conducive to the training of students rigorous, clear program design style and good habits. IOI (International Olympic Informatics Competition) Pascal language as one of three programming languages.
5.7 C Language (1972)
D.m.ritchie was launched in 1972 by the Bell Institute of America. It combines the basic structure and sentence of high-level language with the practicality of low-level language. C language is a language tool developed by the American at&t (Telegraph and telephone) company in order to realize the design idea of Unix system. The main feature of C language is to take into account the characteristics of high-level language and assembly language, concise, rich, portable. As a general-purpose programming language, C is being admired by more and more computer users. The use of C language program, both feel the use of high-level language of nature, but also realize the use of computer hardware instructions directly, and programmers do not have to get involved in the cumbersome assembly language. Its wide range of applications, with strong data processing capabilities, not only in software development, and all kinds of scientific research need to use C language, suitable for writing system software, three-dimensional, two-dimensional graphics and animation. Specific applications such as SCM and embedded system development. Suitable for a variety of operating systems, such as Windows, DOS, UNIX, and so on, but also applicable to a variety of models. Pointer is a major feature of C language, it can be said that C language is superior to other high-level language is an important reason. Because it has a pointer, you can directly to the hardware operation, but the C pointer operation does not protect, but also to it brings a lot of unsafe factors. C + + has made improvements in this area, while retaining the pointer operation while enhancing security while being supported by some users, but because these improvements increase the complexity of the language, but also for another part of the criticism. Java has learned the lessons of C + +, canceled the pointer operation, but also canceled the C + + improvement in some of the controversial places, security and fitness have achieved good results, but its own interpretation in the virtual machine running, operating efficiency less than c++/c. Generally speaking, C,c++,java is regarded as the same language, and they occupy the top three of the application list for a long time. Next, let's take a look at how this long and prosperous language is built. The ancestor of C language is the BCPL language. In 1967, Martin Richards of the University of Cambridge simplified the CPL Language and produced the BCPL language (CPL is also a high-level language). In 1970, Ken Thompson of Bell Labs in the United States, based on BCPL language, designed a simple and very near-hardware B language (take the first letter of Bcpl). And he wrote the first UNIX operating system in B language. In 1972, D.m.ritchie of Bell Labs in the United States eventually designed a new language based on B, and he took the second letter of Bcpl as the name of the language, which is the C language. Cpl language on the basis of ALGOL 60 close to the hardware some, but the scale is relatively large, difficult to achieve, so quickly eliminated. C language is to maintain the BCPL language and B language advantages (refined, close to the hardware), but also overcome their shortcomings (tooSimple, no type of data, etc.). Since being replaced by the C language, the B language has almost been discarded. C language shortcomings mainly in the data packaging, which makes C in the data security has a great flaw, which is C and C + + a big difference.
5.8 C + + (the 1980s)
Dr. Ben Jani Straustlup of the At&t Bell Laboratory in the United States invented and implemented C + + in the early 1980s. The beginning of C + + is as a language of the enhanced version, from the C language to add classes began, constantly adding new features, such as multiple inheritance. C + + language development can be divided into three stages: the first phase from the 80 's to 1995 years. This phase of the C + + language is essentially an object-oriented language on the traditional type, and with the efficiency of close to C language, it occupies a large share in the development language used by industry; the second stage, from 1995 to 2000, was due to the emergence of standard template libraries (STL) and later boost libraries , the generic program design occupies more and more proportion in C + +. Of course, at the same time because Java, C # and other languages and hardware prices of large-scale decline, C + + has been a certain impact; the third stage from 2000 to present, due to the Loki, MPL and other libraries as the representative of the production programming and template meta programming, C + + appeared in the history of the development of another new peak, The emergence of these new technologies and the integration with the original technology, so that C + + has become the mainstream programming language is the most complex one. (Note generics: Generics are a feature of a programming language.) Some strongly typed programming languages support generics for the primary purpose of enhancing type safety and reducing the number of class conversions.
5.9 C # VS JAVA (the 1990s)
C # is a new, object-oriented programming language that Microsoft has tailored for the. NET framework, and C # has the power of C/s + + (the Microsoft C # language definition is primarily inherited from C and C + +) and features that are easy to use by Visual Basic. Is the first component-oriented programming language, and C + + and Java are also object-oriented programming languages. Java is an object-oriented programming language that can be written across platform applications, launched by Sun in May 1995. Java technology, with its superior versatility, high efficiency, platform portability and security, is widely used in personal PCs, data centers, gaming consoles, science supercomputers, mobile phones and the Internet, and has the world's largest developer professional community. In the global cloud computing and mobile Internet industry environment, Java has a significant advantage and broad prospects. It was originally named Oak, which aims to address the control and communication problems of household appliances such as televisions, telephones, alarms, toasters, and other small-system programming languages such as household appliances. Sun gave up the plan because the market demand for these smart appliances was not as high as expected. When Oak nearly failed, with the development of the Internet, Sun saw the broad application of oak on the computer network, and then transformed the oak, officially released with the name "Java". Java programming language style is very close to C, C + + language. Java is a pure object-oriented programming language, it inherits the C + + language object-oriented technology Core, Java abandoned the C + + language easily caused errors in the pointer. Java differs from the normal compilation of computer languages and interprets the execution of computer languages. It first compiles the source code into binary bytecode (bytecode), and then relies on virtual machines on a variety of platforms to interpret the execution bytecode, enabling a "compile-and-execute" cross-platform feature. However, each compile execution takes a certain amount of time, which in some ways reduces the efficiency of the Java program. Unlike traditional programs, Sun is an open technology when it launches Java. Tens of thousands of Java development companies around the world are being asked to design Java software that must be compatible with each other. "The Java language relies on the strength of the group, not the power of the company," is one of Sun's slogans and has gained the approval of the vast majority of software developers. This is completely different from what Microsoft advocates as an elite and closed model. C # looks strikingly similar to Java, but C # is significantly different from Java. The following is a simple list of C # and Java similarities, although here we focus on the differences between C # and Java, but it is also necessary to understand the similarities. A. cross-platform B. Eliminates pointers (pointers can be used in C #, but must be marked with the unsafe keyword) c. All classes are derived from objects and must be allocated memory D &NBSP using the New keyword. All have the concept of an interface (interface). The most fascinating thing about C # is that it's different from Java, not the same place. Since the date of the birth of C #, the controversy between C # and Java has come and went. Although two languages have "90% overlap", the other "10% of the contest" is also often able to control the direction of a balance. But in the drastic changes in C + +, while the C # is more conservative, it is a lot of the original C + + in a very good nature has been retained, in Java are very regrettable to lose. In the type unification between the base type and the single inherited object, C # proposed Box/unbox is more efficient than the Java wrapper class. For C + + unsafe pointers and memory allocation methods, C # and Java both propose a managed execution environment. The problem of efficiency is the place where the managed execution environment has always been criticized, and the way Java Virtual machines (JVMS) are interpreted and executed has made many developers "slow and intolerable". C # JIT-compilation method for C # on this battlefield won the praise of a piece, in the exception handling, whether from built-in support, or from the execution efficiency, C # is more than the Java slightly. "One programming, multiple execution" is always a demand for programming, especially in the modern internet age. Java support and implementation are commendable across platforms, although the speed of the JVM is still a pain in the neck. C # Although in the bottom of the construction of the portability of the full consideration, but at present there is no mature, tested products. The declarations of classes in C # are similar to Java. This is reasonable because experience tells us that the Java model works very well. From a purely technical point of view, C # is undoubtedly more competitive than Java. But it is too immature to crush Java. C # also needs to evolve into a language that developers can accept and adopt. And it is noteworthy that Microsoft is now making a big fanfare for its new language. At present, everyone's response is: "This is a response to Java." "Language choice is art rather than technical problem". Both C # and Java have proposed modern improvements to traditional C + + esoteric grammatical semantics. The huge impact of Java and the widespread acceptance of it has been illustrated by the number of programmers working on the language and platform (estimated to be 2.5 million programmers worldwide using Java). The number of applications written in this language is surprising and has penetrated every level of computing, including wireless computing and mobile phones (such as the Java phone invented in Japan). Can C # receive such courtesy in the user domain? We have to wait and see, just as the CEO and Chairman of SSI, Kalpathi S. SUResh pointed out: "I find all of these are progressive." If C # does not exist, we can always go back to Java or C and C + +. These are not entirely new technologies, they are, in a larger sense, just market gimmicks made by big companies. We have to give them time to settle down and see if this really has any impact on the IT industry. "
5.10 Fourth generation language (4GL)
At present, the programming language and programming environment are developing toward object-oriented language and visual programming environment, many fourth generation languages and their development tools have appeared. such as: Microsoft (Microsoft) developed Visual Series (VC + +, VB, FoxPro) programming tools and power Builder. The main features of the fourth-generation language are: Just tell the computer what to do and how to do it without having to tell the computer, which is the main difference from the previous language. Because most of the technologies and methods put forward by modern software engineering practice are not universally welcomed and adopted, the contradiction of software supply and demand deteriorates further, the development cost of software is increasing, which leads to the so-called "new software crisis". This not only exposes the deficiency of the traditional model of development, but also shows that the simple labor-intensive form to support the software production, no longer meet the requirements of social information, we must seek more efficient, more automated software development tools to support the production of software. 4GL is in this context came into being and grow and develop. Due to the characteristics of "problem-oriented" and "high degree of non process", this kind of language can increase the software productivity and shorten the software development cycle in order to win many users. 4GL takes the function of the database management system as the core, further constructs the development environment of the high level software system. It provides a powerful, unstructured problem definition that allows users to simply tell the system what to do without having to explain what to do, and thus greatly improve software productivity. 4GL should basically be problem-oriented, that is, just tell the computer what to do without having to tell the computer what to do. Of course 4GL in order to adapt to complex applications, and these applications can not be "non-procedural", it allows the preservation of the process of language components, but not the process should be the main features of 4GL. At present, 4GL is mainly oriented to the field of database application, which is not suitable for scientific calculation, high speed real-time system and system software development. Although the 4GL is powerful, it has a certain gap with 3GL in its overall capability. This is an inevitable result of an increase in the level of language abstraction (as high-level languages do not do some assembly language), on the other hand, many 4GL are only for special applications. Some 4GL in order to improve the ability to express the problem, provided with the 3GL interface to make up for its lack of capacity. Oracle provides a tool pro*c that can embed SQL statements into a C program. With the wide popularization of network technology represented by Internet, 4GL has a new space of activity. Having a 4GL that is similar to Java, but higher than the Java abstraction level, is not only possible but absolutely necessary. 4GL will be further combined with artificial intelligence. At present, 4GL mainstream products are basically independent of artificial intelligence technology. With the 4GL of the degree of non-process and the continuous improvement of language abstraction level, will appear functional level of 4GL (the current 4GL popular products are still in the implementation level), it is inevitable that peopleThe support of intelligent technology can be realized very well, so that 4GL and artificial intelligence are widely combined. (Small material: "Real programmers use C, clever programmers with Delphi", this sentence is the most classic Delphi, the most authentic description. Delphi is called the fourth generation programming language, it has the simple, the high efficiency, the function formidable characteristic. Compared with VC, Delphi is simpler and easier to master, but not inferior in function; VB (VB is the abbreviation of Visual Basic, is a visual, object-oriented and event-driven structured advanced programming language developed by Microsoft in the United States in 1991), The Delphi function is more powerful and more practical. Can be said that Delphi also has a powerful VC and VB simple easy to learn characteristics. It has always been a programmer to love programming tool. )
5.11 Fifth-generation language
The fifth generation language is the natural language is also called the Knowledge Base language or the artificial intelligence language, the artificial intelligence language mainly has the Lisp, the Prolog, Smalltalk, C + +. The goal is the language of procedure closest to the everyday language. At present, there is no real fifth-generation language, Lisp and Prolog known as the fifth generation of language, in fact, still far from the requirements of natural language. One might ask what is the difference between using artificial intelligence to solve problems and traditional methods. The traditional method usually puts all the knowledge of the problem in the fixed program, and the problem solving is carried out step by step (article by piece) according to the predetermined steps under the guidance of the program. The idea of solving the problem coincides with the structure of the von Neumann computer. At present, large database method, mathematical model method and statistic method are all strictly structured methods. To solve the problem of artificial intelligence technology, it is often impossible to embody all the knowledge in the fixed procedure. It is often necessary to establish a knowledge base (including facts and inference rules), which determines its actions according to the environment and the input information given and the problem to be solved, so it is an inference process under the guidance of the environmental model. This approach has a great deal of flexibility, conversational ability, self explanatory ability and learning ability. This method is better than the traditional method in solving some conditions and goals which are not clear or incomplete, and the unstructured problem (that is, not well formalized, bad description) is good, and it usually uses heuristics and heuristics to solve the problem. The Lisp language was first developed in the late 1950s by the Massachusetts Institute of MIT (MIT) for the study of artificial intelligence. John McCarthy published an extraordinary paper in 1960, and his contribution to programming in this paper is like Euclid's contribution to geometry. He showed us how to construct a complete programming language on the basis of just a few simple operators and a notation to represent the function. McCarthy calls this language Lisp, which means list processing, because one of his main ideas is to represent code and data in a simple data structure table (list). It is noteworthy that the discovery of McCarthy is not only an epoch-making event in the history of computers, but a pattern that is increasingly programmed in our time. I think there are only two really neat, consistent programming patterns so far: C and Lisp. Both are like two heights, In the midst of them are especially marshy lowlands. As computers become more powerful, the new language has been steadily tending to lisp. For more than 20 years, the popular secret of developing a new programming language is to take the C-language computing model and gradually add the features of the Lisp pattern, such as run-time types and garbage collection. Prolog language is designed to deal with the problem of logic inference (first, to solve the problem of natural language comprehension) which is also a large number of problems in artificial intelligence. In general, Lisp canIn the assembly language called Artificial intelligence, Prolog is a more advanced language of artificial intelligence. In recent years, there has been an artificial intelligence feature object-oriented programming, called the subject (agent, also known as living) programming. By adding more intelligence to an object so that it can infer and plan its own behavior according to the changes in the environment, the subject (Agent) is obtained. The subject-oriented programming language has some, such as Oz (small data, fifth generation computers: in the middle of the 50 's, scientists invented the first generation of vacuum tube computers, and then in the late 50, scientists invented the second-generation transistor computer, and in the middle of the 60 invented the third generation of integrated circuit computer , in the late 60, with the fourth generation of integrated circuit computer, a short span of 10 years, the development of computer hardware developed four generations, from the vacuum tube developed into a large scale integrated circuit. But in the later time, the fifth generation of computers has been slow to appear, even now, thirty or forty years later, we have not seen its shadow. What is the fifth generation of computers. The fifth generation of computers can be said to be the artificial intelligence machine, or the robot that we introduced before. It can understand the human natural language, the person who uses it does not need to write the program, does not need to hit the keyboard or moves the mouse to direct it, by the speech can give the computer the command, commands it each kind of work. It may be an expert with profound knowledge that it may become a person from any job to assistants and staff. It may also "think", helping people to reason, judge, with logical thinking ability. If it is installed on the robot, it becomes a veritable robot. However, the fifth generation of computers still did not appear, why. Because it is difficult to deal with the problem of human natural language, how to understand the language of people, how to speak their own language (absolutely not recordings), in these problems, computer scientists at a loss. )
6 End
Beginning in the early 80, in the software design thought, has produced a revolution, its result is object-oriented programming. Prior to this high-level language, almost all of the process-oriented, the implementation of the program is the pipeline, in a module is executed before the completion of the people can not do anything else, and can not dynamically change the direction of execution of the program. This is inconsistent with the way people deal with things on a day-to-day basis, and for people to deal with one thing when they want something to happen, that is, not to process, but to specific application functions, i.e. objects (object). The next development goal of the advanced language is to apply, that is to say: Just tell the program what you want to do, the program can automatically generate algorithms, automatic processing, this is the procedural language is not procedural. In addition, at the server Side ' Java Symposium in Barcelona, Martin Fowler and Neal Ford made an important presentation of language-oriented programming. Fowler has written that language-oriented programming is defined as "a programming style for building software around a set of domain-specific languages." Fowler and Ford further developed some of these ideas and offered the possibility of "revolutionary progress beyond object-oriented programming". According to Martin Fowler, object-oriented domain modeling allows us to "pool words," but grammar--the way in which words are grouped--is missing; the DSL (domain-specific language) complements the grammatical aspect. Therefore, language-oriented programming leads us "from thinking vocabulary, i.e. object, toward a language concept which combines vocabulary and grammar." "Microsoft's Jeffrey that the future development of programming languages will follow the direction of the C # language, more automated and intelligent." The original purpose of the programming language was to allow people to control the machine, from machine language, assembly language to the present high-level language and the language with more object-oriented and dynamic features running on the virtual machine, the original purpose of the programming language has not changed, but we can now use the advanced language more convenient, Easily develop our application to control the machine. As a result, future programming languages will make it easier for developers to control machines, and a high degree of automation and intelligence will be the direction of future programming languages. There is a long way to go to the programming language that makes robots intelligent, but its trend is self-evident, let us meet 22nd century, waiting for that belongs to the robot era. (Small data: the development of computer applications in China after operating system in Chinese display environment, the Chinese input method of two large leap, is undergoing an important historical period: Chinese culture programming has become a top priority. Fortunately, language has become the leader of the task. )