The path of self-study for Linux application development

Source: Internet
Author: User

Objective

In the "About Me" blog post, friends should know that I am not trained, is a mechanical force to switch to the development of Linux applications. I would like to introduce to you in detail the course of my career in this way, I hope to inspire you.

I am a mechanical major, for the mechanical major I am still very interested, and that year this professional is also my own choice. Undergraduate grades are not ranked first, but also ranked the forefront of professional. Master's grades have been professional first, but also took the national scholarship. This shows that I still quite love the machinery, and even want to go to the postgraduate study of the Chinese Academy of Sciences (unfortunately failed), want to become a mechanical brick home.

Turning point

But the turnaround was after I graduated. Originally I want to have been down to do machinery, but quirks, the first job by mechanical engineer transfer to electronic engineer. Although an electronic engineer, but did a lot of code work, then learned some Verilog, as well as C #, and in C # developed a test tool and a production of the host computer, it is said that the test tool is now in the electronic sector. That's when I really came into touch with programming and was fascinated by the programming world.

However, I learned in school is mechanical ah, and software-related things at most is C language and assembly language, but C language is ten years ago (then) learned, has been back to the teacher. So, in order to work, I started learning programming. I get up 6 o'clock in the morning every day, study one hours after 7 to catch the bus, come back from work in the evening to continue to study. Under such conditions I have learned Verilog and C #, and have a general understanding of STM32.

But that post after all does not complete the software work, but also needs to do the electronic aspect work. Do software know, write code when need a non-disturbed environment, and I that post, a day can receive more than 10 calls, seriously interfere with my software development progress, therefore, I decided to leave the company, to do a real software engineer.

Entry

Second job, I'm an embedded engineer. Before going to the company, I learned the System 51, looking at the Guo Tianxiang 10 days to learn 51 single-chip microcomputer, the SCM has a preliminary introduction. After the actual entry, the use of the one-month time system to learn the C language, to see the C language of the father written C programming language . Although the book was written in the 80 's, it still seems to be out of date. And this book is relatively thin, easy to read, more sense of accomplishment.

After reading "c programming language", it is best to look at C and pointers, c expert programming, C Traps and defects . These three books are known as the "C-language Three musketeers", after learning them your C language level is absolutely very high. In our line of work, C language is the basic language, we must take the C language completely down.

After the need for work, began to contact Marvell 88mc200 and 88mw300. This two is a WiFi chip, but the essence is a single-chip microcomputer, using the arm M3 core. The bottom driver has been written by the manufacturers, we have to do is to do the SDK based on the application to do two times development. In this process, I have a preliminary understanding of agile development, and see the 45 habits of efficient programmers: the agile development of the path of cultivation of this book.

In the second company, I learned the overall solution for the IoT, with a deeper understanding of the overall architecture of the Internet of things. At the same time, the skills required for embedded development are fully mastered to achieve the level of being able to do an IoT project independently. Of course, during the period also learned the version control tool git, see the Pro git and git authoritative guide . At the same time, further systematic study of the STM32, read the book is a wildfire STM32 Library Development Practice Guide , but the video is on the punctual atom. It is highly recommended that the video of the on-the-go atom really does very well.

Because I am a career change, I know the foundation thin, starting point than others lag a lot, so I study hard. I live in the vicinity of the company, the company 8 points to work, I still get up 6 o'clock, 12 o'clock to sleep. When it's time to learn in the company, read the code, write code, code, and even several weekends are spent in the company. In order to change my heart in the study, gave up all the entertainment activities, only to catch up with colleagues 1:30 O ' all. This state has been going on for me throughout the whole process of this company.

New challenges

Unfortunately, a year later I had to leave, because my wife in Guangzhou, I went to Guangzhou to follow my wife. Due to my good performance during the interview, as well as my good oral English, I was successfully employed by a foreign capital world 500 in Guangzhou. My new post is a Linux application development engineer, using C + + development. At that time, I could neither Linux nor C + +, so the company dared to hire me really is the courage commendable.

From SCM to Linux is also a relatively large span. Linux has three main directions: operations, applications, the bottom , and I choose the application direction. In order to work, I must first take C + +. Fortunately, the company is a foreign enterprise, almost no overtime, so I have plenty of time to learn. However, the time to take the bus every day to add up to three hours, so good time I can not waste ah, so I bought an ipad, download a set of videos, on the shuttle also study. Of course, I also pay attention to protect the eyes, never read a book on the bus, watching the video also often look out of the window.

Here is the way to read or watch a video in the process of self-study. The way I used to be 先看视频再看书 . Why are you doing this? Because I personally think, a lot of technical books are very thick one, I look down to spend a lot of time and energy, and a lot of knowledge points in the work rarely used, you can temporarily skip the first. Video generally will be relatively short, usually a few days to be able to read, and the teacher generally only choose the focus of the talk. Our time is very precious, I suggest the teacher told the knowledge completely mastered later, then use the book to further expand other knowledge. However, whether it is reading or watching video, be sure to write code, be sure to write code, be sure to write code , otherwise very easy to cause above his business!!

I still keep the habit of getting up 6 o'clock in the morning and sleeping at 11 o'clock in my company. There are 1 hours in the morning, 3 hours in the evening, 3 hours on the bus, and 7 hours a day for learning. The weekend I will sleep a lazy, 7 o'clock get up, still 11 o'clock to sleep, the weekend almost do not go out, so the weekend has a lot of time to learn.

C + + is really hard, it took me one months to take the knowledge out of the video completely. After that, in the work, gradually began to see C + + Primer further consolidation. Other books recommended:effective c++,c++ language design and Evolution, C + + standard program library . On the StackOverflow has a C + + must read a list, can go to see.

After learning C + + I learned the Linux system programming, the same is the first video after the way of the book. Whether it is a video or a book, be sure to see the most classic. There are too many good and bad videos and books on the market, if you choose a poor quality material, not only will waste a lot of time, and may also be misleading. For the video selection, you can go to the major training institutions, there are usually some free video materials for us to download.

For Linux applications, there are six main parts:1. Environment construction; 2. Basic operation; 3. System programming; 4. Network programming; 5. Database programming, 6. Shell programming . The following one by one are detailed.

    1. Environment Building
      as a Linux engineer, there is no doubt that a Linux environment is required. We typically have three ways to get a Linux environment:

      • Install the computer as a Linux system,
      • install a virtual machine on your computer, run a Linux computer,
      • Window+linux dual System.

      It's not enough to get a Linux environment, but also to know how to configure, how to connect to a Linux computer remotely, how to transfer files to and from a Linux computer, how to read code from a Linux computer on a host, and so on.

    2. basic Operations
      It is well known that there is little or no interface to Linux, and that almost all operations can be done from the command line. For OPS, you need to master a lot of Linux commands. For the application, driving direction of the personnel, only need to master some basic common commands. For this section many people recommend to see " Bird's private dishes ", but I think this is more suitable for OPS, we do not need to grasp so many commands.

    3. system Programming
      Be sure to learn makefile before you program your system, which will improve efficiency for subsequent learning. After the system programming, there are several major chunks: IO programming, processes, threads, interprocess communication (including pipelines, signals, semaphores, shared memory, etc.). This part of the study is finished, the basic is almost.

    4. Network programming
      Network programming is mainly socket,poll,epoll, and the understanding of TCP/IP, but also learn to write high-concurrency server.

    5. database Programming
      The contents of a database are not actually Linux, but are often used in projects. This part mainly to learn the basic operation of the database, and how to write a set of interfaces to operate the database. The

    6. Shell programming
      Shell is a scripting language under Linux that is not as powerful as a high-level language, but it can do a lot of things and is even more convenient in some situations than high-level languages. In addition to shell scripts, of course, there are python scripts.

Linux application Programming Books recommended:

    • advanced Programming for UNIX environments . Referred to as APUE, a programmer's Bible. It is not an API dictionary, it also tells a lot of operating system details, memory, file system, etc., is a rare good book. But its starting point is a bit high, not suitable for beginners.
    • Linux Programming . If you find apue a bit difficult to get started with, you can choose this book for getting started.
    • unix/linux System Programming Manual . This book claims to be a book beyond Apue, it is a relatively new book, which adds new features Apue does not have Linux/unix. And it's really better to talk about something conceptual than apue. But as to whether the overload Apue, still need to test the history.
    • UNIX Network Programming . is also a very classic book, mainly in the direction of network programming.
    • MySQL must know . This book is on Amazon for a long time on the top of database sales, it is recommended to quickly understand the principles of the database and MySQL novice reading. Fast-food nature, concise and lively, small format, and very thin, relatively good reading.
    • Linux Shell Script Raiders . This book is very thin and the essence, it is not the pursuit of all, but the essence, so use it to get started again suitable.

After learning the above six parts, the basic ability to complete the application of Linux environment programming. Of course, we may need to use Python scripts on some occasions. Part of the project like my company's script is done in Python. For getting started with Python, you can refer to the concise Python tutorial . But if you want to improve it, you need to read a lot of books. For Linux-level scripting applications, it's enough to master some of the basics.

The above is my Linux application development self-study road, although I have a long distance from the master, but I will be my own self-study experience to share out, hoping to help friends less go some detours, but also look forward to learning with the master, improve. Well, today's share is so far.

For more content, please pay attention to the public number of good Linux, the public reply to the 1024x768 free 5T technical information, including:Linux,c/c++,python, Raspberry Pi, embedded, Java, artificial intelligence , Wait a minute. The public number in the reply into the group , inviting you into a master such as cloud Technology Exchange Group.

The path of self-study for Linux application development

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.