今天在知乎上看到这样一个问题:为什么现在部分985高校还是给大一上C语言课:

卧槽,还有985大学在大一上C语言课??-贾旭博客

这个题主是某985CS专业学生,发现学校居然给大一教C语言程序设计,而不是现在最流行的JAVA或者Python,不由得产生了疑问。

评论区非常精彩,不少答主认为:C语言真的没什么卵用了,学校可能是教学方法太落后了,才会继续教C语言。

不得不承认不少大学计算机专业的教学方法的确有点落后,但大一学C语言还真没什么问题。

关于这个问题,小北也写了篇文章,大家可以看看:你已经是个成熟的985大学了,请不要在大一教 C 语言!

虽然现在计算机专业毕业之后用C语言的是小概率,但学习C语言好处还真的非常多。

简单说两点吧:

1.培养计算机体系基础知识

好的大学、好的计算机专业的教学重点不是语言栈而是计算机体系基础知识。

但用C语言来诠释数据结构、操作系统、计算机网络、编译原理、等核心知识最直观、最简单。

同时C语言的语法在这些语言中基本是最简单的,几天就能学会,相当于掌握这个工具之后再开展其他课程,相当于用最快的速度掌握课程前置知识点的学习。

计算机专业的朋友一定要注意前置知识点,比如网易云课堂的学习路线就标注了课程和知识点的相关性:

卧槽,还有985大学在大一上C语言课??-贾旭博客

2.C语言最接近硬件

这点非常重要,C语言中没有大量的语法修饰,C语言中的语句大部分情况下能和汇编的语句一一对应。

比如if对应jxx系列、while对应jnz语句,这种一一对应能让我们更加理解计算机是怎么运行的。

对这块感兴趣的同学可以买一本《CSAPP》,这本书完全按照C语言和汇编的对应关系来让你了解计算机工作原理,以及学习汇编语言。

同时C语言很多函数都是直接和操作系统打交道的,跟Java、Python完全不一样,这些高级语言的解释器、JVM之类,隐藏了大量硬件细节。

说到底,科班出身的人一定要对计算机底层原理有深厚的功底,在这个基础之上,Java、Python应该是可以自学的选项。

C语言接近硬件的特性能帮我们构建对计算机体系的底层认知,而这种认知很大程度决定了将来我们能否成为高级工程师甚至技术专家。

基于以上两点原因,C语言绝不是一个可选项而是必修项,洋哥有不少非科班读者问:如何提升编码能力,我都会先问一个问题:学过C语言吗?没有的话先学习下。

接下来给大家推荐几本C语言经典书籍吧,其实旧文推过,再推荐一次:

1.《C Primer Plus》

强力推荐的一本C语言入门书籍,全书626页,可以让你在C语言的世界里畅游很久,关键文笔还非常幽默风趣让人心情愉悦。

一般来说,中文翻译都会失真不少,但这本书的翻译非常到位,几乎没有丢失背景信息和隐藏信息。

2.《C和指针》

这本书的特点是在指针上花了大功夫,指针绝对是C语言的精髓,理解了就等同于攻克了最难的部分。

除了头尾两章,指针贯穿全书,并用了大量通俗易懂的例子来讲解,正是指针使得C语言如此之强大,所以要学习C语言的精髓,就是要精通指针。

3.《C陷阱与缺陷》

这本书就是一个小册子,但很有让人读下去的欲望,倒不是因为页数太少,而是书中所说的每一个需要注意的地方,作为一名程序员都可能遇到。

作者叙述起来也是旁征博引,举的例子短小精悍却一针见血。此书作为一本常备读物非常赞,没事可以经常翻翻加深印象。

4.《C专家编程》

这是一本C语言进阶书籍,学完前两本,并有一些实践经验之后,再来攻克比较合适。

这本书会让你对C语言的使用有深入了解,同时还介绍了一些C++的知识。

这本书需要一些前置知识包括编译原理(简单了解即可),Unix/Linux的基础知识:命令和工具等等。

以上四本书学精学透,C语言基本就问题不大了,另外强调一点,学习语言除了看书之外一定要多实践多编码,可以用C语言做一些好玩的程序,比如最简单的万年历,复杂点的贪吃蛇之类的。

最后强调一点:每一个想在计算机行业长期发展的同学,无论科班还是非科班,请务必把C语言基础弄夯实,万丈高楼平地起,C语言就是必须的地基。

今天就写这么多了,我们下期见~

以下文章来源于findyi ,作者findyi