C的历史与发展过程

C study C in the C 这篇文章中的第一部分
本篇文章:参考了n种资料总结出来

第一部分:C的历史与发展过程


开始学习C语言的时候,咱要了解C语言的发展历史。
了解,了解,了解。就是说初步大概的知道一点就好。
要想知道一项新技术,咱要知道,灵魂5w


1、When:1969 - 1973年,C 语言最重要的研发时期是在 1972 年,1972年,C语言在B语言基础上由 Ken Thompson(肯·汤普逊)和D.M.Ritchie(DM里奇) 共同完成。


2、Where:在美国电话电报公司(AT&T)贝尔实验室,贝尔实验室是当时世界上最有创造力的地方之一,著名的C语言、C++语言和Unix操作系统都诞生于此。


3、Who:丹尼斯.里奇 (Dennis Ritchie) 和Ken Thompson(肯·汤普逊)

接下来,小故事来了:
开始的开始,里奇和他的同事肯·汤普生开始研究一个叫咱理解不了名字的机器-----DEC PDP-7,但是在这个机器上写程序是很困难,只能用很底层很高深的汇编语言(这种很高深的汇编语言,没有相应基础的人是理解不了,或者说不能在短时间内理解与学会)。于是汤普生设计了一种高级程序语言,并把它命名为B语言。但是由于B语言本身设计的缺陷,使他在内存的限制面前一筹莫展。1973年,里奇决定对B语言进行改良,他赋予了新语言强有力的系统控制方面的能力,并且新语言非常简洁、高效,里奇把它命名为大名鼎鼎的C语言,意为B语言的下一代。

正所谓,有需求,就会有技术的迭代与进化。(Unix的发展史,了解!)
所以,在开发C语言的同时,里奇和汤普生、布朗(贝尔实验室的另一名科学家)还接受了一个新任务,就是在DEC PDP-7上开发一个多任务、多用户的操作系统,1969年,他们用汇编语言完成了这个操作系统的第一个版本,里奇受一个更早的项目Multics的启发,将这个系统命名为Unix。为了在全世界面前展现C语言强大的能力,里奇用C语言把Unix操作系统重写了一遍,这就是Unix第三版。而之前的第二版是用B语言开发的。

1977年,为了推广贝尔实验室开发的Unix操作系统,里奇发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》,使C语言再向前跨出一大步,各种计算机都开始支持C语言。 1978年里奇和布朗一起出版了《C语言》一书,从而使C语言成为世界上应用最广泛的高级程序设计语言,而该书也成为计算机科学界最畅销的书籍之一。里奇把全部精力都放到Unix、C语言、C++语言的应用和推广上,曾在很多国家进行过教学和讲座活动。2000年,他来到了中国,在北京大学和复旦大学进行了题为《贝尔实验室与操作系统》的讲演,为推动中国Unix/Linux的应用和发展贡献了力量。
1983年,人们将计算机科学方面的最高荣誉——图灵奖颁发给了里奇,以表彰他对计算机科学所做出的杰出贡献。


4、What:C语言是一门通用的,模块化,程序化的编程语言,被广泛应用于操作系统和应用软件的开发。由于其高效和可移植性,适应于不同硬件和软件平台,深受开发员的青睐。其实啊,C语言之前还是存在B语言的,C语言源自 Ken Thompson (肯·汤普逊)发明的 B语言,而 B语言则源自 BCPL语言。
接下来来讲一个小故事,免得学的太累了:
C语言之所以要起名为“C”,是因为它是主要参考那个时候的一门叫B的语言,它的设计者认为C语言是B语言的进步,所以就起名为C语言;但是B语言并不是因为之前还有个A语言,而是B语言的作者为了纪念他的妻子,他的妻子的第一个字母是B;

学习一项技术,肯定要了解与这项技术有关的技术。因为一项技术的产生,不可能凭空,毫无联系的蹦出来,所有说咱就开始了解吧!

(1)操作系统
C语言的诞生是和UNIX操作系统的开发密不可分的,原先的 UNIX操作系统都是用汇编语言写的,1973年 UNIX操作系统的核心用C语言改写,从此以后,C语言成为编写操作系统的主要语言。
(2)出版书籍
1978年, Brian Kernighan 和 Dennis Ritchie 出版了一本书,名叫《The C Programming Language》(中文译名为《C程序设计语言》)。这本书被 C语言开发者们称为"K&R",很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为"K&R C"。
1988年 Brian Kernighan 和 Dennis Ritchie 修改此书,出版了《The C Programming Language》第二版,第二版涵盖了ANSI C语言标准。第二版从此成为大学计算机教育有关C语言的经典教材,多年后也没再出现过更好的版本。


5、How:1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。此时C语言就开始变身,进化,升级。
为统一C语言版本,1983年美国国家标准局 (American National Standards Institute,简称ANSI)成立了一个委员会,来制定 C语言标准。1989年 C语言标准被批准,被称为 ANSI X3.159-1989 “Programming Language C”。这个版本的C语言标准通常被称为ANSI C。又由于这个版本是 89 年完成制定的,因此也被称为 C89。
目前,几乎所有的开发工具都支持ANSI C标准。是C语言用得最广泛的一个标准版本。
在ANSI C 标准确立之后,C语言的规范在很长一段时间内都没有大的变动。1995年 WG14小组对 C语言进行了一些修改,成为后来的 1999年发布的 ISO/IEC 9899:1999标准,通常被成为 C99。
进化,变身,升级过程中的坎坷。
但是各个公司对 C99的支持所表現出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的時候,微软和 Borland却似乎对此不感兴趣。

一项技术,升级到了巅峰时刻的时候,就会另辟蹊径:分身再进化?还是原计划发展?
接下来,一个小故事来了:
当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,就是C++最早的版本,为什么叫这个了?咱来瞧瞧,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,所以就叫C++,也成立了C++标准委员会;
刚诞生的C++和现在我们使用的版本是有很大区别的,首先还没有一个真正的C++编译器,早期的C++代码都是先转化为C代码,然后用C编译器直接编译的;而且,那时的C++没有继承,没有private, protected, public这些关键字,没有虚函数;虚函数是最后才被加入C++的主要特性;就这样经过了N次演变,每次逐步增加一些新的关键字和新特性,最后才变成现在的样子;
还有就是STL,它是C++自C语言发展以来,唯一一个凭空诞生的部分,之前没有任何类似于STL的代码,编译器没有模板,在实际的使用中也没有这样的呼声;那完全得宜于STL的倡导者对C++标准委员会的游说,他的高瞻远瞩,令现在的无数人收益;是他在没有任何基础与实践的前提下,提出要将模板加入C+ +的标准,并增加模板类库;在该C++标准发布时,世面上没有一个支持该标准的C++编译器,它完全不是实践经验的总结,而是凭空的想象;


C标准

时间 备注
2011 C语言的现行标准
1999 第二个C标准
1990 在89上部分改动
1989 第一个C标准


C 语言对其它语言的影响

很多编程语言都深受 C语言的影响,比如C++(原先是C语言的一个扩展),C#,Java,PHP, Javascript, Perl,LPC 和 UNIX 的C Shell。
也正因为C语言的影响力,掌握C语言的人,再学其它编程语言,大多能很快上手,触类旁通,很多大学将C语言作为计算机教学的入门语言。


咱要学一项技术还是要知道这项技术的基本特色的,这样咱就能了解的更加深入,学的更加有趣!不那么枯燥了!

C语言的特色

1、C语言是高级程序语言,也就是说程序员不必知道具体的中央处理器型号也可以为计算机进行程序编制。
2、它主要用来进行计算机的程序设计。C语言具有高效灵活功能丰富表达力强和移植性好等的特点,在计算机语言中备受青睐。
3、在程序能够运行前,源代码必须有编译器编译成机器语言。相对于汇编语言只能针对具体型号的CPU才能运行,C语言的便捷性是很明显的。


C语言的主要特性

1、C语言保留了低级语言的特性,例如涉及内存的指针
2、C语言通过参数在函数里传递数值。
3、使用了预处理机制,使得程序里可以通过包含例如宏处理的方式来处理源程序。
4、C语言提供了一套标准库,这些库里提供了十分有用的功能。

解释说明
1、但是并不是所有的这些特性都是有效的。例如,预处理通常作为一个独立的程序被处理,这使得与处理的程序并不一定被完全编译。
2、虽然C是高级语言,但是它同时拥有一些汇编语言的特性,对其它的语言来说这是接近低级语言的特点。例如,在C语言里,程序员可以对计算机内存进行管理。在默认的情况下,C语言不会对数组的范围进行检查,也就是说即使数组越界,C语言也不会作出错误提示。对计算机内存的管理使得程序员可以变出更快捷、更有效的程序,这对于设备驱动程序来说尤为重要。但是这也使得程序容易产生令人讨厌的“臭虫”,例如缓冲器溢出错误。然而,这些错误可以由一些工具来避免。
3、C语言的不足可以由由C语言发展而来的更新的编程语言改进。Cyclone语言的拥有提防对于内存错误的特性。C++和Objective C提供了用于面向对象的编程结构。Java和C#增加了面向对象的结构使得对内存的管理自动化。


C99
在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C++继续在改进。(实际上,Normative Amendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)标准在90年代才经历了改进,这就是ISO9899: 1999(1999年出版)。这个版本就是通常提及的C99。它被ANSI于2000年三月采用。
在C99中包括的特性有:
(1)可变范围的数组
(2)新增加的数据类型,包括long long int,布尔类型和用于表示复数的类型
(3)支持用//表示注释(这个特性实际上在C89的很多编译器上已经被支持了)


C语言之父——里奇
丹尼斯·里奇(Dennis Ritchie),C语言之父,UNIX之父。1978年与布莱恩·科尔尼干(Brian Kernighan)一起出版了名著《C程序设计语言(The C Programming Language)》,现在此书已翻译成多种语言,成为C语言方面最权威的教材之一。2011年10月12日(北京时间为10月13日),丹尼斯·里奇去世,享年70岁。


解释说明:GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。
综上所述,目前广泛使用的C语言版本是 ANSI / ISO C,最经典的C语言教材是《C程序设计语言(The C Programming Language) 第二版》。


  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值