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

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


C语言概述

  • 一、前言
  • 二、C语言的历史
    • 1、起源
    • 2、标准化
      • 什么是标准化?
      • 标准化的历程
    • 3、基于C的语言
  • 三、语言的优缺点
    • 1、C语言的优缺点
      • 优点
      • 缺点

一、前言

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


二、C语言的历史

1、起源

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

  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 操作系统。

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显著,

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语言可能会很难修改

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

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

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

  1. C++语言:C语言/C++语言的简介、发展历史、应用领域、编程语言环境IDE安装、最强学习路线之详细攻略

    C++语言:C语言/C++语言的简介.发展历史.应用领域.编程语言环境IDE安装.最强学习路线之详细攻略 目录 C语言/C++语言的简介 1.C语言的历史重要性-C语言是现代编程语言的开山鼻祖

  2. 何为python以及python语言的来历及发展历史

    前言 ** 随着信息时代的到来,我们每天都会面对无数信息流的冲击,如何在信息浩瀚的海洋里准确寻找我们所需要的信息提高我们的工作效率使我们不得不考虑的事情. 今天小编就给大家带了解一种适合新手入坑的编程 ...

  3. 计算机科学家沃斯提出的公式,第一章C语言的概述

    第一章 C 语言的概述 本章介绍C语言的起源.发展和特点,C程序的基本结构和C程序的开发过程,以及Tuber C 2.0集成环境的使用.C语言是一种结构化程序设计语言,它既具有高级语言的特点,也兼有汇 ...

  4. JAVA学习基础知识(一)JDK的安装和配置及Java的发展历史

    前言 欢迎阅读本系列文章,本文主要内容为Java的发展历史,以及在电脑上如何配置Java环境.ps:这是第一次发布java语言的文章,若出现错误,望指正. 文章目录 前言 java的发展历史 Java ...

  5. UML2面向对象分析与设计 -- 面向对象思维(概念、面向对象技术的发展历史、对象和类、面向对象技术的相关原则:抽象 封装 分解 泛化 多态 分层 复用)

    文章目录 1. UML2面向对象分析与设计 学习目标 2. 面向对象思维 2.1 学习目标 2.2 什么是面向对象 2.3 面向对象技术的发展历史 2.4 面向对象技术的优势 2.4.1 便于沟通:在 ...

  6. Python的发展历史及特点

    一.Python发展历史 Python语言发明于1989年,1991年公开发行.Python的名字来源于英国喜剧团 MontyPython,原因是Python的创始人 Guido van Rossum ...

  7. java看不起c语言,为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解。比如各种继承介面。包之间的关系。...

    为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解.比如各种继承介面.包之间的关系.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我 ...

  8. c语言的运用,解析计算机中C语言的运用

    摘 要:随着我国计算机水平的不断提升和计算机程序设计的持续完善,在计算机程序设计过程中C语言得到了越来越广泛的应用.本文从对C语言进行概述入手,对c语言应用特点和计算机中C语言的运用进行了分析. 关键 ...

  9. 学完java学swift_前言最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C、Java或其他语言实现的,几乎没有使用Swift实...

    前言 最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C.Java或其他语言实现的,几乎没有使用Swift实现的,所以自己打算使用Swift去实现一 ...

最新文章

  1. MetaPhlAn2:宏基因组物种组成分析
  2. 获取访问者的IP地址
  3. python监控单台多实例数据库服务器的数据库端口
  4. c字符串分割成数组_leetcode第31双周赛第三题leetcode1525. 字符串的好分割数目
  5. 事件冒泡 bubbles cancelBubble stopPropagation() stopImmediatePropagation() 区别
  6. 二十七、单张图片上传预览
  7. win10 预览版启用 Hyper-V 虚拟机 装 boot2docker找不到菜单按钮问题
  8. 浩海技术GHOSTXPSP3_2010浪漫圣诞纯净版
  9. linux ls 配色方案,Terminal 配色方案
  10. ASCII码一览表,ASCII码对照表
  11. python sep参数_Python中带有print()函数的sep参数
  12. 科研linux发型版本,[合集]哪些Linux系统科研能用呢 - 优秀的Free OS(Linux)版 - 北大未名BBS...
  13. 《python 程序设计》读书笔记
  14. 3036: 绿豆蛙的归宿
  15. 【简洁实用】好用的杀毒软件 【网络安全防护】
  16. 典型MOSFET制造工艺流程示意图
  17. Airflow Python工作流引擎的重要概念介绍
  18. OpenCv设置摄像头参数/获得摄像头参数值
  19. php 两个字符串xor,使用JavaScript实现PHP字符串xor
  20. MySQL学习(八)SQL进阶版

热门文章

  1. iOS的音讯通知有两种方式,Badge Notification和Alert Notification
  2. CTO教你,如何快速培养下属,让你拥有得力的干将
  3. AI大模型能带来强人工智能吗 这是值得思考的问题
  4. android如何定时息屏_Android亮屏和熄屏控制实例详解
  5. 计算机二级(二)仅学习
  6. 阿里天池 Python 训练营1
  7. Scratch基础(九):动画-宇宙遨游
  8. 软购联盟让正版软件得到更好的推广
  9. html锁别人电脑的程序,教大家怎么把电脑里的个别软件锁住
  10. Esp8266 mqtt无线控制空调