C编程语言已经存在很长一段时间了——它的权威参考是它的创造者Kernighan和Ritchie[1978]所写的书。从那时起,C语言被用在了数量惊人的应用程序中。用C语言编写的程序和系统随处可见: 个人电脑、电话、相机、机顶盒、冰箱、汽车、主机、卫星……基本上在任何有可编程接口的现代设备中。与C语言程序和系统的普遍存在相比,对C语言的良好了解要少得多。即使是经验丰富的C程序员,对C语言的现代演变也常常陷入某种程度的自我造成的无知之中。一个可能的原因是C语言被视为一种“容易学习”的语言,允许缺乏经验的程序员快速地编写或复制代码片段,至少看起来是按照它应该做的。在某种程度上,C语言无法激励它的用户攀登到更高的知识水平。这本书的目的是改变这种普遍的态度,所以它的层次结构反映了对C语言和编程的熟悉程度。这种结构可能会违背读者的一些习惯;特别是,它将一些困难的主题(如指针)划分为不同的层次,以避免错误的信息过早地淹没读者。稍后我们将更详细地解释这本书的组织结构。一般来说,尽管书中提出了许多普遍适用的思想,但这些思想也适用于其他编程语言(如Java、Python、Ruby、c#或c++),书中主要介绍了C语言独有的概念和实践,或在使用C语言编程时具有特殊价值的概念和实践。
https://www.manning.com/books/modern-c
这本书按层次组织,从0到3编号。初始的0级,名为“Encounter”,将总结C语言编程的基本知识。它的主要作用是提醒您前面提到的主要概念,并使您熟悉C语言应用的特殊词汇和观点到最后,即使您在C编程方面没有太多经验,您也应该能够理解简单C程序的结构,并开始编写自己的程序。第1级“Acquaintance”详细描述了大多数主要的概念和特性,比如控制结构、数据类型、操作符和函数。它应该能让你更深入地理解运行程序时发生的事情。这些知识对于算法的入门课程和该级别的其他工作应该是足够的,需要注意的是,指针还没有完全介绍。
“Cognition”第2级是C语言的核心。它完整地解释了指针,使您熟悉C的内存模型,并允许您理解C的大部分库接口。完成这一阶段应该使你能够专业地编写C代码;因此,本文首先对C程序的编写和组织进行了必要的讨论。我个人希望任何从工程学院毕业,主修计算机科学或C语言编程的人都能掌握这一水平。不要满足于少。然后,“Experience”级别3详细介绍了特定主题,如性能、可重入性、原子性、线程和类型泛型编程。当你在现实世界中遇到它们时,它们可能是你最好的发现。尽管如此,作为一个整体,它们对于结束讨论并为您提供全面的C语言专业知识是必要的。任何有几年C语言专业编程经验或领导一个以C语言为主要编程语言的软件项目的人都应该掌握这一水平。