新闻详情

新闻详情

首页 / 资讯中心 / 详情

【C语言拾遗】从“打游戏”到“统治底层”:一文搞懂 C 语言的前世今生

发布时间:2026/9/26 5:10:08来源:尧图网络
【C语言拾遗】从“打游戏”到“统治底层”:一文搞懂 C 语言的前世今生
前言很多刚接触 C 语言的小伙伴往往第一天就被printf、scanf和搞不懂的指针劝退。你可能会抱怨“为什么这门语言语法这么怪为什么没有现成的便捷工具”其实语言的语法结构是由它的诞生使命决定的。了解 C 语言的历史能让你从“被动背语法”变成“主动理解设计者用意”。今天就让我们穿越回 20 世纪 60 年代末看看这门传奇语言的诞生故事。一、 溯源为了“打游戏”而诞生的 UNIX 与 B 语言1969年故事的起因非常接地气程序员也想打游戏。1969 年美国贝尔实验室的程序员肯·汤普森Ken Thompson写了一款名为《太空旅行》Space Travel的电脑游戏。为了能更流畅地运行这个游戏他找来了一台被闲置的 PDP-7 计算机。在当时想在这台机器上写程序只能使用汇编语言。汇编语言极其贴近硬件但有两个致命痛点代码极难维护漏写一个符号系统直接崩溃毫无可移植性换一台不同型号的电脑所有代码必须全部重写。为了提高效率汤普森基于当时的 BCPL 语言简化出了一门新的语言——B 语言取自 BCPL 的首字母并用 B 语言编写了著名的UNIX 操作系统的初代原型。二、 诞生丹尼斯·里奇与 C 语言1972–1973年B 语言虽然比汇编语言好写但它有一个致命缺陷没有“数据类型”的概念而且无法高效直接地操作物理内存。这时汤普森的同事——被称为“C 语言之父”的丹尼斯·里奇Dennis Ritchie出场了。里奇在 B 语言的基础上做了革命性的改良引入了明确的数据类型如int、char等设计了指针Pointer让高级语言也能像汇编一样直接读写内存地址编写了高效的 C 语言编译器。因为这门新语言是 B 语言的下一代里奇顺理成章地将其命名为C 语言。/* 这就是 C 语言的设计初衷既有高级语言的结构又有直接操作内存的能力 */inta10;int*pa;// 指针直接指向内存地址 改变计算机历史的时刻1973年1973 年里奇与汤普森做出了一个震撼全行业的决定用 C 语言重新编写整个 UNIX 操作系统内核在当时大家都认为操作系统这种核心软件必须用汇编语言写。但 UNIX 的成功证明了C 语言既有接近硬件的运行效率又拥有跨平台移植的能力。这举动彻底奠定了 C 语言在操作系统界的统治地位。三、 规范从 KR C 到 ANSI C 标准1978–1989年随着 UNIX 的风靡全球程序员开始狂热使用 C 语言但也带来了混乱各个厂家开发了自己的编译器导致在一个平台写的 C 代码到另一个平台就跑不通了。为了解决标准不一的问题C 语言经历了两次重要标准化1. KR C1978年丹尼斯·里奇与布莱恩·柯林汉Brian Kernighan合著出版了经典巨著《The C Programming Language》简称 KR。这本书成为了全球程序员的“圣经”。趣闻你在第一天学习编程时写的Hello, World!就是在这本书里首次亮相并传遍全球的#includestdio.hintmain(){printf(hello, world\n);return0;}2. ANSI C / C891989年美国国家标准协会ANSI在 1989 年发布了官方标准称为ANSI C或 C89。这是现代 C 语言最稳定、最核心的基石。此后又陆续演进出了C99增加了//注释等、C11和C17/C23。四、 总结了解这段历史对我们初学者有什么用回顾 C 语言的发展史我们可以得出三条对学习至关重要的启示理解指针的本质指针不是为了刁难初学者而发明的是因为 C 语言一开始就是为了写操作系统而生的。操作系统必须直接管理内存所以指针是它天生最锋利的武器。掌握编程语言的“母语”后来的 C、Java、C#、JavaScript、Go 等语言它们的语法结构如{}花括号、if/else、for循环全都继承自 C 语言。学好 C 语言再学其他语言就是顺水推舟。感受底层的力量直到今天你手机里的 Android / iOS 内核、电脑上的 Windows / macOS 系统、汽车里的嵌入式芯片依然是由 C 语言在底层默默支撑。写在最后作为一名 C 语言初学者不要害怕报错和踩坑。50 年前里奇和汤普森也是在解决一个又一个报错中创造出这门伟大的语言的。如果这篇文章对你有启发欢迎点赞、收藏加关注我们一起在 C 语言的学习路上并肩前行
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

OpenClaw Skills 系统深度解析:从 SKILL.md 到自定义技能配置 2026/9/26 19:31:03

OpenClaw Skills 系统深度解析:从 SKILL.md 到自定义技能配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
华为光学工程师面试全解析:考点体系与备考策略 2026/9/26 19:30:57

华为光学工程师面试全解析:考点体系与备考策略

华为的光学工程师面试,在圈子里一直是个热度很高的话题。每年校招和社招,光通信、手机镜头、车载光学这几个方向的候选人,都会翻来覆去地找面经,但能找到的往往是零散几条,什么“考了球差和彗差”“让我推导了高斯公式…

阅读更多 →
航拍小目标检测YOLOv8改进:从漏检到高召回实战 2026/9/26 19:30:57

航拍小目标检测YOLOv8改进:从漏检到高召回实战

简介:本资源面向计算机视觉研究者与深度学习开发者,聚焦航拍图像场景下的小目标检测难题,提供一套基于改进YOLOv8的完整算法实现与实战项目。针对小目标尺寸小、分辨率低、背景噪声干扰强等痛点,项目对网络结构、损失函数与锚框策…

阅读更多 →
达摩院DAMO RADAR登Science:通用影像AI技术解析与实操指南 2026/9/26 19:30:57

达摩院DAMO RADAR登Science:通用影像AI技术解析与实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
煤矿安全管控平台建设方案:从数据接入到告警联动的落地实践 2026/9/26 19:30:57

煤矿安全管控平台建设方案:从数据接入到告警联动的落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
度假村安保部定岗定编实战:从工作量测算到排班优化 2026/9/26 19:30:57

度假村安保部定岗定编实战:从工作量测算到排班优化

1. 为什么度假村安保部最该做定岗定编1.1 从三笔"糊涂账"说起很多HR看到"定岗定编"四个字就下意识想往后躲,觉得这是又要搞架构调整、又要处理人事纠纷的硬骨头。我在咨询行业做了这么多年,接过不少类似的单子,有一条感受…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉