对话 Ruby on Rails 之父:发自内心恨透 Copilot,手凿代码才是程序员的乐趣

编译自 Lex Fridman Podcast
出品 | CSDN(ID:CSDNnews)
原文 | https://lexfridman.com/dhh-david-heinemeier-hansson-transcript
投稿或寻求报道 | zhanghy@csdn.net

传奇程序员、Ruby on Rails 框架创始人 David Heinemeier Hansson (DHH) 最近做客 Lex Fridman 播客,来了一次深度对话。

David Heinemeier Hansson,通常被称为 DHH,是软件开发领域一位标志性的人物。作为热门 Web 开发框架 Ruby on Rails 的创造者,他不仅改变了无数程序员构建网络应用的方式,更以 37signals(现 Basecamp & HEY)联合创始人的身份,倡导着一种“拒绝风险投资、远程优先、可持续发展”的商业哲学。

DHH 以其直言不讳和鲜明的观点而闻名。他从不回避争议,无论是公开挑战苹果公司的 App Store 政策,还是质疑行业中过度设计的技术风尚。

在与 Lex Fridman 这次长达六小时的马拉松式对话中,DHH 深入探讨了他世界观的方方面面。而其中最引人瞩目,也与我们当下技术浪潮最息息相关的,莫过于他对人工智能,特别是 AI 编程工具的看法。

他并非一个简单的 AI 拥护者或反对者,他承认每天都在使用 AI 来学习新知,但同时,他为 AI 编程助手可能导致的核心技能退化而深感忧虑。他将其描述为一种“能力从指尖流失”的感觉,并表示自己“恨透”了 AI。

以下是对这次长达六小时访谈的部分翻译,我们节选了其中最精华、最与我们行业息息相关的部分。

· · ·

「我不理解变量有什么用」

Lex Fridman: David,很高兴能在这里见到你。

DHH: 很高兴来到这里。

Lex Fridman: 我感觉你的思想非常深邃和广阔。我想从一些基本的问题开始。在你看来,什么是变量?

DHH: (笑)这真是个好问题。我第一次接触编程大概是在 1995 年左右,那时候我还在上高中。我当时在玩一个叫做“BBS 场景”的东西,就是公告板系统。我有一个朋友,他比我大几岁,已经是个程序员了。他想教我编程,用的是 Turbo Pascal。他试着给我解释,但我就是搞不懂。

我记得我不理解变量的用途。如果有一个东西,你给它赋了值,为什么还要再给它赋另一个值?出于某种原因,我能理解常量,常量对我来说是有意义的,但变量没有。所以我第一次尝试学习编程完全失败了。我当时觉得,“好吧,这东西不适合我。”

Lex Fridman: 这太有趣了。一个常量,一个永恒不变的值,这在哲学上是有意义的。但变量,可以改变的东西,这让你觉得困惑。

DHH: 是的,非常困惑。我觉得,“好吧,这东西不适合我。”然后几年过去了,我开始做一些和网页相关的事情。我先是用 HTML,这东西很简单,我能理解。然后我接触到了 ASP,经典的 Active Server Pages,用 VBScript 编写。这已经是第二次尝试了,稍微好了一点,但我还是没完全上道。

然后,第三次尝试,我遇到了 PHP。

PHP 是我最终豁然开朗的地方,当我终于理解了条件、循环、变量以及所有这些东西,足以让我认为,我能行。我能用这个做出东西来。但我对它并没有什么特别的热情。它只是一个工具,一个能让我完成工作的工具。我当时在做一个丹麦的在线游戏新闻网站,PHP 帮我把它自动化了。我当时觉得,“太棒了,这很有用。”

但真正让我爱上编程的,是后来我发现了 Ruby

Lex Fridman: 在我们聊 Ruby 之前,你认为 PHP 的哪个特性最终让你开了窍?

DHH: 我觉得是它的易用性。你只需要一个 FTP 客户端,把一个文件上传到服务器上,就能看到结果。这种即时反馈的循环非常、非常快。而且它的语法,虽然现在很多人嘲笑它,但它确实很简单。PHP/FI,最早的版本,就是“表单解释器”。它就是为此而生的。你想从表单里取点数据,然后用这些数据做点什么。

这为我揭开了 Web 开发的神秘面紗。它并不是一个黑盒子。你可以看到它是如何运作的。这种简单性,我认为,是我最终理解它的关键。当时,很多所谓的“严肃”编程都发生在 Java 世界里。那是一个充满复杂性、仪式感和样板代码的世界。你需要编译,需要部署,整个过程非常繁琐。而 PHP 就像一股清流。它很直接,很务实。

「Ruby,为我的大脑量身定制」

Lex Fridman: 所以,你遇到了 Ruby。那是一种怎样的体验?

DHH: 那是一次彻底的启示。当时我正在和 Jason Fried 合作,创建 Basecamp。我们当时用的是 PHP。我们用 PHP 构建了 Basecamp 的第一个版本。它能用,但过程并不愉快。我觉得自己总是在和这门语言作对。

然后我开始寻找替代品。我看了看 Python,也看了看其他的。然后我读了一篇关于 Ruby 的文章,作者是它的创造者 Matz(松本行弘)。

他在文章里说,他创造 Ruby 是为了优化程序员的幸福感。这个想法本身就让我震惊。什么?一门编程语言,它的主要目标是让使用它的人感到快乐?这太激进,太美好了。然后我开始看 Ruby 代码的例子。

那是一种我从未有过的感觉。感觉就像,这门语言是为我的大脑量身定做的。而制作它的人我素未谋面。这怎么可能?它让我看到了程序可以有多美。我之前甚至没有“美学”这个概念,不知道“优美的代码”也是我们可以追求和优化的东西。我一直以为代码就是功利的,能用就行。

Ruby 改变了这一切。我记得我当时想,“我必须用这个。我不在乎它是否 ‘准备好了’,我不在乎有没有库。我要用它来构建 Basecamp。”

Lex Fridman: 你说“为你的大脑量身定做”,这是什么意思?你认为你的大脑有什么特别之处,让 Ruby 如此契合?

DHH: 我认为我更偏向于人文主义思维。我喜欢语言,喜欢散文。Ruby 的语法读起来更像是人类的语言,而不是机器指令。它的创造者 Matz 是一个语言学家。他从 Lisp 和 Smalltalk 等语言中汲取灵感,但他也加入了一种……人性化的东西。

举个例子,在 Ruby 里,你可以写 5.times { … }。这读起来就像英语。它不是 for i = 0; i < 5; i++。这种小的差异,累加起来,就创造了一种完全不同的体验。它让你感觉自己像个作家,而不是一个技术员。这对我产生了巨大的吸引力。Ruby 是为人类编写的,而人类是复杂的生物,我们喜欢恰到好处的东西。

「我收到了来自上帝的邮件」

Lex Fridman: 你和 Matz 后来有交流吗?这个你崇拜的、为你量身打造了语言的人。

DHH: 有的。当我开始使用 Ruby 时,我加入了一个邮件列表。当时社区非常小,可能全世界也就几百人在用 Ruby。我开始在邮件列表里提问,分享我写的一些小东西,一些我为自己构建 Basecamp 时提取出来的库。

Matz 也在那个邮件列表里。有一天,我收到了一封来自 Matz 的邮件。对我来说,那就像是收到了来自上帝的邮件。他看到我做的一些工作,然后他对我说:“嘿,你似乎对这个很有热情。你想不想要 Ruby 核心代码的提交权限?

Lex Fridman: 哇。那是什么感觉?

DHH: 我当时的感觉就是,“什么?”

这太不可思议了。他信任我这个来自丹麦、素未谋面的陌生人,允许我去修改他创造的这件美妙的东西。这种程度的信任,在当时,甚至现在,都是闻所未闻的。这让我对 Ruby 社区和 Matz 本人产生了无比的忠诚和热爱。我成了 Ruby 的一名传教士。

从那一刻起,我感觉自己不仅仅是一个使用者,我成了一个守护者。我有责任去改进这门语言,去分享它的美好。Ruby on Rails 的诞生,很大程度上也是源于这份责任感。我想让更多人体验到我所体验到的那种编程的快乐。

「静态类型,我不喜欢的主要原因」

Lex Fridman: Ruby 是一门动态类型的语言。现在静态类型语言(如 TypeScript)非常流行。很多人认为静态类型能带来更强的安全性和可维护性。你怎么看?

DHH: 我是动态类型的坚定拥护者。我认为静态类型带来的所谓“安全感”在很大程度上是一种幻觉。它能捕捉到的错误类型,通常是最浅显、最容易发现的那一类,比如拼写错误或者给方法传递了错误数量的参数。而那些真正棘手的、深藏在逻辑里的 bug,静态类型系统根本无能为力。

更重要的是,静态类型付出了巨大的代价。它让代码变得更冗长、更僵化。你必须花费大量的时间去“安抚”类型检查器,编写那些只是为了让编译器闭嘴的类型定义。这扼杀了编程的流动性和创造力。

这正是我不喜欢静态类型的主要原因之一。它不仅在某些方面限制了你,还让元编程(metaprogramming)变得异常困难。Ruby 和 Rails 的很多魔力,都来自于我们能够动态地定义方法、修改类。在静态语言里,做这些事情要么不可能,要么就是一场噩梦。人们会说,“哦,你需要代码生成器”,或者其他复杂的工具。但在 Ruby 里,语言本身就给了你这些能力。这是一种赋权。

Lex Fridman: 但对于大型项目和大型团队来说,很多人认为静态类型是必不可少的。

DHH: 我认为这是一个借口,一个拐杖。人们说你需要静态类型来重构大型代码库。不对,你需要好的测试来重构大型代码库。测试能够给你真正的信心,让你知道你的修改没有破坏任何东西。类型检查器给你的只是一种虚假的、廉价的信心。

我们用 Ruby on Rails 构建了 Basecamp 和 HEY,这两个都是非常庞大且复杂的应用,已经持续开发了近 20 年。我们从来没有觉得,“天啊,要是我们用了静态类型就好了。” 我们依赖于好的设计、清晰的代码和全面的测试套件。这才是构建持久软件的真正基石。

当人们谈论大型团队时,他们真正想说的是,“我们的团队里有很多水平不一的程序员,我需要一个系统来防止他们犯错。” 我觉得这是一个错误的前提。你应该努力去雇佣和培养优秀的程序员,而不是用一个官僚系统去限制他们。

「小团队选择微服务是自寻死路

Lex Fridman: 在架构方面,你也以倡导“宏伟的单体应用”(The Majestic Monolith)而闻名,这与当前流行的微服务(Microservices)趋势背道而驰。

DHH: 是的。微服务架构被过度兜售了。它成了一种时尚,一种人们不假思索就去追随的潮流。人们被 Netflix、Google、Amazon 这些巨头的故事所迷惑,以为他们也需要把自己的应用拆分成几百个独立的服务。对于 99% 的公司来说,这是一个灾难性的错误。

当你采用微服务时,你把一个应用内部的方法调用,变成了一个跨网络的 RPC 调用。这意味着你引入了延迟、可靠性问题、分布式事务、服务发现、版本控制等一大堆全新的、极其复杂的问题。你现在不仅需要成为一个应用开发者,你还需要成为一个网络工程师和系统管理员。你的认知负荷急剧增加。

Lex Fridman: 那么,“宏伟的单体”好在哪里?

DHH: 它的美妙之处在于简单。你所有的代码都在一个地方。你可以用你喜欢的 IDE 打开它,你可以进行全局搜索,你可以轻松地进行重构。调试非常直接。部署也是一个单一的、原子的操作。你可以专注于你的业务逻辑,而不是基础设施。

人们嘲笑单体应用,觉得它“不酷”,觉得它是过去的遗物。但它非常高效。我们用一个宏伟的单体应用支撑着 Basecamp 和 HEY,为数百万用户提供服务。我们的团队规模非常小,其中一个重要原因就是我们没有把时间浪费在管理几十个微服务组成的复杂网络上

当然,我不是说微服务一无是处。如果你是亚马逊,你需要几百个团队独立地开发和部署他们系统的不同部分,那么微服务是有意义的。但如果你是一个 5 人、10 人、甚至 50 人的团队,选择微服务几乎等同于自杀。你是在用一个你没有的问题的解决方案,来给自己制造一大堆新的问题。你应该先从一个“宏伟的单体”开始,当且仅当你遇到了它无法解决的、巨大的组织规模问题时,再考虑拆分。

「我用双手把代码从屏幕上凿出来」

Lex Fridman: 让我们来谈谈你实际的编程过程。你使用什么样的工具?IDE?自动补全?

DHH: 我不使用工具来编写代码。我用文本编辑器。我用双手将代码从屏幕上“凿”出来。我不使用自动补全。我不使用任何试图猜测我下一步想做什么的东西。我希望我的手指能记住这些方法。我希望我的大脑能记住这些模式。

这是一种……与材料的亲密接触。就像一个木匠,他需要感受木头的纹理。如果我让机器为我完成所有的输入工作,我就会失去这种感觉。我输入代码的速度,思考的速度,这两者之间有一种节奏。我不想让任何东西打断这个节奏。这是一种肌肉记忆的培养,也是一种思维的训练。当你的手指知道如何输入代码时,你的大脑就可以专注于更高层次的抽象和设计。

Lex Fridman: 这直接引出了我们关于 AI 的讨论。你对 GitHub Copilot 这样的 AI 编程助手有什么看法?它似乎与你的哲学背道而驰。

DHH: 是的,完全背道而驰。我试用过 Copilot。我强制自己用了几个星期,想给它一个公正的机会。

Lex Fridman: 你的感受如何?

DHH: 我恨它。我真的恨它。这是一种发自内心的、本能的厌恶。

它让我感觉自己像个监督者,而不是一个创造者。我的工作变成了不断地纠正一个过于热心的实习生。它会生成一大堆代码,然后我的任务就是,“不,这不是我想要的。这个地方不对。那里有个 bug。”

我能真切地感觉到能力从我的指尖流失。那种与材料的直接接触感消失了。我不再是那个“凿”代码的人了。我成了一个代码的审查员。这对我来说,是一种深刻的、存在的失落感。编程的乐趣,对我来说,很大一部分在于思考和输入的那个过程。Copilot 把这个过程拿走了,用一种肤浅的、即时的满足感来替代它。

「我能感觉到编程技艺正在流失」

Lex Fridman: 但它确实能提高生产力,不是吗?

DHH: 这取决于你如何定义“生产力”。如果你所谓的生产力是“每小时写的代码行数”,那么是的,它可能会提高。但我不认为这是一个有意义的指标。对我来说,真正的生产力是关于“思考的质量”。是关于找到那个最简洁、最优雅的解决方案。

Copilot 常常会生成一些非常冗长、非常平庸的代码。它只是把我可能要写的那些样板代码(boilerplate)给吐出来了。问题是,我经常不想写那些样板代码。我可能会停下来想,“有没有更好的方法?我能重构这个东西,让它不需要这么多样板代码吗?”

Copilot 打断了这种思考。它太快了,太急于“帮助”我了。它诱使我接受一个“还行”的解决方案,而不是去寻找那个“卓越”的解决方案。从长远来看,这会侵蚀代码库的质量,也会侵蚀我作为程序员的技能。就像学习弹吉他,你看再多 YouTube 视频也学不会,必须亲手把手指放在琴弦上。我认为这和编程有相似之处,编程必须通过亲手输入来学习。

Lex Fridman: 那么,你认为 AI 编程工具有没有它的用武之地?

DHH: 有。我认为它作为一个学习工具有着巨大的潜力。这很矛盾,对吧?我一方面说它会侵蚀技能,另一方面又说它可以用来学习。

让我来解释。当我遇到一个我不熟悉的领域时,比如一个新的库,或者一门新的语言。我可以让 Copilot 或者 ChatGPT 给我生成一些例子。这就像有了一个不知疲倦的、耐心的导师。我可以问它,“嘿,用这个库怎么画一个图表?”然后它会给我一个代码片段。

这比在网上搜索文档要快得多。我可以立刻得到一个可运行的例子,然后我可以去修改它,去理解它。在这种情况下,我不是在让它代替我思考。我是在用它作为一个起点,来加速我的学习过程。

「AI 是个很棒的导师,但得由我主导」

Lex Fridman: 所以区别在于使用的意图?是在用它来代替思考,还是用它来辅助学习?

DHH: 完全正确。这关乎于谁在主导。如果是我在主导,我有一个明确的目标,我只是用 AI 来获取信息或者处理一些繁琐的细节,那它就是一个强大的工具。但如果是 AI 在主导,它不断地向我推送建议,诱导我走上一条特定的道路,那它就变得很危险。

我每天都因为 AI 而变得更聪明,因为我用它来给我解释东西。即使是一些我不好意思在谷歌上搜索的“愚蠢”问题,AI 也非常乐意用最简单的方式为我解释那些我本该知道但实际上并不知道的 Unix 命令。这是一个了不起的教育工具。

但当我坐下来,准备进入“创造模式”,准备构建一些重要的、持久的东西时,我会把它关掉。因为在那个时刻,我需要的是深度专注,是我和代码之间的直接对话,我不希望有任何东西插在中间。

「别拿风险投资,这是第一条」

Lex Fridman: 让我们来谈谈商业。你和 Jason Fried 建立 37signals 的方式非常独特。你们没有拿风险投资。

DHH: 不要拿风险投资。这是第一条。风险投资不是免费的钱。它带着期望,带着压力。VC 的商业模式是基于本垒打的。他们投 10 家公司,需要有一两家能带来 100 倍的回报,来弥补其他所有失败的投资。这意味着他们会把你推向一个“不惜一切代价实现增长”的模式。

你的公司将不再是你的了。它变成了一个金融工具,一个实现 VC 投资组合回报的工具。他们会催促你雇更多的人,花更多的钱,冒更大的风险。绝大多数情况下,这会导致公司烧光钱然后倒闭。这是一种“要么成为独角兽,要么去死”的心态。但绝大多数健康的、可持续的、能让创始人过上美好生活的企业,都不是独角兽。风险投资扼杀了这种可能性。

Lex Fridman: 那你们的模式是什么?

DHH: 我们的模式很简单:打造一个人们愿意付费的好产品,然后用客户付的钱来发展公司。我们称之为“拉面盈利”(Ramen profitable)。就是说,你的收入至少能支付创始人的基本生活费,比如房租和拉面。

我们从第一天起就是盈利的。我们从未亏损过。这给了我们自由。我们能够按照自己的节奏来发展公司,能够做我们认为正确的事情,而不是 VC 认为能快速提升估值的事情。我们为客户服务,而不是为投资人服务。这种独立性,是无价的。我们宁愿拥有一家小而盈利的公司的 100% 股权,也不愿拥有一家估值 10 亿但我们只占 5% 股权、并且时刻处于破产边缘的公司。

「我会把公司烧了,也不会给苹果 30%」

Lex Fridman: 这种独立性让你们有底气去挑战苹果。可以详细讲讲那个故事吗?

DHH: 当然。这是我们独立自主哲学的一次终极考验。我们推出了 HEY,一个新的电子邮件服务。我们为此努力了两年。我们提交了 app 到苹果的 App Store。最初的版本被批准了。然后我们提交了一个带有 bug 修复的更新版本。这个更新被拒绝了。

苹果告诉我们,我们的 app 违反了他们的规定,因为我们没有在 app 内提供通过苹果支付系统进行订阅的选项。我们的 app 是这样的:你可以在我们的网站上注册 HEY,然后下载 app 来使用这个服务。这和 Netflix 或者 Spotify 的 app 是一样的模式。这些“读者”应用是被允许的。

但苹果突然决定,这个规则现在要以一种新的、更严格的方式来解释,而且只针对我们。他们说,我们必须在 app 里加入苹果的内购(In-App Purchase),让他们能从中抽取 30% 的分成。

Lex Fridman: 你的反应是什么?

DHH: 我的反应是,“绝不。”

这不仅仅是钱的问题。这是原则问题。苹果正在滥用他们作为平台守门人的垄断地位。他们试图强迫我们接受一个不公平的交易。

我当时就想,我们有两个选择。要么我们屈服,要么我们抗争。我跟 Jason 说,“在我把我们业务的 30% 交给苹果之前,我会把这家公司烧成灰烬。”这不是一句空话。我当时就是这么想的。有些事情比钱更重要。

所以,我们选择了抗争。我把整件事公之于众。我在推特上发布了苹果的拒绝信,解释了情况。这引起了轩然大波。开发者、记者、甚至一些政客都开始关注这件事。我们把这场斗争变成了一场关于平台权力和开发者权利的公开辩论。

Lex Fridman: 你害怕吗?挑战苹果可不是一件小事。

DHH: 当然。苹果是世界上最强大的公司之一。他们可以轻易地把我们从 App Store 里抹去,毁掉我们的业务。但有时候,你必须站出来,为你认为正确的事情而战,即使你可能会输。斯多葛主义教导我,专注于你能控制的事情。我无法控制苹果的决定,但我可以控制我的回应。我选择战斗。

幸运的是,我们没有输。由于公众的压力,苹果最终让步了。他们批准了我们的 app,没有强迫我们加入内购。这是一个巨大的胜利,不仅是对我们,也是对所有在 App Store 里受到不公平待遇的开发者。它证明了,即使是小公司,如果站在原则的一边,并且敢于发声,也能撼动巨人。

「开源是礼物,不是附带条件的交易」

Lex Fridman: 你对开源的原则也非常坚定,这导致了你和 Automattic(WordPress 的母公司)的一些公开争论。

DHH: 是的。那件事让我非常失望。我们开源了一个叫做 Stimulus 的 JavaScript 框架。Automattic 在他们的一个产品中大量使用了它。后来,他们决定分拆那个产品,成立一个独立的公司,并且筹集了大量的风险投资。

然后,他们的 CEO Matt Mullenweg 联系我,基本上是说,因为他们的新公司要靠我们的免费软件来建立,我们应该得到一些补偿。他提出给我们一些新公司的股权。

Lex Fridman: 这听起来像个不错的提议?为什么拒绝?

DHH: 不。这完全违背了我对开源的理解。我开源 Stimulus,是因为我为自己构建了它,并且乐于分享。它是一份礼物。我从不期望任何回报。当 Matt 提出给我股权时,他把一种交易关系强加到了这种纯粹的给予行为之上。

更糟糕的是,这背后有一种隐含的威胁。就好像在说,“我们现在这么依赖你的软件,如果你不 ‘合作’,如果未来出了什么问题,那就会很难看。”

我 100% 反对此类互动。这污染了开源。开源应该是无私的,一旦你开始计算谁欠谁什么,它的精神就被破坏了。你不能在把免费软件作为礼物送给世界之后,又回过头来说,“既然你用了我的礼物,你就欠我一大笔钱,因为你用我免费给你的东西太成功了。”

Lex Fridman: 你是一个观点鲜明的人,这也为你引来了不少批评和“憎恨者”(haters)。你如何看待这些负面反馈?

DHH: 我认为这是一个物理定律。如果你创造了很多人喜爱并有价值的东西,你必须创造出同等且相反的“憎恨者”力量。你不可能只拥有热爱你的人而没有憎恨你的人。唯一的例外是平庸。

如果你做一些没有人关心、没有人有强烈感觉的东西,那你可能不会有憎恨者。但你也不会有真正的粉丝。所以我把憎恨者看作是一个积极的信号。这说明我所做的事情,我所说的话,触动了人们的神经。它很重要。当然,这并不意味着我要去享受它。被人攻击从来都不是一件愉快的事。但你必须学会把它看作是成功的副产品,然后继续前进。

Lex Fridman: 最后一个问题。对于那些刚刚开始编程生涯的年轻人,或者那些正在考虑进入这个行业的人,你有什么建议?

DHH: 找到你真正热爱的东西。不要因为某个技术很“火”就去学它。编程是一项艰难的工作。如果你对你正在构建的东西没有热情,你很难坚持下去。

找到一个你想解决的问题。一个你自己的问题。就像我当初为我的游戏新闻网站构建自动化工具,或者为 Basecamp 构建框架一样。当你为自己构建东西时,你会更有动力,你会学得更快。

不要害怕与众不同。这个行业充满了各种教条和“最佳实践”。倾听它们,但不要盲从。发展你自己的品味,你自己的风格。相信你的直觉。最有趣、最有价值的工作,往往来自于那些敢于挑战传统智慧的人。

最后,享受这个过程。编程是一场奇妙的旅程。享受学习的乐趣,享受创造的快乐,享受解决难题的满足感。这才是最重要的。可可·香奈儿有句名言:“生活中最好的东西是免费的,第二好的东西则非常非常昂贵。” 而家庭、朋友、爱好,这些实际上是世界上大多数人都能拥有的东西,这就是胜利。专注于这些,你的人生会非常富有。

· · ·

📢 AI 产品爆发,但你的痛点解决了吗?

2025 全球产品经理大会

8 月 15–16 日 

北京·威斯汀酒店

互联网大厂、AI 创业公司、ToB/ToC 实战一线的产品人

12 大专题分享,洞察趋势、拆解路径、对话未来。

立即扫码领取大会PPT

抢占 AI 产品下一波红利


(文:AI科技大本营)

发表评论