80% of schools are still teaching C language to freshmen. Are they out?


Hello, everyone. Recently, a little partner asked me backstage that freshmen are teaching C language. Is it out of date? What is a good first language to learn? What courses during the university are of great help to the employment after graduation?

Today’s article will briefly talk about this problem with you.

I studied programming in high school. At that time, we studied Pascal.

It’s normal that you haven’t heard of it. It’s a very old language. How old is the language? It’s so old that its ide has a blue screen that it looks like a crash. It’s probably like this. When we were writing code in the computer room, there was a blue light and followed up the ghost film scene.


At that time, learning Pascal was just a taste. I just learned some basic usage. I didn’t even know how to use structures.

Many people say Pascal is a very suitable language for beginners. I don’t know if I’m too good. I haven’t got it yet.

Since then, I have learned many languages, such as C / C + +, Java, python, JS and recently go. Pascal’s grammar learned ten years ago has long been forgotten. At that time, the programming habits were frustrated and basically changed.

If I have to say that learning Pascal will help me now, the only help should be that it makes the process of learning C language very simple. Basically, I just took a brief look at the grammar of C and mastered it after doing some exercises. In fact, this is also the meaning of the first language that most people learn. It is not to start doing things after learning, but to lay the foundation for learning other contents in the future.

So strictly speaking, C language is my second language to learn, but I am the first language to master better.



1. Is C language suitable for getting started

I have flipped on this issue, and I thought it was inappropriate for some time.

Because the process of learning C language is the process of writing various mathematical problems in the face of a black box. It is very boring and boring. Many people are discouraged in this way. If it is python, JS and other languages, there are many things that can be done. Learners will have great enthusiasm to continue learning, so the threshold for entry may be lower.

I think many people think so, because learning C language will have a feeling of nowhere to show. We spent a lot of energy learning how to program such a black technology thing. It’s not cool that we can’t do anything except doing questions in the black box for a long time.

Look at python. After learning it, you can climb pictures and process documents. Isn’t it fragrant? Some people may not understand it very well and think that the emerging languages such as Python and Java are a little better than the old c language.

In recent years, my view has been reversed again. Now I think C language is actually very suitable for beginners. It also has many advantages that other languages do not have. Similarly, Python and Java, which seem to be full of charm, actually have many defects.



2. What is the biggest advantage of C language?

Personally, I think there are two points:

The first point is that its syntax is very clean. The basic syntax of C language can be found in almost all other languages.

This is also reflected in the go language. It is simplified to the extreme, and there is no superfluous at all. In other words, the programming skills you have accumulated in C language can basically be used in other languages, but this may not be the case for languages such as python. There are so many new features in python that you may not be able to play in another language.

The second point is that C language distinguishes between reference and pointer, which is very important for beginners.

References and pointers are directly related to parameter passing and variable processing logic in functions, but many languages only involve one of them. For example, there are only references in Java and pointers in go language.

If you don’t know the difference between reference and pointer, many hidden dangers will be buried. For example, you write wrong logic when passing parameters. For example, there is no concept of memory use at all, and the memory leakage of the written code is serious.

Of course, there are many problems in C language. For example, there are too few application scenarios and not many library functions. It is very difficult to write code.

However, this does not prevent it from being very suitable for cultivating programming ideas and good programming habits. For beginners, having a good habit and consciousness is actually more important than the specific content learned. From this point of view, there is no problem with C language in the first language class of freshmen.


3. Choice of language

Of course, some schools offer Python or Java to freshmen (such as MIT and Stanford). Are these schools wrong?

In fact, it’s not. It’s a matter of choice.

◑ for example, python may be interesting to learn, and some colleges may pay more attention to students’ interests.

◑   Another example is that Java is all object-oriented. Starting from Java may be more conducive to object-oriented learning later.

◑   Some Daniel started from JS because it would be more convenient to engage in the front end later.

In fact, there are no problems. There is no so-called correct line stipulated. Language itself has no distinction between high and low, and some have only different scope of application.

So, in fact, what we choose is not language, but direction.

◐ for example, if you want to engage in algorithms in the future, Python is obviously a must, not only to learn, but also to be more in-depth.

◐   For example, if you want to do development, you should recommend Java. The threshold for entry is relatively low, and there is a big job gap. You can’t find a job after learning.

◐   For example, if you want to be a front-end, you obviously can’t use Python and Java. The three piece set of HTML + CSS + JS is the king.

In other words, language is linked to our direction. We need to study and study in this field accordingly if we want to become engineers in this field. Strictly speaking, no language is universal. Engineers in any direction need to master it.

Another point is that learning a language in the later stage is far from as hard as you think. In fact, after being familiar with the core logic of programming, there are basically only grammatical differences between languages.

For example, in order to complete the entry test when I first started, I learned the go language in three days, and wrote a simple background program in go language from nothing to useful.

It sounds like it’s an exaggeration to learn a language in three days. In fact, it’s not. I just read the basic grammar and began to get started. I just looked at it and checked it. This is not my special ability. In fact, most newcomers have done this.

The first language choice is important, but it is not so critical. The key is whether we can find the right direction in the future.



4. Growth route

When it comes to direction, it is estimated that many people have a headache as soon as they hear it, especially the student party. Many people may not know what to do in the future, nor what ability requirements these posts have. In fact, this is also very normal, because there is less part of engineer training in school education. It is only responsible for teaching, not for the training of engineers, which is the core reason of this problem.

What shall we do?

I think you must want to know the answer, but unfortunately, everyone needs to find their own growth path, and no one knows what you are suitable for. But that said, there are still some ways to compare gold and silver.

If you don’t know what to learn after learning C / C + +, just learn Java. After learning Java, do two projects with java to improve the project ability.

No matter what position, engineering ability is necessary. Moreover, with the experience of these two projects, it is actually a minimum guarantee. At least, it is basically no problem to find a Java back-end job after graduation. And after these two projects are completed, you will have a clear understanding of yourself. Do you like the work of writing code, debugging programs and looking for problems.

Moreover, there is a small skill about doing projects. We don’t do projects blindly. There are high and low projects. The closer to the actual business of the company, the more attractive the project is during the interview.

For example, you have made a recommendation system and search system yourself. Even if it is very simple, it can only be used. Such projects are also very valuable in the interview. It is much more valuable than XX management system, and such a system is also related to algorithm. It can be used for both algorithm and engineering, which can kill two birds with one stone.

The road to growth may have been a process of looking for the main line at the beginning. In fact, there is no problem in looking for the main line. For students, who are still young and have a lot of youth, there is no problem to test the appropriateness of some engineering projects. Even if you choose an algorithm or other direction in the future, your initial efforts and efforts are also useful.

That’s all for today’s article. 2020 is coming. I sincerely wish you all a harvest every day in 2020.

If you still like today’s content, please come to a three company support bar ~ (like, follow and forward)


Finally, whether you are changing careers, beginners or advanced, if you want to learn programming~

[noteworthy] myC / C + + programming learning exchange club![Click to enter]

Q & A, learning and communication, technical discussion, and a great collection of programming resources. Zero basic videos are also great~