2020-01-15

前段时间有一条新闻刷屏-“C 语言荣获2019 年度最佳编程语言称号”,于是我想写一篇关于C语言的文章,因为这是我唯一喜欢和精通的编程语言。本篇标题借鉴互联网大神Paul Graham名篇《创造者的鉴赏力》(Taste for Makers)

如果把编程语言比作门派,C语言毫无例外是“少林寺” –它最正统,招式简单但变化无穷,同时拥有独一无二的简洁和优雅。正统,C语言伴随Unix操作系统而诞生;招式简单,指C语言没有花哨特性,只有编程语言应该具备的特性;强大,如果说复杂的操作系统、编译器和数据库都可以用C编写,还有什么C不能实现?

“Beauty is the first test: there is no permanent place in this world for ugly mathematics.”(优美是第一项测试,丑陋的数学在这个世界没有容身之地)

– G. H. Hardy, A Mathematician’s Apology(著名数学家哈代)

C语言更为吸引人的是其简洁和优雅,Linux内核漂亮的C代码堪称艺术品。另一个能与Linux内核相提并论的艺术品就是QEMU – Fabrice Bellard大概觉得地球人赶不上自己节奏,于是写了一个无比牛逼的系统并且开源。

令人遗憾的是,业界常有同行说国内C高手太少,其中一个重要原因是作为“屠龙刀”的C语言适合复杂、高效软件编写,例如操作系统,而操作系统正是硬核技术和产品的绝佳代表。国内对硬核领域的重视会吸引更多从业者和学生深入掌握C语言;另一方面,C高手增多也会提升硬核领域水平。

和所有技术一样,如果不通过C语言设计实现复杂系统,很难体会其精妙。 以操作系统和网络安全两个硬核领域为例,事实上很多“创新”看似简单朴实,但有着较大的设计难度和工程开发量(这里的“创新”指对工业界有较大推动作用的技术或产品)

另一个相关话题是我们是否应更多讲授Linux使用和Linux环境编程,gcc和makefile具有与C语言共同的简洁优雅特性。(工作后我在一个大型项目中使用最基础的makefile(而不是用工具生成makefile),编译效率令人惊叹,而且makefile也非常漂亮)。

我曾在一家(开源)数据库公司实习,所编写的几百行漂亮的C代码在很多年后仍然吸引着我,也是我最好的作品之一(论文大概是我虽不擅长的作品)

我们总喜欢简洁和优雅的事物,而C语言两者都具备 – 编程语言的偏好在一定程度上反应编程者的鉴赏力。而鉴赏力对于“创造者”至关重要,例如产品经理和游戏制作人。对于优秀产品(包括游戏),用户无需阅读说明书就可操作,实际上几乎没有人阅读少则数十页、多则上百页的说明书。