If C + + is an arrow, which eagle would you shoot with it?


When you see the title, you may not quite understand what it means. In the end, don’t worry.

I believe that a lot of people come into contact with C + + programming in college, but this course only tells you what the programming language is, but it doesn’t tell you how to master programming.

It seems that many people who can’t find a job in the company on the eve of graduation will inevitably find out what kind of people they can’t find in the company. Therefore, this article from the perspective of C + + to talk about my understanding of C + + language.

I will not talk about any complex application scenarios, nor the optimization features of the underlying language. Let’s talk about what we can do after learning C + + in University. Of course, because of the close relationship between C language and C + +, we will talk about it together.



1. Laboratory development

I dare not say that C + + is the best language in the world, but I dare to say that C + + is definitely the largest language among engineering students. Not to mention the computer major for the moment, many engineering majors, such as telecommunications, electrical, communications and other majors, will basically use C + + in their normal study.

Even if I am a medical student like me, I have been writing C + + for several years. In the end, I got offers from big factories by C + +. It can be said that I still have deep feelings for C + +.

It is said that C + + has the characteristics of both process oriented and object-oriented. It not only has relatively excellent running speed, but also has good large-scale project development ability. It can dominate the university laboratory. Of course, we know that another language that is similar 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. Papers and patents depend on both languages. I still remember that in the laboratory, all the algorithms are written in C / C + +, including various image processing, signal processing and data analysis algorithms.

Most of the students who started to learn C + + were old science workers. No matter how hard the pointer is to understand and how ruthless the virtual function table is, we engineering students’ enthusiasm for programming can not be destroyed.




2. Back end development

But when it comes to finding a job, that’s not the case. It’s said that as algorithmic post is already twilight, a large number of people rush to the back-end development.

There are several mainstream back-end development languages, led by Java and C + +, followed by Python and go. As an old C / C + + coder who has been writing for so many years, how can I not join in the fun.

So ah, after learning C + +, the first choice of course is to interview the post of background development. But we all often say that language is not the most important thing. What is the most important thing for students who want to find back-end development after learning C + +?

In fact, software development engineering needs to master no more than a few skills, all kinds of experience sharing and experience have been said to be rotten. But those are just big directions. There are a lot of concepts and technical points involved, which can’t be listed 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:

✿ one is a solid programming foundation.

First of all, if you are familiar with the basic features of C + + and C + +, it means that you are familiar with the basic features of C + + and C + +.

Although you don’t value what language you use, at least you have to be more proficient in using a language. How to be skilled? Maybe you need to understand 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 idea and data structure. After all, the basis of the program is algorithm and data structure. So 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 planning, etc., should be well mastered.

Secondly, systematic theoretical knowledge.

This is the obvious gap between the professional and non professional classes. In fact, many non – major students have strong programming ability, but because they haven’t received systematic theoretical study, they will suffer a lot in theoretical learning. The back-end development involves more things, from network to performance to architecture, all need the support of computer theory of the system.

So if you haven’t seen the computer network, the operating system, the principle of computer composition, the principle of compiling these books, you need to quickly buy a few back to suppress the shock.

✿ the third is the back-end foundation.

If you want to do backend development, you have to know what the backend is. This means that you have to know some basic knowledge of software engineering, software architecture, design patterns, etc. At the same time, how can a backend not understand the database, then you have to learn some basic database operations such as mysql, redis?

Of course, it may even be an entry level. When you really start back-end development, it’s time to learn concepts and technologies such as microservices and Middleware (Kafka / zookeeper / Hadoop, etc.).

Of course, for the school enrollment, due to the lack of large-scale online project experience, so the requirements for the back-end foundation will not be too high, more depends on the programming ability and computer theoretical basis. However, if it is the students who have already worked and want to change careers, the back-end foundation will be more important.

These three points are what I think are the most important points for Internet companies at present. You can reflect on whether you have such ability in comparison. If not, take the time to prepare.



3. Client development

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

I believe that most of the math C + + students have used C + + to write desktop software. At that time, it is estimated that MFC can be used to write a relatively simple interface according to the code book. So if you don’t want to do the back-end, you can rely on C + + to find a client-side development job.

However, the client is not easy. To be a client, you also need a solid foundation of programming and computer theory. At the same time, you may also need to be familiar with Windows / C + + compiling and linking mechanism, QT client development technology system, windows message mechanism and other technologies.

So, if you study is C + +, at the same time do not care about the industry nameless job discrimination chain, find a client development work is also very good. It’s just that compared to back-end development, you may need to reexamine the role of the client.

In my opinion, the differences in career development between client and back-end are as follows:

✿ I. technical ceiling

This is one of the most frequently discussed points in the job discrimination chain. It is generally believed that the client’s ceiling is low and its competitiveness in the market is not high for a long time. Some people even take the example that CTO is basically from the background of back-end development to verify this discrimination chain.

Anyway, I think for most people, the ceiling of the client is lower than that of the back end. Because the client is a two-level differentiation of more serious technology, powerful people can break through the sky ceiling, and ordinary people are really ordinary. In contrast to the back end, it is true that the distribution of occupation height is slightly more uniform.

However, when the client development reaches a certain depth, the difficulty is no less difficult than the back-end development. On the contrary, sometimes in order to get a better end-to-end experience and faster user response, the technology involved will be more underlying and hard core. Remember, client development is not about changing the UI, changing the copywriting.

So I don’t like this kind of discrimination chain. From a very one-sided point of view, it demonstrates the good or bad of a certain occupation or technology, and even rises to the level of discrimination. I agree with the interest theory rather than the ceiling theory.

✿ 2. Development direction

The client client is obviously user oriented. This means that the development of the client is to directly contact the user, which is also the main difference with the back-end development.

To put it simply, client development is to serve the users, optimize the user experience, and make the products more useful. So the client has a natural advantage, that is, it is close to the user and knows what the user wants.

Ask yourself, how many years do you think you can do with technology, and how old can you write code. Can your body endure? How much hair do you have left? You still need talent and consciousness in the field of dry technology, especially the top-notch technical bull. This technology is not going to go all the time.

What can we do if we can’t go down? Transformation.

Therefore, the development of client is never only technology, but also business technology. Of course, there will be some emphasis. Business capability means product thinking, and to enlarge it is Internet thinking. This is one of the advantages of the client.

✿ 3. Employment choice

This is indeed a pain point in the development of client. Open to the second, third and fourth tier cities, the demand for the back-end is indeed larger than that of the client. Because in small companies, often do not need so complex client support.

Most of the time, back-end developers are used as a full stack. A lot of people will consider to say, if did client, jump back home after can’t find suitable company. It’s possible, but not so exaggerated.

As long as you have a solid foundation and are good at learning, you can find similar jobs everywhere. However, in the first tier cities, there is no obvious difference between the back-end and the client-side, and there is a great demand for these two kinds of posts by large Internet factories.



4. Audio and video development / Multimedia Development

We know that all major platforms are now making short videos, and they are also constantly accessing various live broadcasting modes. In this trend, there is a growing demand for the development of audio, video and multimedia.

Mature Internet companies usually separate the audio / video / multimedia technology direction as the support for all product lines of the company. Then the related processing algorithms will be encapsulated into SDK to call each business.

This shows that audio / video / multimedia development is a very important work, and the algorithm efficiency is a very important evaluation standard when processing audio and video or streaming media. This is what C + + is good at.

So, learning C + + can also choose to do audio and video development direction. This direction is more inclined to specific scenes, such as players, such as live platforms, such as audio and video effects. Of course, C + + is more inclined to the direction of algorithm implementation. Many multimedia development itself is based on the platform, such as Android, IOS or windows, to meet the platform characteristics.

However, if you want to find a position in this direction, you must master the basic theoretical knowledge of audio and video development. This also includes a lot of theoretical knowledge, such as image, audio, video acquisition, rendering, processing, transmission and other aspects of the problem, image and audio and video processing, cutting, encoding and decoding processing.

Some basic processing libraries, such as OpenGL and opencv for image processing, x264, openh264, ffmpeg for video coding and decoding, spexdsp, libfaac, Opus and other libraries for audio and video processing, should not be familiar with them.

There are also audio and video transmission protocols, live push / pull streaming protocols, such as RTMP, RTSP, etc. Ha ha, don’t be scared. After all, C + + is only a basic programming ability, but there must be business ability requirements for specific positions.



5. Game development

Game development is also one of the fields that C + + can enter. For example, many game engines are developed based on C + +. It’s just that game development really needs interest and enthusiasm. If it’s not because you like games, it’s recommended that you don’t choose a game development position.

This is not to say that the prospect of game development is not good, but that it is difficult to go far without enough enthusiasm, and because the direction is not very popular, there will be not many choices if you want to change direction.

There are only a few famous game manufacturers in China, but there are a lot of delivery people. This also leads to a lot of competition in this industry, so you will pay more attention to your game development experience when recruiting.

If it is a school enrollment, there will be less experience in game development, but there are many ways to make up for this defect, such as participating in game development competitions, such as developing your own demo. At least you have to know or use some game engines, so your resume will be fuller.

As for the business ability requirements of game development, I have just mentioned one point, including the use and understanding of game engines, such as common cocosa2d, unity3d, etc., the implementation principle and mechanism of game engine, and the computer graphics theory that will be asked in the interview. Computational graphics is the field of game development and its important theoretical basis, after all, the game can not do without the rendering and processing of various image models.

So, if you have some basic graphics work in University, such as some modeling, 3D rendering work, you can try the game development position. I have a senior brother in the graduate stage is doing medical image processing, the main work is to carry out three-dimensional display of human organs and blood vessels, and then went to do game development. Happy.



6. Embedded development

The above job choices are software oriented, and C / C + + has a very large employment direction, that is to do embedded. The embedded system itself may be a little bit more hardware oriented, but now what we do, it’s hard and soft.

The development of embedded system also involves network programming, concurrent programming and so on. The popular explanation may be that the embedded code runs on other small systems, rather than on computers in the traditional sense.

So embedded development is more suitable for the original major is telecommunications, microelectronics and other majors, after all, this direction needs not only programming ability, but also basic circuit theory literacy.

Generally, companies that recruit embedded development posts are mostly Internet plus companies with hardware products, such as millet, HUAWEI, etc. In the company, many are doing things related to the Internet of things, after all, this is a hot spot. Of course, there will be other business directions, such as chips, robots, etc.



Having said so much, have you found that only C + + can’t find a job. No matter which position, there will be something extra on the basis of C + +. This is actually very easy to understand, after all, C + + is only a language, just a tool.

Just like you have a bow and arrow, you can’t shoot the eagle. You also need a lot of extra ability and knowledge, and even a little sense of anticipation, to be able to shoot that arrow at the right time and with the right force.

And C + + is just the arrow that shoots out. The more familiar you are with it, the brighter the arrow and the more destructive it will be. And at the same time, there is not only a big eagle hovering in the sky, you also need to choose the one with the greatest opportunity.


If you want to learn C + + and become an excellent C + + engineer, then——Programming learning exchange Club [worth entering]!

It involves:C language, C + +, windows programming, network programming, QT interface development, Linux programming, game programming, hackers and so on

Introduction to programmer programming:

 Recommended learning books for programmers:

Take you an active, high-level, high-level programmer programming learning hall; programming introduction is only by-pass, the improvement of thinking is valuable!

Recommended Today

Summary of recent use of gin

Recently, a new project is developed by using gin. Some problems are encountered in the process. To sum up, as a note, I hope it can help you. Cross domain problems Middleware: func Cors() gin.HandlerFunc { return func(c *gin.Context) { //Here you can use * or the domain name you specify c.Header(“Access-Control-Allow-Origin”, “*”) //Allow header […]