我认为学习一种编程语言一定要的了解它的发展历史、优点是什么?缺点是什么?最重要的就是我们为什么要选择这门语言,为什么要学习这门语言。先解决了这些问题可以彻底的投入学习环境,然后学习过程当中不会轻易转移到其它语言上面去了。
只要默默地努力,累积经验下去成功就会更接近你的。个人认为C语言就是每个程序员或者有当程序员梦想的人必须选择学习的一门高级语言。因为它会让你更进一步加深对计算机理解。
掌握好了C语言后面学任何一门编程语言,易如反掌。
历史发展C语言之所以命名为C,是因为 C语言源自 Ken Thompson 发明的 B语言,而 B语言则源自BCPL语言。
1967年,剑桥大学的 Martin Richards 对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
1970年,美国贝尔实验室的 Ken Thompson。以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。
1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
C语言创始人D.M.Ritchie
1977年,Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
K&R C
1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。Brian Kernighan 和 Dennis Ritchie 出版了一本书,名叫《The C Programming Language》。这本书被 C语言开发者们称为"K&R",很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为"K&R C"。
ANSI C
1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。
1983年美国国家标准局 (American National Standards Institute,简称ANSI)成立了一个委员会,来制定 C语言标准。
1989年 C语言标准被批准,被称为 ANSI X3.159-1989 "Programming Language C"。这个版本的C语言标准通常被称为ANSI C。
C99
1990年,国际标准化组织ISO(International Organization for Standards)接受了89 ANSI C 为I SO C 的标准(ISO9899-1990)。1994年,ISO修订了C语言的标准。
1995年,ISO对C90做了一些修订,即“1995基准增补1(ISO/IEC/9899/AMD1:1995)”。
1999年,ISO又对C语言标准进行修订,在基本保留原来C语言特征的基础上,针对应该的需要,增加了一些功能,命名为ISO/IEC9899:1999。
在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C继续在改进。(实际上,NormativeAmendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)它被ANSI于2000年3月采用。
C11
2001年和2004年先后进行了两次技术修正。
2011年12月8日,ISO正式公布C语言新的国际标准草案:ISO/IEC 9899:2011,即C11。
优点:
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
4、表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5、允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
6、生成目标代码质量高,程序执行效率高
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。
7、可移植性好
C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。
8、表达力强
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数据类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位(bit)操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
缺点:
1. C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2. C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。
程序员应该学C语言的十个理由的文章说:每个程序员在他们的编程事业生涯当中都应该学C语言。C语言有太多不容忽视的好处。它不仅可以带来更多的工作机会,而且也会在总体上让你对计算机有更多的了解。
1)相对于其它编程语言(C++,Java),C语言是更底层的。在一个较底层水平编程能够在总体上让你进一步加深对计算机的理解。
2)设备驱动程序和操作系统都是唯一采用C语言写的。现在,也许你从来也不会去写一个设备驱动程序或一个操作系统,但是如果只是要求你去修改一下,会是怎样呢?
3)如果你想要得到一份给微控制器编程的工作那会是什么样呢?它们都是用C语言编程的。你是否打算因为自己不想去学一门新语言而限制你获得更多工作的机会呢?
4)相比用其它语言写出的程序,C语言更小更快。有时你的程序所需要的速度只有C语言能够提供。
5)如果你已经学会了C语言,那么你将能够学习任何现代的编程语言。这背后的原因是所有的现代的编程语言都是基于C语言之上发展而来的(比如Java,C++,C#等等)。
6)由于C语言已经存在了好多年,它有很大的网络社区和收集的代码库。这些允许你快速有效的实现新算法或以前已经编写好的函数。
7)C语言是开源社区的使用语言。开源帖子、Linux都是用C语言编写的。如果你会C语言,你就能够参与到众多的象Source Forge这样的开源社区中并做出贡献。
8)C语言是仅有的教你什么是真正的指针的语言。C#和Java完全跳过了这个章节。指针赋予了C语言不凡的能力。
9)对于编程工作C语言仍然是最一般的要求会的语言。它是值得你花时间去装进肚子里的。
10)任何带有微处理器的东西都支持C语言。从你的微波炉到你的手机,C语言赐予技术以力量