Suggestions from a programmer for beginners! Absolutely good

Source: Internet
Author: User
Tags mathematical functions

This article is the author's experience over the years, mainly to those who want to learn programming and are very confused, hope to bring a little help.
My first computer contact was in the second year of elementary school. At that time, it was just because I liked to play video games and heard others say that the games on the computer were very fun, so I started to get in touch with them. When I was in the third grade, my parents sent me to a basic programming class out of my strong interest in computers. Since then, I have really started programming. Although the program design profession is very popular in the society and the competition is fierce, there are only a lot of people learning programming. There are very few people who can really grasp and be proficient. After all, China's software industry is just getting started. The demand for excellent program designers in the society is still quite large, but the premise is that it must be excellent. Although I am not good at myself, I still feel a little bit. Here, I want to talk about my technical knowledge of general programmers and excellent programmers (I will not say much about my professional attitude towards life ):

First of all, as a good programmer, mathematics is very important. Mathematics is the foundation of natural science, and computer science is actually a branch of mathematics. Mathematics helps people understand a method for analyzing problems, and then implement it through programming. Many internal computer principles also involve complex mathematical knowledge. It is the most efficient tool for solving real-world problems. Many programming students think that mathematics does not matter. In fact, a great number of excellent programmers and general programmers depend on their abilities in mathematics. Some projects sometimes require complex mathematical modeling and mathematical analysis of system efficiency, which is very difficult for general programmers. Correct application of mathematical knowledge can sometimes lead to a qualitative leap in your program's efficiency. Nowadays, programmers are generally weak in mathematics, which deserves sufficient attention. When you are able to complete these projects, your value will be displayed. A really good programmer is the most basic thing to do is to be able to solve the problem that General programmers cannot do through their own knowledge. Mathematical ability is an important part.

Second, we should pay enough attention to the data structure. If we say that the fundamental difference between computer science and non-computer science is definitely data structure (mathematics is also learned by everyone, mainly depending on your own learning quality ). The ability to master and use data structures is an important indicator to measure your programming ability. Some people have a headache when reading linked lists, stacks, trees, and generalized tables. However, these things often make your program more efficient than others. Because I have been engaged in the informatics competition and have been engaged in ACM at the University, I have a good grasp of mathematics and data structures. This makes me feel competitive in my application and work. I remember my experience in applying for a job from a company when I was in college. At that time, I had three people who graduated from two universities and one who had been working for a while. They are all talking about how powerful their capabilities are, how many languages and programming tools are used, and how rich their experience is. I should be the least qualified. At that time, it was also a newly-born ox, not afraid of tigers, so it had a hard scalp. At that time, the interview question was a question about a company's Fund Management Project, asking everyone to give their own design solutions after thinking. One of the core problems is to calculate the minimum Fluctuation value of funds. The given data volume is quite large and requires a high efficiency. The object-oriented analysis of the entire program is almost the same. After all, these things are very important in school and are not really difficult. However, when the most critical issue was reached, the rest of the people were stuck. Two of them were simply a dual loop with time complexity (N ^ 2), which was terrible. Another one said to use trees after a long time of hard thinking. The specific technical details were unclear, and efficiency analysis was also very sloppy. Only at that time, I quickly gave a scheme to adopt the AVL Tree, and made a detailed Efficiency Analysis and time-space conversion using the advanced mathematics derivation, and proposed a method to introduce the assembly. Naturally, I got this job. Here we can clearly see how important mathematics and data structures are to a good programmer. They are the most critical part of opening up a grade with a general programmer. In this way, it should be easy to think of the situation that "jujube" encountered.

If you are a friend who wants to learn programming, after years of study, I have come up with a learning line to help you. Learning programming requires great perseverance and perseverance. First, you must clarify your goals and think about what your programming is. If you only want to compile quake and build it into Bill for a while, I suggest you still not start learning. It should be difficult for you to support a large amount of learning in the future for such a goal. And you cannot be too old (preferably a middle school or college student ). If you think about your goals and decide to start fighting, let's get started. If you do not know anything about the computer at first, you should first familiarize yourself with some of the most basic computer principles and operations. This requires no special learning, you only need to know the binary and some basic operations. Next, you should first learn the basic language, which will not delay you too much time. It is completely for beginners, so that you have a preliminary understanding of computer programming. At this time, you should compile some small programs, know some basic functions of each statement, and clarify some basic data structures (especially arrays) for some functions for other purposes, it is best not to do any learning, because this will only distract your attention. When you can skillfully use basic to compile programs such as monkey election and computer examination, you can start later learning. Next, if you feel that you have strong acceptance ability, you can start to learn C (note that it is not c ++). If you feel that it is difficult, you can learn Pascal too much first. It is also important that you never learn about VB, Delphi, Vc, and other things at the beginning. These things have a bad influence on you at the beginning. It is possible to introduce you to another wrong learning direction and ignore what you really should know. Learning C is mainly to learn the process of programming, learn to divide your program into many functions (or processes), and develop good programming habits. At this time, you can look at the high-person program, not necessarily understand the meaning, mainly to learn the format of others' programs (such as how to name variables, how to divide functions ). Apart from the basic control flow statements, you should learn some very simple I/O functions and mathematical functions. C learning is mainly because you discard the style that originally compiled all the statements in the basic program. You must learn to use functions to improve code reusability. For pointer and other things, if you really don't understand it, you can leave it alone first, there will be a way later. When you can easily write some small computing programs in C, you can start learning your data structure (Mathematics Learning is mainly at school, ). You can view the data structure at 1.1 points without having to study it for a period of time, you must learn to use data structure knowledge to standardize your program design and improve program efficiency. After learning C, I think it is best to study assembly. This may be opposed by many people, but I personally think it is good. Starting from the most basic dos compilation, the purchase of the ibm pc assembly programming (Tsinghua Huang Pi) must be thoroughly understood at 1.1 o'clock, repeated strict reads are understandable. Compilation must be mastered because it involves a lot of basic knowledge. After mastering assembly and having a thorough understanding of I/O, we should learn the compilation principles. Do not be proficient in this thing, but be sure to know that there must be such a concept in the brain, which will be of great help to your ability to control programming languages. In this way, the most basic learning is completed. Generally, people with normal intelligence can master the previous section. The subsequent study will be based on your own creation. At this time, you should study the data structure, and do not distract yourself from learning. You must know that the data structure is extremely important (believe me, it is absolutely true, you can start to learn C ++ by using algorithms such as tables, stacks, sorting, and recursion. You must have a correct understanding before learning, that is, C and C ++ are two different things. Learning C ++ is to learn object-oriented programming. At this time, you should be able to master the pointer (with the basis of assembly ), we mainly grasp some new features of C ++ compared with C. We should be aware of the characteristics such as polymorphism. If we do not understand them, we will never learn any further. After some basic concepts are mastered, you can look at some programs designed by others and learn how others design programs using object-oriented methods. This is also a step for people to open their ranks, and can be put in the same important position as the data structure. I have seen some people who have graduated from college and do not know what virtual is like. In fact, I think that you have already laid a good foundation for you to become a good programmer. You have been able to apply C ++, understand object-oriented programming, and have a good grasp of the data structure, master assembly and compilation principles. The next step is based on the operating platform. Generally, you should first learn windows (Microsoft is the boss after all), first learn Win32 API, and ask for basic Windows message mechanisms and principles, there is basically no difficulty in assembly. In fact, as long as the API is involved, all the other MFC and VCL are in the bag, but they are encapsulation of the API. VC and C ++ builder can be easily won, which is just a problem with development tools. Later Ole (ActiveX),. net, and databases will depend on their own development direction. I am here to emphasize the learning of the basic capabilities above. Although the Knowledge System of the operating platform is large, it is quite difficult to grasp after all. Finally, the level of programming capability is mainly determined by the following points: 1. Programming habits 2. Mathematical ability (including logical thinking and problem analysis) 3. Ability to understand data structures 4. Experience (including the ability to master multiple languages)

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.