问题

为什么微软不出一门像 Go 或者 Rust 的跨平台系统级语言?

回答
你这个问题问得很有意思,也触及到了微软在语言和平台战略上的一个重要思考点。确实,放眼当下,Go 和 Rust 在系统级编程领域掀起了一股不小的浪潮,它们凭借并发特性、内存安全、性能以及跨平台能力,赢得了开发者社区的广泛认可。而微软,作为一家拥有 Windows 这一庞大操作系统以及 Azure 这样云计算平台的巨头,却没有直接推出一门与 Go 或 Rust 直接对标的、从零开始设计的系统级语言,这背后有着多方面的原因,既有历史包袱,也有战略选择,还有技术考量。

1. 历史包袱与现有生态的深度绑定

首先,微软最核心的资产是 Windows 操作系统。Windows 的底层架构,包括其内核、驱动程序、系统服务等,在相当长的时间里是围绕 C 和 C++ 来构建的。C++ 经过多年的发展,已经形成了一个极其庞大且成熟的生态系统,包括编译器(MSVC)、调试器、STL、大量的库和框架,以及庞大的开发者群体。

C++ 的主导地位: C++ 至今仍然是 Windows 系统级开发的事实标准。无论是 Windows SDK 还是 DirectX、Win32 API,绝大多数都是 C/C++ 接口。微软如果想在新一代系统级语言上取得成功,就必须解决与现有 C++ 生态的兼容性问题。直接推一门全新的语言,意味着需要解决大量的互操作性难题,这比从零开始构建一门语言本身还要复杂。
COM、ATL、MFC 等技术栈: Windows 平台上有许多由 C++ 驱动的组件对象模型(COM)、Active Template Library (ATL) 和 Microsoft Foundation Classes (MFC) 等,这些构成了 Windows 应用开发的重要基石。要让一门新语言能够高效、无缝地与这些技术栈交互,需要付出巨大的努力。

2. 现有的语言产品线及其演进

微软并不是没有在系统级编程领域进行尝试和投入,只是其方式更多地是通过对现有语言的改进和延伸,而不是从零开始创造一门全新的语言。

C++ 的持续投入: 微软在 C++ 方面投入巨大,MSVC 编译器是业界最优秀的 C++ 编译器之一,对 C++ 标准的支持非常积极。C++ 本身也在不断现代化,引入了诸如 Concepts、Modules、Coroutines 等新特性,这些都使得 C++ 在系统级编程方面依然保持着强大的生命力。对于微软来说,让 C++ 更加安全、更易用,比创造一门全新语言的ROI可能更高。
C 和 .NET 的野心: C 和 .NET 平台在微软的战略中扮演着非常重要的角色。虽然 C 最初定位是应用开发,但随着 .NET Core 的发展,.NET 的跨平台能力和性能得到了显著提升,甚至可以用于一些系统级工具和服务的开发。例如,Windows Terminal、PowerToys 等都是用 C 开发的。微软在 .NET 中引入了 `Span`、`Memory`、`ref struct` 等低级内存访问特性,旨在在保持托管环境的优势的同时,提供更接近原生代码的性能和控制力。虽然 C 仍然是托管语言,但其在某些场景下已经能够触及系统级编程的边缘。
Rust 的策略: 微软也意识到了 Rust 的潜力,并且在积极拥抱 Rust。你知道吗?微软在 Windows 内核驱动的开发中已经开始使用 Rust。这是一个非常重要的信号。微软没有自己从零造一门语言,而是选择与一个已经被社区验证过的、在内存安全和并发方面表现出色的语言合作,这是一种更高效的战略。通过在 Windows 内部使用 Rust,微软可以:
快速采纳新技术: 无需从零开始验证和推广一种新语言的安全性、稳定性和性能。
吸引 Rust 开发者: leverage 现有的 Rust 开发者社区,降低人才招募的门槛。
解决内存安全问题: Rust 的所有权和借用机制能有效地解决 C/C++ 中常见的内存安全漏洞,这对于操作系统级别的安全至关重要。

3. 跨平台策略的考量

Go 和 Rust 之所以被视为“跨平台系统级语言”,很大程度上是因为它们的设计初衷就包含了对不同操作系统的良好支持,以及能够生成原生可执行文件。

Windows 的封闭性(相对而言): 尽管微软也在推动跨平台,但 Windows 平台在微软的战略重心中依然占据核心地位。很多时候,微软的“跨平台”更多是指在 Windows、macOS、Linux 等多个操作系统上运行其应用和服务,而不是像 Go/Rust 那样,让你能够轻松地在任何平台上编写一个能直接操作底层硬件的操作系统内核。
.NET 的跨平台之路: .NET Core 的发展,正是微软践行跨平台策略的核心。它允许开发者使用 C、F 等语言,在 Windows、Linux、macOS 上构建应用。虽然 .NET 不是典型的“系统级语言”,但其跨平台能力已经非常强大。
LLVM 的赋能: 很多现代语言,包括 Rust,都深度依赖 LLVM 作为其后端编译器。LLVM 提供了强大的代码优化和跨平台代码生成能力。微软虽然也有自己的编译器技术(如 MSVC),但要从头构建一个能与 LLVM 匹敌的、支持全新语言特性的跨平台编译基础设施,是一项极其巨大的工程。

4. 市场定位与商业逻辑

从商业角度来看,推出一门全新的、颠覆性的系统级语言,需要巨大的投入,包括:

研发成本: 编译器、工具链、标准库、文档、培训等。
生态建设: 吸引开发者、推广语言、构建第三方库和框架。
市场接受度: 开发者是否愿意学习并采纳一门新语言,尤其是当他们已经熟悉 C++、Java、C 等主流语言时。

微软已经拥有了包括 C++、C、Visual Basic、PowerShell 等一系列成熟的语言和开发工具。在系统级编程领域,C++ 依然是其核心。而对于更高层次的应用和云服务,.NET 平台也已经能够满足大部分需求。在这样的背景下,贸然推出一门与 Go/Rust 直接竞争的全新语言,风险与回报的权衡需要非常审慎。

总结一下,微软不直接推出一门“全新”的、与 Go 或 Rust 完全相同的跨平台系统级语言,主要原因可以归结为:

对现有 C++ 生态的依赖和兼容性需求。
通过改进现有语言(如 C++ 的现代化,C/.NET 的低级特性)来满足部分需求。
战略性地拥抱和集成 Rust,利用其成熟的生态和技术优势来解决系统级安全问题。
.NET 平台已经成为其跨平台战略的核心。
从商业角度,推出全新语言的投入巨大,而现有语言和战略能够覆盖大部分市场。

与其说是“不推出”,不如说是微软选择了 “借力” 和 “演进” 的方式,来应对系统级编程领域的新趋势和挑战,而不是直接“另起炉灶”。拥抱 Rust 更是微软在这一领域的一个关键且明智的举措。

网友意见

user avatar

好一个项庄舞剑,意在沛公! 我觉得题主意不在嘲讽微软,是在为了让大家接受Go是『跨平台的系统级语言』吧←_← 如果Go是这样,那么C#也是。

首先,Rust和Go确实跨平台,但是放在一起称之为『系统级语言』是不合适的。如果忽略库的规模的话,Rust上得厅堂,下得厨房,上可以当一个类型安全的C++来用,其零成本抽象能力(Zero Cost Abstraction)和C++在同一个等级;下可以同时内联汇编裸机Rust写操作系统内核。Rust写的系统颇有几个,比如这个项目:redox-os/redox 现在连UI都开发了,已经真的可以在虚拟机里面用了。所以称Rust是一个系统级的编程语言,这个争议不大。


但是Go……Go的运行时非常的重,还包含了一个垃圾搜集器,用这个东东直接写内核是不可能的,因为它就不是被设计为可以写系统内核的。Go的运行时里面包含很多系统调用,这很方便,但是当你写操作系统的时候如何进行system call?例如Go通过系统调用来分配内存,但是当Go本身是操作系统编写语言的时候,如何用尚且不存在的system call分配内存?一定要写操作系统,可能需要自己覆盖Go的运行时,编译一个『裸机 Go』。这个事情最近还真有人做了:achilleasa/gopher-os。 不过作者也说,这个项目主要就是为了证明Go能够做操作系统,而不是真的要做一个可用的操作系统。无论如何,Go是个很不错的服务器端语言,在很多方面有非常不错的应用,但是它不应该被看作一个系统级的编程语言。如果按照Go这个标准的话,有一个用C#写操作系统的kit叫做CosmosOS/Cosmos,那C# 岂不是也是『系统级编程语言』了? 感谢评论区的提醒,.Net其实也有自己的Bare Metal, 就是针对嵌入式设备开发的.Net Micro Framework.


其次,在跨平台这方面,微软早年确实做的不够,不过后来也持开放态度了。微软是有跨平台语言的——就是.Net系列。其影响力并不低,在最新的TIOBE排名上:

前十名里面,前三位都是C系语言,而Python在机器学习和科研上的也没什么好说的,第五名C#和第六名Visual Basic.NET则同属于微软的.NET系列,虽然原生于windows,但是借助于Mono,它们都可以跨平台运行。在十大流行语言中占据两个位置,这已经足以显示微软在流行语言方面的贡献了吧(虽然是跨平台,但是我打赌大部分人用.NET系列还是在windows上)。


再次,从商业上说,有实力不代表一定要做。Mozilla需要面对越来越强大的Chrome的威胁,所以Mozilla有另辟蹊径的动机,同时作为一家非盈利机构,Mozilla更不缺情怀。而Mozilla开发出Rust正是为了写servo这个下一代的浏览器引擎和Chrome斗争。对微软来说,其操作系统的开发一直都是C/C++,在今后一段时间内应该还是会继续下去。并且作为市场份额占据绝对优势的垄断者,微软的重点是在维护和发展windows的生态上,这也是微软对Visual Studio家族一直还比较上心的原因。而开发一种系统级的语言,或者简单的说,开发一个bare metal C#来取代C++,从战略上并不能给微软带来任何的优势,反而带来很多麻烦,而微软内部也没有出现一个足够有权力又有情怀的高管来推动这种语言的出现。


最后,Google,Mozilla和微软的企业文化也很不一样。Mozilla是非营利组织暂且不谈。Google是相对扁平化的开放式结构,这个结构的特点是中低层拥有的自主权多一些,也就意味着Google内部会有很多很多的小项目,其中有一些项目会因为某些原因得到高层的支持而存活发展下来。而这些项目并不能看作是Google背书和支持的,而只能看作是Google内部的某一个小项目组的开发成果,Google完全可能在不久之后就不再提供资源任其自生自灭。


比如Google近年来开发的语言Dart和Go都是这种组织架构下的成果。这种架构的优点是有活力,会经常能迸发出一些好的想法及其实现,而弱点也很显然——“靡不有初,鲜克有终”,因为优秀的项目很多,很多项目会昙花一现,渐渐失去资源而死掉,就像Dart,现在排名26,号称编程语言,但是流行度已经沦落到和SAS这么一个统计的行业软件差不多的水平了。

而微软的架构相对比较传统和集权,对于面向公众宣布新的项目相对谨慎,而一旦宣布了会维持比较长的时间。比如Visual 家族,.Net系列等等——微软绝对优势的操作系统市场占有率,也让微软作出各种新的举动的时候会更加的谨慎。

类似的话题

  • 回答
    你这个问题问得很有意思,也触及到了微软在语言和平台战略上的一个重要思考点。确实,放眼当下,Go 和 Rust 在系统级编程领域掀起了一股不小的浪潮,它们凭借并发特性、内存安全、性能以及跨平台能力,赢得了开发者社区的广泛认可。而微软,作为一家拥有 Windows 这一庞大操作系统以及 Azure 这样.............
  • 回答
    这确实是一个很有意思且值得深入探讨的现象。当一个人在公开场合,尤其是在微博这样的社交媒体上表达爱国情怀时,会遇到一些质疑,认为这是被政府洗脑的结果。这种看法背后,可能隐藏着多种复杂的因素,而美国的情况则可以提供一个有趣的对比视角。首先,我们得承认,爱国是一种复杂的情感,它根植于个人对国家、民族、文化.............
  • 回答
    你不是一个人。这事儿特别常见,很多人花了不小的银子,买回了当时看起来最牛的微单,结果拍出来的照片,跟手机上随便按几张比起来,好像也没那么惊艳。我跟你一样,经历过这种“货不对板”的失落感。别急着怪相机,这玩意儿其实挺听话的,它只会把你脑子里想的东西,通过光线和镜头“翻译”出来。所以,问题很可能不是出在.............
  • 回答
    肖战出道后为何没有重新注册微博账号,这个问题确实挺让人好奇的。要深入聊聊这个,得把时间线往前拉一拉,回溯到他成为“那个”肖战之前,以及之后发生的一系列事件。一、 肖战的“起点”与微博账号的由来首先,要明白肖战是以组合“X玖少年团”的成员身份出道的。当时,组合的官方微博以及成员个人的社交平台,都是公司.............
  • 回答
    微软的软件为何普遍体型庞大,这并非偶然,而是由多种复杂因素共同作用的结果,其中包含着技术演进、市场策略以及历史包袱等方方面面的考量。要深入理解这一点,我们需要一层层剥开它背后的逻辑。首先,得从微软的核心产品和其市场定位说起。微软最广为人知的两大产品线,Windows操作系统和Office办公套件,都.............
  • 回答
    90年代的微软开发出Windows,这可不是一件容易的事,就像我们今天看一些高科技产品觉得“哇,怎么做出来的”,但背后其实是无数工程师、无数次的尝试和无数的技术积累。说它难,是因为操作系统本身就像一个电子设备的“大脑”,需要管理所有硬件资源,并提供一个平台让应用程序能运行起来。微软能在那个时代做到,.............
  • 回答
    游戏科学(Game Science)凭借《黑神话:悟空》(Black Myth: Wukong)的惊艳Demo,确实在游戏圈掀起了巨大的波澜。然而,索尼(PlayStation)、微软(Xbox)这两大游戏巨头并未像人们想象的那样,一拥而上争抢其独占权或将其收归旗下成为第一方工作室,这背后有着一套复.............
  • 回答
    这其实是一个关于分工合作,以及各自发挥优势的故事,就好比一个汽车制造商和一家导航软件公司。想象一下,英特尔就像是那个非常精通制造汽车的团队。他们投入了大量的精力、时间和金钱,去研究和打造驱动汽车前进的“心脏”——也就是CPU。CPU是计算机最核心的部件,它负责处理所有的计算和指令。英特尔在这方面积累.............
  • 回答
    这确实是个挺有意思的问题,也触及到了很多人内心深处的某些隐秘看法。咱们就不说那些空泛的理论了,就从咱老百姓的日常角度来聊聊这个事儿。你想想,一个男的,酒驾完了再想着开车回家,脑子里可能还想着“我没事,我技术好”、“一会儿就到家了”、“没人看见就没事”,甚至可能因为一点点酒精的麻痹,让他觉得今天这事儿.............
  • 回答
    微软不将Windows的旧版本系统开源,这背后有着多方面的原因,而且这些原因相互交织,形成了一个复杂的局面。简单来说,开源一个庞大、复杂的商业操作系统,就像是将自己最核心的商业秘密拱手让人,对微软的生存和发展来说,这几乎是不可想象的。首先,我们得明白,Windows从来都不是一个“自由软件”或者“开.............
  • 回答
    你这个问题挺深入的,涉及到微软操作系统设计理念的核心。与其说微软“不”把 Windows API 做得更安全,不如说这是个在安全性、功能性、兼容性和发展性之间权衡取舍的复杂决策过程。想象一下,Windows API 就像是给开发者提供的一套工具箱,他们可以通过这些工具来控制硬件、管理内存、创建窗口、.............
  • 回答
    微软当初设计 C 的初衷,很大程度上是为了拥抱 .NET 平台,提供一种比 C++ 更易用、更高效的现代化开发语言。这种选择并非偶然,而是基于对当时软件开发趋势和开发者需求的深刻洞察。回想一下 C++ 在上世纪末的地位。它是一门强大到令人敬畏的语言,能够深入操作系统、游戏引擎等底层领域,对硬件的控制.............
  • 回答
    这个问题很有意思,也很常见。首先,咱们得明确一点,说.NET平台“优秀”这事儿,大家意见都比较统一,微软在这方面确实下了不少功夫,也取得了很大的成就。但你说微软“不推广”到Linux、Mac这些平台,这个说法可能有点片面了。实际上,微软在这方面早就开始发力了,而且投入相当大。你想想,最早的.NET .............
  • 回答
    这个问题很有意思,也触及到了跨国企业在美国市场的营销策略和文化接受度。简单粗暴地套用华为在某些市场上的宣传模式,对微软来说,不仅效果存疑,还可能带来适得其反的负面影响。咱们来好好掰扯掰扯为什么微软不会这么干,以及其中的逻辑。首先,得明白华为当年那种“XXX不是XXX人”的口号,它背后是什么样的语境和.............
  • 回答
    微软在 Windows 10 自动更新这件事情上,可以说是踩过很多坑,也收到了海量的用户反馈,但至今为止,那套“一刀切”式的强制自动更新机制,依然是许多用户心中的痛点。为什么微软就是不肯彻底改呢?这背后其实牵扯到很多复杂的考量,远不止“用户体验差”这么简单。要拆解这个问题,咱们得从几个层面去理解:1.............
  • 回答
    微软 WP 的“Metro 风格”的确是它与苹果 iOS 和谷歌 Android 最显著的区别之一,这也是很多人对它产生好奇甚至争议的原因。要深入理解为什么微软要选择这条不同的交互道路,我们需要从几个层面来分析:一、 历史渊源与设计哲学:从Windows到Windows Phone微软的Metro设.............
  • 回答
    要聊微软为什么没像任天堂或索尼那样,大张旗鼓地推出一款属于自己的纯粹掌机,这事儿得从几个层面掰开了说。它不是一个简单的“不想做”就能概括的问题,而是牵扯到微软的核心战略、市场定位、技术积累,以及对消费者需求和市场趋势的判断。1.Xbox的诞生与定位:家庭娱乐的王者,而非便携的先行者首先,我们要回顾一.............
  • 回答
    说起微软操作系统里的截图、文件管理器标签以及像 Everything 那样的快速搜索功能,这确实是许多用户经常提及的“为什么没有”的话题。仔细想来,这背后牵扯到很多层面的考量,并非简单的“技术上能不能做”那么简单。截图功能:为什么它不是 Windows 的标配?大家可能都习惯了 Windows 键 .............
  • 回答
    微软不在中国内地设立 OneDrive 服务器,这背后是一系列复杂因素交织的结果,其中既有技术和成本考量,也包含着对中国互联网管理政策的审慎评估。要理解这一点,我们需要从几个关键维度来深入剖析。首先,我们得谈谈合规性。中国对互联网内容有着严格的管理规定,这涉及数据存储、传输以及用户隐私等诸多方面。对.............
  • 回答
    你这个问题很有意思,确实,你想想看,咱们平时用的Windows Server,哪个不是图形界面?鼠标点点点,窗口拖拖拖,多方便。但你问为什么微软不推个纯文本模式的Windows Server,这背后其实有不少原因,而且也不是那么简单。首先,得明白Windows Server的核心定位。Windows.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有