网易首页 > 网易号 > 正文 申请入驻

C 语言发展简史 | Linux 中国

0
分享至

导读:下面是我对 布莱恩·克尼汉 的采访,他(与 丹尼斯·里奇)是《C 程序设计语言》一书的共同作者,我们谈及了 C 语言及其 50 年的历史。

本文字数:3407,阅读时长大约: 5分钟

LCTT 译者 :六开箱

翻译: 33.0 篇

贡献: 40 天

2022-03-16

2022-04-25

https://linux.cn/lctt/lkxed

下面是我对 布莱恩·克尼汉(Brian Kernighan) 的采访,他(与 丹尼斯·里奇(Dennis Ritchie))是《C 程序设计语言(The C Programming Language)》一书的共同作者,我们谈及了 C 语言及其 50 年的历史。

两位作者写的最初的 C 语言编程指南,大约是在 1978 年

C 语言将在 2022 年满 50 岁。然而,尽管它历史悠久,在许多“流行编程语言”的调查中,C 语言仍然是“最常用”的编程语言之一。例如,你可以看看 www.tiobe.com,它追踪不同编程语言的流行程度。许多 Linux 应用程序是用 C 语言编写的,例如 GNOME 桌面。

我采访了 opensource.com(Brian Kernighan),以了解更多关于 C 语言及其历史他(与 丹尼斯·里奇(Dennis Ritchie))是《C 程序设计语言(The C Programming Language)》一书的共同作者。

C 语言是怎么诞生的呢?

C 语言由一系列旨在进行系统编程的语言演变而来,系统编程就是编写像编译器、汇编器、编辑器以及最终的操作系统这样的程序。麻省理工学院有一个与贝尔实验室合作的 Multics 项目,它计划用一种高级语言编写系统的所有部分(这在 1965 年那时候是一个新想法)。他们打算使用 IBM 的 PL/1,但它非常复杂,而且承诺的编译器也没有及时交付。

在与一个叫做 EPL 的子集(由贝尔实验室的道格拉斯·麦克罗伊(Douglas McIlroy) 设计)进行了短暂交流后,Multics 转向了 BCPL,这是一个由剑桥的 Martin Richards 设计和实现的,更加简单和干净的语言,我记得他当时正在麻省理工学院访问。当 肯·汤普逊(Ken Thompson) 开始研究后来的 Unix 时,他在 BCPL 的基础上创造了一种更简单的语言,他称之为 B 语言。在 1969 年,他为搭载了第一个 Unix 原型系统的 PDP-7 计算机实现了这种语言。

BCPL 和 B 都是“无类型”语言。也就是说,它们只有一种数据类型,即整数。DEC 公司的 PDP-11 计算机大约在 1971 年投入使用,它搭载了第一个真正的 Unix 系统。PDP-11 支持几种数据类型,特别是 8 位字节和 16 位整数。因此,一种同样支持几种数据类型的语言是更好的选择。这就是 C 语言的起源。

C 语言在贝尔实验室和早期版本的 Unix 中是如何使用的呢?

C 语言最初只在 Unix 上使用,尽管过了一段时间,也有了用于其他机器和操作系统的 C 语言编译器。大多数情况下,它被用于系统级的编程,涵盖了相当多有趣的领域,还有很多用于管理 AT&T 电话网络运营的系统。

在贝尔实验室用 C 语言编写的最有趣的项目是什么?

可以说,最有趣、最令人难忘、也是最重要的 C 语言程序就是 Unix 操作系统本身。1971 年 Unix 的第一个版本是用 PDP-11 汇编语言编写的,但到了第四版,也就是 1973 年左右,我们用 C 语言重写了它。这很关键,因为这意味着操作系统(和它所有的支持软件)基本上可以通过重新编译来移植到不同类型的计算机上。虽然在实践中并没有那么简单,但也相差不远。

你与丹尼斯·里奇合著了《C 程序设计语言》一书。那本书是怎么来的,你和丹尼斯又是如何在书中合作的呢?

我曾经写过一本肯·汤普逊的 B 语言教程,帮助人们快速上手使用它。当 C 语言可用时,我将其升级为 C 语言的教程。过了一段时间,我说服了丹尼斯,让他和我一起写一本 C 语言的书。基本上,除了系统调用那章外,大部分的教程材料都是我写的,而丹尼斯已经写好了那个参考手册,写的非常棒。然后我们反复修改,使教程部分更加流畅。参考手册几乎保持不变,因为它从一开始就写得很好。这本书的格式是用 troff 格式器格式的,这是 Unix 上的许多工具之一,我做了大部分的格式化工作。

C 语言什么时候成为了贝尔实验室以外的其他程序员用于工作的东西呢?

我真的记不大清了,但我认为大概是在最初的五六年里,C 语言主要是跟着 Unix 一起发展的。随着其他操作系统上的编译器的发展,它开始蔓延到 Unix 以外的其他系统。我不记得我们是什么时候意识到 C 和 Unix 产生了真正的影响,但应该是在 20 世纪 70 年代中后期。

为什么 C 语言会成为如此有影响力的编程语言呢?

早期的主要原因是它与 Unix 的联系,Unix 在世界上迅速传播。如果你使用 Unix,你就会用 C 语言来编程。后来,C 语言传播到不一定运行 Unix 的计算机上,很大程度上是因为 Steve Johnson 编写了可移植 C 语言编译器。在工作站领域,比如 昇阳微系统(Sun Microsystems)、MIPS(后来成为 SGI)和其他公司,它们都是因为 Unix 和 C 语言的结合而获得成功。IBM PC 出现得稍晚一些,大约在 1982 年。后来 C 语言成为 MS-DOS 和 Windows 下的标准编程语言之一。今天,大多数物联网(IoT)设备会使用 C 语言。

在创建约 50 年后的今天,C 仍然是一种流行的编程语言。为什么它仍然如此受欢迎呢?

我认为 C 语言在效率和表现力这两个方面达到了一个平衡点。在早期,效率真的很重要,因为与我们今天所使用的计算机相比,当时的计算机速度很慢、内存十分有限。C 语言是非常高效的,因为它可以被编译成高效的机器代码,而且它也足够简单,人们很容易学会如何编译它。同时,它还具有很强的表现力,易于编写,并且结构紧凑。至少在我谦虚而正确的观点中,没有任何一种语言能很好地达到这种境界。

多年来,C 语言的发展和变化如何?

我想,C 语言的发展是适度的,但我并没有太注意 C 语言标准的发展。C 语言已经有足够的改变了,80 年代写的代码需要做一些前置工作才能编译,但这主要与诚实对待类型有关。比较新的功能,如复数,也许是有用的,但对我来说不是,所以我不能做出明智的评论。

哪些编程问题可以用C语言最容易解决?

嗯,对于任何事情来说,它都是一种很好的语言,但在今天,有了充足的内存和处理能力,大多数程序员都可以用 Python 这样的语言来进行内存管理和处理其他更高级的结构。C 语言仍然是底层编程的一个很好的选择,因为对于底层编程来说,充分利用 CPU 周期和每一个字节仍然很重要。

C 语言影响了其他编程语言,包括 C++、Java、Go 和 Rust。你对这些编程语言有什么看法?

几乎每一种语言在某些方面都是对其前辈的反应。简单点说,C++ 增加了控制信息访问的机制,所以对于真正的大型程序来说,它比 C 更好。 opensource.com 是对 C++ 的复杂性的一种反应。Go 是对 C++ 的复杂性和 opensource.com 的限制的一种反应。 opensource.com 是对 C 语言(大概也是对 C++)中内存管理问题的一种尝试,同时它接近了 C 语言的效率。

它们都带来了某些积极的特性,但不知何故,没有人能够完全满意,所以总是会有更多的语言,反过来对以前的语言做出反应。同时,老的语言,在大多数情况下,仍会继续存在,因为它们的工作做得很好,而且有一个嵌入式的根据地,老的语言在里面可以完美使用,而用新的东西来重新实现是不可行的。

感谢 Brian 为我们分享了 C 语言编程的伟大历史!

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

欢迎遵照 CC-BY-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
哈佛发现:10种食物最能长肌肉,第一名多数人家里没有

哈佛发现:10种食物最能长肌肉,第一名多数人家里没有

今日养生之道
2026-08-09 09:38:49
奥哈拉:曼联对待卡里克的方式简直是耻辱,还口口声声支持他

奥哈拉:曼联对待卡里克的方式简直是耻辱,还口口声声支持他

懂球帝
2026-08-18 20:46:04
张本智和不是被父母带去日本的,他爸妈搬到日本那年,他还没出生?

张本智和不是被父母带去日本的,他爸妈搬到日本那年,他还没出生?

隐龙天下o
2026-08-17 15:54:51
内塔尼亚胡所在党的竞选海报上,纽约市长与伊朗领导人并列

内塔尼亚胡所在党的竞选海报上,纽约市长与伊朗领导人并列

参考消息
2026-08-18 22:10:04
NBA季后赛场均29分有多难?历史仅5人达成,杜兰特上榜,东契奇第2

NBA季后赛场均29分有多难?历史仅5人达成,杜兰特上榜,东契奇第2

弄月公子
2026-08-18 21:22:29
云南昆明凌晨突降暴雨,城区部分地段内涝,水位没过汽车引擎盖,当地市民:本想去停车场查看车辆情况,走到一半水位及腰不敢走了

云南昆明凌晨突降暴雨,城区部分地段内涝,水位没过汽车引擎盖,当地市民:本想去停车场查看车辆情况,走到一半水位及腰不敢走了

台州交通广播
2026-08-18 19:09:18
前央视主持人郎永淳,沦为阶下囚,刑满释放,如今硕士儿子成心病

前央视主持人郎永淳,沦为阶下囚,刑满释放,如今硕士儿子成心病

手工制作阿歼
2026-08-18 13:26:18
吉利大调整,李书福把公司交给跟了他30年的“老会计”

吉利大调整,李书福把公司交给跟了他30年的“老会计”

无相商业趋势
2026-08-18 08:52:48
不用看风水!晚上把家里灯全打开,站在门口一看,好坏一目了然

不用看风水!晚上把家里灯全打开,站在门口一看,好坏一目了然

阿离家居
2026-08-04 11:50:30
闪电新闻特约律师深度解读“结婚8年三孩非亲生案”三大核心法律问题

闪电新闻特约律师深度解读“结婚8年三孩非亲生案”三大核心法律问题

闪电新闻
2026-08-18 11:20:36
日媒报道中国动画《牛来》,日本网友直呼看笑了,“大烂”出奇迹?

日媒报道中国动画《牛来》,日本网友直呼看笑了,“大烂”出奇迹?

日本物语
2026-08-17 23:17:56
日本全面叫停种植牙?种牙潜藏的风险与后遗症,一次为你讲明白

日本全面叫停种植牙?种牙潜藏的风险与后遗症,一次为你讲明白

健康科普365
2026-08-13 14:30:15
我和妻子都出轨了,她养了个23岁男模,我找了个21岁女大学生

我和妻子都出轨了,她养了个23岁男模,我找了个21岁女大学生

千秋文化
2026-08-18 20:03:34
BBA集体大降价!宝马5系跌至28万

BBA集体大降价!宝马5系跌至28万

中国商界杂志社
2026-08-18 16:50:55
不忍了,建议郭士强马上下课请回杜锋,赛后发言更是引发众怒

不忍了,建议郭士强马上下课请回杜锋,赛后发言更是引发众怒

宗介说体育
2026-08-18 10:49:23
群星云集!张艺谋新片《守密者》网传阵容流出,角逐春节档

群星云集!张艺谋新片《守密者》网传阵容流出,角逐春节档

奇怪的鲨鱼们
2026-08-18 22:28:40
9月1日正式落地!手机号迎来全新调整,办卡销户规则大变

9月1日正式落地!手机号迎来全新调整,办卡销户规则大变

次元君情感
2026-08-18 00:26:57
“法拉利就是法拉利,老了也是法拉利”:离婚17年后,伊能静替庾澄庆赢回了所有体面

“法拉利就是法拉利,老了也是法拉利”:离婚17年后,伊能静替庾澄庆赢回了所有体面

飘飘然的娱乐汇
2026-07-29 19:45:03
这谁顶得住!伊朗彻底懵了,每天180万桶的销路说断就断,中国也不惯着了。从日进斗金到中国市场收入骤减,德黑兰的底牌有些不管用了

这谁顶得住!伊朗彻底懵了,每天180万桶的销路说断就断,中国也不惯着了。从日进斗金到中国市场收入骤减,德黑兰的底牌有些不管用了

林杰论事
2026-08-06 06:05:14
女孩电梯被勒脖子拖走后续:身份曝光社死,手法太老练,警方介入

女孩电梯被勒脖子拖走后续:身份曝光社死,手法太老练,警方介入

君笙的拂兮
2026-06-06 00:34:03
2026-08-18 23:08:49
Linux
Linux
Linux 中国开源社区
8018文章数 73111关注度
往期回顾 全部

科技要闻

英伟达的资本局:从AI卖铲人到AI央行

头条要闻

卖黄金79万货款变"赃款" 商户账户30万被警方直接划走

头条要闻

卖黄金79万货款变"赃款" 商户账户30万被警方直接划走

体育要闻

中国男篮,一直被质疑,永远被期待

娱乐要闻

蓝盈莹官宣新恋情

财经要闻

一场酒局献祭,掀开了杭州地产潜规则

汽车要闻

试驾银河TT:兼顾操控与舒适,年轻人出行好搭子

态度原创

手机
艺术
本地
公开课
军事航空

手机要闻

苹果macOS变“内鬼”!AirPods长出摄像头,一大波神秘新品泄密

艺术要闻

gmp新作:北京怀柔科学城城市客厅

本地新闻

邂逅活珊瑚的西沙,感受独属于国人的浪漫

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

制胜铁拳 96A式主战坦克高清画面来了

无障碍浏览 进入关怀版