slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
C# 编译器创始人 Jared Parsons :我在微软20 年所做的事情
17611538698
webmaster@21cto.com

C# 编译器创始人 Jared Parsons :我在微软20 年所做的事情

技术人生 1 830 2024-04-09 10:57:03
导读:这是我们结合在三个不同的播客内容。Jared Parsons 回顾了他在微软工作的二十年,包括他在 C# 开源方面所做的工作,希望对技术团队管理者有借鉴意义。

图片

在微软工作 20 多年,贾里德·帕森斯(Jared Parsons)称自己在不断迈出胜利的脚步。

在最近的两个月时间, Parsons 出现在三个不同的播客上,他在X平台回顾了作为 Microsoft C# 编程语言首席开发人员领导团队的九年时光。

图片

在《软件工程日报》播客中,Parsons 回忆起自己开源 C# 的经历,以及此后为了让开发者群体满意而实施的全部工作。

他讲述自己和这个编程语言的变迁,相信也有很多人都看到了变化。

早在 2004 年,C#发布周期是“大约在两到五年之间”,但是现在每年就会发布一次,而且 “Visual Studio 每年发布大约四次”,比以前加快了不少。

Parsons谈到,他记得一位新晋开发人员抱怨,错过了他们新功能开发的发布窗口。“过去,当我错过窗口时,我不得不等待五年。而现在却是不同时代的背景了。”

这一切都为编程语言的生命提供了独特的视角,不仅包括它如何变化,还包括如何促进、组织和优化等这些变化。

开放式架构


C# 于 2000 年在微软创建,并在 2014 年正式开源。


在 Azure DevOps 播客上,Parsons 确认整个编译器及其周围的“生态系统”(包括调试工具和 Visual Studio 的 C# 功能)现已全部开源。


《软件工程日报》的播客询问微软 2014 年转向开源是否影响了 Parsons 的工作。


他如此说道:


“非常大,在很多不同的层面上都有。不光只是转移到 GitHub 存储库,我自己也在改变一种一直非开源的文化……”


Parsons是实现这一目标的团队的一员,他记得“数月的工作只是为了撤销一些事件”。


比如,你的软件构建系统对内部系统有微妙的依赖关系吗?现在就要把它们撕掉……这一切都将是公开的。我们现在必须找到所有这些工具、这些库和这些服务的替代品。”


还有其它一些挑战:“要找到对开源不友好的代码,必须将其从系统中删除。就像是在米里挑沙子,‘不,不能发送那个库。这不是一个开源友好的库。我们必须转换并转移到这里。我花了几年时间才擅长在开源环境下建造,并处理这些双重创造。们正在露天建造,但我们也为了运输目的而内部建造。”


它让产品变得更好了吗?哦,绝对是。


Parsons 指出,现在从其存储库安装全新的 C# 是多么的容易。“如果你想要贡献并且希望人们参与,那么构建和运行代码的入口点必须尽可能小。因此,我们非常刻意地公开了——重点强调‘我们如何让这一切变得容易?我们如何使其尽可能简单?......因此,就这方面而言,它绝对是一个更好的产品。”


对于 C#,新的编译器功能现在可以作为“预览”功能添加到 Visual Studio 中,并开始从大量实际用户那里获取反馈。


帕森斯在Rockin' the Code World上如此说道:


“这对我们来说是非常成功的事情,它让我们获得了大量的反馈…我们也总是发现,客户的创造力比我们想象的要高得多”。


他们非常重视这个过程。“当我们交付某些东西时,我们将承诺永远维护它。这些都是持续的决定。这有时也令人望而生畏。”


编译器作为API


编译器团队还有另一种方式支持更大的开发者社区。


Parsons 将编译器开发本身描述为“一件非常无聊的事情:它有一千多行代码,其中大部分都在与服务器对话……编译器团队到底是干什么?重点是我们的库和 API,围绕提供语义信息、语法树以及基本上允许人们在 C# 之上编写检查工具。”


Parsons 在 Azure DevOps 播客中解释说,“我们确实说构建了一个 API。我们有这个小型库,允许开发者检查代码、生成诊断信息,并且时不时地将一些代码发送到磁盘。C# 编译器就像调用库里的一千行代码。”


与此同时,“IDE 团队在我们的库之上构建了他们的全部体验,但没有特殊待遇。这有助于我们确保能够围绕该语言获得美好的工具体验。”


这会对整个 C# 生态系统会产生影响。


编译器最终还会支持插件——比如分析器,为用户自己的特定领域规则生成警告信息。Parsons 表示,它还支撑了微软的 Visual Studio 以及“微软周围的各种其他工具”,“整个 Visual Studio 体验都是作为 API 构建在编译器之上的。”


“奇怪的是,我们的第一份工作实际上是将我们自己视为一个库,并认真思考,我们如何帮助 IDE 团队为 C# 构建非常流畅且优美的体验?


回顾这些年,Parsons 记得微软周围的人正在创建自己的工具来做分析、格式化和检查 C# 代码错误。


他如此描述说:


“我认为,我们在公司中发现了大约 10 到 20 个不同的 C# 解析器和绑定工具,其准确度各不相同。因此,在 2010 年左右,团队的一部分人花了几年时间将编译器重新设计为一种库方法,然后在其之上重建我们的 IDE 服务和批处理服务……这在当时是一个相当大的赌注,大约花了五到六年的时间才取得成果,但这绝对是该语言发展的一个转折点。”


是的很快,开发者们就发现了很大的优势。人们开始在他们的 API之上构建更多有用的东西了。


一个典型例子是基于浏览器的工具SharpLab,它允许用户编写和分析代码片段。“我们没有构建这个产品......这是他们构建它的其中之一,它现在是 C# 编译器团队最重要的工具之一!”


这次让Parsons想到了一个有趣的话题,他说:


“只有编译器的语言实际是个玩具。而编程语言是由支持它们的工具生态系统定义的,才能有机会成功。”


测试


该团队的一个重要任务便是进行大量严格的测试。


Parsons 指出说:


“这些操作取决于具体日期,但我们每天会更改 C# 编译器四到八次,当我们将拉取请求合并到 GitHub 时,大约四个小时内,我们就生成了一个新的编译器。大约八小时后,该编译器就构建出了 Visual Studio。”


在Rockin' the Code World中,Parsons 这样说道,“我们对每个 Pull 请求运行大约 750,000 次测试”,因为 C# 运行在许多不同的平台和架构上。


Parsons 还指出,当今许多 Microsoft 中的服务,甚至在 Azure 中,都是用 C# 编写的。因此,专注于提高绩效“可以为公司及客户带来巨大的乘数效应”。


“一个又一个的 .Net 版本为企业节省了大量资金,因为是这些大型 Azure 服务……当你将其扩展到大规模服务时,即使是一些微小的改进。数百万美元的差异将带来更大的效率和变化。”

图片

语言设计的艺术


C# 的下一步是什么?


在《软件工程日报》上,Parsons 表示,“我们正在研究许多性能特性”,包括对Span(代表连续内存区域)的改进。


在过去的几个版本中,他们一直在“建立构建块”,以创建“C# 中的零分配开销变量参数调用格式,这是令人兴奋的事情。”


他们还希望发布一个新的“生产力”功能,具有隐式和显式的扩展,这个团队已经孵化了几年。


谈到什么最影响 C# 设计决策,Parson说:“我们实际上经常关注其他语言和生态系统,语言也是一个有竞争性的空间。”帕森斯甚至承认编译器设计很简单,难的是编程语言的美观好用。


在 Microsoft 编译器团队工作的 15 年中,他学会了如何教授编译器设计——他将其描述为本质上的“工程问题”。但成为一名优秀的语言设计师“是一件非常充满美学的事情……它是一门艺术。这个确实很难。”即使在 20 年后,帕森斯也提到“有些人有一种非常自然的天赋。有些人是可以被教导的。但有时,这绝对是一门艺术。”


幸福又充满希望的未来


在微信工作了 20 年后,是什么让Parson持续保持兴趣与投入?


在《软件工程日报》播客上节目即将结束时,Parsons回顾了这些年来他如何担任不同的角色,并且“有太多不同的问题需要解决。”除了担任 C# 编译器负责人之外,他还从事 .NET 基础架构方面的工作,甚至在这方面,“我们总是不断地改变正在从事的工作。”

图片

无论是机器学习还是 AI、Office 编程还是提升 C# 的性能,“进入语言领域的好处之一就是我可以了解所有这些不同的问题。我可以获得这些有趣的小花絮,我可以将它们融入到我的一天中,一点点学习,然后继续获得下一个小花絮。

“.NET 团队非常有趣。我们有充满有趣的问题。我们有非常好的团队文化,这又是一个非常有趣的团队。”

图片

评论