[Reserved] Why should I give up the Linux kernel learning?

Recent learning kernel is the heart very tired, I happened to see the article, a bit mean ~

Transfer from http://happypeter.github.io/index.html, following is the original content:

I was in class on domestic technology website / blog, often see the article analyzes the Linux kernel code. Library / bookstore also domestic books written by the author of the Linux kernel. Friends often see things in the discussion of compiling the kernel. After a period of Linux learning, science has yet to find the kernel necessary. I do not understand what to look Linux kernel code. is it learning Linux, the kernel must understand it?

Short answer:

In an interview Linus says: If you do not have content related to the kernel in programming, then do not consider studying the kernel until the day you use a program to keep you are not satisfied with the kernel interface, you say to yourself: "Hey, I can do better ... ". My own suggestion is: water depth, danger! Uses best not touch. In terms of normal Linux programmers this crowd, I am a relative time spent on Linux itself more and more, from a technical level, the use of Linux, does not mean you need to see those kernel code, if you really use kernel-related things, also read some of the others summarize good documentation.

Here is the complete answer:

My own situation is this, 2006 to start learning Linux, because to do embedded project, is to use direct kernel 2006 to 2008 basically like a pig rushed into the virgin forest, rattling around, a lot of injuries, the harvest is less. I am currently the main direction of Linux system administration and web app development, it is far from the core aspects of the knowledge of ah, for me, I had to learn the kernel is a serious mistake, so to share my story here, for your reference. The first conclusion:

Beginners are not supposed to touch the kernel

If you are not very proficient in C, then learn C seize it, the content here in Beijing I went to interview the Unix-like company, basically have written a lot of C's. Of course, studying for exams is dumb, I mean here's just say that if you learn more than two cores, the end of the interview when they find out you do not pass C, the kernel of something that would basically do not ask, like I was like this, making the air floor, I learned a lot of core knowledge, is ultimately futile.

So, I was better for him to learn C, so that later whether to do application development up or down to do systems programming done on the core structure of knowledge is a more reasonable basis. Then if you really want to do kernel, but also basic skills, tips, strong bash script various programming tools. For the retreat, the kernel is the world's largest software projects, even if you have not done a small project, then proceed to the kernel is patently unreasonable.

But luckily my English level better, but will some of Qt, so after graduation have the opportunity to work Asianux, maintenance of the system updater (that is, apt-get and yum or something), but also since then I was conscious Linux to real charm is that it is supporting the Internet, the Internet is part of my stage. So I finally gave up not because the kernel learning difficulties and setbacks, mainly because of personal interests and values. Learn programming just like to learn the fine arts, like music, is to express our own thoughts, the ultimate goal is to be able to serve the people. I was kind of mediocre technical people, but I like to do things, and likes to show off things like other people, more human feelings of a craftsman (recommend you take a look Hackers and Painters), so I think it is more comfortable to do app, because

Kernel programming is hardware-oriented, people-oriented application programming is.

Linus Torvalds always said: "My interest has always been how to get hardware to work", due to the powerful charm of Linus himself, so even fooled a lot of what software is what young people can not tell the hardware, rushed into the kernel programming the army, I had myself like this, but after a few years I found that in fact the era of hardware programming has long gone. Early manufacturing hardware Steve Wozniak, and later given to the people driving the hardware capabilities of Linus, they are heroes of the times, and now the cornerstone of the bricks have been met, re-inventing the wheel does not make sense. So since 2000, the world-class programmers are concerned about the use of these bricks express a thought, RubyOnRails, google, facebook ...

Touch on a bit far, I have a frog conclusion: the domestic situation is unlikely to engage in hardware Haozhaogongzuo, also found a low salary and poor corporate culture in place. Say it may be some bias, but I remember that I come from a single-chip solder the board, so this view be regarded as an old frog. Every time I see the various electronic design Association of Collegiate Schools of people will be very patiently to persuade them to give up early to join the Internet hardware, and quickly learn html + css, although every time despised. Engage in kernel people, I saw the development is not very satisfactory. I have a colleague, has been responsible for the company's kernel department long ago switched to Oracle, no longer engage in the kernel. AMD previously a student to work in, to the Tree Linus's played a few Patch, now switched to Intel, do Andriod, there are a million miles away from the kernel.

Finally, to recommend that Linux newbies

Starting from simple, learning by doing

If God gave me the opportunity to do it all over, I will be the easiest to learn from the start, not only will not touch the kernel code, the language will first learn a simple language such as Python or Ruby. Then do some hands-on fun and easy network applications, such as similar to Facebook's "html + java thing", then as big as the project, some parts may need to be rewritten to meet the requirements in C, I will go to school C. If someone said that, in the C programming like wearing roller skates to play table tennis, only the super smart people can do. Whether it is to do C, or do kernel, my feeling is

Computer hardware and software background NO.1 have about ten years, halfway decent best not to engage in C. C programming is required in computer science skills, like I was determined to engage in such a study program who wish to rely on willpower to solve this problem, in fact, is stupid, because you simply could not spare the time to make up a 10-year basis. So python, ruby, java these things are the first choice.

NO.2 enough sharp acuity technology. If you do a few years, you find that you're not a control technology, which is perhaps a good thing. IT is an industry, I am afraid that whether a technical level IT person successful role played by less than 5%, even more important is the overall creativity.

Guess you like

Origin www.cnblogs.com/hustluotao/p/11810635.html