20165310_Java learning impressions

Java learning impressions

grammar study

​ Learning a programming language, syntax is the foundation. This is the meaning of the book, and the book learning and code practice of each chapter is a process of laying the foundation.

​ The content of the book becomes more and more difficult, especially in fact, in my opinion, the basic grammar of the first five chapters is more important than the more esoteric content that follows. It's not too late to learn the content.

​ For example, the I/O in Chapter 8, which I have been reading and feel that I cannot master it, gives me a headache, but in the pair programming of four arithmetic operations, due to the need to implement the input and output functions of the file, I have to perform each input and output method. More concentrated and in-depth study and understanding, and then choose the most suitable input and output streams for the needs and the advantages and disadvantages, and finally learn the grammar to achieve this function, the effect is much better than the simple reading at the beginning.

​ Without the foundation of the first five chapters, it is impossible to learn more esoteric grammar in one step, so this foundation cannot be ignored. And just define learning a language as learning grammar. From an objective point of view, the content learning task of two chapters a week is actually very stressful. Personally speaking, I can only swallow it whole. thereby progress. Of course, if you have enough energy and ability to complete the learning task, you can also study the content of the book in detail, and perhaps the foundation will be more solid.

practice consolidation

​ The so-called "on paper is ultimately shallow, and you never know that you have to do it." Books are the foundation but should not be restricted to books. All language learning is for practice.

​ I don’t know if any of my classmates have the same feeling as me: I just read books and don’t use them. After a week or two at most, they will forget them. At this time, the effect of the experiment will be reflected.

​ But each experiment is not a smooth process. It often takes a lot of time and energy to design and debug. Whenever the code that has been written so hard can't even run, my heart actually collapses. . But it is the tireless debugging and single-step running time and time again that will enable us to discover some details that are overlooked in reading books and discover the loopholes in our own thinking. This is the thing in the book that will become your own thing, every time The sense of accomplishment after completing an experiment will also motivate you to continue learning.

metaknowledge

​ So according to this statement, we finish the first five chapters and write experiments regularly, then we have completed the Java course as early as a few weeks before the start of the semester. Isn’t our subsequent courses meaningless?

​ The answer is no. I remember that in the first class of the school, the teacher mentioned the concept of meta-knowledge . Our follow-up study, in my opinion, is the process of constantly learning meta-knowledge.

​ This process is a process that goes beyond the Java classroom and is an ability that can be used in other fields.

Tool mastery and learning

​ My computer is a MacOS system, and my classmates who use the same system may have a relationship with one thing: installing software tools is sometimes too troublesome.

​ Indeed, without using a virtual machine, there are not many tutorials on installing and using some tools on MacOS. It shares many parts with Linux but also has many differences, and it is completely different from Windows. Every time you install a new tool, it will make us It took a lot of energy, such as the last installation of XAMPP, under the influence of various factors such as ports, environment, and configuration, it took me a weekend of research to work properly.

​ But every time this is not a simple process, I have mastered the ability to quickly find solutions through the network, and how to solve the installation and use problems of the development environment and tools by myself. This ability is not limited to Java development and use, but also useful in other learning.

learning of thinking

What is the biggest difference between Java and C language? It's the difference in their thinking. In the process of starting to learn Java, I have experienced a long process of thinking change. Generally speaking, C language is more about solving one problem, while Java is more about solving one kind of problem.

​ Ashamed to say, in fact, until now, sometimes my programs still fail to fully meet the principles of O·L·D·I·C·L, but I have been trying to change my thinking, and I am constantly revising the programs I have written in the past. Trying to get close to this principle, although the goal has not been fully achieved, the process itself is a kind of progress, and the progress of thinking is actually a more important gain than the learning of grammar.

​ I am not opposed to online inquiries and borrowing from other people’s code, because I often have logical questions to answer, and every confusion I solve is the accumulation of experience and thinking, but I do not agree with direct copying and pasting, because it is not The grammar of the meeting can be queried and used for reference, but the thinking of others cannot be used for reference. If you do not master it, you will still not be able to solve the problem independently next time.

Don't duplicate wheels

The above impressions seem to describe Java as a tough learning process, but in fact, if you can find the right labor-saving way, the process will be much easier.

​ As I said above, I am not opposed to reading other people’s code for inspiration when you encounter a bottleneck, and being able to reference other people’s libraries is an easy and simple approach. It is well known that repetitive manufacturing wheels are not a problem. smart behavior. Of course, it is also a necessary process to implement programming in order to deepen our understanding and learning before citing other people's libraries, just as we sortunderstand and implement a series of functions such as quick sort and bubble sort before using the method, but if the second It is a bit thankless to "reproduce the wheel repeatedly" every time.

For example, the library of cryptographic algorithms mentioned in the previous teacher's class can be used in the next cryptographic experiments. Being able to be "lazy" correctly, I believe everyone likes it.

The application of meta-knowledge

​ In fact, the application of these meta-knowledges is often an inconspicuous and subtle enhancement of learning ability, but due to the continuous competition during this period, my feelings are more profound.

​ During the competition, you will often encounter content that you have never been exposed to, involving program topics, and not only C language, Java-related programs need you to interpret, you see more Python, JavaScript, PHP...

​ But you will never hear a contestant say: I have not learned this language, and I will not do the problem. Instead, you must hurry to learn the new syntax of the new language, and understand the code and meaning of the problem as soon as possible. At this time, your meta-knowledge will come in handy: can you use search engines to quickly find suitable programming, running environment? Can you combine what you've learned to understand the new grammar as quickly as possible? ... At this time, you will find that all languages ​​are just tools and carriers. The same topic can be written in different languages, but the essence has not changed. Even in relatively familiar languages, such as Java, you need to relearn uncommon classes, such as the classes that appeared in the last competition, which BigIntegerare also a new learning.

​ But at the same time, it does not mean that it is enough to understand the language you have mastered. For example, the object-oriented thinking of Java mentioned above makes me familiar with Python and other similar thinking, which is a benefit brought by frequent use and thinking. At the same time, whether you can rewrite and run a question in an unfamiliar language into a language you are familiar with requires a lot of knowledge. If you spend hours writing and debugging code, you will miss the opportunity to do the question. So for the language we have learned, we still have to keep improving and make progress.

summary

​ Everyone’s learning style is different. Some people are suitable for systematic theoretical knowledge learning and then practice experience. Some people are suitable for learning while doing, such as me. As long as it is suitable for their own gains, they are worthy of encouragement. There are still many deficiencies that need to be improved in my learning method, and it is even more necessary to gradually adjust the direction and method in the learning process, and continue to improve.

​ The important thing is that we must be clear about our goals, learn and analyze meta-knowledge , hard knowledge and soft knowledge and apply them flexibly, and strive to move forward towards the goal. I believe that not only in Java, but in any field will be successful.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325479162&siteId=291194637