Overview-概览-C Primer Plus

欢迎来到C的世界!C语言是一种强大的专业化编程语言,深受业余和专业编程人员的欢迎。本章为学习和使用这一强大而流行的语言做准备,并介绍了开发C程序时最可能使用的几种环境。

Preface-前言

1984年,当C Priner Plus的第一版刚刚完稿的时候,C还是一种相对鲜为人知的语言。这种语言从那时才开始兴起,很多人都是在该书的帮助下掌握C语言的。实际上,已经有超过50万的人购买过C Primer Plus的各个版本的书。

随着C语言从最初的非正式的K&R标准过渡到1990 ISO/ANSI标准,进而发展到1999 ISO/ANSI标准,C Primer Plus也不断地成熟,并发展到第五版。在所有这些版本中,我的目标都是致力于编写一本富有指导性的、清晰的C语言教程。

The author of this book-本书作者

Stephen Prata在加利福尼亚州的Kentfield得Marin学院教授天文学、物理学和程序设计课程。他在加州工业学院获得学士学位,从加州大学伯克利分校获得博士学位。他最早接触计算机,始于对星河计算机建模。Stephen已经编写或与他人合作编写十多本书,其中包括C++Primer Plus和Unix primer Plus。

C语言之父-丹尼斯·里奇

丹尼斯·里奇,C语言之父,UNIX之父。曾担任朗讯科技公司贝尔实验室下属的计算机科学研究中心系统软件研究部的主任一职。1978年与布莱恩·科尔尼干(Brian W. Kernighan)一起出版了名著《C程序设计语言(The C Programming Language)》,现在The C Programming Language书已翻译成多种语言,成为C语言方面最权威的教材之一。2011年10月12日(北京时间为10月13日),丹尼斯·里奇去世,享年70岁。

欢迎来到C的世界!C语言是一种强大的专业化编程语言,深受业余和专业编程人员的欢迎。本章为学习和使用这一强大而流行的语言做准备,并介绍了开发C程序时最可能使用的几种环境。

首先,让我们看一看C的起源及其特性,包括它有哪些优点和缺点。接着我们将了解编程的起源并探讨编程的一些基本原则。最后,我们讨论在一些常见系统上运行C程序的方法。

C origin of language-C语言的起源

贝尔实验室的Dennis Ritchie在1972年开发了C,当时他正与Ken Thompson 一起设计UNIX操作系统。然而,C并不是完全由Ritchie构想出来的。它来自Thompson的B语言,而B语言则来自·······噢,这又是另外一个故事了。重要的是,C是作为从事实际编程工作的程序员的一种工具而出现的,所以其主要目标是成为一种有用的语言。

多数语言都以实用为目标,但它们往往也会考虑其他一些方面。例如,Pascal的主要目标是学习良好的编程原则提供一个扎实的基础,而BASIC则是模仿英语,以便让不熟悉计算机的学生能够轻松地学会这种语言。这些目标很重要,但它们并不总是与实际的使用需要相符。而C则是为编程人员开发的语言,这使得它成为当今人们首选的编程语言之一。

Using C language to reason-使用C语言的理由

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

  1. 强大的控制结构
  2. 快速
  3. 紧凑的代码-程序更小
  4. 可移植到其他计算机

design characteristics-设计特性

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

High efficiency-高效性

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

Portability-可移值性

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

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

Powerful function and flexibility-强大的功能和灵活性

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

Object oriented programming staff-面向编程人员

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

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

shortcoming-缺点

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

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

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

cursor光标类型
auto default help pointer progress
wait crosshair text
move e-resize n-resize ne-resize
se-resize sw-resize w-resize

auto

crosshair

default

pointer

move

ne-resize

sw-resize

text

wait

help

progress

C语言