C语言的历史:
著名的计算机科学家丹尼斯·里奇(Dennis Ritchie)创造的。1967年, Ritchie进入贝尔实验室工作。贝尔实验室是当时世界上最有创造力的地方之一,著名的C语言、C++语言和Unix操作系统都诞生于此。一开始, 里奇和他的同事肯·汤普生开始研究DEC PDP-7机器,但是在这个机器上写程序很困难,只能用很底层很高深的汇编语言。于是汤普生设计了一种高级程序语言,并把它命名为B语言。但是由于B语言本身设计的缺陷,使他在内存的限制面前一筹莫展。1973年,里奇决定对B语言进行改良,他赋予了新语言强有力的系统控制方面的能力,并且新语言非常简洁、高效,里奇把它命名为C语言,意为B语言的下一代。
在开发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年,人们将计算机科学方面的最高荣誉——图灵奖颁发给了里奇,以表彰他对计算机科学所做出的杰出贡献。
C语言的特色
C语言是高级程序语言,也就是说程序员不必知道具体的中央处理器型号也可以为计算机进行程序编制。它主要用来进行计算机的程序设计。C语言具有高效、灵活、功能丰富、表达力强和移植性好等的特点,在计算机语言中备受青睐。
在程序能够运行前,源代码必须有编译器编译成机器语言。相对于汇编语言只能针对具体型号的CPU才能运行,C语言的便捷性是很明显的。
C语言的主要特性
C语言保留了低级语言的特性,例如涉及内存的指针。
C语言通过参数在函数里传递数值。
使用了预处理机制,使得程序里可以通过包含例如宏处理的方式来处理源程序。
C语言提供了一套标准库,这些库里提供了十分有用的功能。
但是并不是所有的这些特性都是有效的。例如,预处理通常作为一个独立的程序被处理,这使得与处理的程序并不一定被完全编译。
虽然C是高级语言,但是它同时拥有一些汇编语言的特性,对其它的语言来说这是接近低级语言的特点。例如,在C语言里,程序员可以对计算机内存进行管理。在默认的情况下,C语言不会对数组的范围进行检查,也就是说即使数组越界,C语言也不会作出错误提示。对计算机内存的管理使得程序员可以变出更快捷、更有效的程序,这对于设备驱动程序来说尤为重要。但是这也使得程序容易产生令人讨厌的“臭虫”,例如缓冲器溢出错误。然而,这些错误可以由一些工具来避免。
C语言的不足可以由由C语言发展而来的更新的编程语言改进。Cyclone语言的拥有提防对于内存错误的特性。C++和Objective C提供了用于面向对象的编程结构。Java和C#增加了面向对象的结构使得对内存的管理自动化。
C语言的版本
K&R C
C不断的从它的第一版本进行改进。在1978年,Kernighan和里奇的C编程语言第一版出版。它介绍了下面的有关C语言版本的特性:
struct数据类型
long int数据类型
unsigned int数据类型
把运算符=+改为+=,依次类推。因为=+使得编译器混淆。
在以后的几年里,C编程语言一直被广泛作为C语言事实上的规范。在这本书中,C语言通常被表述成"K&R C"。(第二版的包括了ANSI C标准)
K&R C通常被作为C编译器所支持的最基本的C语言部分。虽然现在的编译器并不一定都完全遵循ANSI标准,但K&R C作为C语言的最底要求仍然要编程人员掌握。但是无论怎样,现在使用广泛的C语言版本都已经与K&R C相距甚远了,因为这些编译器都使用ANSI C标准。
ANSI C和ISO C
1989年,C语言被ANSI标准化。(ANSI X3.159-1989)。标准化的一个目的是扩展K&R C。这个标准包括了一些新的特性。在K&R出版后,一些新的特征被“非官方”的加到C语言中。
void函数
函数返回struct或union类型
void *数据类型
在ANSI标准化自己的过程中,一些新的特征被加了进去。ANSI也标准了函数库。ANSI C标准被ISO(国际标准化组织)采纳成为ISO 9899。ISO的第一个版本文件在1990年出版。
C99
在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C++继续在改进。(实际上,Normative Amendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)标准在90年代才经历了改进,这就是ISO9899:1999(1999年出版)。这个版本就是通常提及的C99。它被ANSI于2000年三月采用。
在C99中包括的特性有:
可变范围的数组
新增加的数据类型,包括long long int,布尔类型和用于表示复数的类型
支持用//表示注释(这个特性实际上在C89的很多编译器上已经被支持了)
snprintf
但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的时候,微软和Borland却似乎对此不感兴趣。 C++历史:
语言的发展是一个逐步递进的过程,C++ 是直接从 C 语言发展过来的,而 C 语言是从 B 语言发展过来的,B 语言是 BCPL 的一个解释性后代,BCPL 是 Basic CPL。其中最有趣的是 CPL 中 C 的由来,由于当时这个语言是剑桥大学和伦敦大学合作开发的,在伦敦的人员加入之前,C 表示剑桥,伦敦人员加入之后,C 表示 Combined 组合。还有一种非正式的说法,C 表示 Christopher,因为 Christopher 是 CPL 背后的主要动力。 最初导致C++诞生的原因是在Bjarne博士等人试图去分析UNIX的内核的时候,这项工作开始于1979年4月,当时由于没有合适的工具能够有效的分析由于内核分布而造成的网络流量,以及怎样将内核模块化。同年10月,Bjarne博士完成了一个可以运行的预处理程序,称之为Cpre,它为C加上了类似Simula的类机制。在这个过程中,Bjarne博士开始思考是不是要开发一种新的语言,当时贝尔实验室对这个想法很感兴趣,就让Bjarne博士等人组成一个开发小组,专门进行研究。当时不是叫做C++,而是C with class,这是把它当作一种C语言的有效扩充。由于当时C语言在编程界居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是C语言,所以当时有两个问题最受关注:C++要在运行时间、代码紧凑性和数据紧凑性方面能够与C语言相媲美,但是还要尽量避免在语言应用领域的限制。在这种情况下,一个很自然的想法就是让C++从C语言继承过来,但是我们的Bjarne博士更具有先见之明,他为了避免受到C语言的局限性,参考了很多的语言,例如:从Simula继承了类的概念,从Algol68继承了运算符重载、引用以及在任何地方声明变量的能力,从BCPL获得了//注释,从Ada得到了模板、名字空间,从Ada、Clu和ML取来了异常。下面让我们来一起看一下C++历史上的主要事件:1983年8月, 第一个C++实现投入使用(所以我喜欢说1983年C++开了天界)1983年12月,Rick Mascitti建议命名为CPlusPlus,即C++。1985年2月, 第一个C++ Release E发布。10月,CFront的第一个商业发布,CFront Release 1.0。10月,Bjarne博士完成了经典巨著The C++ Programming Language第一版1986年11月,C++第一个商业移植CFront 1.1,Glockenspiel。1987年2月, CFront Release 1.2发布。11月,第一个USENIX C++会议在新墨西哥州举行。1988年10月,第一次USENIX C++实现者工作会议在科罗拉多州举行。1989年12月,ANSI X3J16在华盛顿组织会议。1990年3月, 第一次ANSI X3J16技术会议在新泽西州召开.5月, C++的又一个传世经典ARM诞生。7月, 模板被加入。11月,异常被加入。1991年6月, The C++ Programming Language第二版完成。6月, 第一次ISO WG21会议在瑞典召开。10月,CFront Release 3.0发布。1993年3月, 运行时类型识别在俄勒冈州被加入。7月, 名字空间在德国慕尼黑被加入。1994年8月, ANSI/ISO委员会草案登记。1997年7月, The C++ Programming Language第三版完成。10月,ISO标准通过表决被接受1998年11月,ISO标准被批准。接下来让我们一起看一下C++编译器的“第一个”:1985年10月,Cfront Release 1.0发布。1987年12月,GNU C++发布。1988年1 月,第一个Oregon Software C++发布。6 月,第一个Zortech C++发布。1990年5 月,第一个Borland C++发布。1992年2 月,第一个Dec C++发布。3 月,第一个Microsoft C++发布。5 月,第一个IBM C++发布。

C语言的由来,一个计算机毕业生的兴趣相关推荐

  1. 一个计算机毕业生的2012年求职之路

    转:http://blog.csdn.net/hackbuteer1/article/details/8501605 1.简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也作为之前三个半 ...

  2. 转自一个计算机毕业生的求职经验

    1.简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也作为之前三个半月的求职的回顾. 首先说说我拿到的offer情况: 微软,3面->终面,搞定 百度,3面->终面,口头of ...

  3. 一个计算机毕业生的求职经验

    .简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也作为之前三个半月的求职的回顾. 首先说说我拿到的offer情况: 微软,3面->终面,搞定 百度,3面->终面,口头off ...

  4. 怎样才算一个计算机知识体系完整的毕业生?

    文章来源:编程指北(id:cs_dev) 文章转载,已获授权!转发请联系原作者!!! 前言 为什么突然想写这个话题呢? 最近有不少新关注的读者,在后台问:大学学 Java 和 C++ 哪个好找工作,学 ...

  5. java语言基于springboot+vue+elementUI 毕业生实习管理系统-#计算机毕业设计

    项目介绍 每年都有大量的毕业生,毕业生面临的一个很严峻的问题就是如何去进行实习.我经过了实习,用人单位才能够更好的让实习生进行工作. 传统的毕业生实习管理都是通过人工手动的方式进行管理的.这种管理模式 ...

  6. 一个计算机高手的成长(转)

    这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能  够为国内IT的发展尽自己一份微薄的力量.最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希 ...

  7. 一个计算机高手的成长历程[转]

    一个计算机高手的成长历程 这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量.最近看到很多学生朋友和我当年一样没有方向,所以把我的经历 ...

  8. 计算机毕业生求职之路

    2019独角兽企业重金招聘Python工程师标准>>> 一个应届计算机毕业生的2012求职之路 1.简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也作为之前三个半月的 ...

  9. 一个准毕业生的2012年总结

    经常查资料查到博客园,真正的注意博客园大概是五个月前,也注册了博客园,装了客户端,手机上也装了一个客户端,每天晚上睡觉之前和早上起床之前都会浏览一下博客或者新闻,由于文笔不是太好,所以很少写一些随笔, ...

最新文章

  1. 自己动手实现的 Spring IOC 和 AOP - 下篇
  2. IOS UIView 放大缩小
  3. android快速点击两次,如何通过在Android中快速单击两次按钮来防...
  4. NULL和INITIAL的区别 and database interface
  5. java文件端点续传效果图_Java单依赖性Dockerized HTTP端点
  6. Java中split方法对结尾空字符串不正确处理的解决方案
  7. Java线程间通信方式
  8. vue 3.0(通用) 表格导出成Excel文件或HTML转word文档
  9. 用户体验的要素pdf_用户运营思路(35份)
  10. 2017年下半年网络工程师真题+答案解析
  11. “天河一号”算一小时13亿人算340年
  12. 编译原理--实验2 语法分析
  13. 静态网页制作HTML学习笔记
  14. 联想用u盘重装系统步骤_详解联想如何使用u盘重装win10系统
  15. 支持向量机(SVM)--小样本
  16. codeforces#375(div.2)723D - Lakes in Berland dfs+bfs
  17. 4人组合蓝牙对讲耳机
  18. 一文了解27市5G建设最新进展与规划
  19. 测试环境修改数据保存到数据库就乱码情况解决
  20. 木材材积表快速计算器_原木材积表(运算表)

热门文章

  1. SWD下载调试接口原理深度剖析
  2. java反射底层原理,总结到位
  3. 外包征途-甲方、乙方、外包
  4. 多请求多数据量综合页面优化方案
  5. 罗技G29+Carla+实车twist三者互相控制以及三者联调
  6. 安卓系统BusyBox的安装和使用
  7. python图形化编程更改内部参数_构建FunctionTrace,一个图形化的Python分析器
  8. 闲话一篇说说什么是光刻机
  9. 电赛知识点9:压控增益放大器
  10. 车载GPS等基于部标通信协议的开发方案