Section 1: Computer/Language Development History

Foreword:
Hello, everyone, I am Youfeng Nuoyue. From this section, I will explain the C# programming language in the object-oriented language from a beginner's perspective (newcomers who have never touched the program at all) in the form of a blog.

If you like this series of tutorials and want to watch for a long time, please pay attention to me (updated irregularly, if someone urges to update it, it will be faster)

1. The history of computer development

Since you want to learn the programming language of computers, you need to know more or less the basic development history of computers. Although this is not the point, I still recommend that you Baidu "Computer" to check the basic development process in detail.

(If you are too lazy, here is a partial screenshot)
If you are too lazy, here is a partial screenshot

2. Classification of programming languages
After we have a basic understanding of the development history of computers, we need to understand the development history of computer programming languages ​​(not in the drawings, please refer to Baidu if you are interested).
1. Machine language
Machine language (machine language) is an instruction set system. This instruction set, called machine code, is data that can be directly interpreted by the computer's CPU. Machine code is sometimes called Native Code. This term emphasizes a certain programming language or library, which is related to the operating platform.

The first generation of computer language is called machine language. The above paragraph comes from Baidu, so you may not understand it very well (if you look up the history of computer and language development, you should understand it).

Generally speaking, machine language is composed of 0 and 1. Since computers can only recognize 0 and 1, machine language can only be 0 and 1 (as long as friends who understand computers a little bit have heard of computers 0 and 1 1 thing right).

To put it bluntly, machine language is the initial language of computers. It is the only binary programming language that can be directly understood by computers. Why is it called machine language? I think everyone understands.

To write a program in machine language, the programmer must first memorize all the instruction codes and the meaning of the codes of the computer used. When programming by hand, the programmer has to deal with the storage allocation and input and output of each instruction and each data by himself, and he has to remember the state of the work unit used at each step in the programming process. This is a very tedious job. The time spent writing a program is often dozens or hundreds of times the actual running time. Moreover, the compiled program is all instruction codes of 0 and 1, which is not intuitive and easy to make mistakes. Except for professionals from computer manufacturers, most programmers no longer learn machine languages.


Advantages and disadvantages of machine language: Advantages: direct execution, fast speed, and less resource usage

Disadvantages: poor readability, portability, and complicated programming (the machine languages ​​of different types of computers are not interlinked, and a program compiled according to the machine instructions of one computer cannot be executed on another computer.)

Features: Binary code that can be directly recognized by the computer, it is a face camera language

3. Assembly language
Machine language is obviously not something ordinary people can learn, so the second generation of language: assembly language appeared.

Assembly language is a low-level language used in electronic computers, microprocessors, microcontrollers or other programmable devices, also known as symbolic languages.

The above paragraph is from Baidu, but this only illustrates the basic concepts of assembly language. So what exactly is assembly language?

Assembly language is like converting a bunch of boring machine language into English words. For example: add 1, 2;
add is an English word, so it seems to have a little meaning, that is, 1 and 2 are added together. This is assembly language.

Advantages and disadvantages of assembly language

Advantages:
1. Because the program designed in assembly language is finally converted into machine instructions, it can maintain the consistency of machine language, direct and simple, and can access and control various hardware devices of the computer like machine instructions, such as disks, Memory, CPU, I/O port, etc. Using assembly language, you can access all the software and hardware resources that can be accessed.

2. The target code is short, occupies less memory, and has fast execution speed. It is an efficient programming language. It is often used in conjunction with high-level languages ​​to improve the execution speed and efficiency of programs and make up for the lack of high-level languages ​​in hardware control. It is widely used. .

Disadvantages:
1. Assembly language is machine-oriented, at the bottom of the entire computer language hierarchy, so it is regarded as a low-level language, usually designed for a specific computer or series of computers. Different processors have different assembly language grammars and compilers, and compiled programs cannot be executed on different processors, lacking portability;

2. It is difficult to understand the program design intention from the assembly language code, and the maintainability is poor. Even simple tasks require a lot of assembly language code, which is easy to produce bugs and difficult to debug;

3. To use assembly language, you must have a good understanding of a certain processor, and can only be optimized for a specific architecture and processor, the development efficiency is very low, the cycle is long and monotonous.

Features: It is a face camera language

4.
Although the high-level language assembly language is very good, after all, the times are advancing. Naturally, it needs to be better replaced with demand (no high-level language can replace machine language or assembly language, because all high-level languages ​​are in Built on top of them).

After assembly language, a third-generation language appeared. The third-generation language is also called "high-level language". And assembly language and machine language are collectively referred to as low-level languages.

The development of high-level languages ​​is divided into two stages, with 1980 as the dividing line. The first stage belongs to structured languages ​​or process-oriented languages, and the latter stage belongs to object-oriented languages.

First of all, everyone must understand one point, which is also a very important point for novices. Although a high-level language is called a high-level language, it sounds like it is quite high-level and is better than low-level languages. In fact, this is not the case. On the contrary (because the more "low-level" languages, the more basic and low-level languages. , Then other languages ​​will cease to exist).

Computer languages ​​are divided into high-level languages ​​and low-level languages. The high-level language is mainly relative to assembly language. It is a programming that is closer to natural language and mathematical formulas. It basically breaks away from the hardware system of the machine and writes programs in a way that is easier for people to understand. The written program is called the source program.

High-level programming language (High-level programming language) is a system of instruction set relative to machine language. In this language, its grammar and structure are more similar to Chinese characters or ordinary English, and because it is far away from the direct operation of the hardware, ordinary people can program after learning. High-level languages ​​are usually classified according to their basic types, generations, implementation methods, and application scopes.

High-level languages ​​are divided into two categories: face-to-face process and face-to-face object. The difference between them is not explained here.

There are many high-level languages ​​such as: java, c, c++, C#, pascal, python, lisp, prolog, FoxPro, etc. (they have face-to-face objects and face-to-face procedures, not listed one by one).

The characteristics of high-level language
Machine language, assembly language, are both a language. But high-level languages ​​are different. There are really many high-level languages, and their respective advantages and disadvantages are naturally different, but their characteristics are the same.

Because of the clear goals and easy understanding, it is easy for a novice to learn high-level programming languages. At the same time, high-level programming languages ​​have many function libraries due to their development history. Users can add header files to the code according to their own needs to call these functions to achieve their own functions. Of course, users can also write functions according to their own preferences to follow up Called in the code.

As a general programming language, the high-level programming language has nothing to do with the computer's own hardware and instruction system. It is more readable, can easily express the functions of the program, and better describe the algorithms used. At the same time, it is easier to be mastered by beginners and easy to learn. And easy to learn and master. However, because the high-level programming language is a compiled language, its running speed is lower than that of an assembler. At the same time, because the high-level language is more verbose, the code execution speed is also slower.

High-level programming language, as a user-level programming tool, users do not need to understand the structure of the hardware, but use a logical language to achieve the desired goal, but because the architecture of the high-level programming language is higher than that of assembly, they cannot write directly System programs that access hardware resources. Therefore, high-level programming languages ​​must call programs written in assembly language to access hardware addresses.
(The above paragraph is from Baidu, just look at the features)

Simplified understanding: the closer to the bottom layer, the higher the operating efficiency, and the lower the development efficiency. The farther away from the bottom layer, the higher the development efficiency and the lower the operation efficiency. (Operational efficiency refers to the utilization rate (performance utilization), and development efficiency refers to the time it takes to develop a certain software)
5. The growth phase (additional not to be seen) The
learning process is staged, and some friends may also be curious , I generally divide it into 4 stages: introductory, familiar, proficient, and proficient.
Introductory and familiarization are generally a transitional process in the learning phase, and the general professional level is enough to use the language proficiently.
It is worth mentioning that it is great to be proficient in this concept, and everyone has different standards. Generally, recruitment of small companies will write requirements to be proficient in XX language. This is actually a misleading. Everyone can understand it as proficient use and can reach the level of doing projects.
If a very formal point of view is required to explain "proficient", then the following should be more accurate:
I searched a lot of opinions and explanations of seniors, combined with my own point of view, I think it is very good to be proficient in a language It's amazing, and it will take 10 years to get started to reach the level of proficiency.
Need to meet: be able to join the standard committee of this language/guide language development, participate in the formulation of new features, iteration of new versions, and understand how the language's compiler/interpreter works.

Six, summary

  • 1. The language is divided into 2 major languages: low-level language/high-level language.
  • 2. High-level languages ​​are also divided into two types: object-oriented/process-oriented.
  • 3. Languages ​​have their own advantages and disadvantages, and there is no distinction between high and low.
  • 4. Both assembly language and machine language: face camera language (if you need to know Baidu)
  • 5. Assembly language and face-to-face camera also have the characteristics of face-to-face process.
  • 6. Haste is not enough, pursue your own heart.
  • 7. Welcome attention if you like it.

Guess you like

Origin blog.csdn.net/weixin_45213735/article/details/102569491