Kafka related patents

I believe that many people come into contact with programming originated from C language programming in college, but this course only tells you what a programming language is, and does not tell you how to master programming skillfully. Therefore, on the eve of graduation, many people find that although they have studied C, they don't seem to know what they can do, what kind of job they can find and what kind of company they can go to. This is inevitable. Therefore, this article will talk about my understanding of C language from the perspective of C language.

This time, let's not talk about any complicated application scenarios or the optimization features at the bottom of the language. Let's talk about what you can do after studying C in college. Of course, because of the close relationship between C language and C, we will talk about it together, and the reason is similar.

1 laboratory development

I dare not say that C is the best language in the world, but C is basically a big language among engineering students. Not to mention the computer major, many engineering majors, such as telecommunications, electricity, communications and other majors, basically use C for normal study.

It is said that C is both process-oriented and object-oriented, with excellent running speed and good development ability of large-scale projects, which can dominate university laboratories. Of course, we know that another language comparable to C in university laboratories is Matlab.

For example, when I was a graduate student, I tried Matlab with my left hand and optimized C with my right hand. Thesis, patents and so on depend on these two languages. I still remember that in the laboratory, almost all the algorithms were written in C/C.

Most of the people who started to learn C were old science and engineering men. No matter how hard the pointer is to understand, no matter how ruthless the virtual function table is, it can't quench our engineering students' enthusiasm for programming.

2 back-end development

But when it comes to finding a job, this is not the case. It is said that it is dusk now because of the algorithm posts, which leads to a large number of people flocking to the back-end development.

There are only a few mainstream back-end development languages, mainly Java and C, followed by Python and Go. As an old programmer who has written for so many years, how can he not join in the fun?

Therefore, after studying C, the first choice is, of course, the post of interview background development. It's just that we always say that language is not the most important thing. What is the most important thing for students who have studied C and want to find back-end development?

In fact, there are only a few skills that need to be mastered in software development engineering, and all kinds of experience sharing and face-to-face teaching have been rotten. But those are just the general direction, involving many concepts and technical points, and there is no way to list them here. Generally speaking, if you want to find a suitable back-end development job through C, I suggest that you can improve yourself from the following aspects:

First, a solid programming foundation.

This solid foundation first means that you are familiar with the C language, know the language features of different versions (such as the difference between C 1 1 and the new C20), and have your own understanding of common language mechanisms (such as polymorphism, virtual function tables, templates, etc.). ).

Although it doesn't matter what language you use, you should be proficient in at least one language. How to be proficient? You need to know something about the underlying mechanism of C, multithreading programming and cross-platform programming.

In addition, the literacy of programming ability is also reflected in the understanding of algorithm ideas and data structures. After all, programs are based on algorithms and data structures. Therefore, it is best to master some basic data structures, such as linked list, array, binary tree, queue and so on, as well as some basic algorithm ideas, such as greed, divide and conquer, dynamic programming and so on. Second, systematic theoretical knowledge.

This is the obvious gap between ordinary classes and non-ordinary classes. Many non-professional students, in fact, have strong programming ability, but because they have not received systematic theoretical study, they will suffer more in theoretical study. Back-end development involves many things, from network to performance to architecture, all of which need the support of systematic computer theory.

Therefore, students who haven't even read the books on computer network, operating system, computer composition principle and compilation principle need to buy some books to suppress their fears.

The third is the back-end foundation.

If you want to do back-end development, you should at least know what the back-end is. This means that you should know some basic knowledge such as software engineering, software architecture and design patterns. At the same time, how can you not understand the database with the back end? Then don't you want to learn some basic operations of MySQL, Redis and other databases?

Of course, here, it may be entry-level. When you really start back-end development, learn related concepts and technologies such as microservices and middleware (Kafka/Zookeeper/Hadoop). ) have to be put on the agenda.

Of course, for school enrollment, due to the lack of experience in large-scale online projects, the requirements for back-end foundation will not be too high, and more depends on programming ability and computer theory foundation. But if you are a student who has already worked and want to change careers, the back-end foundation will still be valued.

In my opinion, these three points are the places that Internet companies pay more attention to at present. You can reflect on whether you have such ability. If not, you can take the time to prepare well.

3 client development

After all, C is a very mature language, so besides back-end development, it has many other development positions to choose from. Naturally, it is client development.

I believe that most students who study C have used C to write desktop software. At that time, it was estimated that MFC was still being used, and a relatively simple interface could be written by tapping on the code book. So if you don't want to do the back end, you can find the client development work of C.

However, customers are not easy. Being a client also needs a solid programming foundation and computer theory foundation, and may also need to be familiar with Windows/C compilation link mechanism, QT client development technology system, Windows message mechanism and other technologies.

Therefore, if you are studying C and don't care about the inexplicable work discrimination chain in the industry, it is also very good to find a client development job. It's just that compared with back-end development, you may need to re-examine the role of the client.