How do college students who have no foundation learn c language by themselves?

The strongest C language learning encyclopedia in history, thanks to my shamelessness, I asked the six C language programmers in the company how to do it.

That's right.

This article is summarized from six senior programmers in our company who use C language as a development language, with nearly 3,500 words in all aspects.

C language has the characteristics of high efficiency, flexibility, rich functions, strong expressive power and high portability, and it is very popular in programming. There are too many people to learn and there are too many things to learn, so that there are always people in the background asking how to learn the C language, and even specific programming questions.

Take this opportunity to sort out the road from entry to proficiency of C language programmers , and share the learning experience of C language programmers of our company over the years.

For this article, I tried my best. After collecting the information, it took another whole week to finish writing.

The content framework is as follows:

  1. career planning
  2. Study arrangement
  3. Practical skills

This point is specifically aimed at the problem that the subject of "I write repetitive business codes most of the time, and I feel that the growth is very low".

1. Career planning

How should the career path go?

Because the subject has made it clear that he wants to become a " C language development engineer ", only C language-related career plans are introduced here.

The C language can develop in many directions. Here are six of them:

1. C++ server programmer (streaming media background, game background, high-performance server background)

2. Embedded software engineer (C/C++, Linux platform, both software and hardware)

3. Application development engineer windows /linuxc++ (QT and MFC, partial front-end)

4. C++ reverse development engineer (network security, hacker attack and defense, cracking, etc.)

5. C++ game development (game direction, familiar with game engine cocos2dx, etc.)

6. Smart hardware and wearable devices (smart hardware VR/C++,)

This article does not do career analysis on development paths of other programming languages ​​and non-development paths. The following is a mind map of common computer career development directions, you can refer to it.
Insert picture description here
After understanding the possible career development direction of a language, you can choose different directions to study according to your personal preferences and the current situation.

Because your life is yours, I can only provide you with a path, and I cannot help you choose. So the first step, I can only help you here.

Second, study planning

Through the above analysis, you can see that no matter which path you take, you can’t only learn a programming language. That is to say, a " real C language development engineer " can’t only use the C language. You must know something. Other auxiliary languages.

Therefore, I will divide the study plan into the following three parts:

  • General knowledge of programming
  • C language learning steps
  • Learning other programming languages

General knowledge of programming:

Behind every knowledge point, I put a recommended course, if you consciously master it well, you can skip it.

  • algorithm

Introduction to Algorithms-MIT

  • Compilation principle

Compilation Principle-Harbin Institute of Technology

  • data structure

Data Structure-Zhejiang University

  • operating system

Computer Operating System Essentials-Huazhong University of Science and Technology

Operating System_Tsinghua University (Xiang Yong, Chen Yu)

  • Network principle

Principles of Computer Networks-Harbin Institute of Technology

Many people will ask, what is the use of learning these? I can't use it for programming.

Here I give an example. They all say that learning is like building a house, and basic learning is laying the foundation. Can a house be built without foundation? of course can!

But it is impossible for your house to be built high, and it is impossible for your house to be built securely.

So, in order to make your future study more smoothly, you must be patient, even if you force yourself to bite down this piece.

This directly determines the height of your future development.

C language learning steps

This piece is divided into two parts: what has not been learned and how to learn .

What to learn

1. Language foundation

To put it plainly, it is to learn the basic grammar of the language.

One thing to note is that when learning the basics of the C language, you must do more and don't skip over if you understand it. Otherwise, when you really want to do it, you will find that there are many details that you have overlooked before, and these details hinder your entire programming.

Here are some recommended books and courses:

Books: "C Programming Language" "C Language Book for Everyone"

video:

C language zero-based tutorial video

At the end of the study, it is enough that you can master the following knowledge:
Insert picture description here

2. Advanced learning

Insert picture description here

Recommended books:

"C Expert Programming", "C and Pointer", "C Pitfalls and Defects", "C Language Solution"

Recommended courses:

[C language advanced] The most hard-core courses are dry goods throughout the course

[C language improvement, advanced video]

Learning other programming languages:

As a programmer, it is impossible to travel the world in one language. So you have to expand at least one other language.

As for how to choose a programming language after being proficient in python, first of all depends on your own work needs.

Or, you can refer to this article below.

Which programming language is more suitable for learning as a beginner?

How to learn?

Everyone’s learning methods are different. Some people like to learn while working on projects, while others like to work on a project for a period of time, some like to read books, and some like to watch videos. These are not problems. , The important thing is to find the one that suits you.

But for the following points, it is best not to do it, because I have brought so many people, and those who dare to do this are only half the effort, and the results are terrible.

1. Blindly knock on other people's code.

At the beginning, you can’t just follow others to knock. This is not a problem. The problem is that after following others, you have to understand your own memory and turn it into your own thing. Just type it twice or even three times according to other people's code, it will not help you in any way except to make you look carefully and practice typing.

Because imitation is not the key, thinking is the key . You need to be able to think and learn from other people's ideas, break away from books and blogs, and implement functions completely by yourself. Only in this way can your learning be effective.

2. Thinking of eating into a fat man

The situation in this area is a little rare, but it's not uncommon. Some people are eager for success. They only need to learn something and know how to use it instead of knowing it.

A typical example is the freshman I brought two years ago from a university in Beijing. At that time, there was a problem with the part he did, so I recommended a book to him and asked him to solve the problem after reading it. Because it was not very urgent, I said it would be done in a week. As a result, two days later, he ran over to tell me that he finished reading and the problem was solved. I asked him how he did it, and he said he did it directly after reading it.

Technology is not something you can do after seeing it. You can't be fat in one breath, and you must do things well. So don't try to solve all the problems at once. Here is a suggestion: you can divide the daily learning process into small pieces and learn in stages, which will be more efficient.

After talking about the first point, how to learn the basic knowledge , let's talk about the second point how to consolidate the basic knowledge . There are thousands of methods, and I think the most effective method is to brush the questions.

The following method of brushing questions is very common but also very practical, and I recommend it to you:

**First time: **You can think first, and then read the reference answer to brush, combined with other people's problem solutions. Think, summarize and master the type of the question, the way of thinking, and the best solution.

**Second time:** Think first, recall the optimal solution, compare it with the solution I wrote before, and summarize the problem and method.

**Third time: **Improve the speed of brushing the questions, take out a question, you can know the focus of the investigation, the method of solving the problem, and write the answer in a short time.

Here, I recommend two books and some learning websites for everyone to make learning easier.

Three, practical skills

This point is specifically aimed at the problem that the subject of "I write repetitive business codes most of the time, and I feel that the growth is very low".

How to find a project to practice:

1. Do some practical personal projects and practice your own hands

Austin Henry, an assistant professor at the University of Tennessee, combined his own experience and gave a list of "challenging projects that programmers should try", including the following six projects. I did it before and thought it was pretty good. I recommend it to everyone:

  • text editor
  • 2D Game-Space Invaders
  • Compiler-Tiny BASIC
  • Mini operating system
  • Spreadsheets
  • Electronic game console simulator

Each project has different challenges. For example, the text editor requires that without using the built-in text box component in the GUI framework, build a text box that supports cursor movement, selection, insertion and deletion and store the text document in In memory.

If you can solve these problems in these projects, and then make the project independent and complete and run successfully, your ability will definitely be able to take another step.

2. Write technical articles

Everyone must know the Feynman technique. This is one of the applications. Teach others what you understand so that others can understand. In this process, you must still do a complete project. After you come out, you will have a more thorough and in-depth grasp of what you understand.

It can be considered a good way of practical operation, which can make your foundation stronger.

3. Take some part-time development jobs

This is the most practical of the three methods, none of them.

And needless to say, this is also the fastest and most effective method. After all, theory is not enough for programming. Hands-on practice is the key and ultimate goal.

But part-time jobs also have many pitfalls and many small ways. First of all, you have to pay attention to whether the project is reliable or not. Don't accept it if there is no requirement document.

Here I share a very practical article, which not only teaches you how to judge whether the project is reliable, but also sorts out the characteristics and differences of a total of 24 IT-type part-time platforms at home and abroad. I hope it can be helpful to you.

Programmer Inn: What platform can part-time programmers receive private work from? Here, only recommend programmer Inn:

Programmers Inn - leading programmer consisting of a remote work platform in the benefits of this platform to take the project, mainly in the following three points:

  • The platform will confirm the authenticity of the project, and the money will hit the platform first.

The advantage of this is that you are very practical when you develop, because you know that he can afford to pay and know that the money is there, so you won't lose it or run away. Unlike offline outsourcing, I am afraid that if I am not an acquaintance project, I am afraid that he has no money and he will run away.

  • It will automatically connect with the product manager and have a complete requirement document.

Needless to say how important the requirements documents are to programmers’ development, I don’t need to say more about them. Programmers who don’t have requirements documents are blind men with guns, and they slapped out the bullets (ma), but fail to hit the target. And because there is a dedicated person to check the requirements document, you only need to pay attention to some details, not having to stare at the product manager can really make the programmer lose some hair.

  • Develop in stages and pay in stages.

Because the first project was small, it was only cleared twice. I remember that it was 40% cleared the first time and cleared the second time. Later, I took on some larger projects, and there were also four and five transfers, and the money was automatically transferred to the account. This is really good. It's no better than offline outsourcing. After the development is completed, you have to brazenly ask for money, and don't take the initiative at all, just like borrowing other people's money to collect debts.

Guess you like

Origin blog.csdn.net/BinSTD/article/details/111313023