Actually ...... I want to say ...... Algorithms are not mathematical ...... (For nonsense posts, people in the industry do not need to read * ^_^ *)

Source: Internet
Author: User

When I write this title, I will know that it is about to be controversial again. In fact, there is no real "controversy" for people in the industry. Everyone who has worked in this industry knows this thing, but there are many things about death, I like to write things that people on earth know in less refined languages to my blog. The ugly story comes first. Please aim at your goal, and do not hit the grass, or damage the main melody of a socialist harmonious society.

What is an algorithm? An algorithm book is open at hand. It is neither a mathematics nor a logic, nor a data structure. It is believed that algorithms are actually such things. Since the program is the core of algorithms and data structures, does it mean that mathematics and logic are the most important?

In college, the first lie was basically this one. When senior students came to visit us, they said to us with great enthusiasm: "little brother, little sister, be sure to learn mathematics well, you must learn English well. If you do not learn mathematics or English well, you are not in college ......"

At that time, we had a far less profound understanding of the world, and it was also normal to mistakenly enter the scam. If we say that the value of a person's university is limited to learning two disciplines, it is equivalent to saying that the value of a person's university lies in finding the other half-just the world that boys and girls dream. If there is one, it will be crowned. If there is no, it cannot be explained. Because four years are not a lifetime, it cannot be decided for a lifetime. The decision of life is the action of every moment, the courage to seize opportunities at critical moments, the willingness to sleep, the patience of hibernation, and the belief that never give up.

Mathematics constitutes an algorithm because it is the foundation of a computer? But you can see who else will consider the issue of 0101 encoding stream when developing a software? What calculus and probability theory will be considered? The world of computers is an open, multi-level, multi-polarization world. The closer it is to the bottom layer, the less people it will do-because the market will not need that much. There are tens of millions of operating systems in the world. Is that all right? Of course not. However, the number of software is no longer tens of millions, right? Why? All those who have learned the dialectical materialism can draw their own inferences: "The active must be placed above the dead ". If the instruction set is not dead, there will be no compilation or linker established on the instruction set; if the compilation and the linker are not dead, there will be no operating systems based on these compilers; if the operating system is not dead, there is no software based on the operating system. If the software is not dead, there cannot be plug-ins and plug-ins Based on the software.

Many times, we have a lot of options at hand, instead of re-inventing the wheel on our own. Otherwise, Oo, GP, and reuse won't be necessary. For gaming engines, unless necessary, we often avoid requiring users to perform mathematical operations directly-why should we provide setposition, setrotation, and so on? Tell the user to calculate it directly using the matrix and the deciding factor, over ~. But in that case, the user will only say one sentence to you: "You have ruined your responsibilities !" To use the engine, users must avoid too many irrelevant logic: many times, mathematics is also one of them. When I think about launching missiles into a tank, I will certainly perform addition, subtraction, multiplication, division, but when I do path computing, I hope that the physical system can handle everything and don't bother me with these things to affect the quality and readability of my code. Nobody likes to read a pile of things and mathematical algorithms when reading a game's logic code. All you can see is "engine! Let me die! Encapsulate these for me !"

Math, a mathematical that is too short, may not be called a mathematics. It cannot be regarded as an elegant place, nor can it be put into a university class to defile the wisdom of professors. However, if it is too metaphysical mathematics, it should be put into engineering, tarnish the time and space of engineering personnel? This is not a reason. Do not treat yourself as noble, just as you cannot treat yourself as vulgar-any problem should be considered with a calm mind. Mathematics is not everything. Useless mathematics is the same as useless code. Garbage is garbage.

In the eyes of a developer who writes a game project, matrix A Cross-multiplication matrix B is very attractive. His main work is very specific. How is the performance of the American devil's six-shot firepower every second, hitting the ground, branches, and even trunk in the sky? How can we make these idiots not so intensive? (On the background) How can we ensure that too many bombing points are not displayed on the same screen to prevent the particle system from being overloaded? How should our army sniper first find the cool Commander K? Seeing that the position was about to be lost, a hero clenched his head and shouted "Blow Me" toward the phone. He jumped in and went down, and the same kimchi and ghost came together, how can we highlight this tragic and great atmosphere ?! .......... None of these things belong to the processing scope of calculus, composite mathematics, and linear algebra, also, don't tell me how advanced mathematical knowledge is required to write these things. Just tell a person with at least logical skills how to write a script, take a moment to get familiar with it. Of course, the premise is that you have to have a good middle layer and encapsulate all the encapsulated data.

I want to ask: are these algorithms? You said no. Of course, it may not be an algorithm you think, but it is one of thousands of logical units that make up the game.

I have never done anything about enterprise software, but I am afraid it is even worse. The user's requirements and design, in many cases, encoding is only performed on the UI interface, processing a by a, pressing B, turning off C, and pressing D, enable C and other tasks.

I want to ask: is this an algorithm? You also said no, of course, it is not an algorithm in your mind, but it is a group of thousands of logical units that constitute the entire project.

What is an algorithm? You said that algorithms are those written in the algorithm textbooks: sorting, graph theory, hash tables, binary trees ...... I groose and sneer. If the software was designed for the 21st century and we had to sort the linked list of the whole people as we did for half a century ago, we would be able to collectively commit suicide to thank the people! Or, you have dug yourself into a trap to avoid criticism, fight, live in a cowshed, and throw your dog's nest. The software has been used for half a century, we, however, are even more advanced than our grandparents, and can indeed commit suicide. I confess, I have not written hashmap any more than the junk code written in the school, but it does not prevent me from using STD: hash_map. At the same time, when using hash_map, I found it easier for me to communicate with colleagues. They don't even need to ask, "Lao Li, what data structure and algorithm are you using ?" When they look at hash_map, for_each, and remove_if, they all know that they don't even need annotations. This kind of convenience is excellent. We have used such a perfect c ++ standard library, and we have been alienated. Many of us will not understand hash tables, I don't know graph theory. I don't know this one. We do. Damn it! Damn it! Let's make every effort to kill us!

But do you see the software industry boom half a century ago?

The practice of putting algorithms and engineering in strict opposition is like stripping fish out of the water cylinder. Apart from saying that you are high, there is really no face to boast about you. I am really sorry to write a graph database. Ask where the graph library you write is better than boost: Where is graph? High efficiency? Strong scalability? Or something else?

Yes, you can curse me for leaving the boost and C ++ standard libraries to do nothing. Although you blame it for no reason, it makes no sense, but I assume that what you said is true, I can't do anything without the keyboard or mouse! What does this mean ?! The development of any things is based on the bodies of old things. It is impossible for new things to be born without the willingness of old things to die. If we are still in the era of punching and perforation, how many people will use computers? If we are still in the 5-inch pie era, how many people can use Windows, office, and Ubuntu?

However, it turns out that old things are not really "dead", but are more constructive and involved in the world of new things. C language, x86 assembly, Is it dead? Not dead, because the operating system encoding still requires him. It does not die, but is more precious because there are fewer people. In the traditional sense, algorithms are the same. They will not die, but will become more and more precious because fewer and fewer people are doing it. A few people prepare the underlying layer, while most people give up their burdens and pay more attention to their modules and functions. This is the world that is multi-layered and multi-polarization, but can work together.

Of course we should understand the traditional algorithms. In fact, we know almost everything from colleges and universities. Just hope, don't let us know with another silly voice: "Mathematics is an algorithm, and algorithms are everything ......". None! Your so-called algorithms are not so noble. It's time to let him go, the actual, specific, underlying, and hidden projects work together with virtual, abstract, ivory tower, and metaphysical traditional algorithms, in order to build a software connotation and extension.

Algorithms cannot be separated from engineering, just as engineering cannot do without algorithms. The efficiency of one or two core algorithms may be related to the structure of the entire core module of the project, the loosely coupled engineering design cannot achieve unrelated logical coupling. When considering these two core algorithms, it is often impossible to get familiar with and master the specific tools and APIs of relevant majors. This is just like converting from the retention mode of direct3d to the Immediate Mode-the methods and habits of calling have changed. How do you ensure that the algorithm design will be the same? How can we ensure "loose coupling "? Just as agricultural software and game software, industrial process software, and enterprise process software have different applicability, how can they design the same algorithms ?!

The underlying tools, hardware structures, and APIs determine algorithms. algorithms are related to the core structure of the project. The design of the core structure of the project also affects algorithm implementation. The final result is to complement each other and complete a complete solution. The idea that the (so-called) algorithm is higher than the engineering structure and that the engineering structure is higher than the algorithm is too different from reality. Because contradictions are the unity of opposites, or opposites, the ultimate goal must be unity!

Colleges and universities do not necessarily need to cultivate a large number of people who can write at the bottom, because it is really unnecessary. We should also refine the categories and specific positions of these positions based on people's preferences and the real positions required by the software industry, so as to arrange their respective bright futures, this is the responsibility of the leaders of the community leaders.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.