C语言|C语言的前世今生

C语言

  • 前言:
  • 诞生:
  • 领域:
  • 发展:
  • 特点:
  • 标准:
  • 机制:

前言:

在这里插入图片描述

不论是尚处于新手村(学校)里的计算机专业的新手菜鸟,还是加入各大势力(企业)的程序员玩家,C语言都是其无法绕过去一门技能。

C语言不仅是通用的计算机编程语言,还是一种工业语言,更是多个领域里无可替代的唯一选择,因此才可以做到稳稳当当常年霸占编程语言榜单的前三名。当然,着其中也有各大势力里大量的去运用C语言的原因。

注意:高级程序设计语言不是现代语言,现代语言却一定是高级程序设计语言,C语言也不是第一个高级程序设计语言。

C语言可以说是现代语言的鼻祖,C语言之后的所有编程语言或多或少的都参考了C语言而开发设计出来的类C语言。我们说的现代语言一般指的就是从上世纪七八十年代C语言出来之后的所有语言都统称为现代语言。

诞生:

C语言的诞生
1969的那个夏天,在美国贝尔电话实验室里,C语言的创始开发人之一的丹尼斯·麦卡利斯泰尔·里奇(Dennis Ritchie)和肯尼斯·蓝·汤普逊(Ken Thompson)一起开发Unix操作系统。

最开始的Unix操作系统是在名为PDP-7的小型机上用汇编语言写的,这也造成了Unix操作系统无法移植到其他计算机上,于是两人一拍即合决定用高级语言重写Unix。

那个时候的高级语言没办法满足他们的需求,一通接力式的合力下C语言这个现代语言的鼻祖随着诞生了,可以说C语言的历史几乎就相当Unix操作系统的历史。

领域:

C语言的领域
C语言可以做很多事,它所涵盖的领域范围很广,其他语言能做的C语言也可以略通一二,其他语言做不到的对C语言来说那就是小菜一碟。

C语言所统领的领域包括服务器、数据库、单片机、嵌入式、编译器、编程语言、操作系统等,能够看的出来,C语言的领域就是偏向底层的这种不易被察觉、不易被看到的不可见领域。

麻省理工大学计算机系的马丁教授的话来说:“乔布斯如果是可视化产品中的国王的话,那么里奇那就是不可见王国中的君主。乔布斯的贡献在于,他非常了解用户的需求和渴求,以至于创造出了让当代人乐不思蜀的科技产品。然而,却是里奇先生在为这些产品提供最为核心的部件,大家平常的时间看不到这些部件,却每天都在使用着。”

发展:

C语言的发展
一款伟大且经久不衰的现代语言,不是一拍脑袋就给开发设计出来的,而是经过不断的发展方才出现在你我面前,C语言恰恰就是这样的语言。

从1957年约翰·巴科斯开发出第一个高级程序设计语言,通用编译型指令式编程语言,还特别适合用来进行数值计算和科学计算的FORTRAN语言开始。

来到1966年,马丁·理察德在FORTRAN语言的基础上设计出语法靠近机器本身,适合用于开发精巧和高性能应用的早期高级程序设计语言——BCPL语言。

接着就该轮到肯尼斯·蓝·汤普逊这位老哥上场,为了让Unix系统可以移植到其他的计算机上,1969年开发出能通过内存地址就直接操作内存的通用无数据类型程序设计语言——B语言。

只不过丹尼斯·麦卡利斯泰尔·里奇可能是觉得B语言还不够强大,就在B语言的基础上设计出C语言这款能以简易的方式编译和处理低级储存器,仅产生少量机器语言以及无需任何运行环境便能支持运行的编程语言。

特点:

C语言的特点
高级程序设计语言的C语言可以说是相当的厉害,它简洁、紧凑、灵活,核心内容少,程序书写格式自由。

表达式实用且简练,可以构造多种形式的表达式,一个表达式就可以实现其他语言多条语句才能够实现的功能。

更有着丰富的数据类型,要知道数据类型越多,数据的表达能力也就跟着越强。而C语言的数据类型可实现诸如链表、堆栈、队列等各种复杂的数据结构,在背后默默努力的就是整型、实型、字符型等数据类型。

虽然C语言是高级的程序设计语言,但是同时还兼具了底层语言(机器语言、汇编语言)的特点,可直接操作硬件端口等资源,充分的将计算机的资源最大程度的利用起来。

这还是一门适合大型程序的模块化设计的结构化语言,提供了如if~else、switch等结构化程序基本的控制语句。

做为移植Unix操作系统而诞生的语言,C语言可以说是天生就具备较好的可移植性,用C语言写出来的程序可从一个环境不做修改或稍加修改就能移植到完全不同的环境中运行。

随着C语言被程序员所广泛接受,各编译器都为C语言提供预处理命令和预处理程序,这大大的扩展了C语言的功能,为大型程序的调试提供了方便。

用C语言写出来的程序生成的目标代码质量高,比汇编语言写的程序也只低了10%~20%,可以说是充分发挥了机器(计算机)的效率。

做为能够让广大的程序员普遍都接受、都能方便学习的的高级程序语言,C语言的语法限制不是很严,程序设计自由度大,由程序员们自己来保证自己所写程序的正确性,给予了程序员们更大的自主性。

以上这些都是C语言的优点,无论任何的事物都是具有两面性的,既然有优点那必然就有缺点,下面我们就来说说C语言的缺点。

C语言的创始人们给了程序员最大限度的程序设计自由,也就造成了C语言的程序错误更加的隐蔽,更加容易出错,且编译器还不检查逻辑错误,需要等程序运行时这些错误才会被发现。

C语言的语法成分相对简单,数据类型多,运算符又丰富,两相结合造成了一定的理解性困难,可以写出常人无法理解的程序。

C语言写出来的程序有时会难以修改,就是缺少了类或是包这样概念的语言特性,使得维护起大型程序比较困难。

标准:

C语言的标准
恐怕就连设计出C语言的丹尼斯·麦卡利斯泰尔·里奇他们自己都没有想到C语言经过五十多年的风风雨雨,还能保持着强大旺盛的生命力。

在这五十多年的岁月里,C语言并不是一成不变的,而是经过了数次的版本迭代才有了今天你我所见到的C语言。

K&R C做为C语言最初的版本,也是非官方正式的版本,丹尼斯·麦卡利斯泰尔·里奇和布莱恩·科尔尼联合出书《The C Programming Language》

C89是C语言第二版本的标准,也是第一个官方的C标准,由美国国家标准协会(American National Standards Institute)于1989年制定。

C90是ANSI将C89标准提交给国际化标准组织(ISO)然后由ISO采纳并于1990年发布,K&R C、C89、C90都是一样的内容,后面的C标准统一都有ISO来发布制定。

1999年,C语言迎来第一次大规模的更新,C99此标准也因此成为C语言里最为流行的标准之一。

时隔了十二年之后,C11标准横空出世,没过几年,C18版本也已经问世。

就在2023年,也是C语言最近的一次更新,C23标准新鲜出炉。

机制:

C语言的机制
C语言编译分为四大步骤,也可以说是四大机制,即:预处理(Preprocessing)、编译(Compilation)、汇编(Assemble)、链接(Linking)

  • 预处理(Preprocessing)
    – 用来将所有#include头文件及宏定义替换成其真正的内容
  • 编译(Compilation)
    –这里的编译指经过预处理后的程序转换成特定汇编代码的过程
  • 汇编(Assemble)
    –将转换来的汇编代码继续转换为机器语言
    –这一步产生目标文件
  • 链接(Linking)
    –将多个目标文件及所需要的库文件链接成可执行文件
  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值