One man’s constant is another man’s variable。1
本篇GitHub已收录,点一个 star 你我就是并肩作战的战友!
https://github.com/hairrrrr/C-CrashCourse
C语言的历史,C语言的优缺点以及如何高效的使用C语言
C语言还值得学习吗?C语言查错的工具
C语言是贝尔实验室的 Ken Thompson, Dennis Ritchie 等人开发的 UNIX 操作系统的“副产品”。
与同时代的其他操作系统一样,UNIX 系统最初也是用汇编语言写的。用汇编语言编写的程序往往难以调试和改进,UNIX 操作系统也不例外。Thompson 意识到需要用一种高级的编程语言来完成 UNIX 系统未来的开发,于是他设计了一种小型的 B语言。Thompson 的 B语言是在 BCPL语言(20世纪60年代中期产生的一种系统编程语言)的基础上开发的,而 BCPL语言又可以追溯到最早(且影响深远)的语言之一——Algol 60语言。
1970年,贝尔实验室为 UNIX 项目争取到了一台 PDP-11 计算机。当 B语言经过改进并能够在 PDP-11 计算机上成功运行后,Thompson 用 B语言重新编写了部分 UNIX 代码。
到了1971年,B语言已经明显不适合 PDP-11 计算机了,于是 Ritchie 着手开发 B语言的升级版。最初他将新开发的语言命名为 NB语言(意味New B),但是后来新语言越来越偏离 B语言,于是他将其改名为 C语言。
到1973年,C语言已经足够稳定,可以用来重新编写 UNIX 系统了。
C语言在20世纪七十年代(尤其是1977年到1979)持续发展。这一时期出现了第一本有关 C语言的书。Brian Kernighan 和 Dennis Ritchie 合作编写的 The C Programming Language 于1978年出版,并迅速成为 C程序员必读的“圣经”。由于当时没有 C语言的正式标准,这本书就成为了事实上的标准,编程爱好者把它称为“K&R”或者“白皮书”。(公众号后台回复:【KR】即可获得)
随着C语言的迅速普及,一系列问题也接踵而至。首先, K&R 对一些语言特性描述得非常模糊,以至于不同编译器对这些特性会做出不同的处理。而且,K&R 也没有对属于 C语言的特性和属于 UNIX 系统的的特性进行明确的区分。更糟糕的是,K&R 出版后 C语言仍然在不断变化,增加了一些新特性并除去了一些旧特性。很快,C语言需要一个全面,准确的最新描述开始成为共识。
1983年,在美国国家标准协会(ANSI)的推动下(ANSI 于此年组建了一个委员会称为 X3Jll),美国开始制定本国的 C语言标准。
1988年完成并于1989年12月正式通过的 C语言标准成为 ANSI 标准 X3.159-1989。
1990年,国际标准化组织(ISO)通过了此项标准,将其作为 ISO/IEC 9899:1990 国际标准(中国国家标准为 GB/T 15272—1994)。
我们把这一C语言版本称为 C89 或 C90,以区别原始的 C语言版本。
委员会在制定的指导原则中的一条写道:保持 C 的精神。委员会在描述这一精神时列出了一下几点:
在最后一点上,标准委员会的用意是:作为实现,应该针对目标计算机来定义最合适的某特定操作,而不是强加一个抽象,统一的定义。在学习 C语言的过程中,许多方面都反映了这一哲学思想。
1995 年,C语言发生了一些改变。
1999年通过的 ISO/IEC 9899:1999 新标准中包含了一些更重要的改变,这一标准所描述的语言通常称为 C99
此次改变,委员会的用意不是在C语言中添加新的特性,而是为了达到新的目标。
其他方面的改变则更为保守,如,尽量让C90,C++兼容,让语言在概念上保持简单。
虽然改标准已经发布了很长时间,但并非所有编译器都完全支持C99的所有改动。因此,你有可能发现 C99 的一些改动在自己的系统中不可用,或者需要改变编译器的设置才可用。
2011年,C11标准问世。
答案是肯定的。
第一,学习C有助于更好的理解C++,Java,C#,Perl以及其他基于C的特性的语言。第一开始就学习其他语言的程序员往往不能很好的掌握继承自C语言的基本特性。
第二,目前仍有许多C程序,我们需要读懂并维护这些代码。
第三,C语言仍广泛应用于新软件的开发,特别是在内存或处理能力受限的情况下以及需要使用C语言简单特性的地方。
与其他任何一种编程语言一样,C语言也有自己的优缺点。这些优缺点都源于该语言的最初用途(编写操作系统和其它系统软件)和它自身的基础理论体系。
C语言的众多优点解释了C语言为何如此流行。
高效 高效性是C语言与生俱来的优点之一。发明C语言就是为了编写那些以往由汇编语言编写的程序,所以对C语言来说,能够在有限的内存空间快速运行就显得至关重要。
可移植 当程序必须在多种机型(从个人计算机到超级计算机)上运行时,常常会用C语言来编写。
原因一:C语言没有分裂成不兼容的多种分支。这主要归功于C语言早期与UNIX系统的结合以及后来的ANSI/ISO标准。
原因二:C语言编译器规模小且容易编写,这使得它们得以广泛应用。
原因三:C语言的自身特性也支持可移植性(尽管它没有阻止程序员编写不可移植的程序)。
功能强大 C语言拥有一个庞大的数据类型和运算符集合,这个集合使得C语言具有强大的表达能力,往往寥寥几行代码就可以实现许多功能。
灵活 C语言最初设计是为了系统编程,但没有固有的约束将其限制在此范围内。C语言现在可以用于编写从嵌入式系统到商业数据处理的各种应用程序。
标准库 C语言的突出优点就是它具有标准库,该标准库包括了数百个可以用于输入/输出,字符串处理,储存分配以及其他实用操作的函数。
与UNIX的集成 C语言在与UNIX系统(包括Linux)结合方面特别强大。事实上,一些UNIX工具甚至假设用户是了解C语言的。
要高效的使用C语言,就需要利用C语言优点的同时尽量避免它的缺点,以下给出一些建议。
码字不易,对你有帮助 **点赞/转发/关注 **支持一下作者
微信搜公众号:不会编程的程序圆
看更多干货,获取第一时间更新
以上就是本次的内容,感谢观看。
如果文章有错误欢迎指正和补充,感谢!
最后,如果你还有什么问题或者想知道到的,可以在评论区告诉我呦,下篇文章可以加上。
最后,关注我,看更多干货!
我是程序圆,我们下次再见。
吾之常量,彼之变量。摘自《epigrams-on-programming》 ↩︎