1.1 C语言历史进化
C语言诞生于1972年,由伟大的美国计算机科学家Dennis MacAlistair Ritchie发明。C语言的发明,是计算机科学发展史上的一个伟大的创举,直接影响了后来的IT技术革命和互联网技术革命。时至今日,绝大多数的底层软件,包括操作系统(如Windows, Linux, UNIX等),数据库软件(如MySQL),办公软件(如OpenOffice),杀毒软件,网络通信协议,包括JAVA语言的实现,互联网,以及各种内核驱动等都是用C语言开发的。C语言作为编程语言之王,是当之无愧的。
截止2016年9月,C语言在TIOBE编程语言使用排行榜上依然占据TOP2的位置,仅次于排名第一的Java语言。
1.1 编程语言的演变与进化
那么C语言为什么叫“C语言”呢?下面,我们来一起追溯一下C语言诞生的这段不平凡的历史。
在高级编程语言的进化历史中,最重要的里程碑就是ALGOL算法语言的推出。ALGOL是算法语言(ALGOrithmic Language)的简称,是在计算机发展史上首批清晰定义的高级语言,由欧美计算机学家合力在1950年代所开发。国际计算机学会(Association for Computing Machinery,ACM)将ALGOL模式列为算法描述的标准,启发ALGOL类现代语言Pascal、Ada、C语言等出现。
1950年代末期,大量的新增计算机语言涌现,而这些新语言大都围绕单个体系结构如UNIVAC计算机、IBM700系列计算机等开发,使不同系统用户间的交流变得困难。美国一些主要的计算机用户组建议研究与开发适用于与计算机无关的科学用程序设计语言。
图灵奖获得者:艾伦.佩利(Alan J.Perlis)在巴黎举行的有全世界一流软件专家参加的讨论会上,发表了"算法语言Algol 60报告",确定了程序设计语言Algol 60。Algol60语言的第一个编译器由Edsger W. Dijkstra来实现。1962年,艾伦。佩利又对Algol 60进行了修正。
Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的发展奠定了基础。
图灵奖获得者Peter Naur
2002年,前图灵奖得主Edsger Dijstra把Algol 60的发展描述为"一个绝对的奇迹",标志着他所说的"计算科学"的诞生,因为Algol 60首次显示了自动计算能够并且应当成为学术关注的主题。 Algol 60的发展是一群极具天赋的人才的工作成果,其中包括几位以后的图灵奖获得者。
Edsger W. Dijkstra
1963年英国剑桥大学推出了CPL(Combined Programming Langurage)语言。CPL语言在ALGOL 60 的基础上接近硬件一些,但规模比较大,难以实现。
英国剑桥大学
1967年英国剑桥大学的 Matin Richards对CPL语言做了简化,推出了 BCPL (Base Combined Programming Langurage)语言。
1970年美国贝尔实验室的 Ken Thompson 以 BCPL 语言为基础,又作了进一步的简化,设计出了很简单的而且很接近硬件的 B 语言(取BCPL的第一个字母),并用B语言写出了第一个 UNIX 操作系统。
但 B 语言过于简单,功能有限。1972年至1973年间,贝尔实验室的 D.M.Ritchie 在 B 语言的基础上设计出了 C 语言(取BCPL的第二个字母)。C语言即保持 BCPL 语言和 B 语言的优点(精练、接近硬件),又克服了他们的缺点(过于简单,数据无类型等)。
1973年初,C语言的主体完成。Thompson和Ritchie开始用它完全重写了UNIX。随着UNIX的发展,C语言自身也在不断地完善。
1977年,Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》
图灵奖获得者:Ken Thompson(左)与Dennis M. Ritchie(右)
1983年,贝尔实验室的Bjarne Stroustrup在C语言基础上推出了C++,更早以前,尚在研究阶段的发展中语言曾被称为“new C”,之后是“C with Class”。 C++进一步扩充和完善了C语言,是一种面向对象的程序设计语言。
C++之父Bjarne stroustrup
C++程序过于复杂和庞大。另外由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,如何让编写的程序跨平台运行也是个难题。为了解决困难,Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。
1995年,互联网的蓬勃发展给了Oak机会。Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将Oak更名为Java(在申请注册商标时,发现Oak已经被人使用了,再想了一系列名字之后,最终,使用了提议者在喝一杯Java咖啡时无意提到的Java词语)。
1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0),这是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。
Java之父James Gosling
一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。
#include <stdio.h>
int main(void) {
printf("hello world\n");
return 0;
}
后续我们将详细介绍程序得到编译与执行。