From WeChat Official Account: findyi
Reading this article will take about 5 minutes.
Today, I saw a question on Zhihu: Why are some 985 universities still teaching C programming in freshman year instead of the more popular JAVA or Python?

The questioner is a student from a 985 CS program and was surprised to find that the school teaches C programming in freshman year.
The comments section was lively, with many respondents believing that C language is really outdated and that the school must be using outdated teaching methods to continue teaching it.
It must be admitted that many universities’ teaching methods in computer science are indeed a bit outdated, but there is nothing wrong with learning C language in freshman year.
Regarding this issue, Xiao Bei also wrote an article, which you can check out: You are already a mature 985 university, please do not teach C language in freshman year!
Although the probability of using C language after graduating from a computer science program is low, there are indeed many benefits to learning C language.
Let me briefly mention two points:
1. Cultivating Basic Knowledge of Computer Systems
The focus of a good university and a good computer science program is not on the language stack but on the basic knowledge of computer systems.
Using C language to explain core concepts such as data structures, operating systems, computer networks, and compiler principles is the most intuitive and straightforward.
Moreover, the syntax of C language is generally the simplest among these languages, and it can be learned in just a few days, allowing students to master this tool before moving on to other courses, effectively enabling them to quickly grasp the prerequisite knowledge points for their studies.
Friends in computer science must pay attention to prerequisite knowledge points; for example, the learning path on NetEase Cloud Classroom indicates the correlation between courses and knowledge points:

2. C Language is Closest to Hardware
This point is very important; C language does not have a lot of syntactic embellishments, and most statements in C language can correspond directly to assembly language statements.
For example, if corresponds to the jxx series, while corresponds to the jnz statement; this one-to-one correspondence helps us better understand how computers operate.
Students interested in this area can buy a book called CSAPP, which explains the principles of computer operation based on the correspondence between C language and assembly language, as well as learning assembly language.
Additionally, many functions in C language interact directly with the operating system, which is completely different from Java and Python, where interpreters and JVMs hide a lot of hardware details.
Ultimately, those with a formal education must have a solid foundation in the underlying principles of computers, and on this basis, Java and Python should be options for self-study.
The characteristics of C language being close to hardware can help us build a foundational understanding of computer systems, and this understanding largely determines whether we can become senior engineers or even technical experts in the future.
Based on the above two reasons, C language is not an optional subject but a required one. Many non-CS readers ask me how to improve their coding skills, and I always start by asking: Have you learned C language? If not, start with that.
Next, let me recommend a few classic C language books; actually, I have recommended them before, but here they are again:
1. C Primer Plus
This is a highly recommended introductory book on C language, with 626 pages that will allow you to explore the world of C language for a long time. The writing is also very humorous and enjoyable.
Generally speaking, Chinese translations often lose a lot of meaning, but the translation of this book is very well done, with almost no loss of background information and hidden details.
2. C and Pointers
This book focuses heavily on pointers, which are absolutely the essence of C language; understanding them is equivalent to conquering the most difficult part.
Except for the first and last chapters, pointers run throughout the book, using many simple and understandable examples to explain. It is precisely pointers that make C language so powerful, so mastering the essence of C language means mastering pointers.
3. C Traps and Pitfalls
This book is a small booklet, but it is very engaging to read, not because of its short length, but because of the many points of caution it discusses that every programmer may encounter.
The author’s narrative is also rich in references, with concise and impactful examples. This book is excellent as a reference book; you can often flip through it to reinforce your memory.
4. Expert C Programming
This is an advanced C language book, suitable for tackling after completing the first two books and gaining some practical experience.
This book will give you an in-depth understanding of C language usage and also introduces some C++ knowledge.
This book requires some prerequisite knowledge, including a basic understanding of compiler principles and Unix/Linux basics: commands and tools, etc.
If you master these four books thoroughly, you should have no major issues with C language. Additionally, I want to emphasize that besides reading books, you must practice coding a lot. You can create some fun programs in C language, such as a simple perpetual calendar or a more complex snake game.
Finally, I want to emphasize that every student who wants to develop a long-term career in the computer industry, whether from a formal education background or not, must solidify their foundation in C language. A tall building rises from the ground up, and C language is the essential foundation.
That’s all for today; see you next time!
Recommendations ↓↓↓