时至今日,技术界的各种新编程语言层出不穷,提供的功能特性也是应有尽有,那么古老的C语言又是凭什么屹立不倒?是否仍值得程序员学习?
作者
肖楠
译者
弯月,责编
郭芮
C是一种系统编程语言,不仅有些年头了,而且名声还不太好,比如未定义的行为、内存相关的Bug等。特别是在今时今日Go和Rust迅速走红的情况下,C似乎已渐渐被人遗忘了。尽管如此,恕我直言,C仍然值得花时间学习。
无论你是C语言的编程新手还是经验丰富的程序员,我强烈建立你读一读《现代C语言》(ModernC)这本书。通过本书,你就会发现C语言也在悄悄地进化,如今这门语言也不像你想象的那么原始。例如,C11定义了类似于C++的标准线程API,这个功能让C看起来更像是一种“现代”语言,而不是过时的语言。你可以通过本书从新的角度来审视C语言。
无论你是系统语言程序员、运维人员、性能工程师还是身处其他职位,对操作系统的了解越多,就能越好地完成工作。
以所有流行的类Unix操作系统为例,从内核到命令行工具,几乎都用C语言实现。研究相关的源代码可以让你深入理解内部操作系统。例如,我知道有一个taskset命令可以绑定到一个专用CPU进程,但我想知道其背后的实现方法,所以我阅读了源代码。然后,我得知了两个真相:
有一个“/proc/%pid/task”文件夹,用于记录进程的线程信息;taskset实际上是通过调用sched_setaffinity和sched_getaffinityAPI来完成任务的。最后,因为C是靠近底层的语言,所以在某些情况下性能至关重要时,你可以利用C来编写高性能的代码,充分利用CPU。
虽然我列举了很多我认为你应该学习C的理由,但也许你也有充分的借口拒绝考虑C语言。没关系。但是,如果你想尝试C语言,那么首先不要害怕,勇敢地迈出第一步。尽管编写C语言代码很容易出错,但是你只需要确保你编写的内容是正确,不使用未定义的行为,那就没问题。
原文: