17611538698
info@21cto.com

安德斯·海尔斯伯格:人工智能“只不过是别人已经做过的事情的复述者”

人工智能 0 11 19小时前
TypeScript 发明者 Anders Hejlsberg:人工智能“只不过是别人已经做过的事情的复述者”

导读:知名的C# 语言发明者Hejlsberg在一场采访中谈AI与TypeScript。

微软技术研究员、C# 和 TypeScript 的发明者安德斯·海尔斯伯格(Anders Hejlsberg)表示,现有的编程语言是针对 AI 编码进行优化最好的语言,因为它们拥有最大的可用训练数据集,而 AI 就如同“对别人做过的事情进行大量复述,并在此基础上进行一些推断”。

他在近日接受了 GitHub 研究顾问 Eirini Kalliamvakou 的专访,讨论了他自己的团队对 AI 的使用情况,并回顾了 TypeScript 的过去日子,还展望了它的未来。

TypeScript 的现在

TypeScript 即将迎来的重大变革是使用原生编译器,这是 TypeScript 7.0(目前处于预览阶段)的一部分。

Hejlsberg 表示道,出于性能考虑,必须将原本使用 TypeScript 编写、由 V8 JavaScript 引擎执行的编译器代码移植到原生代码。“我们很快意识到,这样性能可以提升 10 倍,其中一半来自原生代码,另一半则来自共享内存并发的优势。”

Hejlsberg 团队决定移植代码,而不是从头开始编写一个新的编译器,因为“我们有一个非常庞大且非常复杂的类型检查器,它有很多行为,这些行为除了在该代码的确切语义行为中之外,在任何地方都无法捕获。”

其结果将演变为——除了逐个函数移植之外的任何其他移植方式都会产生不同的输出,从而给迁移者带来一系列“棘手的问题”。因此,新编译器被设计成与旧编译器完全相同,包括其全部特性。

本地编译器的编程语言选择引发了众多开发者们的争议。

Hejlsberg 表示道,由于可移植的需求,Rust 被排除在外,因为它缺乏移植所需的循环数据结构和自动垃圾回收机制。

“我们尝试过 C#,最终选择了 Go……因为它与 JavaScript 非常相似。”Hejlsberg 如此说道。

这一决定在 C# 社区引起了强烈不满,他们质问 Hejlsberg 为什么不选择自己设计的 C# 语言,从而提升 C# 的使用率?他没有直接回答这个问题,但 Hejlsberg 表示“很多人觉得你应该选择其他编程语言”,但他“坚信我们选择了最合适的工具。我认为过去一年来,它已经证明了这一点。”

关于人工智能,Hejlsberg表示,团队最初尝试使用人工智能将TypeScript代码移植到Go语言。但是“结果不太理想……我们想要的是一个非常确定的结果。我们希望移植50万行代码,并确保它们能够完全按照原代码的功能运行。如果让人工智能来翻译,它可能会偶尔出现一些小问题,这样一来,你就必须仔细检查每一行代码。”

他的这番评论与开发者们的抱怨不谋而合,他们抱怨微软弃用了 Visual Studio 中确定性的 .NET 升级助手,转而使用基于 Copilot 的非确定性升级助手。

Hejlsberg 表示,或许“让 AI 生成一个程序来帮助你进行端口操作会更好,因为当你运行该程序时,你会得到一个确定的结果。”

尽管如此,Hejlsberg 还是认识到了人工智能的价值,他表示 TypeScript 语言服务(用于检查代码语法并提出修复建议)正在“极大地适应这个新领域……人工智能在这里将会做得更好”。

他还表示,团队已成功将人工智能应用于移植项目的另一部分,即将旧代码库中在初始移植之后产生的新拉取请求迁移到 Go 代码。“我们实际上已经相当成功地利用人工智能完成了这项工作。”

TypeScript 的未来

关于 TypeScript 的未来,Hejlsberg 如此表示,它将“通过 JavaScript 的标准化过程不断发展,然后我们在此基础上添加任何需要的类型系统功能”。

TypeScript 是 JavaScript 的超集,并且随着 JavaScript 标准的演进也对其产生了影响,这表示 TypeScript 语言本身不会发生根本性的变化。

Hejlsberg表示,更大的变化将体现在工具方面。

“我以前觉得集成开发环境(IDE)简直棒极了……但人工智能领域已经发生了翻天覆地的变化,”他说。人工智能不再是IDE的助手,而是“你需要监督它的运行,它不再像以前那样依赖IDE,”他这样解释道。“它仍然需要各种服务,这就是为什么所有关于MCP(多协议平台)的东西都变得有趣起来,将语言服务连接到MCP,并赋予人工智能提出语义问题或重构问题的能力。”

人工智能需要“类似于你在集成开发环境(IDE)中所做的操作,但要以大型语言模型(LLM)或智能体的方式进行。这将彻底改变开发工具。”

Hejlsberg完整的采访其中讲述了 TypeScript 的创意起源于 Outlook Web 团队。当时,他们使用名为 Script# 的工具用 C# 编写代码,然后将其编译成 JavaScript 以便在浏览器中运行。

Hejlsberg 借鉴了此想法,但他并没有使用 C#,而是决定创建一个 JavaScript 的类型化超集。“通过扩展 JavaScript,我们想表达的是,我们不会创造一种全新的语言……不,我们只是要修复它存在的缺陷。”

TypeScript如今已跻身流行编程语言之列,但微软将编译器从该语言中移除这一事实,实际上承认了其性能上的局限性。

作者:场长

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信