1.2 使用C语言的理由

在过去的30年中,C已经成为最重要和最流行的编程语言之一。它之所以得到发展,是因为人们尝试使用它后都喜欢它。过去10年中,许多人从C转而使用更强大的C++语言,但C有其自身的优势,仍然是一种重要的语言,而且它还是通往C++的必由之路。学习C的过程中,您将认识到它的许多优点(见图1.1)。现在让我们首先来看其中的几个优点。

1.2.1 设计特性

C是一种融合了控制特性的现代语言,而我们已发现在计算机科学的理论和实践中,控制特性是很重要的。其设计使得用户可以自然地采用自顶向下的规划、结构化的编程,以及模块化的设计。这种做法使得编写出的程序更可靠、更易懂。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

阅读 ‧ 电子书库

图1.1 C的优点
1.2.2 高效性

C是一种高效的语言。在设计上它充分利用了当前计算机在能力上的优点。C程序往往很紧凑且运行速度快。事实上,C可以表现出通常只有汇编语言才具有的精细控制能力(汇编语言是特定的CPU设计所采用的一组内部指令的助记符。不同的CPU类型使用不同的汇编语言)。如果愿意,您可以细调程序以获得最大速度或最大内存使用率。

1.2.3 可移植性

C是一种可移植语言。这意味着,在一个系统上编写的C程序经过很少改动或不经修改就可以在其他系统上运行。如果修改是必要的,则通常只须改变伴随主程序的一个头文件中的几项内容即可。多数语言原本都想具有可移植性,但任何曾将IBM PC BASIC程序转换为Apple BASIC程序(它们还是近亲)的人,或者试图在UNIX系统上运行一个IBM大型机FORTRAN程序的人都知道,移植至少是在制造麻烦。C在可移植性方面处于领先地位。C编译器(将C代码转换为计算机内部使用的指令的程序)在大约40种系统上可用,包括从使用8位微处理器的计算机到Cray超级计算机。不过要知道,程序中为访问特定硬件设备(例如显示器)或操作系统(如Windows XP或OS X)的特殊功能而专门编写的部分,通常是不能移植的。

由于C与UNIX的紧密联系,UNIX系统通常都带有一个C编译器作为程序包的一部分。Linux中同样也包括一个C编译器。个人计算机,包括运行不同版本的Windows和Macintosh的PC,可使用若干种C编译器。所以不论您使用的是家用计算机、专业工作站还是大型机,都很容易得到针对您的特定系统的C编译器。

1.2.4 强大的功能和灵活性

C强大而又灵活(计算机世界中经常使用的两个词)。例如,强大而灵活的UNIX操作系统的大部分便是用C编写的。其他语言(如FORTRAN、Peri、Python、Pascal、LISP、Logo和BASIC)的许多编译器和解释器也都是用C编写的。结果是,当您在一台UNIX机器上使用FORTRAN时,最终是由一个C程序负责生成最后的可执行程序的。C程序已经用于解决物理学和工程学问题,甚至用来为《角斗士》这样的电影制造特殊效果。

1.2.5 面向编程人员

C面向编程人员的需要。它允许您访问硬件,并可以操纵内存中的特定位。它具有丰富的运算符供选择,让您能够简洁地表达自己的意图。在限制您所能做的事情方面,C不如Pascal这样的语言严格。这种灵活性是优点,同时也是一种危险。优点在于:许多任务(如转换数据形式)在C中都简单得多。危险在于:使用C时,您可能会犯在使用其他一些语言时不可能犯的错误。C给予您更多的自由,但同时也让您承担更大的风险。

另外,多数C实现都有一个大型的库,其中包含有用的C函数。这些函数能够处理编程人员通常会面对的许多需求。

1.2.6 缺点

C确实有一些缺点。和人一样,缺点和优点往往是同一特征相对的两个方面。例如,我们前面曾说过,C在表达方面的自由会增加风险。尤其是C对指针(在本书后面部分将学到)的使用,意味着您可能会犯非常难以追踪的编程错误。正如以前一位计算机专家曾经指出的,自由的代价是永远的警惕。

C的简洁性与其丰富的运算符相结合,使其可能会编写出极难理解的代码。没有谁强迫您编写含糊难懂的代码,但存在这样的可能性。试问,除C之外还有哪种语言存在一年一度的“含糊代码”(Obfuscated Code)竞赛呢?

此外,C还有许多的优点,但毫无疑问,C还有一些缺点。我们不想在这一点上多费笔墨,还是换一个新的话题吧。