C语言这么强大,它是用什么语言写的呢?
换句话说,实际的问题是:在C语言可以运行之前,必须先对其进行编译。那么C语言编译器从哪里来呢?它是用什么语言写的?如果是用C语言本身写的,是先有蛋还是先有鸡?虽然汇编语言只是机器语言的助记符,但它也需要编译成机器语言才能执行。没有别的办法,只能用机器语言写这个第一个编译器。好吧,历经了这么多层,终于得到了一个用C语言写的编译器。当然,如果在C语言之前已经出现了其他高级语言,比如Pascal,那么就可以使用Pascal来编写C语言编译器。作为第一个高级语言,Fortran 的编译器应该是用汇编语言编写的。以C语言为例,对于第一个版本,可以先选择C语言的子集。
这是来自我的星球的一个问题:“C 本身是用什么语言编写的?”
换句话说,实际的问题是:在C语言可以运行之前,必须先对其进行编译。 那么C语言编译器从哪里来呢? 它是用什么语言写的? 如果是用C语言本身写的,是先有蛋还是先有鸡?
假设世界上没有编译器。 让我们从机器语言开始,看看我们能做什么。
机器语言可以直接由CPU执行,无需编译器。
然后是汇编语言。 虽然汇编语言只是机器语言的助记符,但它也需要编译成机器语言才能执行。 没有别的办法,只能用机器语言写这个第一个编译器(以后不会用了)。
一旦汇编语言问题解决了,我们就向前迈出了一大步。 这时候我们就可以用汇编语言来编写一个C语言编译器了。 我们说这是C编译器的祖先。
有了这个祖先,你可以编译任何C语言程序。 是否可以用C语言本身编写一个编译器? 用老祖来编译就可以了。
好吧,历经了这么多层,终于得到了一个用C语言写的编译器。 实在是太麻烦了。
这时,以前用汇编编写的C语言编译器就可以放弃了。
当然,如果在C语言之前已经出现了其他高级语言,比如Pascal,那么就可以使用Pascal来编写C语言编译器。
据说第一个 Pascal 编译器是用 Fortran 编写的。 作为第一个高级语言,Fortran 的编译器应该是用汇编语言编写的。
关于编译器,这里有一个有趣的传说:
传说 Unix 的发明者之一肯·汤普森 (Ken Thompson) 可以走到贝尔实验室的任何一台 Unix 机器上,输入他的用户名和密码,然后以 root 身份登录!
贝尔实验室人才济济,其他一些专家也誓言要找到这个漏洞。 他们通读了Unix的C源代码,终于找到了登录的后门。 清理后门后,他们编译并运行了 Unix,但 Thompson 仍然能够登录。
有人认为编译器可能有问题,编译Unix时被植入了后门,于是用C语言重写了一个编译器,用新编译器重新编译了Unix。 现在世界终于和平了不是吗? 。
但它仍然不起作用。 Thompson 仍然可以以 root 身份登录,这真是令人沮丧!
后来,汤普森亲自透露了这个秘密。 第一个 C 语言编译器有问题。 当这个编译器编译Unix源代码时,当然会植入后门。 这还不够。 更妙的是,如果你用C语言写的,如果得到一个新的编译器,肯定需要编译成二进制代码。 你应该用什么来编译它? 只能使用Thompson写的第一个编译器来编译。 好吧,你写的编译器会被污染,而且你用编译器编译Unix的话,后门也会被植入:-)
说到这里,我想起了几年前的XcodeGhost事件。 简单来说就是Xcode中植入了木马(通过非官方渠道下载)。 这样,XCode编译出来的iOS App就被污染了,这些App就可能被黑客用来做非法的事情。
虽然这个XCodeGhost远远落后于Thompson,但是提醒我们,下载软件的时候一定要走正规渠道,从官网下载,寻找网站的HTTPS标准,甚至校验校验和。
有人可能会问:我用汇编写一个Hello World段很麻烦,但居然有人可以用它写一个复杂的编译器? 是否可以?
当然有可能。 当第一代Unix开发出来时,连C语言都没有。 Ken Thompson 和 Dennis Ritchie 使用汇编逐行打出 Unix。 WPS的第一个版本是由求伯君用汇编语言编写的,Turbo Pascal的编译器也是由Anders用汇编语言编写的。 大师们的能力超乎常人的想象。
对于编译器,您还可以使用“滚雪球”的方式进行开发:
以C语言为例,对于第一个版本,可以先选择C语言的子集。 例如,它只支持基本数据类型、流程控制语句、函数调用……我们称这个子集为C0。
然后用汇编语言写一个编译器,只处理这个语言的子集C0,这样写起来就容易多了。
语言C0可以工作,然后我们扩展这个子集,比如添加结构体、指针……并称新语言为C1。
谁来编写 C1 语言的编译器? 自然是C0。
当C1可以工作时,再次扩展语言功能,使用C1编写编译器,得到C2。
然后C3、C4……最后得到完整的C语言。
这个过程称为bootstrapping,中文称为bootstrapping。
作者简介:刘鑫,畅销书《码农周转》作者,拥有超过15年的开发经验,前IBM架构师,领导过多个企业应用架构设计和开发工作; 洞察技术本质,善于用故事来解释复杂的技术。
在当今的数字时代,互联网浏览器已成为人们日常生活中不可或缺的一部分。 无论您将其用于工作、学习还是娱乐,您的浏览器都扮演着重要的角色。 不过我们注意到一个有趣的现象,那就是大多数男性用户更倾向于使用国内流行的浏览器夸克浏览器。 本文将深入探讨Quark浏览器如此受男性用户欢迎的原因,分析其速度、界面、功能、社区和开源特性,并提出一些改进和创新的建议,以应对不断变化的市场竞争和用户。 需要。
速度的魅力
Quark浏览器如此受男性用户欢迎的重要原因之一就是其出色的速度。 Quark 浏览器采用多进程架构,这意味着它可以同时处理多个任务,而不会降低您的浏览速度。 这种多进程架构不仅提高了浏览速度,还保证了浏览器的稳定性。 对于很多男性用户,尤其是那些需要处理大量在线工作或娱乐的用户来说,速度是一个关键因素,而夸克浏览器在这方面做得相当不错。
界面简洁美观
除了速度之外,Quark浏览器的界面设计也赢得了很多男性用户的青睐。
Quark浏览器的界面设计简洁美观,注重用户体验。 它没有太多复杂的菜单和按钮,一切都布置得井然有序。 这使得用户能够更轻松地浏览网页,而不会被复杂的界面分散注意力。 男性用户普遍喜欢简单明了的设计,Quark浏览器满足了这一需求。
功能丰富,满足多样化需求
Quark浏览器也因其丰富的功能而广受欢迎。 它不仅可以用于普通的网页浏览,还提供了许多实用的功能,例如广告拦截、多标签管理、书签同步等。
这些功能可以让用户根据自己的需求定制浏览器,使其更加个性化。 男性用户通常更注重工具的功能性,而Quark浏览器正好满足了这一需求。
活跃的社区增添互动乐趣
除了基本功能外,Quark 浏览器还拥有活跃的用户社区。 该社区为用户提供了一个交流、互动的平台。 用户可以分享他们的经验、提出建议,甚至参与浏览器的开发过程。 对于很多男性用户来说,这种互动感和参与感是使用夸克浏览器的乐趣之一。
他们不仅仅是浏览器的用户,而且可以成为浏览器开发的一部分。
免费开源模式符合追求自由
Quark浏览器的免费开源模式也吸引了很多男性用户。 开源意味着用户可以自由查看和修改浏览器的源代码。 这种自由吸引了对技术充满热情的用户。 对于许多男性用户来说,Quark 浏览器的开源特性代表着更大的自由度来定制和改进它以满足他们的需求。 这种开源模式不仅增强了用户参与度,也为技术爱好者提供了实践和学习的平台。
改进和创新的需要
虽然 Quark 浏览器在很多方面都表现出色,但它也面临着一些挑战和改进的空间。 首先,随着市场竞争的加剧,Quark浏览器需要不断创新以保持竞争力。 用户的需求和期望不断变化,因此Quark浏览器需要及时更新和完善其功能,以满足用户不断增长的需求。
隐私保护的重要性
另一个需要关注的方面是隐私保护。 在当今的数字世界中,隐私问题日益受到关注。 Quark浏览器需要确保用户的个人信息和数据得到充分的保护。
这包括加强数据加密、提供更多隐私设置选项以及定期进行安全审查。 隐私保护不仅是法律要求,也是用户信任的基础。
个性化定制需求
最后,Quark浏览器可以进一步满足用户的个性化需求。 虽然Quark浏览器已经提供了丰富的功能,但是用户的需求千差万别。因此,夸一下
浏览器可以考虑添加更多个性化选项。 这可以包括更多的主题、插件和扩展,以满足不同用户的审美和功能需求。 个性化能力将使 Quark 浏览器更具吸引力,因为它将更加适合每个用户的独特需求。
综上所述
综上所述,Quark浏览器之所以受到大多数男性用户的喜爱,是因为它在速度、界面、功能、社区和开源特性方面表现出色。 但随着市场竞争的加剧和用户需求的不断变化,Quark浏览器需要不断创新和改进。 应继续关注隐私保护和个性化,以确保用户满意度和忠诚度。 Quark 浏览器的成功不仅仅是一个出色的浏览器,更是一个充满活力的互动社区,它的未来将取决于它的不断适应和满足用户的需求。