Learn the basics of programming, advanced to become better programmer

"Script kiddies" often copy the script code from certain Web sites, and then paste everywhere, but do not understand where the methods and principles
when you see the programming language compiled into textbooks, to see a liberal arts students also write Python when the program data analysis, you will find that this is an era of all things Internet, but also a universal programming era. And in this era of national programming of how to improve themselves so that they stand out in a competitive environment, I think this is a problem we are thinking about.

Ordinary programmers VS good programmers

The computer security industry has a well-known word called "script kiddies", referring to the only other people to use some tools to scan for known vulnerabilities of some others of "hackers", "script kiddies" often copy the script code from certain sites, then paste it everywhere, but do not understand the methods and principles which, so "script kiddies" generally describe some of the foundation is not solid entry-hacker "script kiddies" and "hacker" computer security is a far cry from the two populations, security this field still has, and the more common software development is also true. Jichuzhashi a developer or not, you can see that in his time and cooperation.

In regard to ordinary programmers, and good programmers, the biggest difference lies in this, not a solid foundation of programmers, the technical ceiling is very low, when a certain level, often behind the development, will only mark time , stagnant, but the underlying fundamentals for promotion to the deeper areas of the computer, is essential.

Some students often have such a question, I was learning the front, I was doing the client or is it I write Java and so on, so it is necessary to learn the basics of programming it? This should be feeling a lot of students have had to think of, "I specialize in a certain language should not be learning more underlying knowledge?" I think some of the basics of computer programming in the computer as long as the students should learn to add or , good programmer should not limit ourselves to a language, but should look to see the whole field. When using a language reaches a certain stage will pursue a higher level of development to the stage, it often means that will be closer to some of the underlying.

For example: When you use a language, if you know the language of the object management memory, whether to understand the language of threads, processes, and mechanisms for synchronization lock it? And these can be complemented in the operating system, when the understanding of the operating system, learning a new language just to understand the content of knowledge and understanding of migration, no need to repeat the principle of learning. Of course, such examples'll find a lot about computer networks, computer composition principle, and so on. So long to go to a deeper level of development, then it should be added that the underlying principles related to these versatile basics, you will have a good knowledge of the future to learn other's help, is also your "Daguai" promoted to become more excellent their only way .

Basics Work

Internet companies, whether it is "industry big brother" Baidu, Tencent, Ali, or "industry star," the US group, drops, fight a lot, headlines, etc., at the time of the total recruitment prefer solid foundation of people, on the one hand most colleges and universities are graduating out of the project has experienced relatively few students to study the basics can easily filter suitable candidate, and the other aspect is often the basis for a solid ability to accept more people can learn new things faster and better able to to meet the needs of enterprises.

If the timeline stretched to five or ten years to see, to observe some manufacturers experienced practitioners, you will find that a solid foundation developers always easier to grasp in the face of new technologies or issues focus, such as the Go language learning, when people are still weak foundation tangled syntax, they have been in research goroutine and channel, and another example in the framework of research, some people are still watching when the use of the API documentation, those with solid foundation the developer is already understand the architecture, coupled with a solid foundation cumulative effect, can bring is a big gap, so the Internet giant will prefer a solid talent base.

I believe most of the students have been investigated experience in the basics of written examination or interview process, it is the role of a programming language such as keyword volatile as the interviewer would often study the basics of the title candidates, for some interviews involving Java, I believe there are also differences volatile contrast synchronized asked the question and so, at first glance thought it was the language knowledge test level. In fact, the volatile keyword keyword although only some of the programming language used to declare variables from the surface, a lot of students can tell about twelve of them, but in fact the principle behind this keyword involved is the "computer memory hierarchy design consisting of principle ", the students understand the hierarchy of memory can be significantly deeper than understand and do not know the answer better.

For scenes on the basics of computer work even more involved, IO read and write consider blocking, multi-threaded consider synchronization service deployment consider memory usage, network transmission bandwidth efficiency considerations, etc., are numerous; but common for work incurable diseases, Bug puzzled, solid foundation of people tend to be more likely to lay bare these subtleties, and thus a solid foundation students tend to be more competent difficult job at work, greater development.

Learn "the basics of programming required," poke here

Here on the basics of work, I would also like to share a real experience, experience here inside, we can see the importance of basic knowledge.

A few years ago, we are responsible for a resource (computing resource is a resource CPU, GPU and FPGA like the underlying simple terms) associated with the underlying computing SDK project. Side is a hardware computing resources to provide services to the software package layer 16 "calculation unit." In the design, in order to maintain consistency of state computing tasks, it is required to maintain a state issued task in software layer and the hardware layer. But to the state of the software layers and hardware layers maintenance tasks, the difficulty lies in the consistency of the status of tasks both ends (because either the hardware or software layer layer, there are many cases of this anomaly will affect the consistency).

The first time a program is to try to remove the layer of software on the status of the cache, and when all the software needed to obtain the status of the hardware state of the interface query by; but communication overhead is very expensive, and for a millisecond-level tasks can lead to communication frequencies are very high, and thus the entire program as a consistent state and the overhead is very large, so in the end this program was not lost.

After the program had a long discussion, the process is not to say. The final solution is to reference the reliability of the TCP protocol designed to synchronize the entire state, why reference to the TCP protocol it? TCP protocol can maintain the reliability of communication packets between client and server, so when we designed put the software layer analogy for the client, the server hardware layer analogy, 16 "computing unit" is analogous to TCP agreement "sliding window" in the next issue of the mandate and the results returned carrying the "ACK" information, in order to implement the software and hardware of the tasks consistency, greatly reduce the communication cost for state synchronization brought, TCP protocol and also the proven reliability can be guaranteed, refer to TCP protocol implementation than the cost of their own re-create the wheel is lower. On the basis of inside knowledge of this experience, the underlying computer's role is great, if not to learn the basics of design, this project probably greatly delayed, or even directly "died" the.

Although the level of difficulty for this development, might be unusual in everyone's learning, working life, and I believe most students are busy engaged in the development of the development of business logic, perception of little basic knowledge. And some knowledge like this, usually do not feel his presence, to be really critical when we come to hate "hates few when goes into the book." So to many developers and fierce competition to stand out, to work independently in the future work, the solid foundation of knowledge is essential, yes, you probably hard to find a reason to reject learning the basics.

Learn More Programming Basics: Principles of Computer + Computer network operating system +Here Insert Picture Description

Guess you like

Origin blog.csdn.net/weixin_45396666/article/details/96732784