社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

“Git从来不是我的主业,我受到的赞誉太多了!”Linus谈Linux开发往事:造Git,只是为了能回去维护内核

AI思想会 • 1小时前 • 7 次点击  
【前言】AI 正以前所未有的速度发展,新的机遇不断涌现,如果你希望:与技术专家、产品经理和创业者深度交流,一起探索 AI如何改变各行各业。欢迎在文末扫二维码,加入「AI思想会」交流群,和一群志同道合的伙伴共同学习、思考、创造!

  • 从最初拒绝直接采用别人提交的补丁,到逐渐学会与社区协作,让 Linux 成为全球开源协作的典范;

  • 从顶住压力引入 BitKeeper,到因授权纠纷失去使用权限、退出内核维护,再到在短短 11 天内创造 Git,最终让其成为全球主流的版本控制系统;

  • 从曾经一年甚至两三年才能发布一个新版本,到建立起合并窗口与候选版本机制,将发布周期缩短至几周,如今每隔 9~10 周就能稳定推出一个新版本。

过去 35 年间,Linux 之父 Linus Torvalds 做过不少当时看来并不容易被理解的决定,而这些决定,也一次次改变了软件开发的方式。如今,AI 正在给 Linux 内核开发带来又一次重大变化。

谈及过去,Linus 坦言,Git 从来都不是他的主业,它只是一个帮助自己完成真正工作的工具,而自己在 Git 上获得了太多赞誉了:「我确实参与了 Git 的诞生,但已经有 20 多年没有积极参与这个项目了。」面对 AI,Linus 的态度也发生了转变。起初,他对 AI 不以为然,对「氛围编程」更是嗤之以鼻,如今他却直言:「我真的很喜欢使用 AI。」

近日,在 Linux 内核维护者峰会期间,Linus 与开源老友 Dirk Hohndel 展开了一场对谈。从 Linux 和 Git 的诞生故事,到 AI 如何改变内核开发与个人编程,两人回顾了许多鲜为人知的技术往事,也聊到了这位开源世界标志性人物对 AI 时代的最新思考。

对于开发者而言,这不仅是一场关于 Linux 过去 35 年的回顾,也是一场关于编程未来的对话。

图片

图片

最初收到补丁,Linus 却选择自己重写

Dirk Hohnde:早上好,很高兴来到这里。我是 Dirk Hohndel。最近,我加入了爱立信,担任爱立信软件技术部(爱立信的开源部门)负责人。能与一支规模庞大、充满热情的上游开源开发者团队共事,我感到非常荣幸。

现场有爱立信的同事吗?在我上一份工作中,我可没法开这样的玩笑。

我从事开源已经相当长一段时间了。很多人都在谈论,这据说已经是第 35 个年头了。我觉得这实在有些难以置信,但事实确实如此。那么,您是哪位?

Linus Torvalds:显然,我就是 Linus。我们之所以采用这种奇怪的对谈形式,是因为我极其讨厌公开演讲,而且即使过了 35 年,我依然会为此感到紧张。

我们发现,让我放松下来的办法就是确保我什么都不用准备。Dirk 负责构思问题,并挑选相关话题来问我;而我只需要毫无准备地走进来,往后一靠,然后尽可能享受这个过程。

Dirk Hohndel:所以大家接下来要听的是一场对谈,我觉得这挺有意思的。

说到这 35 年:我想回顾一下 1991 年 Linux 这一切刚开始的时候。当时那种模式有一点很有趣,那就是人们给你发送补丁,但你其实并没有直接应用它们。你能稍微聊聊这个吗?

Linus Torvalds:我觉得这并不是我独有的情况。当你开始自己的项目,并且习惯了独立工作时,确实需要一段时间才能真正学会如何与他人合作。你会觉得:“这是我的项目,我懂这些代码。” 诚然,当时第一个版本的代码量大概只有 10000 行,所以我确实熟悉整个代码库。

当人们给我发送补丁时——而这些人往往比我更懂 Unix——我本可以直接应用他们的补丁,但当时我的思维方式并不是这样。我希望让代码开源,但那时的我还不算一个真正的“开源人”,仍在学习如何成为这样的人。

不过,我并没有花太长时间就意识到了这一点。毕竟,我一点也不懒,而且既然已经有人把现成的补丁发给了我,我又何必再做额外的工作呢?直接应用就好了。

在我最终改变想法之前的三四个月里,我其实一直在做额外的工作:收到补丁后,我会先仔细阅读,弄清楚贡献者想要实现什么,理解他们的意图,然后自己从头到尾重新写一遍。后来我才意识到,既然有人已经提供了可以直接使用的代码,我就应该好好利用这个机会。

我觉得这种情况并不少见。后来,我在其他项目中也见过类似的现象。只要这不是一场持久战,只要你没有一直拒绝外部帮助,让大家觉得自己被排斥在项目之外,那就不是什么大问题。毕竟,学会如何与社区合作,本来就需要时间。

Dirk Hohndel:当我开始参与 Linux 时,我做了大家似乎都会做的事:我把整个源代码打印了出来。今天再想这么做就有点难了。如果你现在这么搞,一个新内核大概要合入 1.4 万个补丁,那得花上相当长的时间。

Linus Torvalds:现在这种方法不太适合大规模应用。


图片

从没有版本控制工具到采用 BitKeeper 引发的争议

Dirk Hohndel:我的意思是,如果你回头看,一旦你开始应用补丁,你手里就只有你的源码树。当时并没有源代码版本控制系统。你是怎么管理的?如果某个改动破坏了代码,你要怎么回退?你当时管理源代码的流程是怎样的?

Linus Torvalds:当时根本没有什么正式流程。我每天都在内部处理补丁,至少每周发布一次。对于一个小项目来说,这种方式的效果出奇地好。

后来,我变得非常讨厌 CVS,而且有具体的理由不使用它。不过在早期,我倒不是讨厌 CVS,只是因为我这辈子从来没用过任何源码管理系统。用补丁和压缩包来记录代码变更,对我来说就是最自然的方式。

还是那句话,当时的系统规模比较小,参与的人也少得多。1991 年和 1992 年,我们只有少数几个贡献者,后来才逐渐增加到大约 50 人。那时的项目更容易管理,也不一定需要大量的基础设施。

Dirk Hohndel: 补丁和压缩包似乎是处理代码显而易见的方式。这种方法——接收补丁,每周创建一个新的压缩包,然后发布压缩包和差异文件(diffs),一直持续到了 2002 年。到了那时候,这已经是一个大得多的项目,贡献者也多了很多。你中途有改变过这个流程吗,还是说依然只有你和你的电脑?

Linus Torvalds:当时真的只有我和我的电脑。不过,一些子系统(主要是网络子系统)已经迁移到了 CVS 上,而那时我也已经学会了使用 CVS。

问题在于,在很长一段时间里,我们都没有好的分布式版本控制工具可用。我一直坚信,每个人都应该拥有自己的本地开发环境。而通过压缩包和补丁,每个人都能确保自己使用的是完全相同的代码。

相比之下,搭建一个中心化的 CVS 仓库、维护仓库、管理提交权限,以及处理分支——而分支操作在 CVS 中简直就像黑魔法一样——整个过程既痛苦又充满挑战。

Dirk Hohndel:我曾在 CVS 中管理 XFree86,在我的系统上给一个发布版本打标签(tagging)就要花上两个半小时。

Linus Torvalds:在 Larry McVoy 带着 BitKeeper 出现之前,我们一直缺乏像样的基础设施。有些人对 BitKeeper 的记忆充满了强烈的厌恶,但对我来说,它是第一个让我意识到源码控制原来可以以分布式方式运行的系统。

它真正实现了数据的分发,而不是将数据锁定在一个中央仓库中,再向外分发功能受限的副本。我非常享受这种体验,尽管当时认同这种方式的人并不多。

Dirk Hohndel:你后悔做出了使用 BitKeeper 的决定吗?它当时争议很大;Alan Cox 和其他人坚决反对使用专有软件。

Linus Torvalds:我们当时的分歧很大。即使到了今天,虽然我们已经有了一套标准工作流程,但成为一名内核维护者,也并不意味着你必须使用 Git。Andrew Morton 作为 Linux 核心维护者长达 15 年,他就完全不用 Git。

事实上,当时我们也有一套推荐的工作流程。到了 2000 年代初期,这套流程使用的是 BitKeeper,但很多人拒绝使用它,因为它不是开源软件。尽管如此,BitKeeper 的普及程度已经足够高,这对我来说简直是一种解脱。我终于能够轻松得多地合并网络代码、ARM 架构代码以及许多其他子系统的代码。

在教会我们一套工作流程应该如何运转这件事上,BitKeeper 取得了巨大的成功。它确实存在缺陷,但它做对了足够多的事情,让我逐渐看清自己真正想要的版本控制系统究竟是什么样的。


图片

退出内核维护,11 天造了一个 Git 出来

Dirk Hohndel:接着就到了 2005 年,以及那场授权纠纷。

Linus Torvalds:我们当时遇到了一场许可证争议。BitKeeper 的许可证规定:“你可以将它用于开源项目,但不能对其进行逆向工程。”结果,最终还是有人对它进行了逆向工程,这意味着我们失去了使用这款工具的许可。

这对我来说是一个巨大的打击。毕竟,在我从事 Linux 工作的 13 到 14 年间,BitKeeper 是唯一一款让我觉得真正可以接受的工具。

这件事令人非常震惊。一旦你习惯了某种工作流程,突然失去它,就会感到极其痛苦。即使一个流程并不完美,只要你已经熟悉它,就知道该如何应对其中的缺陷。而在体验过更好的工具之后,我已经完全无法退回到使用压缩包和补丁的时代了。

于是,我暂时退出了内核维护工作,并表示,只要找到替代方案,我就会回来。

Git 就这样诞生了。

如果说 BitKeeper 曾遭到社区中一些人的反感,那么 Git 从一开始招致的厌恶就更为强烈。它虽然是开源的,但还很粗糙,而且我故意让它的工作方式与传统工具有所不同。当时,一些从未接触过 BitKeeper 的人听说,现在终于有了开源的源码控制工具,便表示:“好吧,那我愿意试试。”但这些人通常都有 CVS 的使用背景,而他们发现,自己根本无法理解 Git。

Git 的有向无环图和对象存储模型,对他们来说完全陌生。再加上我对 CVS 的命名约定深恶痛绝,于是把所有命令都重新命名了一遍,这让他们更加无所适从。

所以,我不知道在座有多少人是从 2005 年、2006 年就开始使用 Git 的。那时候,Git 还很新,不够完善,也存在不少缺陷,整体体验与人们的预期相去甚远。

但我想说的是,大约五年时间里,Git 就从一个古怪、特立独行的项目,演变成了彻底改变源码管理格局的标准工具。这件事其实很奇怪。因为在 Git 出现之前,CVS 已经存在了几十年,期间也有人试图用 SVN 来取代它。我曾经觉得,这个领域的阻力实在太大,历史包袱太重,大家又太习惯传统的工作流程,所以我们可能永远都无法说服别人使用 Git。

但对我来说,只要能在内核项目中使用 Git,就已经足够了。这是我当时唯一关心的事情,直到今天也依然如此。

然而,某种转变还是发生了。如今,甚至已经没人认识 CVS 了。如果你是一个刚走出大学校园的年轻人,很可能从来没听说过 CVS,而 Git 却已经无处不在。直到今天,这件事仍然让我感到惊讶。

每次聊到这个话题,我都想向大家澄清一点:我创建了 Git,维护了半年,然后就说:“我不管了。”对我来说,Git 从来都不是首要目标。它只是一个帮助我完成真正工作的工具——让内核能够顺利运转,让我可以重新回到维护工作中。

半年后,Git 对我来说已经足够好用了,于是我把它交给了 Junio Hamano。在 Git 早期的大部分时间里——那半年中差不多有五个月——我一直在和他一起工作。我很欣赏他的思维方式,所以最后我对他说:“抓到你了,接力棒交给你。你现在就是 Git 的新维护者了,自己看着办吧。”

此后,他与成百上千名其他贡献者一起,在这个项目上持续耕耘了 20 多年。

有时候,我觉得自己在 Git 上获得了太多赞誉。我确实参与了 Git 的诞生,但已经有 20 多年没有积极参与这个项目了。

Dirk Hohndel:关于这一点,我想稍微反驳一下。人们总是对我能清楚记得 Git 是什么时候诞生的感到惊讶:那是在 2005 年 4 月。

我之所以记得这么清楚,是因为当时 Linus 的太太邀请我和我太太一起帮忙筹办他二女儿(也就是我的教女)的生日派对。我们到了之后才发现,这活儿至少得四个人才能干得完。结果,Linus 却对我说:“嘿,Dirk,我想跟你聊聊我最近在弄的一个玩意儿。”

于是,我们俩就溜到了一家冰淇淋店,把组织派对的活儿留给了各自的太太。这件事后来可没少让我挨抱怨。正因为如此,我才对这一切究竟是从什么时候开始的记得如此清楚。

我想说的是,在座各位都是软件开发者。如果你在一家公司工作,试图针对一个复杂的领域开发一种突破性的全新解决方案,然后告诉老板,你打算一个人在 11 天内搞定——因为这正是 Linus 从开始动手到做出第一个可用版本所花的时间——那么,请大家好好体会一下这件事的分量。

发明一种全新的对象模型,编写代码,并在不到两周的时间里让它真正跑起来。千万别让你们的老板听到这段话,否则他们可能会觉得,你们平时都在摸鱼。

Linus Torvalds:或者他们会说:“我用大语言模型(LLM)两个小时就能搞定。”

Dirk Hohndel:你觉得半年后 Git 已经足够好了,然后 Junio 就接手了。那社区觉得半年后它够好吗?社区花了多久才接受它?在那个一个半礼拜之后,他们显然是不买账的。

Linus Torvalds:因人而异。有些人花的时间比别人长。我们有些核心的内核维护者在一个月后就接受了。还有些人,比如 Andrew Morton,他花了 15 年才开始用。什么情况都有。

值得一提的是,今天的 Git 显然比 2005 年那会儿要好得太多了。


图片

每两年发布一次太痛苦,Linus 提议改成每五周一次

Dirk Hohndel:还有一个关于开发模式的有趣变化,我想简单聊一下。

Git 于 2005 年诞生。到了 2005 年、2006 年,大多数人开始使用 Git 时,Linux 的开发模式仍然是原来的样子。

Linux 开发模式真正发生重大转变,大约是在 2014 年。当时,我们从过去那种“Linus 想什么时候发布就什么时候发布”的模式,转向了合并窗口和候选版本机制,整个开发流程也变得更加规范和有序。你能谈谈这次转变吗?

Linus Torvalds:我想先问一个问题:在座有多少人是在 2006 年之前就开始参与 Linux 开发的?嗯,举手的人还真不少。

对于那些没有这么长时间参与其中的人来说,我们现在已经拥有了一套非常稳定的开发模式。整整 20 年来,我们基本上每 9 到 10 周就会发布一个新版本,而且这套模式运行得非常出色。有时候,人们甚至意识不到它有多好,因为它就是这么运转着,一切都很顺利。

但在我刚开始推行这套机制的时候,这种模式简直被认为是疯狂的。昨天我们刚刚举行了 Linux 内核维护者峰会。这让我想起了早年时期的另一次峰会,大概是 2006 年那次。

当时我提出了自己的想法:我希望摆脱那种所谓的年度发布模式。因为名义上每年发布一次,实际上却往往要拖到两三年。

问题在于,当你采用年度发布模式时,就会出现两棵代码树:一棵是大家实际使用的稳定版代码树,另一棵则是开发版代码树,所有新鲜、有趣、令人兴奋的工作都在里面进行。

可等到一年过去,真正要发布这些新功能时,整个系统往往已经无法正常运行了。因为这一整年里,我们一直在不断地破坏原有的东西。这就是过去的开发方式。

这种模式一直让人非常头疼。很多 Linux 发行版会采用那棵大家没有在上面进行新功能开发的稳定版代码树,然后再把他们认为绝对需要的补丁回移进去。结果,每个人手里都有一套混杂不堪的代码树。我们称它们为稳定版,但实际上并不稳定;与此同时,还有另一套开发版代码树。没有人能够真正制定计划,因为所谓的年度发布,最后往往变成两年甚至三年才发布一次。

所以,当你身处这样一种开发环境时,我却跑到维护者峰会上说:“我不喜欢现在的模式。我希望我们能把发布周期从每两年一次,改成每五周一次。”

当时大家看我的眼神,就像我脑袋上长出了第三只眼睛一样。有人甚至会问:“你最近是不是吃了什么奇怪的药?”

但我的态度是:“我真的非常想试试,因为现在这种两年一次的发布节奏根本行不通。”

事实证明,我提出的五周发布周期确实很激进,而且这是我故意设定得这么激进的。我当时也不认为我们真的能做到每五周发布一次。

但如今,这套模式已经运行了 20 年。我不仅惊讶于它竟然真的行得通,更让我惊讶的是,它至今依然运行得如此出色。我们几乎在一瞬间就彻底改变了整个开发模式,摆脱了过去那套方式。

严格来说,过去的模式并不是完全行不通,只是此前 15 年的开发过程一直非常痛苦。于是,我们决定彻底改变工作方式。在这期间,我们经历过几次类似的转变:工具和工作流程发生了巨大的变化,而这些变化往往伴随着非常痛苦的过程。但到目前为止,每一次转变最终都取得了成功。

过去 20 年里,我们一直拥有一套非常稳定、运转良好的开发模式,就像钟表一样精准。这真的非常棒。我们都知道,Linux 7.3 一周后就会发布,对吧?

Dirk Hohndel:是的,7.3 已经发布了。有什么有趣的变化吗?

Linus Torvalds:我以前常说,内核应该是无聊的。现在我很高兴地说,它确实基本上很无聊。我们没有什么特别重大的新功能,而且我一直在主动避免让每次发布都加入令人兴奋的新功能。

我非常相信渐进式的小改动。随着时间推移,这些小改动最终会汇聚成重大功能,而你不会觉得它们是突然出现的巨大飞跃。你看到的只是一些细微的变化,开发者和 Linux 发行版会逐渐采用它们,用户程序也会慢慢开始使用这些功能,有时候甚至要等上几年。

只有当你回头去看一个五年前的 Linux 发行版,再看看它现在的样子时,你才会突然意识到:“天哪,原来这期间已经发生了这么多重大变化!”

但我认为,我们不应该采用软件行业特别喜欢的那种传统的重大版本发布模式,也就是发布一个全新的 1.0、2.0 版本,然后打破所有东西,引入一堆令人兴奋的新功能。


图片

AI 生成的补丁越来越多,Linux 维护者开始用 AI 审查 AI

Dirk Hohndel:这方面的典型例子,我不确定 Thomas Gleixner 是否在现场。从最初提出 RT Linux,到它最终被完整合并进主线内核,整整花了 10 年时间。所以,是的,有些事情确实需要相当长的时间。

好了,我们这场演讲已经进行了 25 分钟以上,居然还没聊到 AI。我对此感到非常自豪。

Linus Torvalds:好了,停!这种情况马上就要改变了。

Dirk Hohndel:是的,马上就要改变了。那么,Sashiko 似乎是一个非常有用的工具,它可以利用 AI 来审查拉取请求。你实际上会在合并窗口期间,用它来审查收到的 PR 吗?

Linus Torvalds:我不用 Sashiko。我也不能这么说……

对于不了解情况的人来说,我们有各种 AI 工具,会在公开的邮件列表上进行补丁审查。这些邮件列表与我们平时进行内核开发的邮件列表是同一套。

Sashiko 是其中最主要的一个工具,由 Google 内部维护,但整个项目是开源、公开进行的。

实际上,它已经改变了人们的工作方式。很多子系统现在基本上不再接受补丁,除非这些补丁已经经过 Sashiko 的公开审查。

我不会说这些审查结果完全可靠,因为它并不完美。AI 在代码审查中有时会提出错误的意见,这也是现实的一部分。我甚至不会因此责怪 AI,因为人类审查者同样会给出错误的意见。

Sashiko 确实改变了许多子系统的工作方式。某种程度上,我们正在用自己的 AI 补丁审查浪潮,来应对 AI 生成的补丁浪潮。

人们开玩笑说,现在是机器人在和机器人对话。实际上,这种情况确实已经发生了。

其实,AI 对内核开发的影响是颠覆性的。我们现在收到了大量各种各样的补丁,其中有些针对非常重要、真实存在的安全问题,也有些针对已经 20 年没人碰过的代码。毕竟,那些代码早就没人关心了。

可当你让一个 AI 机器人去检查代码,问它:“这里是不是存在内存泄漏?”它就会回答:“我才不管这个驱动程序现在是不是已经没人用了,我会把能找到的所有错误报告都给你。”

所以,我们收到的补丁中,既有很有价值的,也有没那么有价值的。

总体而言,我认为 AI 正在改善我们的代码库。不过,它也给维护者带来了很大的压力,甚至已经到了令人担忧的程度。

Dirk Hohndel:我认为,这也是 AI 代码审查工具如此重要的原因之一。它们并不是要取代维护者,而是能够让维护者的工作变得更加轻松。

如果有一个 AI 工具能够帮忙检查差一错误(off-by-one errors)、API 使用错误以及类似的问题,我认为这会非常有帮助。

Linus Torvalds:昨天的维护者峰会上,我们大约四分之三的讨论都围绕着一个问题展开:如何让 AI 工具,无论是代码生成还是代码审查,都能减少大家的压力,让整个过程更加顺利,也能真正为所有人提供帮助。

显然,AI 已经成为 Linux 内核开发中的一个重大议题,其他领域也一样。相信大家对此都已经非常熟悉,甚至听得有些厌烦了。


图片

“AI 是进入编程世界的入门药”

Dirk Hohndel:不过,谈到 AI 代码审查,人们最想讨论的往往是这样的场景:一位高级管理人员坐在办公桌前,告诉聊天机器人要开发什么新功能,然后 AI 就能完美地把它实现出来。我们还远远没有达到那个阶段。

我想聊的是我们最近关于你一个业余爱好项目的一次对话。你在开发一个原声吉他效果器,并且为上面的均衡器做了一个 JavaScript 的用户界面。让我特别感兴趣的是,你描述了整个过程:你是如何从明确自己想要什么,一步步引导 AI,最终让它真正写出你想要的东西的。

Linus Torvalds:我对 AI 的看法经历过很多阶段。最初,我觉得它根本不怎么样。后来,我开始觉得它作为一种工具还挺有意思,也鼓励大家多尝试、多玩玩。而现在,我已经到了一个阶段:我真的很喜欢使用 AI。

需要澄清的是,我现在已经不怎么写大量的内核代码了。我的角色更像是一个维护者、技术负责人。对我来说,内核项目里真正干活的是其他人,而我更像是一个汇集各方工作的协调点。

不过,在我自己做的那些小项目里——毕竟我至今仍然非常享受编程——我确实认为,只要正确使用 AI,并且把它当作一种工具,它就会非常出色。我发现,AI 让编程变得有趣得多。

我大概是 1981 年开始编程的。那时候计算机简单得多,你能够理解它们在做什么,拿来和自己的程序比较的作品也简单得多。我记得自己十几岁时写过一些游戏。那些游戏简直糟透了,但当时的标准也没那么高,所以我并不会因为自己写出来的东西而感到羞愧。

后来几年,我开始觉得,软件工程的门槛已经高得惊人。一个刚入行的年轻人,很难觉得自己那些微不足道的尝试有什么价值,因为他们看到的都是经过打磨、非常专业的作品。你看看自己的手机,里面有漂亮的界面。对于一个刚刚开始学习编程的人来说,要达到这样的水准实在太难了。

而现在,我在那些小项目中使用 AI 后,反而觉得 AI 真是一件了不起的东西。至于大家讨厌的“氛围编程”——当然,也不是所有人都讨厌,只是很多人喜欢拿它开玩笑——我认为,它是重新找回编程乐趣的一种绝佳方式。因为它让你觉得,自己正在做一些真正有用的东西。它也让初学者能够完成一些原本很难做到的事情。

我认为,无论你是在学习什么,尤其是编程,入门门槛都应该足够低,让你能够先享受到其中的乐趣,然后真正开始学习,而学习需要花很长时间。

我以前确实不喜欢 AI,也一直对“氛围编程”嗤之以鼻。对于真正的项目,我现在依然如此。我认为,在处理真实而重要的工作时,使用 AI 必须非常谨慎。

不过,我很喜欢把 AI 看作进入编程世界的“入门药”。

我当时在做自己的一个小项目,也就是那个吉他效果器。我知道自己在做什么:我已经用 C 写好了一个 UI,它运行在微控制器上,显示在一块小屏幕里。但我看着它就觉得:“这也太蠢了吧,简直像是 80 年代的东西。”

我不是做 UI 的人。我想让它看起来更现代一些,像是这个世纪的产品。可我不会 Java,也不会那些花里胡哨的东西。我写内核,做的是硬核的事情——用 C 做底层编程。

所以我想,解决办法就是让 AI 帮我做那些我不擅长、而且我也知道自己不擅长的事情。有时候,那些东西是我想学的;但有时候,我甚至根本不想学。我仍然对底层编程感兴趣,只是也想拥有一个漂亮的 UI。

我看过你们都看过的那些 YouTube 视频:只要给 AI 一个提示,它就能帮你把东西做出来。于是我也给了它一个提示。结果它做出来的东西糟透了,真的很差。

但我知道自己想要什么,也知道自己在做什么。于是我继续给 AI 提示,告诉它:“看,我已经用 C 把这些功能实现了。我做得是正确的,只是界面很丑。你就按照我已经完成的东西来做——这些代码我理解,也知道它们是正确的——然后给它一个漂亮的外观。”

最终的结果确实让我非常惊讶。

我觉得,很多人喜欢讨厌 AI,也有一些人真心喜欢它。我认为 AI 是一种很有意思、也很有用的工具。它可以成为进入编程世界的入口,也可以帮助你写出非常优秀的代码。

不过,如果你想用 AI 写出真正优秀的代码,我认为你也必须理解代码本身,并且把 AI 当作一种工具来使用。它不应该只是一个玩具。

但通过把 AI 当作玩具来尝试、进而进入编程世界,也许正是一条很好的路径。

Dirk Hohndel:没有比用“AI 是进入编程世界的敲门砖”这个观点来结束对谈更好的方式了。非常感谢大家。

  • 完整采访内容:https://www.youtube.com/watch?v=0PSA2LFFlvk

本文系学术转载,如有侵权,请联系后台删文
(👇 长按识别二维码)
图片
转自:CSDN

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/203117