推广 热搜: csgo  vue  2023  angelababy  gps  信用卡  新车  htc  落地  控制 

C语言之父和Linux之父,谁更伟大?

   2023-08-25 网络整理佚名2270
核心提示:后来在写出第一个版本的Unix时,觉得Unix上需要一个新的系统编程语言,他创造了一个B语言。不知道你有没有想过,大家都用C语言或基于C语言的语言来写编译器,那么世界上第一个C语言编译器又是怎么编写的呢?在C语言被用作系统编程语言之前,也用过B语言编写过操作系统。一个是基于B语言和unix系统的需求出发创造了c语言,

前言

在计算机软件领域,有很多做出过重大贡献的神人和人,比如:《计算机编程的艺术》(The Art of)的作者——Knuth; Unix、Go编程语言、B编程语言、UTF-8编码的作者,ed文本编辑器Ken的创建者和设计者; GNU项目发起人,Emacs、GCC、GDB发明者,GU Make Free公司创始人; java之父、James、Linux之父、git作者Linus ; C语言、Unix作者 Rich等。

我们可以列出很多大神,在那些闪亮的明星中,最闪亮的就是Linus和Linus。

那么两者谁的贡献更大呢?

这是一个很难回答的问题,就像关公打秦琼一样,仁者见仁,智者见智。

先介绍一下两位大神吧。

一,

C语言之父,UNIX之父。

1) (1941年-2011年10月12日)

曾任朗讯科技贝尔实验室计算机科学研究中心系统软件研究部主任。 1978年,他与Brian W一起出版了名著《C程序设计语言(The C)》,这本书已被翻译成多种语言,被誉为c语言的圣经。

2011年10月12日,20年同事罗布·派克从加利福尼亚州飞往新泽西州探望他,得知他去世了。 由于他独居,具体死亡时间无法得知。 70岁时。

丹尼斯·里奇的一生

丹尼斯·里奇一直单身

2)C语言

Rich 创建了 C 编程语言和 Unix 操作系统。 无论这些项目中的哪一个都能让他在计算机界脱颖而出。 而丹尼·里奇开发了两个重大项目,这在计算机史上可以说是绝无仅有的。

事实上,C语言在各种软件程序、嵌入式系统开发、操作系统中应用最为广泛。 同时,C语言也影响了大多数现代主流编程语言。

C语言时间线

20世纪60年代末,贝尔实验室对计算机系统的研究进入了繁荣时期。 麻省理工学院、贝尔实验室和贝尔实验室的一个联合项目以失败告终(1969 年左右)。

正是在这个时期,Ken开始编写替代方案,他希望根据自己的设计构建一个舒适的计算系统(即Unix)。

后来,在编写Unix的第一个版本时,他觉得Unix上需要一种新的系统编程语言,他创造了B语言。 B语言是没有类型的C语言。 准确地说,B语言是将BCPL压缩到8K内存中,并经过其个人大脑过滤而产生的语言。

由于B语言的一些问题,仅用于编写一些命令工具。 正是在这个时期,在B语言的基础上,进行了新的设计和改进,从而C语言诞生了。

凯瑞

1973年,C语言基本完成,从语言和编译器层面就足以允许和使用C语言重写Unix内核。 后来Unix逐渐在一些研究机构、大学、政府机构中流行起来,进而带动了C语言的发展。

1978年,K&R编写的《The C》出版,进一步推动了C语言的普及。

3) UNIX

UNIX时间线

Unix的诞生与C语言的广泛传播和使用密切相关。

上面的时间线只显示了与 C 语言同时诞生的 Unix 的前几个版本。

后来Unix被用于学术界和政府组织,也正是因为Unix的流行和繁荣,才使得C语言得到了广泛的传播和使用。

20 世纪 80 年代,C 语言的使用广泛传播,编译器几乎适用于所有机器架构和操作系统。 特别是,它作为个人计算机的编程工具已变得非常流行,不仅受到这些机器的商业软件制造商的欢迎,而且受到对编程感兴趣的最终用户的欢迎。

UNIX的分支

Unix分支,太震撼了。

让我们看一下一些最著名的分支:BSD、minix、Linux、Mac OS X...

可见Unix对当前操作系统的影响,其地位犹如《周易》,位居群经之首。

周易

4)第一个C语言编译器是如何编写的?

不知道你有没有想过。 每个人都用C或基于C的语言编写编译器,那么世界上第一个C语言编译器是如何编写的呢? 这不是一个“先有鸡还是先有蛋”的问题……

回顾C语言的历史:B语言是在BCPL的基础上发展起来的,现在的C语言是在B语言的基础上发展成功的。 在C语言被用作系统编程语言之前,操作系统也是用B语言编写的。 可见,在C语言实施之前,B语言就已经可以投入使用了。 所以完全有可能第一个C语言编译器的原型是用B语言或者B语言和PDP汇编语言的混合语言编写的。

我们现在都知道B语言的执行效率比较低,但是如果全部用汇编语言编写的话,不仅开发周期长、维护困难,更可怕的是失去高级编程语言所需的可移植性。

所以早期的C语言编译器采取了一种比较棘手的做法:先用汇编语言编写一个C语言子集的编译器,然后通过这个子集递归完成一个完整的C语言编译器。

因此,创建第一个 C 编译器与创建 C 语言一样困难。

如果你还是不明白,比如说我们要盖一座大楼,图纸什么的都已经设计好了,我们就要开始施工了。

然后是建造大楼所用的各种设备和工具:塔吊、脚手架、钳子、螺丝刀、水平仪、卷尺等,这些所使用的所有工具都是无数公司经过多年不断研发的产品。 标准。

编译C语言的编译器就相当于建造一座大楼所需的各种工具。 不仅自己设计了C语言,还设计了从头到尾的整套工具。

这项工作创意十足,参考文献不多,难度可想而知。

2.莱纳斯(1969年12月28日-)

Linux之父,Git之父。

1)莱纳斯(1969年12月28日-)

莱纳斯

芬兰赫尔辛基人,著名计算机程序员、Linux内核发明者和项目合作者,毕业于赫尔辛基大学计算机系,曾就职于美国加州硅谷 () 1997年至2003年,现就职于开放源代码开发实验室(OSDL:Open Labs, Inc),致力于Linux内核的开发。 他和妻子托芙(托芙,前芬兰女子空手道冠军)**育有三个女儿。

莱纳斯

亮点:“妻子托芙(Tove,前芬兰女子空手道冠军)”。

继祖父的大学教学生涯之后,我也成为赫尔辛基大学的助教,并被指派在今年秋季学期开始用瑞典语教授“计算机科学导论”。

就这样我认识了塔芙。 她对我生活的影响甚至超过《操作系统:设计与实现》一书对我的影响。 不过,我不会向您介绍这种效果的细节。

塔夫是当时我班上十五名学生之一。 她已经拥有学前教育学位(与美国不同,芬兰要求学前教师必须拥有大学学位),她想学习计算机,但无法取得与班上其他人相同的进步。 当然,最后她还是上了。

我们的关系的过程是如此简单。

那是 1993 年秋天,互联网还没有流行起来。 于是,有一天,我这堂课的作业就是给我发一封电子邮件(这在今天看来会很可笑),我对学生们说:“今天的作业:给我发一封电子邮件。”

其他人的电子邮件要么是记录用的短语,要么是没有多大意义的注释。

只有塔夫,她约我和她出去。

我娶了第一个通过电子方式接近我的女人。

塔夫是一名幼儿园老师,曾六次获得芬兰空手道冠军。 我认为她的家庭很独特,虽然不像我们的那么奇怪。 她有很多朋友。

从我们在一起的第一刻起,她对我来说就像是完美的女人。

经过几个月的约会,我和我的猫兰迪搬进了她的公寓。

搬进来后的前两周,我什至没有碰过电脑。

不算服兵役,这两周是从我十岁那年拿着电脑坐在爷爷腿上开始的,

自从离开电脑以来最长的时间。

不必详细说明,但这是我在服兵役之外离开计算机最长时间的一次。

---摘自linux自传《just for fun》。

只是为了好玩

爷爷和奶奶的相遇是如此浪漫,他们的第一个孩子应该在那两周出生。

2) 吉特

Git是一个开源的分布式版本控制系统,可以有效、快速地处理从很小到很大的项目版本管理。 它是目前世界上最先进的分布式版本控制系统。 Git是Linux内核开发的版本控制工具。

与常用的版本控制工具CVS等不同,它采用分布式版本库的方法,无需服务器端软件的支持,这使得源代码的发布和交流极其方便。 Git 速度很快,这对于 Linux 这样大的项目来说自然很重要。 Git 最好的一点是它的合并跟踪(merge)功能。

Git 是一个非常流行的分布式版本控制系统。 它与其他版本控制系统的主要区别在于,Git 只关心文件数据整体是否发生变化,而大多数其他版本的系统只关心文件内容的具体差异。 系统(CVS、、、等)记录每次更新了哪些文件、更新了哪些行。

Git的另一个优点是大部分操作都可以在本地进行,每个本地都可以从服务器获取完整的仓库代码,在没有网络的情况下仍然可以修改和使用大部分命令。 方便的时候与服务器同步,这样可以更好的实现多人联合编程。

git

2002年,Linux系统已经发展十年了。 庞大的代码库让 Linus 很难继续手动管理。 社区里的兄弟也对这种方式表示了强烈的不满,于是Linus选择了一个商业版本控制系统的拥有者,出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大局面在2005年被打破,因为Linux社区聚集了很多伟人,难免沾染上梁山好汉的一些江湖习惯。

“Samba的开发者试图破解的协议(其实他并不是唯一这样做的人)被公司发现了”(监控工作做得很好!),所以公司很生气,想要“收回Linux社区的免费使用权。”

Linus本可以向公司道歉,并承诺以后会严格管教兄弟们,嗯,但是Linus不是普通人,“道歉是不可能的,这辈子也不可能。”

于是Linus花了“两周”用C语言写了一个分布式版本控制系统,这就是Git! 一个月之内,Linux系统的源代码已经由Git管理了!

“牛”是如何定义的? 你可以体验一下。

git

Git 很快成为最流行的分布式版本控制系统,特别是在 2008 年网站上线时,它为开源项目提供免费的 Git 存储,无数开源项目开始迁移到,包括 PHP、Ruby 等。

,一个面向全世界开发者的安全空间,在这里你可以分享你的代码供大家使用,也可以和全世界的开发者一起构建和改进你的代码。 现在越来越多的公司将他们的代码放在服务器上。

第一次使用易扣君后,我就爱不释手,对其设计理念印象深刻,因为Git管理软件版本实在是太方便了。

通过研究和学习一个软件产品是如何从最初的代码库慢慢迭代到成熟的产品,这是提高你的技术水平最快的方法。

3)Linux

Linux 时间线

Linux的时间线比较长。 详情请复制以下链接到您的浏览器:

1991年

1992年

1993年

1994年

1995年

1996年

1997年

1998年

1999年

2000年

2001年

2003年

2004年

2007年

2009年

2011年

2013年

4)《大教堂与集市》

Linus发明Linux的过程有点像把一个简陋的集市建成一座宏伟的大教堂的过程。

《大教堂与集市》一书分析了这一设计理念。

大教堂和市场

世界上有两种建筑:“一种是市场”,那里每天都开放,从无到有,从小到大;“一种是市场”。 另一个是“大教堂”,需要几代人的心血才能建​​成。 ,投入使用。

“当你建造一座新建筑时,你可以采用集市的模型,也可以采用大教堂的模型。”

一般来说,集市的特点是开放式建设、成本低、周期短、质量一般; 大教堂的特点是封闭式建设、成本高、周期长、质量优良。

埃里克总结说,市场要成为大教堂,有几个先决条件:

你不能从头开始建立一个集市,你必须首先有一个原始的项目。 (很明显,这是一种风格上的代码。)您的原始项目可能有错误,但它必须有效。 (它可能是粗糙的、有缺陷的、……。它不能失败的是运行。)您必须向用户展示一个可行的前景,并说服潜在的合作者,它将在可预见的未来成为一个真正的前景。 漂亮的东西。 (当你开始-,你需要能够的是,并且合作-它可以在...中变得整齐。)项目的主持人不一定是天才,但他必须能够认识到他人想法的卓越性。 (不是能够,而是能够提出好的想法。) 项目的主持者必须具有良好的人际关系、沟通能力和人格魅力。 只有这样,你才能吸引别人,让别人对你所做的事情感兴趣,并愿意帮助你。 (A 或 必须有良好的 和 。)

Eric还总结了一些成功的充分条件。

项目首先必须是你感兴趣的,但最终对其他人有用。 将用户视为合作者。 尽可能快、经常地进行改进,并更多地倾听用户的意见。 坚固的结构比优雅的设计重要得多。 换句话说,结构第一,功能第二。 保持你的项目简单。 当设计完美的时候,不是东西不能再增加,而是东西不能再减少。

开放式项目如果管理和运行得当,可以比同等的封闭式项目成功得多。

3. 比较

两位大神的一生成就我已经介绍过了,下面就来评论一下。

其实谁更强,谁的贡献更大,作为一个初级程序员,我只能崇拜他们,所以不敢下结论谁更强,我只能从他们的工作内容和主要成就来表达我个人的看法,不足之处,请指正。

1. 结果

先说说C语言之父 Rich(M.),他对C语言的贡献是有目共睹的,无需多言。

他除了是C语言的主要发明者外,还因其对Unix操作系统的重大贡献而被称为Unix之父。 然而,他的贡献远非如此。 Unix取得巨大成功后,他们在20世纪80年代开始开发名为Plan 9的操作系统,其目的是解决Unix中的一些问题。

在接下来的几十年里,该项目演变成一个名为 Go 的项目和一种名为 Limbo 的新语言,它被广泛认为是当前流行的编程语言 Go 的前身。

从上面可以看出,丹尼斯·里奇的贡献是多方面的,除了编程语言和操作系统之外,也因此获得了无数奖项,其中最著名的就是“图灵奖”(1983年)和“计算机先锋奖”(1994年)。

我们来说说Linux之父Linus,他的贡献主要是开发了Linux操作系统的内核,然后开源给全世界,最终形成了一套对计算机行业产生巨大影响的操作系统,并因此荣获计算机先锋奖(2014年)。

Git于2005年在两周内开发完成,这款软件版本管理软件影响了全球无数的软件开发者。

从结果来看,两者确实不相上下。

2. 难度

从难度上来说,编译器比操作系统困难得多,而且linux也不是从头开始,它继承了unix系统内核,使其适应PC兼容机,而我们知道C语言之父M,也是Unix的创造者之一,发明了C语言之后,他又用C写了Unix。Linus对他来说是他的小弟,写操作系统对他来说并不麻烦。

现代linux感觉庞大,因为它们是一个拥有海量应用程序和中间件的平台,而编译器感觉很小,但对于专家来说,“编译器的难度比操作系统高得多”。

操作系统需要大量的劳动力来开发上述应用程序,是软件行业的劳动密集型产品,而编译器则更像是大师的艺术品。 编译器是生产其他软件的工厂,对它的要求非常高。

其实我们国家很早就能做操作系统了。 985大学专业的本科生可以提交非商业操作系统作业,但自己的编译器还是零,学完编译原理后也没有写编译器。 的。

3. 编程层面

从他们的工作成就来看,我认为丹尼斯·里奇更厉害。 他的成就是多方面的,其中最关键的一点是Linux(minix,Unix的变种)的系统原型和编程语言(C语言)。 两者均由丹尼斯·里奇 ( ) 贡献。 但如果单从编程能力来说,他们已经熟练掌握了他们这个级别的编程,就很难区分优劣了!

C语言之父相当于自己造了一台挖掘机。 人们可以用他的挖掘机做他们能做的事。

linux之父相当于带头挖了几个基坑,然后一大批自备砖头、钢筋、混凝土的朋友一起盖起了一座大楼。 而且因为莱纳斯是领导者,所以这座大楼的名字就是他起的,他就是看门人。

而且,瑞奇同志已经做过盖大楼(写操作系统)这样的事情了,而且是用自己和两个小伙伴造的机器做的!

应该说,Linus是M面前的弟弟。

4. 对社会的直接贡献

两人都为社会进步做出了巨大贡献。 如果硬要比较的话,我个人觉得linux和git的直接贡献更大。

没什么好说的,去各大软件公司看看就知道,几乎没有Linux-free的。

Linux的应用领域非常广泛:

Linux在服务器领域的发展

随着开源软件在全球的影响力不断增强,Linux服务器操作系统在整个服务器操作系统市场格局中占据了越来越多的市场份额,并形成了大规模市场应用的局面。 并保持较快的增长速度。 特别是在政府、金融、农业、交通、电信等国家重点领域。 另外,考虑到Linux的快速增长以及国家相关政策的支持,Linux服务器产品一定能够冲击更大的服务器市场。

据权威部门统计,Linux在服务器领域已经占据了75%的市场份额。 与此同时,Linux在服务器市场的快速崛起引起了全球IT行业的高度关注,并以强劲的势头成为服务器操作系统领域的中坚力量。 力量。

Linux在桌面领域的发展

近年来,特别是在国内市场,Linux桌面操作系统的发展趋势非常迅速。 国内系统软件厂商如麒麟Linux、红旗Linux、深度Linux等推出的国产Linux桌面操作系统已广泛应用于政府、企业、OEM等领域。 此外,SUSE还陆续推出了基于Linux的桌面系统,尤其是Linux,积累了大量的社区用户。 但从系统的整体功能和性能来看,Linux桌面系统与该系列还有一定的差距,主要表现在系统易用性、系统管理、软硬件兼容性等方面。软件的丰富性。

Linux在移动嵌入式领域的发展

Linux的低成本、强大的定制功能以及良好的可移植性使得Linux在嵌入式系统中得到广泛应用。 目前,Linux广泛应用于手机、平板电脑、路由器、电视、游戏机等领域。 移动设备上广泛使用的操作系统构建在 Linux 内核之上。 目前,它已成为全球最流行的智能手机操作系统。 据权威部门2015年最新统计,该操作系统全球市场份额已达84.6%。

此外,思科还在网络防火墙和路由器中采用定制化Linux,阿里云也开发了一套基于Linux的操作系统“YunOS”,可用于智能手机、平板电脑和互联网电视; 常见的数字录像机、舞台灯光控制系统等都逐渐使用定制版本的Linux来实现,这一切都得益于Linux的强大和开源

Linux在云计算/大数据领域的发展

互联网产业的快速发展,促使云计算、大数据产业的形成和快速发展。 作为基于开源软件的平台,云计算和大数据占据了Linux的核心优势; 根据Linux基金会的研究,86%的企业已经使用Linux操作系统构建云计算和大数据平台。 目前Linux已经开始取代Unix成为云计算和大数据平台最流行的操作系统

国产Linux操作系统发展现状

目前国内除了学校和研发机构参与Linux操作系统的研发外,主要的Linux发行版还有红旗、众笔、工创、新华、拓林思等,它们都有桌面版和服务器版两个版本; 国内各个发行版都是基于国际社区开发的版本,基于国际社区的成果,在界面定制上做了一些工作,但没有掌握核心技术,与国际Linux还有一定的技术差距操作系统发行、技术积累不足、Linux发展面临后劲不足等问题

国外Linux操作系统发展现状

国外Linux操作系统的发展现状国外主要发行版有Linux、Linux、Suse等,它们都提供桌面版和服务器版两种不同的版本。 Linux操作系统在服务器领域发展相对成熟,桌面领域发展相对缓慢,嵌入式领域发展相对较快。

可以说,我们的生活已经离不开Linux了。 大多数软件工程师都会使用Linux,但是我们一定要记住,这些都是基于C语言的。

5、个人理解

其实他们都不是从0开始的,一个是根据B语言和Unix系统的要求创建了C语言。

一是基于minix和unix的思想以及当时的机会来开发linux。 他们都是站在前人的肩膀上取得成功的。

在彭老师看来,更重要的是,因为他用C语言开辟了一个新世界。 从诞生到现在,一直稳居语言排行榜前三名。 已经快50年了,我们仍在使用它。

但Linux在服务器和移动端的占有率太高,直接贡献更多。 linus最强大的一点是它协调了全球数百万开发者对Linux的开发和维护,这是比较困难的。

彭老师心里可能更佩服Linus,尤其是他那句话“Talk is Cheap!” 显示你的代码!""!

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON