Current location - Training Enrollment Network - Books and materials - I am computer illiterate and want to learn how to start programming.
I am computer illiterate and want to learn how to start programming.
Hello, I am a JAVA programmer, and I have been developing mobile games for 4 years. The following are some suggestions for you, hoping to help you.

First of all, as an excellent programmer, mathematics is very important. Mathematics is the foundation of natural science, and computer science is actually a branch of mathematics. Mathematics can mainly make people understand a method of analyzing problems, and then realize it through programming. Many principles inside the computer also involve complex mathematical knowledge. It is the most effective tool we use to solve practical problems. Many friends who study programming disdain mathematics and think it has nothing to do with programming. In fact, excellent programmers and ordinary programmers depend largely on their ability to learn mathematics. Some projects sometimes need to use mathematics for complex mathematical modeling and system efficiency analysis, but these projects are very difficult for ordinary programmers. Correct application of mathematical knowledge can sometimes make a qualitative leap in the efficiency of your program. Programmers are generally the weak link in mathematics now, which should be paid enough attention to. When others feel at a loss about these projects, but you can finish them, your value is reflected at this time. The most basic thing for a truly excellent programmer is to be able to solve problems that ordinary programmers can't complete through their own knowledge. And mathematical ability is a very important link.

Second, pay enough attention to the data structure. If the most fundamental difference between computer majors and non-computer majors is definitely data structure (everyone learns mathematics the same, mainly depending on whether you learn it well or not). The ability to master and use data structures is a very important indicator to measure your programming ability. Some people have a headache when they look at linked lists, stacks, trees and generalized tables. However, these things can often make your program hundreds of times more efficient than others. Because I have been engaged in informatics olympiad and ACM during my college years, I have a relatively good grasp of mathematics and data structure. This makes me obviously feel that winning a job is a reward in my application and work. I remember the experience of applying for a job in a company when I was in college. At that time, there were three people who should have gone, two graduated from university and one had been working for some time. Everyone is talking about how strong their ability is, how many languages and programming tools they can use and how rich their experience is. I'm supposed to be the most junior. At that time, it was also a newborn calf, X. He was not afraid of tigers, so he crustily skin of head and went. At that time, the topic of the interview was a problem of a company's fund management project, and everyone needed to think about it and give their own design plan. One of the core problems is to calculate the minimum fluctuation value of a fund, which gives a large amount of data and needs high efficiency. For the object-oriented analysis of the whole program, we are all similar. After all, these things are very important in school, and they are not really difficult. But when it comes to the most critical problem, the rest of them are stuck, two of them use simple double loops, and the time complexity (n 2) is terrible. There is also a talk about using trees, which has been puzzling for a long time, the specific technical details are unclear, and the efficiency analysis is sloppy. Only I gave the scheme of using AVL tree at that time, and made a detailed efficiency analysis and time-space transformation by using advanced mathematics deduction, and put forward the method of introducing assembly. I got the job naturally. Here, you can clearly see how important mathematics and data structures are to a good programmer. They are the most critical places to start classes with ordinary programmers. It should be easy to think of the situation you encounter when eating dates.

If you are a friend who wants to learn programming, I have summed up a learning route after years of study, hoping to help you. Learning programming requires great perseverance and perseverance. First of all, you should be clear about your goals and think about what you are programming for. If your study is just impulsive and you want to make up the hammer of Raytheon and become Bill Gates, then I advise you not to start studying, because such a goal will hardly support you to study a lot in the future. And not too old (preferably middle school students or college students). If you have a good goal and decide to start fighting, then start. If you don't know anything about computers at first, you should be familiar with some basic principles and operations of computers. This does not need to be studied in detail, as long as you know binary and some basic operations. Next, you should learn the basic language first. This language won't waste you much time. Learn it just to get started and give you a preliminary understanding of computer programming. At this time, you should make more small programs, know some basic functions of each sentence, and figure out some basic data structures (especially arrays). It's best not to learn any function for other purposes, because it will only distract your attention. When you can skillfully use BASIC to write the monkey king selection, computer test and other programs, you can start the later study. Next, if you feel that you are receptive, you can start learning C (note that it is not C++). If you find it difficult, you can learn Pascal too much first. It is also very important that you should never learn VB, DELPHI and VC at the beginning, which will have a bad influence on you at the beginning. It may lead you to another wrong learning direction and ignore what you really should master. Learning C is mainly about learning the programming of process words. Learn to divide your program into many functions (or processes) and develop good programming habits. At this time, you can look at the master's program. You don't need to understand the meaning, but mainly learn the format of other people's programs (such as how to name variables and how to divide functions). In addition to mastering basic control flow statements, you should also learn some very simple I/O functions and mathematical functions. The learning of C is mainly to abandon the style that all statements in the original BASIC program should be accumulated, and learn to use functions to improve code reusability. If you really don't understand such a thing as a pointer, you can leave it alone first, and there will be a way later. When you can write some small calculation programs in C freely, you can start to learn your data structure (math learning is mainly in school, so pay more attention). You can look at the data structure bit by bit for a long time, and you don't need to set aside a period of time to study it. The purpose is to let you master it well and learn to use the knowledge of data structure to standardize your program design and improve the efficiency of the program. After learning C, I think it's best to learn assembly next. Many people may object to this, but I personally think it is very good. Starting from the most basic DOS assembly, we must read the IBM PC Assembler Program Design (Tsinghua Yellow Book) bit by bit. If you really don't understand it, jump, and you will understand it after repeated strict reading. Compiling must be mastered because it involves a lot of basic knowledge. After mastering assembly and having a thorough understanding of I/O, it is necessary to learn the compilation principle. You don't have to be proficient in this thing, but you must know that having such a concept in your brain will be of great help to you in mastering programming languages. This completes the most basic learning. People with normal intelligence should be able to master all the contents of the previous paragraph. Then the next study depends on your own nature. At this time, you should learn data structure, and don't distract your attention. You should know that data structure is extremely important (believe me, it is absolutely true). If you think you are very clear about trees, linked lists, stacks, sorting and recursion algorithms, you can start learning C++. Before learning, we must have a correct understanding. C and C++ are two different things. Learning C++ means learning object-oriented programming. At this time, you should be able to master pointers (based on assembly), mainly to master some new characteristics of C++ relative to C, and pay attention to understanding and mastering polymorphism and other characteristics. If you don't understand them, you should never continue studying. After mastering some basic concepts, you can look at some programs designed by others and understand how others design programs with object-oriented methods. This thing is also a link between people, and it can be placed as important as the data structure. I've seen some people graduate from college and still don't understand what virtuality is all about. In fact, I think you have laid a good foundation for you to become an excellent programmer. You have been able to apply C++, understand object-oriented programming, master the data structure, and master the principles of assembly and compilation. The next research is based on the operating platform. Generally speaking, we should first learn windows (Microsoft (after all, Microsoft is the boss), win32 api, and engage in the basic message mechanism and principle of windows. Basically, you won't encounter any difficulty in assembling the foundation. In fact, as long as you understand API, the rest of MFC and VCL are in the bag, they are just the encapsulation of API. Both VC and C++Builder can be easily won, just a matter of developing tools. In the future, OLE(ActiveX),. NET and database will depend on their respective development directions. What I emphasize here is the study of the previous basic ability. Although the knowledge system of the operating platform behind is huge, it is relatively dead and easier to master. Finally, the programming ability is mainly determined by the following points: 1. Programming habit II. Mathematical ability (including logical thinking and problem analysis) 3. Ability to understand data structures. How much experience (including the ability to master more languages)

Finally, I wish you success in your studies!