How to Learn programming well-write to students at school
In October, I had been busy working on a project. Every day, I was immersed in a lot of English documents. I kept experimenting and summing up, that is, I was still thinking about some solutions when I got home at night. The blog has been idle for a whole month, and the winter in Beijing has not found any mood to write. Now the project has come to an end, and it has re-entered the State of learning and discussion, so I think it is time to write something. Listen to some younger students who are talking about what happened in this school, recall the various puzzles they learned from various technologies, and decide to write down some personal experiences. It is a bit of advice for all college students.
I remember that I learned C ++ as the first language in the school. I wrote a lot of code with great interest and showed some results in the ACM competition, I don't know what to do in the real world. Later, I came into contact with Java and databases. Generally, I would group them for some so-called simulation projects, such as borrowing books or ordering systems, I began to find that what I could do was a little similar to the supermarket's revenue-and-cAMP system. Later, I started to work with J2EE and began to work on many web projects. I learned a lot about CSS/JavaScript that my school didn't pay much attention ...... Until now, after studying BEA Tuxedo and BEA WebLogic, I still feel deeply touched. I recalled a lot of detours, but fortunately, I was lucky to have laid many foundations, they gradually played a key role in the process of in-depth technical learning!
First of all, I understand very well those guys who are new to college and can write good code by virtue of their good IQ and quick learning of programming, I hope that my code will be converted into real-world applications through real projects. With the help of some teachers, I have made some things. But in fact, the biggest misunderstanding at this time is that we do not know how huge the computer world is, how incomplete our own theoretical system is, to be honest, if you have not learned computer-related knowledge before entering the University, 1 ~ Within two years, it is impossible to understand how programs you write can play a role in the real world.
Many people have discussed whether to learn C or Java? Countless classic answers are nothing more than one sentence: each has its own strengths! Whether you start with a language, you will find an ideological unity after you go deep into it to a certain extent. In the real world, some requirements are more suitable for the C language and some are more suitable for the Java language. If you cannot understand them for the time being, remember this sentence: the Java language is born and expanded along with the Internet. (However, do not think you understand this sentence. If you have not organized historical clues by the system or experienced the times, remember it as a simple sentence)
In fact, programming language is just a tool. Before you are familiar with this tool, ask yourself how familiar you are with the computer world? For example, you can try to answer the following questions:
1. What hardware and programs does a PC contain when it does not have any system? When installing an operating system, which programs are added to the PC in turn? What is the structure of a hard disk? Can I have two operating systems on one hard disk? How does one boot a hard disk?
2. The school has assigned you an IP address. How do you connect to the Internet through this IP address? What kind of devices are needed to access the Internet? What is the speed? What is your logo on the Internet? What access restrictions can be used to break through these limits? If you use routes in your dormitory, do not look at the DMZ, UPnP, firewall, and broadcast settings in the router settings?
3. If you have installed an operating system, I'm afraid most of them will be windows. Have you ever thought about how the OS controls your hardware resources and what metrics these hardware resources are converted into in the OS. If this OS constructs a file system in this way, does another OS use another idea to construct a file system and control hardware resources?
In fact, the above is only a small detail of different aspects of the computer knowledge system, but the author also found the answers to these questions during his 1st years of work, respectively in different periods, this knowledge plays a vital role in the deep learning of programming and software development. I think that when I first entered the university, I did not care about writing programs and ignored the behavior of the entire knowledge system. Now I feel very young!
Next, let's go back to the programming language. In my junior year, I chose Java for deep learning. Later, I came into contact with many of my fellow students who were outstanding at school, there are also so-called experienced coders who have done a lot of projects. They all claim to be Java masters. It seems that the Code is also well written. However, I believe that learning a language well, such as Java, is far from enough to write code alone. Many auxiliary capabilities and habits can ultimately help you become a master of a language, the author summarizes the following points:
1. A large amount of code writing is the foundation and needless to say
2. A large amount of code reading, source code reading, and advanced code reading, not only reading well, but also reading badly
3. Basic computer knowledge, such as SSL concept, Nat protocol, compilation principle, TCP/IP details, etc.
4. The ability to read and think in English seems to be a constant pain for Chinese programmers.
5. Continuous thinking and observation and analysis capabilities. In short, they are constantly updating their understanding and denying those misunderstandings.
These are complementary, at least I think they are indispensable. Maybe you have used Java for a lot of projects. In fact, some projects are quite large, but you are not clear about the structure, working principle, and memory recovery mechanism of the Java Virtual Machine. Maybe you have made many websites, but you may not be able to tell the JS memory management method. The HTTPS protocol content and the TCP/IP handshake step each time. Maybe you have more and more code experience, however, you never know how database indexes have a positive or negative impact. What are the core issues of caching, connection pools, middleware, and so-called clusters. These shortcomings eventually lead to repeated projects, but you will never be able to upgrade to another level. Although it may still be touted, how impetuous this society is, I believe you do not need to talk about it.
As many teachers may have said, learning software is tiring, new technologies are emerging, and we need to constantly update and learn. In fact, if you really love this industry, you will find that those technologies are inextricably linked. In essence, they are all built on the same knowledge system. If you have learned Java, you can easily find that the C language is concise and far more powerful in some places. If you have learned JavaScript completely, you may find that scripts such as groovy, Ruby, and Perl have their own advantages and features. Further, if you have a good grasp of databases and operating systems, you will find that you suddenly have a lot more experience on system architecture, performance bottlenecks, and fault analysis. In this sense, I believe that many experiences come from the knowledge system itself, rather than the real world.
Finally, I hope to give some advice to students who are still studying computer software:
N in school, it is best not to blindly pursue code writing for projects, and always remember to enrich your knowledge system.
N Keep a good habit in the process of writing code. I have seen too many examples, and I can gradually accumulate due to lack of experience. Once a habit breaks down, it is almost impossible to change it again, never write irresponsible code to save trouble
N never relax in English, because if you are not good at school, it will be more difficult to study after work, and eventually it will become the bottleneck of your increasing technology
N school classrooms and teachers can only get you started. libraries are the best place for you to enrich all kinds of theories. After graduation, it is difficult to find so many precious resources to learn.
N do not think that you already know a lot about it, and try to verify any experience you have heard of, because in this impetuous Society, the value of information and authenticity are uneven.
N after the internship, we must keep thinking and summing up constantly. We need to clearly distinguish the company's model from the results, and the model of learning technology will always be the process over the results, therefore, it is also determined that most of the learning is done out of work to maintain good habits.
End:
When you are free, let's summarize some of the product principles and technology-related things recently studied. After all, the work is quite busy. I sincerely hope that the IT level in China will be improved as a whole! The above only represents my point of view. Sorry for the mistake!