来自:明月三千(ID:MoonThreeThousand)
最近的一个事情,很好地回答了这个问题。
微软最近用Go重写了TypeScript的转译器,然后发布了测试结果:
从上面的图,可以看到,基本都是9-10倍的提升。
得出这个结果之后,瞬间评论区就炸锅了。
其中获得最多赞的一个评论就是“为什么微软不用自己的C#来做这个事情,而是用了Google的Go语言”。
其实,这跟微软的传统有关。
我们知道,微软一直是操作系统和编程语言的“大厂”,Windows和Visual Studio都世界闻名。
同时,微软也有一个传统,叫“Eat Dog Food”。这里的“吃狗粮”,不是吃恋爱的狗粮,看见对面拥抱亲亲就想看死对面的那种,而是微软内部就使用开发中的Windows作为平台,再使用自家的编程工具(VC、C#)来编写软件。
在使用的过程中,把遇到的问题反馈到公司内部的开发小组,让他们继续改进。
因为是内部沟通,成本很低,速度很快。
这是微软早期的成功秘诀之一。
那这次为什么TypeScript没有用C#,而是用Go呢?
其实有一个采访,TypeScript的作者之一,著名的“Delphi之父”-Anders出面说明了这个问题。
原因据说有2个:
1、Go其实比C#更加底层,更接近原生。但是同时Go还具有GC-“内存自动回收”这个超级大利器。而C#是一种“IL”语言,需要netcore平台的支持,相比较Go无敌的“跨平台编译只需要改变一个变量”的机制还有相当大的差距。
这一点,其实是Go吸取了Plan9的优点。Plan9作为Unix发明者开发的下一代“改良平台”,虽然不是很成功,但是其中的很多思想是非常先进的。
而同为Plan9开发者的开发的Go,其实从Plan9吸取了很多东西,包括其特殊使用的跨平台编译器,channel机制,无疑都是借鉴点。
2、第二点,Ander的解释,就是TypeScript使用了高度函数式编程的特点,没有采用“类”机制。这点与Go其实在思想上,跟Go基于struct、interface的特点有相同之处。
如果选择 C#,就必须切换到面向对象的范式,这会增加迁移的阻力,而 Go 则是阻力最小的选择。
从上面两点可以看到,如果一个事情我做到了,我可以找千万个理由,因为我做到了(逃)!
微软在开发者当中,一直是一个谜团。
他们推出了C#,让全世界开发者使用,但他们的主力产品-Windows、Office里面却一直没有使用,而是继续C++。
隆重推出WPF框架,也只是在Visual Stduio使用了一部分。
在很多开发者的心中,如果你自己都不用自己的产品,让我们如何放心的使用呢?
微软在过去,也一直有“放弃产品”的“传统”,Windows Phone、SliveLight都是微软的弃子。
Go则不同。
一方面go在Google中大量使用,目的就是为了解决Google内部大量C++缓慢的编译速度。
另外一方面,在Docker、K8S等非常成功的项目里面,Go已经证明了自己的价值,成为“云原生”时代的基础语言。
好吧,总结一下。
一方面是Go精良的设计,在底层和高层特性里面取得了很好的平衡。另外一方面微软的某些做法,让标志性的”微软语言“-C#让很多公司不敢用,非常可惜!
你觉得,还有其它原因吗?
END
看完这篇文章你有什么想说的?欢迎各位评论区聊一聊
留言抽 3位 小伙伴,赠送8.88元现金红包!
下面顺便给大家推荐一个不错的AI工具聚合平台,已接入自部署满血版 DeepSeek-R1,欢迎来体验。
点击长按二维码,即可体验:
👇👇👇
✅传送门:https://www.aijuli.com