爱收集资源网

C语言之父:无人可超越的编程传奇

网络整理 2023-09-26 04:06

贝尔实验室非常人员奖、美国计算机协会(ACM)的图灵奖、汉明勋章、计算机先驱奖、计算机历史博物馆研究员、哈罗德 · 潘德奖……这些成就全都出自一人,那就是编程界无人能赶超的传奇人物也是C语言的创造者——丹尼斯·里奇。

C语言之父:丹尼斯·里奇

计算机历史学家Paul E.Ceruzzi说:里奇不被人们之道。他的名子一点都不家喻户晓,但是假如你有一台显微镜,能在笔记本里听到他的作品,你会发觉处处都是他的作品。

克尼汉也曾这么评价:“牛顿说他是站在巨人的大腿上,如今,我们都站在里奇的手腕上。”

01

1941年,丹尼斯 ·里奇出生在纽约布朗克斯区,父亲是是贝尔实验室的交换系统工程师。里奇从小成绩优异,大学顺利步入了耶鲁,在受父母的影响下,丹尼斯也走上了科学研究之路。

在斯坦福读书期间,一次碰巧的机会改变了里奇的一生。里奇出席了耶鲁计算机系统相关的讲堂,从此他开始对计算机疯狂着迷,不仅专门学了一期课程。

当时的里奇是一个主修数学的中学生,因为对计算机处理的理论和实际问题非常着迷,他在毕业论文中大部份和计算机理论有关(递归函数的层次),这还远远不够,里奇开始花更多的精力在实践前面。

在哪个时代,大部分计算机容积非常庞大,占用了整个屋子而且还只能进行有限的拨入访问,因此攻破大型台式计算机是当时的工程师们的目标,可是这种计算机没有便于使用的操作系统,于是里奇决定自己做一个。

这一决定立刻得到了麻省理工学院Honeywell和General Electric的支持。里奇负责多道处理机BCPL语言和GE650的编译器,它们都是属于GECOS系统的。同时,他还写了ALTRAN语言的代数编译器,那视符号计算机的一种语言和系统。

经过这个项目后,里奇毅然决然的舍弃了本专业物理学,并决定将计算机作为他的事业。1967年,他加入了贝尔实验室(Bell Labs)。

在加入贝尔实验室后,里奇开始和实验室的一位名为Ken Thompson(肯·汤普森)的成员合作。这位Ken Thompson也是对Ritchie 职业生涯影响很大的人。

Thompson和Ritchie

20世纪70年代,汤普森和里奇在研究怎样让初期小型机显得越来越受欢迎。他们觉得,所须要的是各类计算机之间更简单,更可行的交互。因为老型计算机要求用户使用操作系统来复制,删除,编辑和复印数据文件,将数据从c盘联通到屏幕到打印机并返回c盘进行储存。除了少数专家之外,一旦没有了操作系统,任何人都未能访问计算机。

为此,他们花了几个月的时间来提出解决方案,他们完成这个解决方案时早已编撰好了影响她们一生的Unix操作系统。

里奇在1999年的一次专访中表示:“我认为Linux发展的现象令人高兴,虽然工作站和小型计算机厂商也在提供不同种类的BSD系统,但是在Unix的直接派生品中,Linux应当是最完善的了。”

C++的开发者和设计师比雅尼·斯特劳斯普曾说:“假如里奇决定那六年将他的精力耗费在稀奇古怪的物理上,那么Unix将胎死腹中。”

事实上,里奇加入贝尔实验室后,发展了C语言和Unix系统,这在笔记本工业史上都抢占重要的席位。C语言在发展软件和操作系统时是一个特别常用的笔记本语言,而如今的编程语言例如C++、C#、Obijective-C、Java和JavaScript拥有极大的影响。

Univac I

1973年,里奇以B语言为基础发展出C语言,在它的主体设计完成后,他和汤普森就用它来完全重画了Unix。Unix最开始是用汇编语言编撰的,里奇和汤普森重画了以后于1974年在ACM上发表,正式向外界披露Unix系统。

随着Unix的发展,C语言也得到了不断地建立。C语言是一门面向过程地、抽象化的编程语言,广泛应用于底层开发。C语言能用简易的方法编译、处理低级存储器。如此简单,简洁,几乎每位计算机制造商都转向了它,且疗效明显。

为了利于C语言的全面推广,很多专家学者和硬件产商联合组成了C语言标准委员会。于是在1989年,第一个完备的C标准诞生了,简称“C89”,截至目前,最新的C语言标准为2017年发布的“C17”。

尽管C语言早已如日朝天,但里奇的职业生涯并没没有因而而结束,他于1990年成为朗讯科技计算技术研究部门的领导者。在该职位上,他编撰了应用程序并管理已发布的操作系统的下降。

1983年,因为发展了通用操作系统理论并实现了UNIX操作系统,里奇和汤普森两人一起获得了图灵奖。里奇的图灵奖论文题目为《对软件研究的反省》。

1990年,二人因“创造UNIX操作系统和C程序设计语言”而获得了IEEE颁授的IEEE汉明奖,1997年获计算机历史博物馆研究员奖,2005年,美国工业研究院授予里奇 IRI成就奖,以嘉奖他对计算机科学技术作出的贡献,以及UNIX操作系统对社会的广泛影响。2011年,里奇和汤普森两人共同获得了日本国际奖。

但在2011年10月12日,里奇离开了这个世界c语言在线编译器手机,离开了他付出一生的C语言和Unix世界,享年70岁,去往另一个地方开始了他的另一场旅行……

02

从计算机发展以来,编程语言也是层出不穷,但是无论多少“新人”翻涌而出,都未能改变C语言在编程界中德高望重的地位。

C语言究竟能做了多少事情?大家常常说的Linux操作系统的内核都是C语言写的,对应的好多嵌入式内核驱动也跑不出C语言范畴,包括你们常用的手机,机顶盒,电视机底层硬件驱动基本上都是C语言完成。

可以毫不夸张的说,如果没有C语言,就没有谷歌的Windows 10 和 Surface Book,也没有安卓智能手机,更没有乔布斯创造的苹果帝国各类产品MAC、iPad。

C语言最牛的地方,几乎现今所有的下层语言的底层语言绝大部分都是C语言大婶做嫁衣给铺垫完成。深刻理解下层语言底层实现,离不开C语言。而且好多学院的计算机专业就会把C语言作为中学生入门编程的第一步。因此,很多程序员都把学习C语言当作程序生涯中最基本的事。

而C 语言为何能成为最重要、最流行的编程语言之一,这个疑惑从斯蒂芬 · 普拉塔在《C Primer Plus第六版》中给我们总结出的C 在诸多语言中脱颖而出的优点中能够够得到答案。

设计特点

C语言融合了计算机科学理论和实践的控制特点。C 语言的设计理念让用户能轻松地完成自顶向下的规划、结构化编程和模块化设计。因此,用 C 语言编撰的程序更易懂、更可靠。

高效性

在设计上,它充分利用了当前计算机的优势,因此 C 程序相对更紧凑,而且运行速率很快

可移植性

C 是可移植的语言。这意味着,在一种系统中编撰的 C 程序稍作更改或不更改能够在其他系统运行。如需更改,也只需简单修改主程序头文件中的少许项即可。

强大而灵活

C 语言功能强悍且灵活。功能强悍且灵活的 UNIX 操作系统,大部分是用 C 语言写的。C 程序还可以用于解决物理学和工程学的问题,甚至可用于制做影片的动漫特效。

面向程序员

C 语言是为了满足程序员的需求而设计的,程序员借助 C 可以访问硬件、操控显存中的位。C 语言有丰富的运算符,能让程序员简约地抒发自己的意图。

03

C语言获得现在的成就离不开无数个“里奇”的付出,除了里奇明天还有给你们介绍另一个伴随C语言成长的奶奶,他为C语言编撰了许多精典专著,为无数程序员搭起了攀上巨人手腕的长梯。

他就是斯蒂芬 · 普拉塔,他在美国加州肯特菲尔得的马林学院院士天文、物理和计算机科学。他也是《C Primer Plus》的作者。他编撰的《New C Primer Plus》获得了计算机出版联合会1990年度最佳How-to计算机图书奖,《C Primer Plus》获得了计算机出版联合会1991年度最佳How-to计算机图书奖提名。

《C Primer Plus》是程序员学习C语言入门到精通的“宝藏”。如果提及C语言学习,很多人想到的第一本书就会是《C Primer Plus》。

《C Primer Plus第六版》

《C++ Primer Plus》

“这本书是我在大二的那种假期和大三第一个学期时侯看的。现在还在我的书房里典藏着,回想上去,这本书看的时间真是长啊。这本书有一个特征,每一章都有一些简单的课后题目。题目都是特别简单的,不过真的完成每一个题目须要的代码两也是十分大的,非常适宜初学者从简到南的一个过程。”

——豆瓣书友 抛物线

“PrimerPlus系列历经了数十年不衰,原因就在于它们能否满足这些盼望通过全面理解相关技术继续深造的程序员和开发者的须要。初学者是真的可以入手的。”

——豆瓣书友 背面

在《C Primer Plus第六版》中,斯蒂芬 · 普拉塔把编撰 C 程序的过程分解成 7 个步骤。让C语言的学习愈发简练和有序,同时通俗易懂,读者阅读时很容易明白并且上手。

这7步如何用呢?斯蒂芬 · 普拉塔也给我们做了详尽的解释。

第 1 步:定义程序的目标

主要是说在动手写程序之前,要在脑中有清晰的思路。想要程序去做哪些首先自己要明晰自己想做哪些,思考你的程序须要什么信息,要进行什么估算和控制,以及程序应当要报告哪些信息。

第 2 步:设计程序

对程序应当完成哪些任务有概念性的认识后,就应当考虑怎样用程序来完成它。例如,用户界面应当是如何的?如何组织程序?目标用户是谁?准备花多长时间来完成这个程序?除此之外,还要决定在程序中怎样表示数据,以及用哪些方式处理数据等。

c在线编译器_c在线编译软件_c语言在线编译器手机

第 3 步:编写代码

设计好程序后,就可以编撰代码来实现它。也就是说,把你设计的程序翻译成 C 语言。一般而言,使用文本编辑器创建源代码文件。该文件中内容就是你翻译的 C 语言代码。

第 4 步:编译

大家应当晓得,C 编译器负责把 C 代码翻译成特定的机器语言。此外,C 编译器还将源代码与 C 库的代码合并成最终的程序。其结果是,生成一个用户可以运行的可执行文件,其中包含着计算机能理解的代码。编译器都会检测 C 语言程序是否有效。如果 C 编译器发觉错误,就不生成可执行文件并报错。

第 5 步:运行程序

在常见环境中运行程序要输入可执行文件的文件名,而其他环境可能要运行命令或一些其他机制。例如,在 Windows 和 Macintosh 提供的集成开发环境(IDE)中,用户可以在 IDE 中通过选择菜单中的选项或按下特殊键来编辑和执行 C 程序。最终生成的程序可通过单击或双击文件名或图标直接在操作系统中运行。

第 6 步:测试和调试程序

程序能运行是个好征兆,但有时也可能会出现运行错误。接下来,应该检测程序是否根据你所设计的思路运行。你会发觉你的程序中有一些bug,可能忽略了输入检测造成程序截瘫,可能会把圆括号放错地方,可能误用 C 语言或打错字,等等。

第 7 步:维护和更改代码

创建完程序后c语言在线编译器手机,你发觉程序有错,或者想扩充程序的用途,这时就要更改程序。例如,用户输入以 Zz 开头的姓名时程序出现错误、你想到了一个更好的解决方案、或者要更改程序使其能在不同的计算机系统中运行等等。如果在编撰程序时清楚地做了注释并采用了合理的设计方案,这些事情都很简单。

04

在“巨人们”的努力下,C语言在编程界成了难以取代的传奇。如这本伴随着无数C语言伙伴成长的图书也成为编程语言图书中的精典,而斯蒂芬 · 普拉塔却成了年过七旬的奶奶了。

你们晓得斯蒂芬 · 普拉塔与C语言的缘份是如何开始的吗?其实他最初接近C语言是为了用程序作为技术支撑,便于天文学的研究。他先前就是天文学、物理学的大学教授,是美国天文学会成员,研究计算机语言然后除了实现了自己的需求,还顺便出版了好几本畅销计算机图书。

更巧合的是,C语言之父丹尼斯 · 里奇虽然也是专攻物理学,在耶鲁读书期间,偶然参与了计算机系统相关的讲堂,从此便迷上了编程这个 “小妖精”,在结业以后更是决定将计算机作为他的事业。

斯蒂芬 · 普拉塔刚接触C语言的时侯,当时的使用率并不高,市面上的教材稀缺,为了让自己热爱的天文事业才能有所发展,便苦心专研,当他渐渐把握C语言是时,突然想到,世界上还有许多人由于爱好C语言却没有足够的材料支撑,于是他开始创作友好、方便使用、便于自学的手册,从此我们所了解的《C Primer Plus》系列便因而而诞生了!

05

C语言精典书单

入门书怎么选?首先它不能太厚,动辄上千页可以垫显示器那个完全会直接把人吓坏。其次它内容不能过分表面,这会让菜鸟整个人都处于一种云雾映照的状态,对于这些知识全都是似懂非懂,效果很差。

那么,作为C语言入门图书,小异推荐这本整体内容深入浅出、翔实而不碍眼的《C Primer Plus 第6版 中文版》。

《C Primer Plus 第6版中文版》

▲百万C语言编程入门必选

作为畅销了40多年的精典C语言入门图书,《C Primer Plus 第6版 中文版》得到了一代又一代的C语言程序员的验证。随着C语言的不断更新,本书也不断重印,以适应新的需求。

国内无数读者选择了这本书以后,便立刻抛弃了原先这些老旧落伍的教材,真正在本书的引导下无压力畅游C语言编程。作者使用诙谐的语言与简约的图示与代码把这些“高深莫测”的概念与技巧娓娓道来,把它们分析成一个个简单的内容模块让读者较为轻松地理解和把握。

而且,作者除了告诉读者哪些是正确的,更告诉读者哪些是错误的,把这些错误的操作展示下来,让读者全方位地去认识和理解C语言。为什么正确?为什么错误?错误会带来什么问题?这些作者就会详尽而清楚地讲解下来。

动手是编程最重要和最快的学习方法,本书中带有大量的示例代码,并且针对C11进行了更新,读者可以照着示例代码自己键入到编辑器中,得到真实准确的运行结果。在操作的过程中,真正去理解代码的作用与对应的知识内容。

更重要的是,本书还提供了配套的电子版和在线练习实验环境,轻松便捷!此之外,本书的所有章节都附送了对应的习题,读者在学完一章内容以后,可以借助习题检验自己的学习进度,看自己对于这部份内容把握程度怎样。

现在,这本书还得到了重大升级!有了书课包的新方式!

▲全新升级!书课包一体化学习

使用书课包你们可以一边看书,一边听课程讲解,一边在老师的率领下进行代码实操。多角度地去理解和认识C语言,多个维度进行C语言学习。

《C Primer Plus 第6版 中文版》与本书专门的视频课程《C Primer Plus官方视频剖析》有了全面的升级:书、课以一种有效的方法结合,搭配线上编程环境,提供了一个全方位立体的学习环境。

“书课一体”的新模式,不仅仅可以减少读者学习难度,更可以让读者对于书中的知识点有更深的理解,达到事半功倍的学习疗效。

这种“书课包”的新方式,提供了更多学习资源,包括:

c语言在线编译器手机
上一篇:陈翔六点半:初心不忘,始终如一 下一篇:没有了