编程语言那么多,为何C语言能成为最成功的语言?
诞生五十多年后C 仍然是历史上最具影响力的编程语言之一。每年都有新语言出现承诺更高的生产力、更强的安全性或更简洁的语法。然而 C 仍在驱动着操作系统、嵌入式设备、数据库、编译器以及无数的软件项目。为什么一门在 1970 年代初创造的语言能够保持如此长久的成功答案不在于某个单一的突破而在于设计哲学、时机、可移植性和持久影响力的结合。The C programming language was devised in the early 1970s as a system implementation language for the nascent Unix operating system.“C 编程语言于 20 世纪 70 年代初被设计出来作为当时刚刚兴起的 Unix 操作系统的系统实现语言。”C 是为了解决真实问题而构建的与许多诞生于学术研究的编程语言不同C 是为解决实际工程问题而创造的。Dennis Ritchie 在 Bell Labs 开发 Unix 期间设计了 C。当时操作系统大多用汇编语言编写这使得它们难以维护而且几乎不可能在不同计算机架构之间移植。C 提供了一种革命性的方案既有汇编的效率又有高级语言的结构和可读性。这种务实的起源塑造了这门语言。每个特性都有其目的。几乎没有多余的复杂性程序员可以直接控制内存和硬件而不必面对过多的抽象层。Unix 让 C 成为全球标准C 成功的最大原因之一并不仅仅是语言本身——而是 Unix。1973 年Unix 的大部分代码被改写为 C而不再使用汇编语言。这一决定彻底改变了软件开发方式。过去每当出现一台新的计算机都需要重新编写整个操作系统。而有了 C只要新的硬件拥有对应的 C 编译器Unix 就能够以较少的修改完成移植。随着越来越多的大学、科研机构以及企业采用 Unix它们也自然开始使用 C。语言随着操作系统一起传播最终形成了计算机历史上最强大的软件生态之一。可移植性改变了一切在 C 出现之前软件通常只能运行在特定的计算机上。C 在硬件控制能力和可移植性之间找到了良好的平衡。程序只需要很少的修改就能够在不同的处理器上重新编译运行这大大降低了软件开发成本也提高了开发效率。可移植性因此成为 C 最具代表性的优势之一。也正因为如此C 很快成为操作系统、编译器、网络软件以及嵌入式系统的首选语言。简洁才更长久很多人都会把 C 称作一门“小语言”。它的核心语法十分紧凑标准库相比现代语言也并不庞大。它不会刻意隐藏计算机底层而是直接向程序员开放内存、指针以及各种数据结构。C was developed by real practitioners of programming and was designed for practical day-to-day use.“C 是由真正从事编程工作的人开发出来的它从一开始就是为了满足日常实际开发而设计。”这种设计理念直到今天依然没有过时。很多程序员依旧喜欢 C并不是因为它功能最多而是因为它不会妨碍程序员思考可以用最直接的方式构建高效的软件。现代编程语言的基础C 的影响远远超出了 C 本身。C、Objective-C、Java、C#、JavaScript、Go 等众多语言都继承了 C 的语法、运算符、控制结构或者编程模型。即使从未真正编写过 C大多数程序员每天接触的编程方式其实都来自 C。与此同时许多现代编译器、操作系统、语言运行时以及标准库本身仍然主要使用 C 编写。从某种意义上说学习 C也是在学习现代编程语言共同的基础语言。标准化带来了信任C 能够长期保持生命力还有一个重要原因就是标准化。随着 C 在不同计算机平台上的普及各家编译器开始出现越来越多彼此不兼容的实现。1989 年发布的 ANSI C 标准随后又成为 ISO C 国际标准为开发者和编译器厂商建立了一套统一规范。这种一致性让软件能够在几十年的时间里保持可移植性也让企业更愿意长期投入 C 生态。性能依然重要尽管编程语言已经取得了巨大的发展但性能始终具有不可替代的价值。操作系统、嵌入式控制器、网络设备、数据库、游戏引擎以及各种高性能基础库至今仍然大量采用 C。原因很简单。C 能够生成高效的机器码同时给予程序员对内存和硬件资源的精确控制能力。即使很多新的编程语言已经出现它们为了获得更高的性能底层依旧大量依赖 C 编写的组件。成功不只是因为流行今天C 已经不是最适合初学者学习的语言也未必是所有应用场景中最安全的选择。Rust、Go、Python 等语言已经能够解决许多 C 有意交给程序员自己处理的问题。但是一门语言是否成功并不能只看今天还有多少人在使用。真正成功的语言会改变软件开发方式会影响一代又一代程序员也能够在技术不断发展的过程中始终保持价值。而 C 做到了这一切。距离 Dennis Ritchie 创造 C 已经过去五十多年它仍然运行在操作系统、嵌入式设备、数据库、网络基础设施以及无数的软件工具之中。即使在那些已经不再把 C 作为主要开发语言的领域它的设计理念依然深刻影响着今天程序员的思维方式。正因如此在人类创造过的数千种编程语言中C 被广泛认为是历史上最成功、也是最具影响力的编程语言之一。