C语言的概述和发展历史(C语言编程之旅)

  各位bro,你们好,当你点开这篇博客时,我由衷的希望你们能够在这字里行间找到想要的答案。每个人都在寻找着答案,而我也在寻找着自己的答案,谨以此篇开启我自己的C语言学习之旅,2023年你我携手同行,共赴星辰。

在广袤的空间和无限的时间里,能与你共享同一颗行星和同一段时光,是我莫大的荣幸。 ——卡尔·萨根《宇宙》



一、前言

  以前我思考过一个问题,这个问题就是要不要了解历史?当然了,这个问题仁者见仁,智者见智,每个人都有自己的答案,我的小脑袋瓜子觉得历史不妨了解了解,就当读了个小说,看了段电影也不害列位多少功夫。


二、C语言的历史

1、起源

  关于C语言的起源我们得从早期的UNIX操作系统说起,C语言是贝尔实验室(这是一个牛波一的实验室)的 Ken Thompson(肯·汤普森)和 Dennis Ritchie (丹尼斯·里奇)等人开发 UNIX 操作系统的“副产品”。
C语言之父——丹尼斯·里奇
肯·汤普森

  1969年前后,小汤(代指汤普森)同学自个儿在家里编写 UNIX 操作系统,当时小汤同学使用的是汇编语言编写该操作系统,编写的时候那叫一个爽啊,但是一到调试和改进的时候就出现一个头疼的问题,因为汇编语言编写的程序调试和改进很难进行,于是小汤同学振臂一挥老子不干了,当然了不是真的不干了,只是不想用汇编语言来编写操作系统了,那么,用什么语言呢?小汤同学就在想,能不能找一个更高级的语言来编写呢,很遗憾,没有!这时候小汤同学再次振臂一挥没有条件创造条件,汤普森这位大佬于是在 BCPL 语言的基础上设计了一种小型的B语言,从此小汤同学用B语言开开心心乐乐呵呵的编写 UNIX 操作系统。

  1970年,另外一位大佬加入到 UNIX 的项目中,他就是C语言之父——丹尼斯·里奇,里奇同学加入后与小汤同学一起用B语言编写 UNIX 操作系统,并且不断改进B语言,使得B语言能够在 PDP-11 计算机上成功运行。然而,好景不长。

  到了1971年,B语言已经不适合在当时的计算机上运行了,这时候轮到里奇同学振臂一挥着手B语言的升级,里奇同学给升级版的B语言起了一个一看就牛逼的名字,叫做NB(New B)语言,但是呢里奇同学升着升着发现自己改进的B语言越来越不像B语言,于是他将这种语言命名为C语言。

  随后的几年间,里奇不断改进C语言,到了1973年,C语言已经趋于稳定,最后这些大佬用C语言代替了汇编语言来编写 UNIX 操作系统。
C语言发展历程

2、标准化

什么是标准化?

  先来回答一下什么是C语言标准化这个问题,我的理解就是统一使其成为一种约定俗成的准则,举个解数学题的例子,一道数学题不同的同学有不同的解法,但是考试的时候阅卷老师就会很幸苦,阅卷老师要把可能出现的解法都看一遍,这会增加工作量,怎么减轻老师的工作量呢,这里面就涉及到标准化,在学习的时候,对于某类问题,老师不妨总结一个最高效正确率最高的解题方法给同学们,下一次出现这类题目时,同学就可以按照该方法答题,这就是标准化。
  C语言也涉及到标准化的问题,比如说C语言的语法,C语言中库函数的实现,不同编译器不同使用者如果采用各自的标准编写程序的话,很难实现有效的交流和沟通。

标准化的历程

原始C语言版本(经典C)
  C语言问世之后,在20世纪70年代特别是1977至1979年间持续发展,这个时期出现了第一本有关C语言的书——《C程序设计语言》(作者:丹尼斯·里奇),这期间因为没有正式的C语言标准,这本书很快成为了事实的标准,编程爱好者给其取名为 K&R 或者“白皮书”。

C89或C90
  20世纪80年代,随着计算机技术的不断发展,C语言也不在局限于在 UNIX 操作系统中使用,不同的操作系统开始使用C语言编译器,问题来了,编写编译器的程序员以《C程序设计语言》这本书为参考,由于这本书对C语言的一些语言特性描述过于模糊,以至于不同的编译器对某些特性有不同的处理。C语言的发展增加了许多新的特性并且删除了一些旧的特性,然而 K&R 中并没有进行补充。

  很快,C语言需要一个全面的、准确的最新描述或标准成为一个亟待解决的需求,如果没有这样一个统一的C语言标准,就会出现各种“方言”,这会与C语言的主要特性和优势——可移植相背。

  之后美国国家标准学会(ANSI)开始制定本国的C语言标准,于1989年通过了一项C语言标准,并且国际标准化组织(ISO)于1990年通过了该C语言标准,我们将此标准称为C89或者C90。

C99
  再后来,C语言在1995发生了一些改变促使新的标准出现,1999年国际标准组织(ISO)通过了一个新的C语言标准,该标准通常被人们称为C99。

C11和C18
  最近的两次修订C语言标准是在2011年和2018年,2011年修订的称为C11,2018修订的称为C18。要注意的是,C99到C11再到C18的改变没有从C89到C99显著,
C语言标准化的历程

3、基于C的语言

  C语言对后世产生的编程语言影响深远,许多现代编程语言都取经于C语言,以下几种具有代表性。

  • C++:包含了所有C的特性,并且增加了类和其他特性用来支持面向对象编程。
  • Java:基于C++,也继承了C的部分特性。
  • C#:由C++和Java发展起来的新的语言。
  • Perl:一种脚本语言,采用了C的许多特性。

三、语言的优缺点

1、C语言的优缺点

优点

  • 高效:C语言与生俱来的有点,C语言就是取代汇编语言的过程中发展而来的语言。
  • 可移植性:C语言可以很好的在不同机型上运行,由于C语言是一个小型语言,规模较小容易编写。
  • 功能强大:C语言拥有庞大的数据类型和运算符集合,使得C语言具有很强的表达现实的能力。
  • 标准库:C语言具有功能众多的标准库,该标准库包含了许多支持输入/输出、字符串处理等功能的函数。

缺点

  • C语言更容易隐藏错误:C语言很灵活,在编写代码时有可能出错率较高。
  • C语言可能会难以理解
  • C语言可能会很难修改

行文至此意味着本篇文章即将结束,感谢你们能够耐心的看完本篇文章。三人行,必有我师焉,这篇博客有许多纰漏之处,希望没有让你心生厌恶之情,如果可以,请各位老铁指点一二。

我没有失败过,要么赢得胜利,要么学到东西。——曼德拉

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值