当前位置: 首页 > news >正文

C语言的发展及其版本

如果您是一名入门学者,或者您还不理解什么是编程语言,请查看:什么是编程语言。

如果您之前未接触任何编程语言,或者您不理解为什么学习C语言,请查看:为什么C语言是首选。

C语言于1972年11月问世,1978年美国电话电报公司(AT&T)贝尔实验室正式发布C语言,1983年由美国国家标准局(American National Standards Institute,简称ANSI)开始制定C语言标准,于1989年12月完成,并在1990年春天发布,称之为ANSI C,有时也被称为 C89 或 C90。

C语言之父——里奇

在学习C语言之前,我们先了解一下C语言的历史。

C语言是一门通用的,模块化,程序化的编程语言,被广泛应用于操作系统和应用软件的开发。由于其高效和可移植性,适应于不同硬件和软件平台,深受开发员的青睐。

C语言早期发展1969-1973年在美国电话电报公司(AT&T)贝尔实验室开始了C语言的最初研发。根据C语言的发明者丹尼斯·里奇 (Dennis Ritchie) 说,C 语言最重要的研发时期是在1972年。

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

C语言之所以命名为C,是因为C语言源自Ken Thompson发明的 B语言,而B语言则源自BCPL语言。

C语言的诞生是和UNIX操作系统的开发密不可分的,原先的UNIX操作系统都是用汇编语言写的,1973年UNIX操作系统的核心用C语言改写,从此以后,C语言成为编写操作系统的主要语言。

K&R C1978年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)出版了一本书,名叫《The C Programming Language》(中文译名为《C程序设计语言》)。这本书被C语言开发者们称为“K&R”,很多年来被当作C语言的非正式的标准说明。人们称这个版本的C语言为“K&R C”。

1988年丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)修改此书,出版了《The C Programming Language》第二版,第二版涵盖了ANSI C语言标准。第二版从此成为大学计算机教育有关C语言的经典教材,多年后也没再出现过更好的版本。

ANSI C 和 ISO C1970到80年代,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 把这个标准提交到 ISO(国际化标准组织),1990年被 ISO 采纳为国际标准,称为 ISO C。又因为这个版本是1990年发布的,因此也被称为C90。

ANSI C(C89) 与 ISO C(C90)内容基本相同,主要是格式组织不一样。

因为 ANSI 与 ISO 的C标准内容基本相同,所以对于C标准,可以称为ANSI C,也可以说是ISO C,或者 ANSI / ISO C。

注意:以后大家看到 ANSI C、ISO C、C89、C90,要知道这些标准的内容都是一样的。

目前,几乎所有的开发工具都支持 ANSI / ISO C 标准。是C语言用得最广泛的一个标准版本。

C99在ANSI C标准确立之后,C语言的规范在很长一段时间内都没有大的变动。1995年C程序设计语言工作组对 C语言进行了一些修改,成为后来的1999年发布的 ISO/IEC 9899:1999标准,通常被成为C99。

但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的時候,微软和Borland却似乎对此不感兴趣。

说明:GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。

综上所述,目前广泛使用的C语言版本是 ANSI / ISO C,最经典的C语言教材是《C程序设计语言(The C Programming Language) 第二版》。

C语言版本更迭史

C语言对其它语言的影响很多编程语言都深受C语言的影响,比如C++(原先是C语言的一个扩展)、C#、Java、PHP、Javascript、Perl、LPC和UNIX的C Shell等。

也正因为C语言的影响力,掌握C语言的人,再学其它编程语言,大多能很快上手,触类旁通,很多大学将C语言作为计算机教学的入门语言。

http://www.jsqmd.com/news/658620/

相关文章:

  • 保姆级避坑指南:在Windows上搞定S32K144的AutoSAR MCAL 4.2.1开发环境(EB Tresos Studio + GCC 6.3.1)
  • 7. 案例之生成器生成批量歌词
  • SLAM从未消失,只是在各产业中悄悄完成「位置下沉、角色重组」
  • PCBA一站式服务如何缩短储能产品研发周期?
  • 嵌入式Linux系统轻量级SSH服务Dropbear的交叉编译与深度定制
  • STM32F103C8T6驱动28BYJ-48步进电机:从3.3V电平兼容性测试到完整代码避坑
  • PostgreSQL vs PolarDB:Checkpoint 调优策略深度对比(高频 vs 低频)
  • RK3566/RK3588实战:如何用yolov5单线程推理优化NPU利用率(附性能监控技巧)
  • PEG-PDLLA-Fe₃O₄ NPs,PEG-PDLLA修饰四氧化三铁纳米颗粒,反应步骤
  • Matlab 2023b最新版安装指南:从下载到激活的完整流程(附百度网盘资源)
  • python异常处理练习-----练习题2:列表元素访问器
  • Win10下STM32F4秒变Python开发板:手把手教你下载、烧写MicroPython固件(附资源与验证)
  • 从手机快充到车载电源:拆解COT控制DC-DC如何在你的设备里高效‘降压’
  • Display Driver Uninstaller深度解析:专业级显卡驱动完全清理方案
  • Halcon模板匹配后,如何用vector_angle_to_rigid和affine_trans_contour_xld把结果“画”出来?
  • ESP32 LVGL文件系统实战:从SD卡加载图片与字体资源
  • 从扫地机器人到无人机:用Python模拟Bug1/Bug2算法,看经典避障如何影响现代机器人
  • 新概念英语(第三册)精读与场景应用——Lesson 6 至 Lesson 10 核心主题解析
  • PEG-PVA-PCL-Fe₃O₄ NPs,PVA-PEG-PCL修饰四氧化三铁纳米颗粒,成分与性质
  • 终极指南:使用SerialPlot实现串口数据可视化监控的完整教程
  • Matlab信号处理避坑指南:freqz函数里那个容易被忽略的‘whole’参数到底有啥用?
  • CAN总线通信不稳?可能是你的采样点没对齐!一个真实车载网络故障排查案例
  • (一)openEuler的安装和使用基础
  • 别再只改单元格了!PyQt5 QTableWidget表头(horizontalHeader/verticalHeader)的5个实用技巧与避坑指南
  • 从编码到波特率:STC51/STM32串口中文乱码的深度排查与实战解决
  • 别再手动画框了!用YOLOv10给你的数据集做‘预标注’,效率提升90%(附Python代码)
  • SQL 执行失败如何回滚?事务已提交还能恢复吗?——MySQL 误操作数据恢复全指南
  • 玩转树莓派蓝牙(2)——构建手机与树莓派4B的无线数据通道
  • Spring AI与MCP协议整合实战:架构分析与关键技术
  • 从 0 到 1:文件上传漏洞的校验、绕过与真实场景利用