首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么没有任何语言可以代替C来写操作系统?就因为C的速度快?

金属线的物理迷宫称为二极管,晶体管,电阻器和电容器,它们通过传递电压来执行布尔逻辑,算术运算,并最终寻址所有数据以转换数据。二进制数字字符串是物理硬件中电压状态的代理。

硬件仅表示电压状态。 C所做的全部工作是为程序的蓝图定义一个受限语法中的英文文本单词,并将其翻译成二进制数字字符串。计算机只理解那些二进制数字。除了一系列文本文件外,计算机不知道C是什么。

刚运行二进制的计算机可以修改Python,JavaScript或任何其他语言,以便直接产生正确的二进制数字序列。那甚至不是理论上的。你能做到这一点。 C不是计算机。当您考虑一台真正的计算机时,您会意识到它是一个用于定义和解释数据序列的系统。一种机械设备,它使用电来通过对二进制序列达成一致的解释来翻译命题。

语言作为蓝图

汇编程序是CPU制造商提供的一种语言,他们在其中定义了许多有意义的词和操作,以使您可以访问他们定义的CPU(以及扩展的系统)可能具有的尽可能多的功能。对于许多实际用途而言,字词过多。但是它存在是件好事。

C为软件编写者总结了汇编器,其着重点在于访问计算机功能的最基本方面。如前所述,任何一种语言都可以做到这一点,大多数计算机语言都间接地总结了汇编程序代表的标准。

汇编程序代码必须转换为那些二进制数字字符串。我们通常称汇编程序为低级,但这是主观的。从直接写二进制数字的角度来看,它是高级的。 C使编写可以清晰映射到二进制结构的程序蓝图的过程比在Assembler中更方便。 C不会创建实际的计算机代码,而只是创建蓝图。编译器和链接器生成计算机可以运行的实际代码。

编码操作系统

为什么要使用C作为操作系统?在硅的某个方形区域中只能存在这么多的电压/能量。翻译,硬件大小限制。计算机的启动代码必须紧凑。启动BIOS的软件将开始硬件的识别,并为随后加载的操作系统提供挂钩,其大小受到必要性的限制。引导加载程序位于硬盘驱动器的开始位置。它是BIOS运行的程序,引导加载程序决定要启动的操作系统。基本上是连锁反应。全部为二进制。具有大小要求和确定性。

代码确定性

除了它们的设计支持某些情况外,没有什么能阻止C成为Web开发语言和JavaScript成为系统语言。 C被定义为标准,以便翻译正确编写的C代码的适当编译器将生成满足这些标准的代码。定义其他许多语言的方式根本就不是当您使用编译器来翻译它们时会产生适当约束的二进制代码的方式。

如果我在JavaScript中使用原型声明,是否会创建我可以在操作系统上下文中依赖的代码类型?评估实际上使我朝着具有非确定性的自我修改代码的方向迈进了呢?我可以在编译器中优化使用eval吗?我可以像使用C的对齐类型约定那样在JavaScript接口中很好地约束它吗?

一旦您承诺使用C之类的语言,则意味着最好建议需要通过代码访问服务的代码使用兼容的调用约定和应用程序二进制接口进行接口。可以与操作系统的C代码很好地啮合的庞大的C代码主体意味着更少的集成工作和更大的数据交换确定性。

切换到另一种语言可能会导致放弃数十年的代码。此代码中的许多代码都有安全性问题和其他缺陷,但是在功能范围内,它可以正常工作。过渡的情况将需要满足高标准,以证明这种重大变化是合理的。我都赞成这样的改变。

备择方案

C的积极属性意味着它已成为一个值得信赖的工具,可以为高层(相对于Assembler)创建操作系统和硬件访问例程的蓝图。 C语言设计的缺点,也许是它试图总结的机器模型的反映,自然而然地编写了安全性较差的代码,这是很容易做到的。特别是如果您从Web复制和粘贴。

用Lisp编写操作系统听起来是最好的主意。特别是基于那些积极倡导Lisp的人的主张。 Lisp并未映射到系统定义中首选的抽象,更大的流行趋势证明了这一点。

命令性语言的统一性。 对于可以代替操作系统的C的语言,人们进行了大量的研究。 领先的竞争者是Rust and Go。 他们似乎是取代C的最实用的候选人。我怀疑他们在适用于C的每种情况下都能做到这一点,但时间可能表明它们并不是很行。

一切都在蓝图中

编程语言是蓝图。 一些蓝图说明了每件事应该如何完成。 其他蓝图涉及应该做什么。 编译器和链接器将蓝图转换为计算机实际运行的代码。 一串二进制数字,对机器产生某种意义,以产生您设计的效果。 C成为了蓝图规范,成为了作为操作系统的城市的主要建筑规范。 替换语言意味着您可能需要替换其他所有基于该语言的内容。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210322A0EHYC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券