background image

很简单的事情。可以用 Lua 作为例子,Lua 本身是完全遵循 C89 标准,没有使用任何
特定扩展,这也保证了有 C 语言编译器的平台,都可以编译使用 Lua。可以编译运行
C 语言的硬件平台可以从 A 排到 Z,真是非常有意思的事情。

C 语言也是一个比较少见的应用领域极为广泛的语言。比如编写操作系统这种高难问
题,只有 C++、汇编语言可以做到。C 语言可以编写服务器端软件如
Apache、Nginx,或者编写 GUI 程序,如 GTK。大多数程序语言的第一版是通过 C 语

言实现,借助前面提到的 一次编写处处编译 ,最大的保证了这些程序语言的可移
植性。在 Web 开发领域,C 语言的应用相对较少,这也是一种取舍的结果,Web 开
发需要使用 PHP、Ruby、Python 这样的动态语言,可以快速上线快速修改,可以最
大程度满足用户时时变化的需求,这也是 C 语言的弱项。如果把程序语言的应用领域
从硬件到管理软件、Web 程序做一个很粗略从下到上的排列,C 语言适合领域是比较
底层靠近硬件的部分,而新兴语言比较偏重于高层管理或者 Web 开发这种相对贴近
最终用户的领域。比较流行的混合开发模式是使用 C 语言编写底层高性能部分代码或
后台服务器代码,而使用动态语言如 Python 做前端开发,充分发挥它们各自的优势
力量。

提到 C 语言的缺点,常常是它缺少这种或者那种特性,比如有人建议加入 GC,有人
建议加入并行或者并发支持,有人提到没有一个比较完整的类似 C++的异常策略。
这些特性有的可以通过引入第三方库来实现,但 C 语言的设计哲学其实决定了它不
会像 C++

那样 非常强大 。即使引入了某些人期望的特性,依然会是某些人喜欢某

些人不喜欢的情形,现在的功能对于 C 语言应用领域来说已经够用,其它特性可以
通过特定程序语言实现,并且通过 C API 与 C 语言编写的程序进行交互。任何一个工
匠都不可能只使用一个工具完成他的工作,不同工具结合起来才能更快更好的完成
任务。

提到 C API,也稍微介绍一下,我们知道 windows 操作系统的 api 也好,Linux 的系
统 api 也好,或者是想给 Ruby、Python 编写扩展模块,C 语言形式的函数定义都是
唯一的选择。C 语言就好像是一个中间层或者是胶水,如果想把不同编程语言实现的
功能模块混合使用,C 语言是最佳的选择。

提了这么多关于 C 语言的好处,那么学习 C 语言是否适合就看你自己的判断了,例
如要进行一个嵌入式项目,或者需要进行服务器端开发,或者写一个性能相关的组
件等等,C 语言都是比较好用的选择。另外也可以在 C++的使用过程中有意的使用 C
语言的思考方式,汲取 C 语言简洁明快清晰地设计思路,对编程设计水平会有很大
的提高。