初识 C 语言

1. C 语言的起源

1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritch)和肯·汤普逊(Ken Thompson)在开发 UNIX 操作系统时设计了 C 语言。C 语言不完全是里奇的突发奇想而来,他是在 B 语言(汤普逊发明)的基础上进行设计。至于 B 语言的起源,那是另一个故事。C 语言设计的初衷是将其作为程序员使用的一种编程工具,因此,其主要目标是成为有用的语言。

2. C 语言的优点和缺点

  • 优点:
    (1) 设计特性:C 语言的设计理念让用户能轻松地完成自顶向下的规划、结构化编程和模块化设计。因此,用 C 语言编写的程序更易懂、更可靠。

    (2) 高效性:C 是高效的语言。C 程序相对更紧凑,而且运行速度很快。C 语言具有通常是汇编语言才具有的微调控制能力,可以根据具体情况微调程序以获得最大运行速度或最有效地使用内存。

    (3) 可移植性:移植是最麻烦的事,C 是可移植语言方面的佼佼者。这意味着,在一种系统中编写的 C 程序稍作修改或不修改就能在其他系统运行。如需修改,也只需简单更改主程序头文件中的少许项即可。但要特别注意,程序中针对特殊硬件设备(如,显示监视器)或操作系统特殊功能(如,Windows 8 或 OS X)编写的部分,通常是不可移植的。

    [ C 语言具有良好的可移植性的原因在于 - C 编译器
    由于 C 语言与 UNIX 关系密切,UNIX 系统通常会将 C 编译器作为软件包的一部分。安装 Linux 时,通常也会安装 C 编译器。供个人计算机使用的 C 编译器很多,运行各种版本的 Windows 和 Macintosh(即,Mac)的PC都能找到合适的C编译器。因此,无论是使用家庭计算机、专业工作站,还是大型机,都能找到针对特定系统的C编译器。]

    (4) 功能强大且灵活:C 语言功能强大且灵活,编写的程序紧凑而高效。程序员利用 C 可以访问硬件、操控内存中的位。C 语言有丰富的运算符,能让程序员简洁地表达自己的意图,许多任务用 C 来处理都非常简洁(如,转换数据的格式)。除此之外,功能强大且灵活的 UNIX 操作系统,大部分是用 C 语言写的;其他语言(如,FORTRAN、Perl、Python、Pascal、LISP、Logo、BASIC)的许多编译器和解释器都是用 C 语言编写的。因此,在 UNIX 机上使用 FORTRAN 时,最终是由 C 程序生成最后的可执行程序。C 程序可以用于解决物理学和工程学的问题,甚至可用于制作电影的动画特效。

    (5) 丰富的资源:经过长期的日积月累,大多数 C 实现都有一个大型的库,包含众多有用的 C 函数。我们可以站在巨人的肩膀上迅速处理经常需要解决的问题。根据需要解决的实际问题,分析,剖析出需求,然后找出这些需求可以通过使用哪些已有的 C 函数库中的函数来共同解决,而不必自己再从新设计和编写函数去解决问题。

  • 缺点:
    (1) 对程序员要求更高:C 语言在提供更多灵活性,享受简洁自由的编程乐趣的同时,也让使用者必须承担更多的责任。特别是,C 语言使用指针,而涉及指针的编程错误往往难以察觉。有句话说的好:想拥有自由就必须时刻保持警惕。C 语言紧凑简洁,结合了大量的运算符。正因如此,我们也可以编写出让人极其费解的代码。

3. C 语言的应用范围

(1) 操作系统开发
(2) 嵌入式系统开发
(3) 服务器开发
- UNIX
- Linux
- Windows

(4) 科学和工程领域开发

4. C 语言标准

C语言发展之初,并没有所谓的C标准。1987年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)合著的The C Programming Language《C语言程序设计》第1版是公认的C标准,通常称之为K&R C或经典C。与大多数语言不同的是,C语言比其他语言更依赖库,因此需要一个标准库。实际上,由于缺乏官方标准,UNIX实现提供的库已成为了标准库。

  • C89 / C90 标准:随着C的不断发展,越来越广泛地应用于更多系统中,C社区意识到需要一个更全面、更新颖、更严格的标准。鉴于此,美国国家标准协会(ANSI)于1983年组建了一个委员会(X3J11),开发了一套新标准,并于1989年正式公布。该标准(ANSI C)定义了C语言和C标准库。国际标准化组织于1990年采用了这套C标准(ISO C)。ISO C和ANSI C是完全相同的标准。ANSI/ISO标准的最终版本通常叫作C89(因为ANSI于1989年批准该标准)或C90(因为ISO于1990年批准该标准)。另外,由于ANSI先公布C标准,因此业界人士通常使用ANSI C。

    ** ANSI (American National Standards Institute)
    ** ISO (International Organization for Standardization)

  • C99 标准:1994年,ANSI/ISO联合委员会(C9X委员会)开始修订C标准,最终发布了C99标准。该委员会遵循了最初C90标准的原则,包括保持语言的精练简单。委员会的用意不是在C语言中添加新特性,而是为了达到新的目标。(国际化、弥补缺陷和提高计算的实用性是主要的修订目标)C99的修订保留了C语言的精髓,C仍是一门简洁高效的语言。
    (1) 第1个目标是,支持国际化编程。例如,提供多种方法处理国际字符集。
    (2) 第2个目标是,“调整现有实践致力于解决明显的缺陷”。因此,在遇到需要将C移至64位处理器时,委员会根据现实生活中处理问题的经验来添加标准。
    (3) 第3个目标是,为适应科学和工程项目中的关键数值计算,提高C的适应性,让C比FORTRAN更有竞争力。

  • C11 标准:标准委员会在2007年承诺C标准的下一个版本是C1X,2011年终于发布了C11标准。修订标准的原因不是因为原标准不能用,而是需要跟进新的技术。例如,新标准添加了可选项支持当前使用多处理器的计算机。

制定 C 语言标准的原则精神:
(1) 不要妨碍程序员做需要做的事
(2) 保持语言精练简单
(3) 只提供一种方法执行一项操作
(4) 让程序运行更快,即使不能保证其可移植性
在最后一点上,标准委员会的用意是:作为实现,应该针对目标计算机来定义最合适的某特定操作,而不是强加一个抽象、统一的定义。在学习C语言过程中,许多方面都反映了这一哲学思想。

5. 编写 C 语言程序的步骤

参考文章:编写 C 语言程序的7个步骤

猜你喜欢

转载自blog.csdn.net/u010780459/article/details/81605202