Many times, I have asked myself, what is the use of learning algorithms?
As a student at the School of Software, I have learned C language, C, data structures, and algorithms. Among these courses involving programming, I feel that algorithms are the least useful. Of course, , the use of the little finger here is after work. Most of the time during the work process, there is no need to design an algorithm, or apply a very awesome algorithm in the introduction to algorithms. It is more just a way to complete one module and integrate two modules, mainly design patterns and Viewpoints such as object-oriented are playing a huge role, and algorithms must have simple data structures, and may not even require any algorithms at all. I guess this should not be the case in JAVA, which is more of a module building process. Rare.
There are some awesome people around ACM, ranked in the top ten on POJ, but when it comes to work, his algorithm skills do not seem to be of much help to his work. He just writes something in JAVA every day, and then tests and fixes some bugs. It doesn't involve DP, greed, or graph theory at all. As long as the function is realized, it doesn't matter what you use. This kind of thinking should exist. Not everyone can go to a research institution like Microsoft Asia Research Institute, which has high requirements for algorithms. If you go to an ordinary company, as long as you can speak the language, understand some technology, and have done projects, you can basically meet the requirements. As for the interview, you may Asking a few data structure questions will not ask you to write a DP algorithm on the spot, or give you an ACM question to talk about your ideas. The R&D team doesn’t really need algorithms, let alone the testing team.
Then what’s the use of learning algorithms? In fact, this question is very similar to what is the use of learning mathematics. After working, it is rare for anyone to be able to calculate an integral, or find a limit, or even solve a system of quadratic equations of one variable. Chatting with a senior who has been working for a year, he said that data structure, design patterns, operating systems and English are very important. As for algorithms, he didn't mention them at all, and of course he didn't mention calculus.
I think that if we think in terms of mathematics and teach people to think, the same is true for algorithms. Algorithms are essentially mathematics. For example, there are many algorithms in combinatorial mathematics, as well as discrete mathematics. Many times, this knowledge is not used. Even if it is used, it can be read by looking up a book, and then it will be forgotten again soon. To become an average programmer, you don't need to learn many algorithms. Only those who are determined to become excellent programmers should learn some algorithms, which will be beneficial to their own thinking and the improvement of their abilities. Maybe in a group of programmers, everyone can design patterns and be proficient in C/JAVA, but if you are proficient in algorithms, then you will definitely be better at it. Even if you can't use it, it is your weight. You know more than others and can't do it. Not a bad thing.
The above is the detailed content of Why study algorithms?. For more information, please follow other related articles on the PHP Chinese website!