The ability to count: it is often used in the for cycle, and primary school students can do it.
Addition, subtraction, multiplication and division of numbers: every programming language has built-in support, and it is not necessary to calculate the remainder and modulus by itself: occasionally, you can get set operations: intersection, union and difference sets, which are not used much in programming.
Boolean operation:? And, or,? Non-binary: binary, decimal, hexadecimal, what else? I don't remember.
Of course, this has a lot to do with my programming field. Jade Bird of Liaoning Peking University thinks that if I don't do Web development, I do search, games, security, algorithms, artificial intelligence and so on. The demand for mathematics is expected to soar.
In fact, the basis of computer is mathematics, but we have been programming in the application layer and can't understand it.
For example, most of the computers we use every day are so-called Von Neumann structure, which can be said to be the concrete realization of the concept machine Turing machine, which is a purely mathematical thing. Without the great abstraction of Turing machine as the mathematical basis, modern computers cannot be made.
For another example, the field of cryptography needs a lot of number theory knowledge, and RSA algorithm involves the decomposition of large prime numbers; The underlying foundation of relational databases such as Mysql and Oracle is the Cartesian product of discrete mathematics. A very important principle in communication system is Fourier transform.
The compiler will use a finite state machine; Data compression will use various mathematical algorithms; In the progress management of project management, the mathematical basis of Gantt Chart is graph theory.
..... In short, mathematics plays a very important role in computer science and is the foundation of the whole discipline.
2. What can you spell if you don't spell math? Specific to application-level programming, especially Web development and enterprise information development, it is a framework and class library that is tossed around all day, and does not need so much mathematical knowledge. What is this? Think about arrays commonly used in programming. If it is a one-dimensional array, do a loop and traverse, and everyone can handle it easily.
If you want to use an array to represent a binary tree, you need to correspond the tree structure to a linear structure, and the difficulty will rise immediately.
If you need to implement the linked list yourself in programming, you will find that it is not easy to maintain the link relationship of each node, and you need to adjust the pointer and move back and forth.
This ability is the embodiment of logical thinking.
When we do system design, we often need to summarize and analyze the actual requirements, find the parts that are easy to change and relatively stable, package them, form the core concept and support the whole system. This is an abstract process. Although we don't need much mathematical knowledge, the thinking process is extremely difficult.
The difference between logical thinking ability and abstract ability can distinguish the Excellence and mediocrity of programmers
The code written by an excellent programmer has clear interface, easy expansion and easy maintenance; ? The code written by a poor programmer is chaotic, completely piled up by some computer statements, which others can't understand, and they can't understand it after a while.
Mathematics students are good at these two aspects. Think about it, the students of mathematics department toss about so many "boring" abstract concepts all day, and then go to see programming, mostly concrete implementation, which can be done in minutes! This may be the reason why the department of mathematics has turned to the field of programming miserably.
Logical thinking ability can be effectively improved by learning data structures and algorithms and doing data structure exercises, while abstract ability needs constant practice and accumulated experience in practice.
Beginners in programming, try to improve from now on!