你是说灭绝吗?
摘要
一篇反思程序员因AI/LLM而变得过时焦虑的文章,类比《侏罗纪公园》中从定格动画到CGI的转变,敦促专业人士进化并学习新工具。
暂无内容
查看缓存全文
缓存时间: 2026/07/12 10:49
# 你不是说灭绝了吗?
来源:https://fabiensanglard.net/extinct/index.html
2026年7月10日
## 你不是说灭绝了吗?
1993年,《侏罗纪公园》上映,彻底革新了CGI在电影中的应用[[1]](https://fabiensanglard.net/extinct/index.html#footnote_1)。对公众而言,这体验如同魔法。但对电影行业的一些人来说,这是一记警钟。
导演史蒂文·斯皮尔伯格曾聘请定格动画大师[[2]](https://fabiensanglard.net/extinct/index.html#footnote_2)菲尔·蒂皮特[[3]](https://fabiensanglard.net/extinct/index.html#footnote_3),用他的“go-motion”技术([https://www.youtube.com/watch?v=4BLL3r_Iydw](https://www.youtube.com/watch?v=4BLL3r_Iydw))为电影中的全身恐龙赋予生命。斯皮尔伯格非常怀疑计算机生成图像(CGI)能否逼真地描绘恐龙[[4]](https://fabiensanglard.net/extinct/index.html#footnote_4)。但丹尼斯·穆伦和工业光魔(ILM)的数字艺术家们制作了一个CGI概念验证。他们渲染了一只完全纹理化、照片级真实的霸王龙,在正午阳光下追逐一群似鸸鹋龙([https://www.youtube.com/watch?v=nXxfjtN43ZA](https://www.youtube.com/watch?v=nXxfjtN43ZA))。
> “我和(视觉特效总监)丹尼斯·穆伦一起下楼,他给史蒂文展示了霸王龙的测试片段,史蒂文说:‘哇,我们就要这么做。’然后他问我什么感受,我说:‘我觉得我灭绝了。’[[5]](https://fabiensanglard.net/extinct/index.html#footnote_5) 好像我之前积累的一切都意味着‘我们不会再那样做了。’[[6]](https://fabiensanglard.net/extinct/index.html#footnote_6)” —— 菲尔·蒂皮特
> 蒂皮特已经选定了一支三十人的团队,正全力准备庞大的 go-motion 任务,可想而知,事态的转折让他备受打击。 —— 《〈侏罗纪公园〉制作特辑》([https://www.amazon.com/Making-Jurassic-Park-Don-Shay/dp/034538122X](https://www.amazon.com/Making-Jurassic-Park-Don-Shay/dp/034538122X))
最近我经常想起这段轶事。我看到许多程序员周围弥漫着悲观情绪[[7]](https://fabiensanglard.net/extinct/index.html#footnote_7)。对过时的焦虑在网上尤为明显[[8]](https://fabiensanglard.net/extinct/index.html#footnote_8)[[9]](https://fabiensanglard.net/extinct/index.html#footnote_9)。
## 进化
避免灭绝的最佳方式是进化。我喜欢 zkmon 在 *Hacker News* 上的观点。
> “乘上浪潮。当网站/网页应用是浪潮时,你乘上了它。我在互联网出现之前就进入了软件行业,一直更换战马。学习新技能永远不会嫌老。新浪潮创造新的工作和从业者。成为他们中的一员。驾驭这头猛兽,掌握工具。这又是同样的游戏。” —— zkmon(Hacker News)([https://news.ycombinator.com/item?id=48435521](https://news.ycombinator.com/item?id=48435521))
虽然当前的局面让 zkmon 想起了 90 年代中期的网络,但它让我想起了 2000 年代初期的计算机图形学领域,以及 2010 年代初期的“移动优先”浪潮。每一代程序员很可能都会见证某种形式的革命/演进。这确实是 *同样的游戏再次上演*。万物皆流变[[10]](https://fabiensanglard.net/extinct/index.html#footnote_10)。LLM 只是又一个工具。所谓进化,就是投入时间去学习它如何工作,以及如何最好地使用它。
## 学习 LLM 的工作原理
我发现了解 LLM 工作原理的最佳资源是 **Andrej Karpathy 的频道**([https://www.youtube.com/@AndrejKarpathy](https://www.youtube.com/@AndrejKarpathy))。这位先生显然非常关心 LLM,并且真心希望你理解它们。他目前的一系列视频长达 25 小时,全是精华。
一个很好的后续资源是 **Sebastian Raschka** 的著作《Build a Large Language Model (From Scratch)》([https://www.amazon.com/dp/1633437167?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_31](https://www.amazon.com/dp/1633437167?ref_=ppx_hzsearch_conn_dt_b_fed_asin_title_31))。书中包含许多全彩插图,以及罕见的“现在画出猫头鹰”([https://fabiensanglard.net/extinct/not_draw_the_owl.webp](https://fabiensanglard.net/extinct/not_draw_the_owl.webp)) 时刻。这是一本非常好的书。
## 学习使用 LLM 编写代码
逐行手写代码不再是常态。拒绝使用 LLM 的人会落后,因为他们无法产出那么多——而我认识几位拒绝使用智能体的开发者。约翰·卡马克最近对编码提出了一个有趣的观点。
> “‘编码’从来不是价值的来源,人们不应该过于执着于它。解决问题才是核心技能。传统编程所要求的纪律和精准度仍然是宝贵的可转移特质,但它们不会是进入壁垒。多年来,我多次想起一个我认识的优秀程序员,他热爱汇编语言,甚至不愿转向 C。对于使用现有的大型代码库和低效语言,我自己也得克服类似的情感,但我挺过来了。” —— 约翰·卡马克([https://x.com/ID_AA_Carmack/status/1762110222321975442](https://x.com/ID_AA_Carmack/status/1762110222321975442))
即使我不在写代码,我仍然在间接产生代码。而且关于*生成什么*,有相当大的自由度。如果我走“全 vibe 编码”路线,任由 LLM 运行,我可以产出以前 1000 倍的代码,结果却是一堆难以理解的乱麻。这算是坏事吗?如果我在做一个原型或小型个人项目,那没关系。但对其他所有事情来说,代码质量仍然至关重要。LLM 可能声称它们仍然理解项目并提出解决方案,但我见过它们惨败并产生幻觉。
能够阅读代码并理解架构仍然很重要。这听起来理所当然,但我见过许多开发者做不到这一点。因此,我降低了自己的速度,反复迭代我的 PR(Pull Request),直到它达到与我“手写”时相同的质量水平。每当我注意到不喜欢的地方,我就会把它加入 `~/\.gemini/GEMINI\.md` / `~/\.claude/CLAUDE\.md`,以便智能体能模仿我的风格。过去几个月,我添加了不少类似下面的行。
``
- 不要使用魔法数字或字符串。使用常量,或者更好的是,在合适时使用枚举。
- 减少代码缩进。避免箭头反模式。利用提前返回和 continue。
- 对于函数参数,使用枚举代替布尔值。
- 尊重层次。不要在各层之间打洞。
- 让代码读者喘息。在逻辑块之间添加空行。
- 添加简短、切中要害的注释来解释该代码块*做什么*以及*为什么*。
``
我遇到的最大困难是“上下文切换”。同时处理多个项目/独立功能让我能够同时驱动多个智能体。跟上这些需要相当多的脑力体操。我见过关于“精神倦怠”的报告,我个人也经历过精神疲劳的加剧。这绝对是需要监控的事情。
## LLM 时代的代码审查
鉴于工具现在好了这么多,我在代码审查时的期望也高得多。
现在几乎没有理由写糟糕的**提交信息**了。有很多关于如何写好提交信息的指南。[这里](https://chris.beams.io/git-commit#seven-rules)是我见过最好的一份。只需 1 分钟让 LLM 总结并将其转化为指令,然后加入 `GEMINI\.md` / `CLAUDE\.md` 即可。
``
当你写提交信息时,请遵循以下 7 条规则:
规则 1:用单个空行将主题行与正文分开。
规则 2:将主题行限制在 50 个字符(72 是绝对硬限制)。
规则 3:主题行首字母大写。
规则 4:主题行末尾不要加句号。
规则 5:在主题行中使用祈使语气(例如,“Fix bug”,“Add feature”,不要使用“Fixed”或“Adds”)。测试公式:它必须完成以下句子:“如果应用此提交,它将 [你的主题行在此]”。
规则 6:手动将正文文本在 72 个字符处换行,以防止 Git 格式问题。
规则 7:使用正文解释*什么*和*为什么*,而不是*如何*。假设代码解释了如何操作;消息必须解释上下文和理由。
``
由于编写代码不再那么费力,我期望软件工程师更注重设计优雅的解决方案。如果 PR 乱七八糟,我会毫不犹豫地要求改进**代码清晰度**/ **代码简洁性**。
PR 的**代码大小**也是如此。过去,将 PR 拆分成更小、更易审查的部分是一件烦人的事。现在情况不同了,我完全可以要求作者拆解他们的 PR,除非他们有充分的理由。
许多代码审查工具现在都集成了 LLM。你可以创建自己偏好的提示语来执行初步检查。对于我拥有的代码库,我添加了 `GEMINI\.md` / `CLAUDE\.md` 的内容,只需一键即可触发。在把 PR 送去审查之前,我做的第一件事就是让 LLM 去批判/查找错误。这避免了在另一端浪费审查者的时间。
过去,编写**测试**是一件痛苦的事。现在情况不同了。为每个 PR 要求编写单元测试/CI 测试是合理的。这些测试从未像现在这样重要,因为大型重构正变得越来越普遍。人工和 LLM 审查可能会遗漏问题,但好的测试应该能捕获错误。
现在,拒绝添加**依赖**变得更合理了。过去,这是避免编写任何中等复杂度代码的首选方案。就在今天早上,我让 LLM 编写了一个 Levenshtein 距离函数,而不是在我的项目中添加一个依赖项。
## 更小的团队
我们可以用更小的团队完成更多工作。我们可能离 90 年代的模式不远了,那时一个四人团队就能制作专业软件。我能够重振一些我曾放弃的项目,因为我认为它们太耗时或太复杂。上个月,我完成了 Silpheed 视频格式的逆向工程([https://fabiensanglard.net/silpheed/](https://fabiensanglard.net/silpheed/)),并且在 Dreamcast 的《斑鸠》和 SNES 的《塞尔达传说:众神的三角力量》上取得了良好进展。
## 如果你无法击败他们,就加入他们
LLM 领域令人着迷。而且有趣的是,需要研究的主题本身也是一个极好的工具,能帮助你跟上步伐。LLM 将帮助你深入任何代码库,并提供有关整体架构的指引。我一直很喜欢阅读 [llama-cpp](https://llama-cpp.com/)、[OpenCode](https://opencode.ai/)、[ollama](https://ollama.com/) 和 [vLLM](https://vllm.ai/) 的工作原理。还有许多硬件解决方案,比如 [Tenstorrent](https://tenstorrent.com/en)、[Etched](https://www.etched.com/)、[MatX](https://matx.com/)、[d-Matrix](https://www.d-matrix.ai/) 或 [Cerebras Systems](https://www.cerebras.ai/),都非常值得关注。
刚开始阅读研究论文很困难,因为我一直与数学符号作斗争。LLM 帮助弥补了这些不足。有一个伙伴提供意见,并加以核对,能极大地帮助我加速入门。
## 寻找动力
最重要的是,存在找到学习动力的问题。有很多理由可以避免付出努力,比如有人通过转向别处而成功的故事。
是否继续前进是每个人自己的决定。这是一个涉及信念和灵感的过程结果。虽然信念来自内心,但我有时能在成功故事中找到灵感。这让我想起了文章开头的那段轶事。我不是随便选了菲尔·蒂皮特的故事。虽然许多人知道那句经常被误引的“你不是说灭绝了吗?”部分,但接下来发生的事情并不那么广为人知。
尽管最初受到冲击,41 岁的蒂皮特远未“灭绝”。斯皮尔伯格留任他为电影的“恐龙总监”。因为 ILM 的计算机动画师是程序员和技术艺术家,而不是传统的表演动画师,他们完全不知道如何让一个生物以重量感、时机感和生物意图来移动。
蒂皮特与 ILM 共同开发了恐龙输入设备(DID)[[11]](https://fabiensanglard.net/extinct/index.html#footnote_11):一种高度铰接的物理骨架,连接着传感器。然后他的团队像操作定格动画一样物理操控 DID,计算机将这些运动转化为数字空间。
菲尔·蒂皮特(与丹尼斯·穆伦、斯坦·温斯顿和迈克尔·兰蒂里一起)凭借《侏罗纪公园》获得了 1994 年奥斯卡最佳视觉效果奖[[12]](https://fabiensanglard.net/extinct/index.html#footnote_12)。他的公司 *Tippett Studio* 继续运营,参与了《星河战队》、《龙之心》等其他七十五部电影的制作[[13]](https://fabiensanglard.net/extinct/index.html#footnote_13)。
## 参考
---
^ (https://fabiensanglard.net/extinct/index.html#back_1)[ 1] 为《侏罗纪公园》的恐龙注入生命 (https://www.ilm.com/creating-dinosaurs-jurassic-park)
^ (https://fabiensanglard.net/extinct/index.html#back_2)[ 2] “大师”,例如《绝地归来》、《屠龙者》和《机械战警》,仅举几例。
^ (https://fabiensanglard.net/extinct/index.html#back_3)[ 3] 《侏罗纪公园》制作特辑 (https://www.amazon.com/Making-Jurassic-Park-Don-Shay/dp/034538122X)
^ (https://fabiensanglard.net/extinct/index.html#back_4)[ 4] 制作恐龙 | 侏罗纪公园纪录片 (https://www.youtube.com/watch?v=8r01mk6F_Pk)
^ (https://fabiensanglard.net/extinct/index.html#back_5)[ 5] 恐龙输入设备的口述历史 (https://beforesandafters.com/2020/03/15/the-oral-history-of-the-dinosaur-input-device-or-how-to-survive-the-near-death-of-stop-motion)
^ (https://fabiensanglard.net/extinct/index.html#back_6)[ 6] 《侏罗纪公园》制作特辑 | 完整纪录片 (https://www.youtube.com/watch?v=JNJ2oYvzSCc)
^ (https://fabiensanglard.net/extinct/index.html#back_7)[ 7] 大多数软件工程师正面临着近乎抑郁的身份认同危机 (https://x.com/deedydas/status/2068238634600554699)
^ (https://fabiensanglard.net/extinct/index.html#back_8)[ 8] LLM 正在侵蚀我的软件工程职业生涯,我不知道该怎么办 (https://human-in-the-loop.bearblog.dev/llms-are-eroding-my-software-engineering-career-and-i-dont-know-what-to-do/)
^ (https://fabiensanglard.net/extinct/index.html#back_9)[ 9] 开发者真的害怕 AI 抢走他们的工作吗? (https://www.reddit.com/r/developers/comments/1rx08aw/do_developers_feel_real_fear_of_ai_taking_their/?utm_source=chatgpt.com)
^ (https://fabiensanglard.net/extinct/index.html#back_10)[10] 赫拉克利特:万物皆流 (https://www.worldhistory.org/article/75/heraclitus-life-is-flux/)
^ (https://fabiensanglard.net/extinct/index.html#back_11)[11] 恐龙输入设备的口述历史 (https://vfxblog.com/dinosaurinputdevice/)
^ (https://fabiensanglard.net/extinct/index.html#back_12)[12] 第 66 届奥斯卡金像奖 | 1994 (https://www.oscars.org/oscars/ceremonies/1994#:~:text=JURASSIC%20PARK-,Dennis%20Muren%2C%20Stan%20Winston%2C%20Phil%20Tippett%2C%20Michael%20Lantieri,-NOMINEES)
^ (https://fabiensanglard.net/extinct/index.html#back_13)[13] Tippett Studio (https://en.wikipedia.org/wiki/Tippett_Studio)
---
*
相似文章
认知依赖
一篇简短的评论文章,探讨依赖AI进行软件开发是否会导致工程师技能退化,并可能造成AI进展停滞,直至递归自我改进(RSI)成为可能。
人工智能时代的专业知识
本文探讨了人工智能编码代理如何重塑软件工程师的就业市场,并将其与历史上计算器对数学专业知识的影响相类比。文章认为,资深工程师蓬勃发展,而许多初级工程师可能难以培养必要的编码直觉,导致招聘格局两极化。
同类相食
一篇评论文章,分析科技行业对AI颠覆日益增长的恐慌,突出高管们如何匆忙将自己定位为AI远见者,而该行业正面临着它曾经强加给别人的那种颠覆的自身版本。
当下是一个移动的目标。想象我们的技术在不远的将来会保持不变,似乎颇为愚蠢。
一篇质疑当前关于AI对就业影响预测可靠性的评论文章,认为技术变革的速度之快使得此类预测迅速过时。
软件工程师的未来会怎样?
一位软件工程师反思AI将如何影响这个职业,提出了两类开发者,并认为该角色会适应而非消失。