荡胸生层云:C语言开发修行实录
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第一篇 基础篇

第1章 学C语言还有用吗

用“学C语言还有用吗”这个名字作为章名,我觉得是一句废话,但是现实中有很多初学者都有这个疑问。C语言是当前所有开发语言中使用最为广泛的,从它诞生之日起就深受人们的喜爱。因为C语言的普及,使得后来的开发语言都或多或少地遵循了它的模式。所以,几乎所有的程序员都将C语言称为自己的技术起步语言。通过对C语言的学习和了解,使我们能够深入地理解操作系统的运作方式,以及编程思想的核心理念。

1.1 引出问题

9月9日,7:00,晴

秋高气爽,天空依然很蓝!今天是升入大学后的第八天,此时我的心里还是充满了各种新奇:学校的图书馆很大,师兄师姐们的毕业产品很了不起……此刻的我带着新奇的心情领来了自己的教材。

我:“我领回教材了,竟然发现有C语言的教材!记得C语言很早就有了,我听说学习Java、C++和C#才是王道,现在学C语言还有用吗?”

KNOWALL:“我只能很负责地对你说,C语言是当今使用最为频繁的编程语言之一,并且一直位列前三甲!”

我:“C语言真有这么厉害吗?”

KNOWALL:“你说的C++、Java和C#,都是在C语言的基础上发展起来的,可以说C语言是它们的鼻祖,它们之间的关系如图1-1所示。”

图1-1 主流编程语言的发展

1.2 漫漫发展历程

9月9日,7:10,晴

KNOWNALL说C语言是编程界的少林寺,其他语言都出自C语言。我决定好好研究一下C语言的发展历程!

我:“C语言应该很早就有了,并且至今经久不衰,所以说现在学C语言很有必要!”

KNOWNALL:“对,C语言诞生于1970年,后来经过多次优化和改进。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维、二维图形和动画,它是数值计算的高级语言。所以,C语言当之无愧地成为当今最为流行的语言之一。图1-2展示的是C语言漫漫发展历程中的几件大事!”

图1-2 C语言大事记

1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并将其命名为“B语言”,并且他用B语言写了第一个UNIX操作系统。

1973年,贝尔实验室的D.M.Ritchie在B语言的基础上设计出了一种新的语言,并将其命名为C语言。

1977年,为了使UNIX操作系统推广,D.M.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年,Brian W.Kernighian和Dennis M.Ritchie出版了著名的《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。

1988年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。

1.3 C语言特点

9月9日,7:30,晴

我:“C语言应该是一种汇编语言,而高级语言的特点是面向对象,那C语言算是高级语言还是……?”

KNOWNALL:“C语言既有高级语言的特点,也有汇编语言的特点。它既可以编写不依赖于计算机的硬件程序,也可以编写各种计算机处理程序。总结一下,C语言的主要特点如图1-3所示。”

图1-3 C语言特点

1.4 工欲善其事,必先利其器

9月9日,7:40,晴

我:“‘工欲善其事,必先利其器’是孔子名言,意思是:孔子告诉子贡,一个做手工或工艺的人,要想把工作完成,做得完善,应该先把工具准备好。”

KNOWNALL:“不错,没想到你对历史还有研究!”

我:“把这个典故放在此处有何用意呢?”

KNOWNALL:“意思是说,要做好C语言开发,有一个好的开发工具很重要!”

我:“编写C语言用哪个工具最好?”

KNOWN:“C语言的调试工具叫做编译器,它是能够编译、运行C语言程序的一种工具。”

目前最流行的C语言编译器有如下几种:

● GNU Compiler Collection或称GCC

● Microsoft C或称MS C

● Borland Turbo C或称Turbo C

● DEV-C++

上述C语言编译器版本不仅实现了ANSI C标准,而且在此基础上各自进行了一些扩充,使之更加方便、更加完美。在上述编译器中,其中最为常用的是Turbo C和DEV-C++。

1.4.1 先看Turbo C/C++ 3.0

我:“Turbo C/C++ 3.0工具也能编译运行C++程序?”

KNOWNALL:“当然,毕竟C++是在C的基础上发展起来的!”

Turbo C是Borland公司开发的一个用于微机的C编译系统,它有良好的用户界面和丰富的库函数,是目前DOS操作系统下最流行的C语言版本之一。Turbo C提供了如下两种编译环境。

(1)集成编译开发环境TC:是一个集编辑、编译、连接、调试及运行的集成模块,为用户提供了一个方便的集成开发环境。

(2)命令行编译TCC:类似于UNIX系统中的CC命令,是一个传统方式的编译程序。

Turbo C/C++3.0的优点如下。

● 不仅可以设计和编译C语言文件,而且修正了以往版本中的Bug。

● 支持多窗口操作,多个窗口间可以自由迅速切换。

● 支持鼠标选择、鼠标拖放和鼠标右键处理。

● 拥有方便的帮助系统,确保用户能够正确使用,并及时为用户提供使用说明。

● 拥有编辑查找和替换的功能。

● 更为方便的建立和管理Project项目。

1.安装Turbo C3.0

我:“Turbo C在使用前还得安装吗?”

KNOWNALL:“当然,任何一门语言的开发工具在使用前都得安装!开发工具就是一个软件工具!”

安装Turbo C3.0的具体流程如下所示。

(1)双击Turbo C3.0安装文件夹内的“INSTALL.EXE”程序,弹出开始界面,如图1-4所示。

图1-4 开始安装界面

(2)按【Enter】键,进入如图1-5所示界面。

图1-5 第2步安装界面

(3)在图1-5所示界面中输入安装文件的来源驱动器名称,然后按【Enter】键,进入如图1-6所示界面。

图1-6 第3步安装界面

(4)在图1-6所示界面中输入安装文件的路径,在此可以直接使用默认路径,然后按【Enter】键,进入如图1-7所示界面。

图1-7 第4步安装界面

(5)在图1-7所示界面中可以设置安装文件的保存路径,并且安装用户可以对路径进行修改。具体方法如下。

选中首行(选中的部分将变成黑色背景显示),然后按【Enter】键,进入如图1-8所示界面。

图1-8 设置界面1

此时图1-8中首行处于被选中状态,按【Enter】键后会弹出一个可以更改路径的提示框,在此可以自行设置安装文件的保存路径,如图1-9所示。

图1-9 设置界面2

修改后可以按【Enter】键,修改安装路径操作完毕。

(6)按【Esc】键返回如图1-7界面,然后通过使用【↑】和【↓】键来选中“Start Installation”项,并按【Enter】键开始进行安装。安装完成后,将显示安装成功提示框,如图1-10所示。

图1-10 第5步安装界面

2.Turbo C/C++ 3.0集成开发环境

我:“从安装过程看,Turbo C/C++ 3.0是一个DOS界面,其编译环境也是DOS吗?”

KNOWNALL:“Turbo C/C++ 3.0可以在Windows下运行,它只是模拟了一个DOS环境。”

Turbo C3.0安装完成后,为了使用方便,建议为安装目录中的“TC.EXE”创建一个快捷方式,如图1-11所示。

图1-11 Turbo C3.0快捷方式

进入Turbo C/C++ 3.0开发环境的方法比较简单,只需双击安装后的快捷方式即可。其主界面如图1-12所示。

图1-12 Turbo C3.0主界面

● 主菜单:通过这些菜单可以进行创建、保存和调试等操作,实现C语言中的应用开发。

● 编辑区:是代码编写区域,可以编写自己需要的代码。

● 信息窗口:显示常用的提示信息,例如“编译成功”和“执行完毕”等提示。

● 参考行:显示操作当前界面的快捷键提示,例如“F1 Help”,表示按【F1】键将弹出“帮助”界面。

(1)文件菜单(File)

按【Alt+F】组合键或用鼠标单击【File】命令即可打开文件菜单,如图1-13所示。

图1-13 文件菜单

Turbo C3.0的文件菜单主要包括如下子菜单项。

● New:新建文件

此命令用于创建一个新的C或C++文件。

● Open:打开文件

此命令用于打开已经创建存在的C或C++文件。此操作既可以使用类似DOS的通配符来进行列表选择,也可以打开其他扩展名的文件。此子项的快捷键是【F3】。

● Save:保存文件

此命令用于保存当前编辑区内新建的C或C++文件。

● Save as:另存为文件

此命令将当前编辑区内新建的C或C++文件另存在需要的磁盘中,如果此名文件已经存在,则弹出“是否覆盖保存”的提示。

● Change dir:修改目录菜单

此命令用于修改当前保存和显示C语言的文件的显示目录。

● DOS shell:DOS命令行菜单

此命令用于暂时退出Turbo C3.0界面,来到DOS提示符界面下,此时可以运行DOS命令。在DOS状态下按【EXIT】键后即可返回Turbo C3.0界面。

● Quit:退出菜单

此命令用于退出当前的Turbo C3.0界面,如果文件未保存则弹出保存提示。此操作的快捷键是【Alt+X】。

(2)编辑菜单(Edit)

按下【Alt+E】组合键或用鼠标单击【Edit】命令即可打开编辑菜单,如图1-14所示。

图1-14 编辑菜单

Turbo C3.0的编辑菜单主要包括如下子菜单项。

● Undo:撤销操作,用于取消以前的操作

● Redo:回复操作,用于恢复撤销前的操作

● Cut:剪切操作,用于剪切代码内容

● Copy:复制操作

● Paste:粘贴操作

● Clear:清除操作

● Copy example:复制实例操作

● Show clipboard:查看剪切板操作

(3)运行菜单(Run)

按下【Alt+R】组合键或用鼠标单击【Run】命令即可打开运行菜单,如图1-15所示。

图1-15 运行菜单

Turbo C3.0的运行菜单主要包括如下子菜单项。

● Run:运行

此命令用于运行指定的文件或当前编辑区内的文件。如果运行上次没有做过修改、经过编译后的源代码,则会直接运行到下一个断点,否则将会对当前的C语言文件进行编译、连接操作。其快捷键是【Ctrl+F9】。

● Program reset:程序重启

此命令用于终止当前的调试过程,并释放归还给程序的空间,其快捷键为【Ctrl+F2】。

● Go to cursor:运行到光标处

此命令用于在程序调试过程中使用,设置当前程序运行到选定的光标位置。但是光标所在的位置必须是一条可执行的语句,否则将会提示错误。其快捷键为【F4】。

● Trace into:跟踪运行

如果在执行一条调用其他用户子函数时使用此菜单,则执行长条将跟踪到此函数的内部去执行。其快捷键为【F7】。

● Step over:单步运行

此菜单执行当前函数的下一条语句,即使此语句是用户函数调用语句,执行长条也不会跟踪进函数内部。其快捷键为【F8】。

● Arguments:命令行参数

这是命令行参数,允许用户使用命令行参数。

(4)编译菜单(Compile)

按【Alt+C】组合键或用鼠标单击【Compile】命令即可打开编译菜单,如图1-16所示。

图1-16 编译菜单

Turbo C3.0的编译菜单主要包括如下子菜单项。

● Compile:编译生成目标代码

此命令可以将一个C源文件编译成.OBJ目标文件,并同时显示生成的文件名。其快捷键为【Alt+F9】。

● Make:生成执行文件

此命令将当前文件生成一个可执行的.EXE文件,并显示生成的.EXE文件。

● Link:生成执行文件

此命令可以把当前.OBJ文件以及库文件连接在一起生成.EXE文件。

● Build all:建立所有文件

此菜单用于重新编译项目中的所有文件,并进行装配生成.EXE文件。

● Information:显示当前编译信息

此命令用于显示当前编译文件的编译信息。

● Remove messages:清除编译信息

此命令用于清除当前编译文件的编译信息。

(5)项目菜单(Project)

按下【Alt+P】组合键或用鼠标单击【Project】命令即可打开项目菜单,如图1-17所示。

图1-17 项目菜单

图1-18 调试菜单

Turbo C3.0的项目菜单主要包括如下子菜单项。

● Open project:打开或创建项目

此菜单可以打开已经创建的项目,也可以新建一个项目。单击此菜单后会弹出一个打开文件的窗口,在其中可以选择要打开的文件,也可以选择新的项目保存位置并输入该项目的名称。项目的名称有.PRJ扩展名,里面包含要编译、要连接的文件名。

● Close project:关闭项目

此命令用于关闭当前的项目。

● Add item:添加项

此命令用于将当前打开文件或编译文件添加到项目中。

● Delete item:删除项

此命令用于删除项目中的某个文件。

(6)调试菜单(Debug)

按下【Alt+D】组合键或用鼠标单击【Debug】命令即可打开调试菜单,如图1-18所示。

Turbo C3.0的调试菜单主要包括如下子菜单项。

● Inspect:检查菜单

此命令用于检查代码中的变量或表达式的数据类型。

● Call stack:检查堆栈

此命令用于计算代码中的变量和表达式的值,或将其修改为新值。

● Watches:监视点

此命令用于在代码中添加、删除、编辑和删除监视点。

● Toggle breakpoint:设置或清除断点

此命令用于在当前代码中设置或清除一个断点。

● Breakpoints:断点列表

此命令用于使用列表来显示代码中的所有断点。

1.4.2 再看DEV-C++5

9月9日,12:00,晴

我:“我在自己的计算机上安装了Turbo C,按照您的方法很快就安装成功了!”

KNOWNALL:“对,很多步骤都是默认安装的!”

我:“但是我发现一个问题,Turbo C是模拟的DOS环境,我们不能在上面实现复制和粘贴操作,这会影响我们的开发效率!”

KNOWNALL:“不怕,如果你想在编译器中使用复制和粘贴操作,可以使用DEV-C++!”Dev-C++是一个C&C++开发工具,它是一款自由软件,遵守GPL协议。它集合了GCC、MinGW32等众多自由软件,并且可以从“devpak.org”取得最新版本的各种工具支持,而这一切工作都是来自全球的狂热者所做的工作,并且你拥有对这一切工具自由使用的权利,包括取得源代码等,前提是你也必须遵守GNU协议。

Dev-C++的最常用版本是Dev-C++5,安装过程如下所示。

(1)双击exe安装文件,首先弹出“语言选择”界面,在此选择“简体中文”(Chinese),如图1-19所示。

图1-19 选择语言

(2)单击“OK”按钮弹出“安装向导”界面,如图1-20所示。

图1-20 安装向导界面

(3)单击“下一步”按钮弹出“选择组件”界面,如图1-21所示。

图1-21 选择组件

(4)单击“下一步”按钮弹出“选择安装位置”界面,在此选择D盘,如图1-22所示。

图1-22 安装位置界面

(5)单击“下一步”按钮后开始安装,如图1-23所示。

图1-23 开始安装

(6)至此DEV-C++5安装完毕,运行后发现其界面非常简单,但是具备了Turbo C的所有功能,如图1-24所示。

图1-24 DEV-C++5界面

我:“DEV-C++5真的很好用,还有更强大的开发工具吗?”

KNOWNALL:“当然有了,例如VC++和Visual Studio.NET,都很强大!”

我:“那我用什么开发工具好呢?”

KNOWNALL:“你是一名初学者,C是基于DOS的汇编语言,按理说应该使用Turbo C3.0。但是从使用效率看,带复制和粘贴功能的DEV-C++5应该能提高你的学习效率。至于VC++和Visual Studio.NET,建议你以后再考虑,等基础知识掌握得差不多了,开发较大项目时,再使用VC++和Visual Studio.NET!”

1.5 我的第一次C语言程序开发

9月9日,13:00,晴

我:“开发环境搭建完毕,我终于可以体验C语言程序了,此刻我很紧张,毕竟是第一次编写程序!”

KNOWNALL:“呵呵,人生有太多的第一次,第一次恋爱,第一次步入大学校园……人们都希望每一个第一次都会更加美好,更加灿烂,更加美丽。但是你不要徘徊不前,先不要考虑后果,勇敢做下去才是正道!”

我:“好的,反正是第一个程序,我是初学者,我要大胆的尝试!”

KNOWNALL:“对,学编程就要反复尝试,反复编写、调试代码!其实用DEV-C++5开发C程序很简单,只需要3个步骤!”

C语言程序开发主要分为如下3步。

第1步:打开C语言编译器,编写C语言代码。

第2步:编译代码,创建目标文件。

第3步:运行可执行文件,浏览具体结果。

上述流程的具体实现过程如图1-18所示。

图1-18 C语言开发流程

1.5.1 第一步:编辑源代码

先打开DEV-C++5,新建一个源代码文件,输入下面的代码:

    #include <stdio.h>
    void main() {
    printf("我是一只IT小小鸟!");
    getch();
    }

我:“上述代码能干什么呢?”

KNOWNALL:“上述代码运行后将输出‘我是一只IT小小鸟!’你现在不必考虑这段代码能干什么,你在这里需要掌握的是C语言程序的编译和运行过程。具体语法在后面的知识中自然会学到!”

注意

也可以使用记事本来编写源代码,将编写的文件保存为“.C”格式,然后在DEV-C++5中通过依次单击“文件”→“打开”命令打开这个记事本源文件。此时将在Turbo C3.0中打开在记事本里编写的源文件代码,以后即可对其进行编译和使用了。

1.5.2 第二步:编译

因为计算机只能识别出二进制的机器命令,所以要想让编写的C语言能够执行,就必须将编写的源代码转换为机器语言。在DEV-C++5中依次单击“运行”→“编译”命令进行编译,如图1-19所示。

图1-19 开始编译

1.5.3 第三步:运行

当创建可执行程序完毕后,在DEV-C++5中依次单击“运行”→“运行”命令开始调试程序,即可运行并查看结果,如图1-20所示。如果文件不能正常运行,则需要返回开始进行重新修改。修改完毕后,需要继续按照上述步骤依次进行编译和连接,直到没有错误为止。

图1-20 运行程序

在C语言中,编译和运行是两个独立的操作。但是DEV-C++5可以一步完成,即依次单击“运行”→“编译运行”命令,这样就可以一步完成编译和运行,如图1-21所示。

图1-21 一步完成编译和运行

运行后的效果如图1-22所示。

图1-22 运行效果

图1-23 C程序组成部分

1.6 庖丁解牛C程序

9月9日,15:00,晴

我:“DEV-C++5确实很好用,代码可以直接复制和粘贴,使用很方便。”

KNOWNALL:“DEV-C++5很容易上手,接下来我们通过一个C语言程序,看一下程序的调试和运行过程。”

C语言是一门结构化程序语言,由顺序结构、选择结构和循环结构组成。C语言由不同功能的函数构成,每个函数能够实现某特定的功能,所以也可以把C语言看做一门函数语言。

1.6.1 C程序组成部分

我:“我在很多C程序发现有main( )函数,它很重要吗?”

KNOWALL:“main是一个入口函数,每个C语言程序都是从main函数开始的,而无论main在程序的位置如何。其实main只是C程序的一个组成部分,C程序的组成结构如图1-23所示。”

1.main函数

每个C语言程序必须至少包含一个主函数:main函数,它是C语言程序中唯一必不可少的组成部分。主函数的格式如下:

    void main() {
          函数体
      }

函数体可以分为说明部分和执行部分这两部分,说明部分用于定义变量的数据类型,而执行部分用于实现想要结果的指令。

主函数可以被放于程序内的任何位置,但是程序执行后将从执行主函数开始,并且也大多数从主函数结束。主函数可以调用其他的函数,但是其他函数不能调用主函数。

2.文件头引用

在C程序中,经常会用到输入函数和数学函数等,而这些函数都被事先做好放在了各种的“头文件”中,开发人员只需引用这些相应的“头文件”即可实现对各种函数的使用。

文件头引用的格式如下:

    # include <头文件>

在C程序中加上“头文件”的引用,就是将头文件的内容整体嵌入到所编写的源程序中。使用“头文件”可以提高程序的效率和稳定性,并减少了开发人员的劳动量。程序员只需将需要的功能模块用“include”语句调用并使用即可。C语言中常用的“头文件”有stdio.h(输入/输出函数)、math(数学函数)和string.h(字符和字符串函数)等。

3.变量定义部分

变量是其值可以改变的量。在程序运行时,程序使用变量里存储的各种信息。如果在C语言中使用变量,必须在使用前定义它。

4.函数类型说明部分

此部分的功能是将程序中包含的函数在定义和调用之前进行声明并将有关信息通知编译系统。函数声明不同于函数定义,后者包含了组成函数的实际语句。

5.函数定义部分

此部分的功能是用于完成特定的功能。除了main主函数和C库函数外,还有其他的用户自定义的函数。这些函数都包括说明部分和函数体,说明部分用于说明函数的名称、类型和属性等信息;而函数体是函数说明部分下面“{}”内的部分代码。

6.注释语句

C程序中的注释以“/*”符号开始,以“*/”结束,注释的内容不会被编译,也不会被执行,它可以出现在程序的任何位置。注释可以占一行或多行,当只占一行时,可以使用“//”来注释。

在程序中放入注释语句,可以提高程序的可读性。当程序规模很大或很复杂时,可以通过注释来规划程序的功能,并便于后期维护。

7.大括号“{}”

“{}”的功能是将组成每个C函数的程序括起来,“{}”中的语句被称为代码块。

8.分号“;”

“;”的功能是表示每条语句的结束,它是C语言程序的必要组成部分。

为说明C语言程序的各个组成部分,下面通过一个典型的C程序实例,来说明C语言程序中的各个组成部分。

测试1:输入两个数字,对用户输入的数据进行大小比较,并输出较小的数据。

解决思路:根据双分支结构原理,我的设计思路如下所示。

(1)通过include语句引用输入和输出的头文件;

(2)定义全局变量;

(3)定义主函数,输出提示,并输出比较结果;

(4)定义函数min,比较两个数字的大小。

编写程序second.c,具体实现代码如下所示:

    #include <stdio.h>                     //引用头文件
    int m;                             //定义全局变量
    int min(int x,int y);
    void main()
    {

        int a,b;                                    //定义变量
        printf("Enter two Number:");                //调用库函数,输出函数
        scanf("%d,%d",&a,&b);                       //调用库函数,输入函数
        m=min(a,b);                                 //调用用户定义的函数
        printf("Minimum:%d\n",m);
    }
    int min(int x,int y)                           //定义函数
    {
        int t=0;                                   //定义了局部变量t,并设置其初始值为0
        //函数体
        if(x<y) t=x;
        else t=y;                                  //对x和y两个参数进行大小判断
        return(t);
    }

这样,在DEV-C++5中编写上述代码后,依次单击“运行”→“编译运行”命令运行上述代码,运行后先显示输出输入数字提示,如图1-24所示;输入两个数字,按【Enter】键后将输出较小的数字,如图1-25所示。

我:“哈哈,我调试成功了!”

KNOWALL:“DEV-C++5使用方法很简单吧!程序中的各个组成部分已经很明了了,在代码中我已经给你做了详细的注释!”

图1-22 成功提示

图1-23 输出较小的数字

1.6.2 C程序的书写格式

9月9日,16:00,晴

我:“我在网上多搜索了几个C程序,进一步分析C程序的组成结构!”

KNOWALL:“孺子可教!编写C程序代码不能天马行空,需要遵循一定格式!”

1.C语言程序的结构特点

C语言程序结构的特点总结如下。

● 一个C语言源程序可以由一个或多个源文件组成。

● 每个源文件可由一个或多个函数组成。

● 一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。

● 源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

● 每一个说明,每一个语句都必须以分号结尾。但预处理命令、函数头和“}”之后不能加分号。

● 标识符、关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

2.代码书写规则

为了使书写的代码清晰、便于阅读和易于理解,在书写程序时应遵循以下规则。

● 一个说明或一个语句占一行。

● 用“{}”括起来的部分,通常表示了程序的某一层次结构。“{}”一般与该结构语句的第一个字母对齐,并单独占一行。

● 低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。

1.7 解决问题——究竟C语言还有用吗

9月9日,17:00,多云

KNOWALL:“返回本章开始,看本章开始你提出的问题:C语言还有用吗?有用没用先不下结论,先看2009~2010年这两年的统计:”,如表1-1所示。

表1-1 编程语言使用率

从上述统计表中可以一目了然地看出,C语言是当今使用最多的一门语言。

1.百家争鸣的语言之争

当前编程语言技术,犹如春秋时期的百家争鸣,各种最新技术、新思想、新名词层出不穷,令人眼花缭乱。新与旧混杂在一起,让人晕晕乎乎,各种技术领域越来越分化,程序员距离计算机底层实现越来越远,不懂的领域越来越多,也越来越感到焦虑,他们已经由计算机的主人变成了计算机的奴隶。

无论是初学者还是高级程序员,都在心底埋藏着一个问题:C语言会不会只是人们学习程序设计的基石,而没有了实际的使用价值?答案当然不是,笔者在此建议读者要牢记:越基础的语言,它能实现的功能也就越强大。比如现在许多的语言都是由C语言开发出来的。在真正高深的编程领域,许多好的软件、系统都是由汇编语言和C语言等编写出来的。所以它不光是基石,而且将会有强大的生命力。

2.C语言的江湖地位

C语言就如武学中的内功心法,是学习其他武功的根基。C语言是目前世界上流行、使用非常广泛的高级程序设计语言。它具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件、三维、二维图形和动画,它是数值计算的高级语言。

3.中肯的看C语言的地位

C语言比较贴近操作系统,纯C语言在Windows平台上主要用于系统底层驱动的开发(一般会辅以汇编)。特别是在Linux或UNIX上,C语言一直到现在都还是主流,C语言编写的命令程序可以很方便与其他程序在shell上配合。C脚本和shell构建了一整套UNIX/Linux哲学,与C语言相提并论的一般是C++,因为与Java、Python、Visual Basic这些语言明显不是一个领域。C语言相对C++来说比较简单,C++则编程语言中最复杂的一个。

在此可以简单地总结一下C语言特点。

(1)C语言语法简单,是学习其他语言的基础;

(2)C语言符合Unix/Linux哲学,它适合和其他程序以进程方式组合来构建大型的应用,也是因为这个原因,Linux直到2.5才把线程提到考虑范围中;

(3)Linux特别重视进程的开销,而相比Windows,Linux的进程开销也相对较小。

1.8 我的总结

本章内容的目的很简单,就是让读者认识到C语言现在依旧坚挺,在现实项目中被广泛应用。如表1-2所示是我的学习时间进度表。

表1-2 时间进度表