2

VSCode可以翻盘成功主要是因为什么?

 2 years ago
source link: https://www.techug.com/post/microsoft-you-have-to-see-it-to-make-ide779bae9e51a188ce969a/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

上周,我看到了一个问题:

img16575939641601833434.png

代码编辑器/编译器的江湖是竞争激烈的战场,Visual Studio Code作为一个后生晚辈,是如何在一众神器之中崛起的,它的故事值得一看。

VS Code 之父 Erich Gamma 作为设计模式 “四人帮“ 作者之一,软件模式发展的先驱,开发了 Java 圈的单元测试框架 JUnit,更辉煌的是,在 IBM 主导开发了 Eclipse IDE 编辑器,当年最流行的 编辑器/IDE。

可是,Erich Gamma 觉得有点不太对,未来属于 Web ,我要在 Web 上打造像桌面端一样的开发体验。

在那个 IE 6 浏览器很香、jQuery 是最先进前端框架的年代,大佬果然是大佬,至少比一般人往后看10年。

同时 IBM 也江河日下,这个时候微软抛出橄榄枝,“入伙吧,未来是云时代,来做 Azure 的 Web 端编辑器”。Azure 刚于2010年发布,需要一个 web 端的编辑器。

双方一拍即合!

2011 故事开始 – Monaco Editor

因为有 Eclipse IDE 的开发经验,很快撸了一个 Web 端的编辑器。猜测是因为 Erich 喜欢去摩纳哥旅游,起名叫 “Monaco”。

这是一个 纯 Web 的 Editor,VS Code 前身。也是目前 VS Code 使用的 editor,很快提供给 Azure 用户使用。

Monaco 的特点就是“快“。性能吊打 Ace 和 CodeMirror。这也是 VS Code 至今的原则:不使用任何 UI Framework,这是为了追求极致的性能,尽可能接近 DOM,做到每一个性能损耗点都能完全控制。

2013年:全面转向 TypeScript

JS 语言设计的时候太过仓促,留下很多怪癖,且动态类型导致很多问题在运行时才能发现,开发像 VS Code 这样的项目难堪重任。

想一下如果没有 TS 的类型校验,重构一个大型的 JS 将会是怎样的灾难!

这一次,幸运又一次降临在 Erich。他是同事兼好基友 Anders Hejlsberg 开发了 TypeScript。

从 2011 年 Monaco 就使用 TS,感觉越用越好,2013 年决定全面切到 TypeScript。更幸运的是:据说 Anders Hejlsberg 有一个怪癖,喜欢用一个文件写所有代码(待求证),所以大文件特别多,他也是 Monaco 的重度用户,有他的加持,Monaco 性能不逆天才怪。因为转到了 TypeScript,给 VS Code 的技术打下来坚守的基础。

2013年:差点挂掉的一年

开发了 3 年的工具,虽然性能逆天,但致命的缺点是月活只有 3000 用户!“你到底为公司创造了什么价值?” Erich 也面临灵魂拷问。算了一下,用户数至少 x10 才能存活。但做 Web Editor 大概也只能这些用户,继续搞 Monaco 还是换一个新赛道?怎么办?

2014年:机遇来了

2014年,微软开始全面转型到生产力工具和云优先。从只考虑 Windows 平台到要考虑 MacOS、Linux、Windows 跨平台,并全面拥抱开源。但微软缺少一个跨平台的开发工具,尤其是这个时候 Web 开发者开始迅速增长。

Erich 意识到机会来了。但 2014 年的浏览器还是不够给力,前端项目越来越重,需要大量的文件处理。不是一个 Monaco 在线编辑器可以搞定的。

Erich 面临艰难选择:继续发展挚爱的 Web 编辑器 Monaco 还是改到 Desktop 版的 Editor/IDE???

最终:结果大家都知道了,Erich 选择了开发者更能接受的 Desktop Editor/IDE。

方法也简单,用 Electron 包壳 Monaco。并改了个网红潜质的名字 “VS Code“,几个月就搞好了。

2015年:终于它来了 –  VS Code

为了给尽可能多的 MS 人使用,提升业务价值,VS Code 选择在 BUILD 大会上正式发布。当时最成功的一个 demo 是演示 Linux 下调试 .NET 应用。但当时很多功能停留在 Demo 上,比如很多人期待的 Extension 扩展 API,是在 6 个月后上线的。

2016年:多语言支持:LSP(Language Server Protocol)

开发过 VS Code 插件的朋友应该很熟悉 LSP,可以扩展其他语言支持。

LSP第一个使用 LSP 接入支持的就是 Java。在一个 Hackathon 上完成启动。

2017~2019年:开发 VS Code Remote

WSL 帮了大忙,不需要处理不同操作系统文件系统的差异。2020年:重返 WebVS Code Desktop 版本深度依赖了各种 Node.js File API。所以即使是 Electron 应用移植到 Web 也是需要花不少时间的。

也是在 2020 年,出现很多在线的 IDE/Editor 开发工具,低代码工具满天飞,他们都应该或多或少感谢 VS Code。

好了,历史科普到此结束。结论以下是我个人总结,为什么 VS Code 能翻盘

1、性能够快!

相信很多从 Sublime/Atom 转过来的用户,包括我自己,都是因为当初被 VS Code 性能折服对于工具来说,任何时候“快”都是竞争力。快是因为有足够的技术积累。

2、顺应时势

要有预见未来的理想主义,也要能从现实中找到一个可行路径。

虽然 Erich 在10年前就押宝 Web 编辑器,但当时时机确实不成熟啊,如果不转成 Electron 套壳,活不过2014年。

3、积累丰富,倾听用户声音,持续优化,坚持 10 年

定好了大方向 Web Editor/IDE,解决了生存问题(帮助微软做跨平台开发),接下来就看谁能扛的久。

去年 2021 年1月份数据,VS Code 解决了 100K 个 issue。这是时间的味道,想象一下,修 10万个 bug 的软件细节能不好吗。

有 Anders Hejlsberg 这样的超级用户,并给他带来了TS

强大的生态,丰富的扩展。生态和产品像鸡和蛋的问题,如果产品不好也没法做大生态。所以本质还是 VS Code 本身功能够好,架构优雅,方便扩展。

4、运气好

机会是留给有准备的人,当微软2014年宣布转型的时候,恰好需要跨平台编辑器,Monaco 刚好准备好。

顺应了微软大的转型。在商业公司里做开源,懂的都懂,开源不带来营收,如果无法解决“业务价值”问题,注定发展不大,很容易在资源抢夺过程中被拆解,看看 React 团队的人员更换速度。

提前 10 年,押中了 Web 的崛起,因为他是 Erich。

如果能做到以上几点,先积累个10年,“一夜成名“ 的确问题不大,这可能就是“翻盘”吧。

本文文字及图片出自 知乎


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK