c语言是什么
c语言是什么
c语言是什么
本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!
作者|慕课网精英讲师 张磊
1. C语言的起源
C 语言是一种高级语言,最初由 Dennis M. Ritchie 为了开发一个操作系统而设计,最早在 1972 年在 DEC PDP-11 计算机上被首次实现。
2. 一次不务正业的发明
C 语言的发明和很多伟大的发明一样,都是一个人或者几个人不务正业闲着没事偶然间发明的。据说当时有一个年轻人为了能够在一台上机费更便宜的计算机上愉快的进行两人对战游戏,但不幸的是,这台机器上原有的操作系统只能支持一个人在线游戏,于是这位热爱游戏的年轻人不得不重新为这台机器编写一个新的操作系统,可以支持多用户,这样大家就可以一起同时在线玩这个游戏了。而在编写这个操作系统的过程中,他们对 B 语言进行了升级,于是 C 语言诞生了。
这个发明 C 语言的年轻人叫丹尼斯•里奇 Dennis M. Ritchie [1]。C 语言派生自 BCPL 语言,并且 C 语言对 BCPL 语言有了长足的扩展。因为 BCPL 简称为 B 语言,因此 C 语言就采用了字母表中的下一个字母来作为语言的名称。讲真这名字起得够随意的,不过话说回来了 B 语言这名字好像就是来自 A 语言的,有兴趣的同学可以去了解一下这三门语言之间的渊源,在这里我们就不多赘述了。
下面是一个 C 语言发展历史的列表:
语言
年份
开发者
Algol
1960
International Group
BCPL
1967
Martin Richard
B
2024
Ken Thompson
Traditional C
1972
Dennis Ritchie
K & R C
1978
Kernighan & Dennis Ritchie
ANSI C
1989
ANSI Committee
ANSI/ISO C
1990
ISO Committee
C99
1999
Standardization Committee
表1: C 语言发展历程
图1: C 语言发明者 Dennis Ritchie
3. C 语言的应用
了解了发明过程就大致知道了 C 语言的应用场景。基本的应用场景是操作系统的编写。
当然现在 C 语言的应用已经大大超出了这个范围。因为 C 语言与生俱来的特性是很容易与底层硬件打交道,所以目前C 语言大量应用在需要直接硬件交互的场景。比如最近很多的物联网中的嵌入式设备,底层驱动,高性能计算,游戏后端服务,图形处理等等。
但是由于 C 语言不支持原生的面向对象的开发模式,因此有人说过,对于 C 语言,最大的工程就是开发一个操作系统。
如果你想开发更为复杂的系统,请使用别的语言。但是这不代表 C 语言已经过时了。恰恰相反,C 语言正在我们的生活中发挥着比以前更为重要的角色,你的手机,你的身边的智能终端,甚至你家的扫地机器人,都无时不刻都有 C 语言的身影。
图2: 用 C 语言实现的 MP3 播放器
图2: 用 C 语言实现的 MP3 播放器内部
4. C 语言的特点
C 语言有如下的特点:
代码简洁不繁琐;具有良好的可移植性,代码与机器底层独立(相对于汇编语言而言);属于中层编程语言(底层的为汇编语言等,高层的为 Java 语言等);结构化语言;丰富的程序库可以使用;可以直接管理内存;运行速度快;提供了指针操作;可以使用递归;具有良好的扩展性。5. C 语言的几个主要版本
从 C 语言发明到现在经历了如下的标准:
版本
标准
发布日期
K&R
n/a
1978-02-22
C89
ANSI X3.159-1989
1989-12-14
C90
ISO/IEC 9899:1990
1990-12-20
C95
ISO/IEC 9899/AMD1:1995
1995-03-30
C99
ISO/IEC 9899:1999
1999-12-16
C11
ISO/IEC 9899:2011
2011-12-15
目前 C 语言执行的标准是 ISO/IEC 9899:2011,我们在课程中也会遵循此标准来完成代码。
6. 我们为什么要学习 C 语言
如果你想要从事下面的工作,那么 C 语言将是你非常好的一个选择:
从事需要直接操作操作硬件的编程的嵌入式设备开发,不需要操作系统的支持。比如我们常见的冰箱,洗衣机等等的控制;嵌入式操作系统和实时操作环境下的开发;基于 Linux 操作系统下的一些应用程序。主要是中间层面应用的开发,直接可以与底层硬件交互,而本身又不直接与最终用户进行交互;音频和视频的解码器和编码器等;协议栈的开发。7. 学习基础
希望大家最好能够对于 Linux 操作系统有使用经验,有简单的 Shell 命令使用经验。因为我们遇到的所有的操作基本都是通过命令行来进行的。C 语言目前主要的应用场景都是在 Linux 下,所以大家最好学习一下相关的知识。
欢迎关注「慕课网」,发现更多IT圈优质内容,分享干货知识,帮助你成为更好的程序员!
-
- 大平层是什么意思
-
2023-05-20 17:39:32
-
- kux格式用什么播放器(kux格式能改成mp4吗)
-
2023-05-20 17:37:27
-
- 爪字头的字(爪字头的字与什么有关系)
-
2023-05-20 17:35:22
-
- 唐朝宫殿(唐朝宫殿建筑有什么特点)
-
2023-05-20 17:33:17
-
- 藠头和大蒜的区别(藠头和大蒜的区别是什么?)
-
2023-05-20 17:31:12
-
- 庙会是什么意思
-
2023-05-20 17:29:07
-
- 什么是主题(什么是主题党日)
-
2023-05-20 17:27:02
-
- 如何成为大学老师(如何成为大学老师要什么学历)
-
2023-05-20 17:24:57
-
- pdf是什么格式
-
2023-05-20 13:56:48
-
- 资本结构是什么
-
2023-05-20 13:54:43
-
- 白加反念什么(白加反读什么)
-
2023-05-20 13:52:38
-
- 有闻而传之者(有闻而传之者的而表什么)
-
2023-05-20 13:50:33
-
- 物料是什么
-
2023-05-20 13:48:28
-
- 什么是历史的创造者
-
2023-05-20 13:46:23
-
- 海棠花象征着什么(海棠树图片)
-
2023-05-20 13:44:18
-
- 根与系数的关系公式是什么(韦达定理两根公式)
-
2023-05-20 13:42:13
-
- hr是什么意思(hr是什么意思时间)
-
2023-05-20 13:40:08
-
- 手机激活是什么意思(oppo手机怎么激活)
-
2023-05-20 13:38:03
-
- 小孩子办身份证需要什么材料(小孩办理身份证要什么材料)
-
2023-05-20 10:58:40
-
- 唐三女儿(唐三女儿的武魂是什么)
-
2023-05-20 10:56:35