Apple Watch|为什么用C语言编写操作系统?为什么不使用其他语言?


Apple Watch|为什么用C语言编写操作系统?为什么不使用其他语言?
文章图片
Apple Watch|为什么用C语言编写操作系统?为什么不使用其他语言?
文章图片
Apple Watch|为什么用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代码主体意味着更少的集成工作和更多的数据交换确定性 。


推荐阅读