模范爸爸|为什么使用C ++而不是C#编写Windows?
【模范爸爸|为什么使用C ++而不是C#编写Windows?】
也许很多人不理解为什么Microsoft使用C ++而不是自己的C#编写Windows?其实原因来说也算很简单吧 , 首先Windows是在定义C#语言之前很久才开发的 。 即使当时可用 , C#也不是用于实现操作系统的适当语言 。
本文插图
Windows桌面和服务器操作系统的现代版本的代码库始于1988年的NT项目 , 当时新的32位抢占式多任务操作系统的代码从零开始 。 选择的编程语言主要是C , 其中一些C ++用于GUI组件 , 以及一些汇编语言 。 基于此代码的操作系统于1993年首次发布 , 并带有Windows NT Workstation和Windows NT Server的第一个版本 。 NT和2000的所有版本都基于此代码 , Window Server的所有版本(1993年至今)以及从Windows XP开始的所有桌面Windows版本(2001年至今)都基于此代码 。
本文插图
Windows随附的某些更高版本的用户模式应用程序已用C#实现 , 但大多数系统仍使用C和C ++ , 并带有一些汇编语言 。
在Windows NT项目启动十二年后的2000年之前 , 还没有完全定义C#语言 。 (严格来说 , NT项目最初是NT OS / 2 , 但是当16位Windows 3进入市场时 , 该项目转移到了以Windows为中心的焦点 。 )
C#通常不会编译为本机代码 。 它被翻译为中间CIL语言 , 然后在执行程序时进行解释和或及时编译 。 这种语言以及其他类似语言并不真正适合于实现操作系统 , 因为这些操作系统需要直接在硬件上运行 , 管理页表 , 管理中断等 。 C和C ++通常可编译为高度优化的本机不需要运行时解释器或即时编译器的代码 , 更适合于实现操作系统 。 C#从未被设计为系统编程语言 。 在开发用户模式应用程序和服务时 , 它的重点更多地放在安全性和生产率上 。
本文插图
顺便说一句 。 NET Framework支持C#和其他语言 , 一部分以C#实现 , 一部分以C和C ++实现 。 它调用Windows操作系统提供的API 。
即使今天有一个C#编译器生成的高度优化的本机代码 , 但回过头去重写一个大型项目却只是为了使其成为一种更新的编程语言 , 几乎没有任何意义 。 由于有成千上万的代码行需要重写和完全重新测试 , 因此成本和风险都很高 , 收益几乎为零 。 做这样的事情还没有商业案例 。 只要现有语言得到完全支持并提供了出色的工具 , 实际上就没有理由用“较新的”语言重写代码 。
本文插图
最后 , Microsoft从1975年的第一天起就从事编程语言业务 。 多年来 , 它的主要业务是为各种基于微处理器的系统开发编程语言解释器 , 编译器和汇编器 。 自1980年代以来 , 他们拥有自己的C和C ++编译器以及其他语言(例如BASIC , FORTRAN等) 。 他们的C和C ++编译器非常稳定和成熟 , 并且会不断发展 , 从而生成高度优化的机器代码 。
本文插图
也许很多人会怀疑我是机翻 , 然后呢 , 我想给大家说下 , 因为也会去看外国的一些文章 , 而这篇里面有些理解是一位曾在Microsoft的Windows NT组工作的一位人员 。 所以很多时候 , 因为我自己的原因 , 翻译的不好 , 所以还希望大家见谅 。 谢谢大家 。
推荐阅读
- 兔子|兔兔这么可爱,为什么要吃屎?
- 埃及金字塔|探秘尼罗河|为什么会有人觉得,埃及金字塔是伪造的?
- 减肥|较真丨减肥产品含违禁药再被曝光,为什么说滥用这些产品是在玩命?
- 酿酒|用真全粮酿酒机器做酒,为什么发酵时间越长口感越好?
- 为什么商家卖的馒头又白又胖?里面加了什么东西,今天我来告诉你
- 慢性乙肝|慢性乙肝,为什么要等到转氨酶高,才抗病毒治疗?医生告诉你原因
- 保罗·狄拉克|为什么物质比反物质多?
- 月球|站在月球上眺望地球,为什么有人会觉得恐惧?他们看到了什么?
- 肾病|为什么肾病一发现就是晚期?
- 生殖隔离|黄种人、白种人、黑种人之间为什么没有生殖隔离?
