The secret programming change white year programmer Daniel

What programming that? Maybe everyone has a different opinion.

Some people think that programming is a job, some people think that programming is a hobby, and some even think that this program is the pursuit of life. In fact, programming is programming.

First of all, from the "Code" character analysis, It can represent write, it can also be expressed by certain principles, rule or order to organize or arrange. But, we can not do without thinking.

"Cheng", which can represent both projects, can also indicate the distance traveled. But, they are inseparable from execution.

Simply put, the programming is constantly thinking, constantly perform.

Programming and do something else the same, there is no shortcut to execute, only different ways of thinking.

success case

Speaking of the programming community "genius", our first thought is that Linus Torvalds.

linus Torvalds fame as our well-known linux kernel, the birth of many famous operating system on top of it, such as: Slackware, Debian, RedHat, Fedora, Ubuntu, LinuxMint and so on.

linux been understood from the beginning, by the mid-been known, even to the latter occupy most of the kernel country, are inseparable from the grand goal of linus Torvalds. Next, we understand the way with growth of linus Torvalds:

In the 1980's, Unix began to develop in the direction of commercialization, because the majority of students can not afford the expensive licensing fees, related research had to stop. In 1987, the Netherlands had a college professor wrote a Unix application named Minix, for educational use. Linus Torvalds initially contacted Minix for academic research, for a time and found that there are some differences Minix some design ideas and their own understanding, but he can not easily modify and distribute the source code of the system (due Minix license and other issues).

In 1991, Linus Torvalds for the then-new computer using the Intel 80386 microprocessor developed a new operating system named Linux.

Beginning, Linus just implanted gcc compiler and the kernel from Shell write. Because Linux is completely under the GPL theme, posted to the Internet to get a strong reaction, quickly attracted many developers, hackers modify and maintain their code.

Linux kernel from publishing to now has gone through four major versions as well as numerous smaller version of the update, linux distributions also originally released later from Slackware to Debian, RedHat, Fedora, Ubuntu, LinuxMint and so on.

Above stories, we can analyze a keyword is "growing." Linus Torvalds started just for academic study, forced to write your own kernel, the kernel release, found that many people face the same problems, which made him the germination of new ideas - and we Rounding out the core together. In this way, linux kernel can only be compiled from the beginning, execute a simple program, step by step and later took to formalize these are inseparable from the idea of ​​"growth."

In fact, not only a great man can be called the idea of ​​thinking, our thoughts every individual can be called thought. We both thought the idea represents unrealized, can also be expressed as our future goals.

The idea is a good thing, it placed us yearning for success. Next, we customize a small goals for yourself, and each time we realize all represent progress, grow, and from one step closer to success. Then we passed several small target to complete our lofty ideals.

Customize a small goal for yourself

For their own customized a small target is simple, you can learn a few words, learn the basic types can also be a language, or even understand the article.

The finer the target better, and easier to implement, it can stimulate our thirst for knowledge. Because the target is too large, easy to make us retreat, even to give up. The target is too small, too easy to achieve, you can not derive "a sense of accomplishment."

Custom goal should be to make decisions according to their actual situation, a custom target principles can be divided into the following three steps:

  1. Budget week or month to complete;

  2. Target into a multi-part execution, execution if found in a certain part of a dead end or too difficult to implement, this part of the plan should be modified or even re-customize goal.

  3. Each part of the target meticulous enough, at least to go through every step in my mind during the customization process.

Life, I kept myself customize new target, the implementation process also encountered a lot of detours, but fortunately corrected in time, did not cause too much impact.

I have done from the official entry workers are now approaching five years, the past few years across several areas, although not really glorious deeds, but also for your reference objects, analyze:

When the newly recruited staff, I was programming a white, unused VS2008 compiler, debugger will not be basic, forced to work under pressure, the first month to bite the bullet and colleagues for help in their help, first May I learned debugger, publisher, and learn the meaning of the code structure analysis and structure.

Two months into the job, I used thick-skinned, but also used them frolicking. During that time, I have made significant progress, and can even make them a headache to write code.

Three months into the job, I have the ability to write new independent project, literally in the next month, using QT to write a work for a year in order to write the project, and has also been appreciated by the leadership, then let me do C ++ project leader and four members of the management code.

They recruited more than a year, through a lot of reading articles and books, so I have a lot of progress, and by <STL's two-way circular linked list (List) of internal relations> this article, the official start of the road amateur writer.

Entry more than two years, during that time I contacted the code in different fields, such as DSP, DMA, or even FPGA code I will refer to. That year I also learned windriver, write and understand for drivers under Windows. Later started using Linux systems, Linux drivers contacts, and to prepare a month later character-driven.

Recruited more than three years, he has written a number of different hardware Linux driver, and do write Windows, VXworks, drive train of thought Ubuntu interoperability, as well as the next crew. Later, the team led by self-customized Android system, the implementation from the initial version 4.4.4 in the simulator, to version 6.0.1 and later ported to our success in the hardware board. During this period to achieve a number of features such custom style IOS, applets are arranged in middle of the screen, to remove various unwanted components, dual single-screen display, a gyroscope coordinate positioning, boot animation edit, modify, etc. Framework frame.

Recruited more than four years, a custom linux kernel, increase hardware adapter, use the tree control device based on the chip and other related hardware. GitHub also published a number of original, such as badges and other equipment to support Chinese.

Privately, I've been keeping the habit of writing the blog, every article keeps track of my upbringing, which included my sad experience of the past, but also contains my passion for programming.

Previous experience from the current point of view, very relaxed, casual, but I've also done a lot of effort to do it, this experience is the experience I had a headache.

Lately, I have written books but also more than half table of contents, and I still continue to customize the plan for my future.

Any big goal is from a small target, even a small thing to start, only experienced and we have to understand where the pain and "a sense of accomplishment."

Enhance the "absolute power"

Absolute power than any negative factor, which represents the foundation of our program.

Programming foundation is very important, everyday coding, each of our lines of code composed by them. At first, I did not value the basic knowledge, because by that time the idea of ​​programming, almost whimsical idea. But after blow again and again only to find that the basics deep to write high-quality code and now I prefer to follow the basics of programming, because such code more reliable, and easier to understand.

Later, in order to learn the basics, I refer to a large number of books, each of these are very serious analysis, whenever they encounter any difficulties with a pencil or pen are recorded in a notebook.

Later, after the basics of stable, any reference books or any code is very easy, cross-platform, cross-language can quickly get started.

Basics, so I can easily analyze every complete code through STL, such as Vector, map, List, etc., can also be analyzed thoroughly even let me write every design structures, such as binary tree, red-black tree, even my own write more than one container frame.

2018, by my own design memory pool, red-black tree, List, combine to make an intelligent framework, to design its purpose it is to break through multiple threads to read and write restrictions. For example, in the data cache memory pool of my own design, through red-black tree balance data, and store or delete data by List, to read and write data at the same time not completely locked. But finally failed, time or lack of ability, can do simultaneous read and write without locking in a small amount of data, large amounts of data, data errors can occur. Of course, maybe I'll have time later to redesign the structure.

Basic knowledge is very important for our code, it can not be fast in order to enhance their ability to ignore the basics, after all, is the quickest route detours.

Analysis of every "execution"

The essence of programming is that every failure, every failure will find a lot of shortcomings, and perhaps design ideas wrong, perhaps leading to memory management is not in place, perhaps improper algorithm.

The preparation process, code execution results in the unexpected is commonplace, because the result does not deny this code. In such cases, the first thing to do is to calm down and then carefully analyze prone to error code range. Of course, the case can debug, try to debug code, errors may occur is a matter of priority conditions, it may be misaligned data, or data overflow or data access also offside. These types of situations it is difficult to observe through the eyes of a reason, and only continue to debug, analyze the data again and again the results to determine the problem, debugging analysis is also a way to save the most time.

I am in the design of new structures, we have also experienced eyes can not check out the error, such as writing before it is completely random encryption algorithm. I analyzed every function, every loop structure or even each statement, did not check out the error. Later debugging think of it, four bytes of data to a four-byte unit displacement, if there is a negative number in the first three, will get an error value. According to this, every time displacement have increased the "&" operator to ensure the accuracy of the data.

Comfortable with every failure, and summed up the reason for the failure is the way we grow indispensable factor.

You have entered a "genius" in the field

In the above, if each of you can do, or can handle, then congratulations, you have successfully entered a "genius" in the field.

The so-called "genius" is through practice over time, constantly break their own, eventually come to the fore.

Life, if you are a careful person might find that those who appear stupid After a period of time, there will be phenomenal progress. In fact, these people are not stupid, they just believe in yourself more and more willing to prove right or wrong things through their own practice. Because the results of their own efforts to get than others verbally say more accurate results.

A few years ago, I thought, like ordinary people, experts think it should be more smarter than others, more than others. But a few years after the discovery efforts, experts do not want to compare with others, they are more willing to compare with their own, breaking his own is the right direction and goals.

Published 38 original articles · won praise 1 · views 2174

Guess you like

Origin blog.csdn.net/wulishinian/article/details/105067719