编程是一门艺术
文章摘要
这是一篇发表在个人博客 Orchid Files 上的短文(2026 年 9 月 6 日),作者以第一人称回顾自己的从业轨迹,试图解释一个现象:为什么每次有人说「AI 很快就会取代所有程序员」,总会引来激烈的反弹。他给出的答案是——因为对一部分人来说,编程根本不是工作,而是艺术。
作者的自我剖白:他不是那种人
文章的前半段是一份相当坦率的自述。作者说他入行之初也曾被「只要学会编程就能创造任何东西」的想法迷住:学了 PHP 就能写后端,学了 HTML 和 CSS 就能做网站;打开 IDE、新建项目、从零搭起,挑选模式、库和框架,读文档、钻源码,沉浸到察觉不到时间流逝,久而久之形成自己的代码风格。那段日子里他的全部生活就是写代码、睡觉,社交圈也全是同行。
但他很快承认:他享受的是「创造出新东西」,而不是「写代码」这个动作本身。他更想从一个想法出发做出真正有人使用的产品,所以他只在创业公司待过,从不去大厂;他一直渴望晋升成 team lead 或管理者这类不必写代码的角色,只要有人能替他写,他就乐意把编码交出去——自己写还是让别人写,对他来说没有区别。再往后,他写代码纯粹是因为有钱拿。哪怕业余时间也在写,那也是为了做能赚钱的创业项目。收入逐渐取代了创造欲,成为主要驱动力。
另一种人:写代码是因为忍不住
文章的转折点在于作者划出的第二类人——他称之为「真正的程序员」。这类人不管有没有收入都会写代码,因为他们控制不住自己。他们可能在永远不会带来一分钱的开源项目上投入大量时间。他们享受的是过程本身:解决开发难题、做设计、理顺逻辑、修 bug、把整个系统作为一个整体去理解。作者的判断是:这些人永远不会把这件事交给 AI agent。
于是他得出结论:他那套「AI 如何帮我更快地把项目做出来」的论证,对这些人完全不适用——他们压根不需要 AI 帮任何忙。「AI 将取代所有程序员」这个说法对艺术家而言在逻辑上就不成立:即便真出现技术突破、AI 能完全自主工作、比人快几百倍,仍然会有人一行一行地手写代码。AI 夺不走他们写代码的能力和意愿。
用写作做类比
结尾处作者把这个论点搬到了自己身上:他写文章从不用 AI,因为 AI 产出的是没有灵魂、平淡无味、没人想读的 slop。他想自己斟酌措辞、自己校订删改、自己起标题,删掉多余的句子甚至整段。他享受写着写着冒出新想法的过程——对他来说重要的是当下的思考过程,而不只是结果。如果让 AI 写一篇题为《编程是一门艺术》的文章,那个思考过程就不会发生,他也体验不到同样的情绪。写作是他不计报酬也要做的艺术,而他认为,那些享受写代码的人对代码也是同样的感受。
HN 评论精华
这条帖子拿到 191 分、206 条评论,是本期讨论最激烈的条目之一。有意思的是,讨论几乎完全没有停留在「编程是不是艺术」的抒情层面,而是迅速分裂成三条战线:艺术/手艺/设计的定义之争、AI 生成代码质量的实战争论,以及对作者本人真实性的当场质询。
战线一:这到底是艺术、手艺,还是设计?
- WCSTombs 提出了最被认同的反论:编程在其最高处「接近」艺术,但它本质上是解决问题,而解决问题的首要目标是正确性和适用性,不是审美价值。他还补了一刀:这篇文章很奇怪——一个用 AI 的人,在没有征询过任何不用 AI 的人的情况下,替他们解释他们的观点和态度,读起来像是在树稻草人来给自己的立场开脱。
- trashb(全场发言最多、也最被认真对待的一位)反驳说,解决问题恰恰是让艺术成为艺术的东西:雕一块石头让它看起来像希腊神像,本身就是在不停地解决「凿掉哪块、用什么工具」的问题。他还指出「为钱而作就不是艺术」是个站不住脚的标准——历史上大多数传统艺术就是为了钱而作的。他补充了 code stylometry(代码风格计量)这个链接,说明代码确实带有作者指纹。
- sunkeeh 主张严格区分:艺术是「思想的表达」,编程不是艺术,是手艺(craft);程序、游戏、网站可以是艺术,但编程这个动作不是;作者说的那些人不是艺术家,是匠人。whilenot-dev 用博伊斯「万物皆可为艺术」以及艾未未《葵花籽》、Thomas Hirschhorn 的社区装置作反驳,指出手艺从来没有被排除在艺术之外。
- wavemode 给出了第三个词:编程通常既不是艺术也不是手艺,而是设计——为特定目的而安排事物,不只追求好看,还要能正确运行、可维护、能传达意图。
- bob1029 的说法被广泛转述:系统设计和架构才是艺术,编程只是实现这些「作品」的一套技法。他说自己这辈子从没看着一段代码感叹「我正身处神迹之中」,但由代码构成的系统常常能引发这种感受。solarized 表达了同一立场的实用版本:设计解法(架构、算法、数据结构)才是艺术,具体代码他可以指挥 agent 写,跑偏了就让它重构,这样出货和拿单都更快。
- OtherShrezzing 和 dust-jacket 认为这篇文章论证的其实是「编程可以是一种爱好」,而不是「编程是艺术」——很多人做很多事都不图工资,我们通常不把它们都叫艺术。esafak 一句话点破了这里的痛处:人们之所以愤怒,正是因为自己的生计正在被降格为「爱好」,就像集邮一样——「哦,你业余写代码呀?真可爱。」
- comrade1234 是少数明确反对「编程是艺术」的老派声音:一个问题通常只有一两种好解法;开始「发挥创意」的时候,就是长期维护问题开始的时候。他用国际象棋类比:业余选手觉得能算三步就是天才,职业选手是看全盘、走标准套路。他要的是无聊、标准、不用翻六个文件才能搞懂一次方法调用的代码。kevmo314 的回复很精辟:「无聊且标准」的代码更常让我不得不去翻六个文件。
- 引用 Knuth 的人不止一个:AndruLuvisi 指出 Knuth 早在 1974 年就在一片「编程是科学」的呼声中论证过编程是艺术;dmitrybrant 和 tzumaoli 直接把《计算机程序设计艺术》搬了出来——esafak 又补刀:可惜没人读,但摆在书架上很好看。
- larodi 贡献了全场最有味道的一条轶事:他曾问一位敬重的教授,编程是否算艺术。教授说:「是的,亲爱的,我们 70 年代在一次会议上确实讨论过,结论是它确实是艺术——但后来又决定把它当工程来理解,因为在数学家面前说自己搞艺术听着不够严肃。」
战线二:当场质疑作者本人
这是本帖最戏剧化的部分。dmitrijbelikov 率先发难:「那你过去十年在干嘛?为什么我在你的 GitHub 上只看到 2026 年?」OtherShrezzing 接着做了一番考据:这个博客的社交媒体痕迹在 2025 年末之前不存在;Wayback Machine 显示站点 2026 年 1 月上线时还没有博客,2 月才补上了一个包含「2025 年文章」的归档。他还挑出作者早期文章里的句子,说那「带有 Claude 生成文章的一切特征(或者说是一个没通过图灵测试的人类)」——而这篇文章的结尾恰恰在说「我写作不用 AI,它产出的是没人想读的 slop」。
作者 theorchid 亲自下场回应了,回答相当坦率:博客用的是笔名,所以 2025 年之前没有历史;他的第一篇博文确实用了 AI 做编辑,写了 10 版草稿,AI 只提供了他觉得不错的措辞建议,而且他并不喜欢那篇文章;下一篇用得少一些,此后写作和编辑完全没再用 AI。至于 GitHub:他说自己「花了十年赚钱」,2026 年之前从未向开源提交过代码,因为对他而言编程既不是艺术也不是爱好。
这个回答又引出了新一轮争执。dmitrijbelikov 觉得更可疑了,因为标题叫「编程是艺术」而作者说编程对他不是艺术。作者的辩解是:文章标题又不是「编程对我而言是艺术」,文中已明确说自己属于「为钱编程」那一类,另有一类人视之为艺术。CorvusCrypto 的批评更狠:作者这番澄清让整篇文章关于「存在两个阶级」的叙事显得空洞——而且他单独把原文那句「这些是不管有没有收入都写代码的真正程序员」拎出来痛批:「我毫不犹豫地厌恶这种屁话。从你的高马上下来。程序员就是程序员,没必要为了给一方加情绪分量而把人分成三六九等。」
战线三:AI 到底能不能写出好代码(最尖锐的实战分歧)
- bigupthewhole 抛出火种:一年前是这样没错,但现在的 agent 已经不写烂代码了,可能不合你的口味,但你可以让它适配你的风格;他还加了一句——人类本来就没进化出读写代码的能力,客观看即便最好的程序员也很糟糕。
- jeltz(作为仓库维护者)直接否认:agent 依然在写烂代码,除非他的同事和向他仓库提 PR 的人用的都是去年的 agent;而且这不是风格或偏好问题,是代码混乱、带有在维护者眼里显而易见的 bug。
- christophilus 给出了亲身使用后的具体清单:排名前三的模型仍然写出糟糕代码,且与 harness 无关——它们会给已经保证不会发生的场景堆满安全检查、会去解决你没要求它解决的问题、会给出能跑但绕远路的方案,在冷门语言里还会写出很怪的代码;基本上仍然需要人贴身盯着,除非你甘心发布一堆 vibe coded 的糊状物。
- voidhorse 的判断最不客气:认为 agent 现在写得出像样代码的人,根本就没在读那些代码,他们的标准是「能跑就行」。他指出 LLM 写代码和写文章的毛病是同一个——过度索引局部结构,放到全局系统结构里就说不通;如果你愿意让代码变成 write-only、只通过 agent 来接触它,那确实没问题,但这不比一个专业的熟练人类更好。
- ux266478 从工作方式而非能力角度切入,是这段里最有洞见的一条:问题不在 LLM 当下的能力(那显然会变),而在于它固化了一种角色——你扮演的是管理者而非程序员。你对代码库只有模糊印象,缺乏直觉性的机械理解。他说很多时候他能看到问题、定位原因并修好,比你把这事提示给 LLM 还快;到了某种熟悉程度之后,一切推理都是局部推理,这就是「机械共情」(mechanical sympathy)的力量。而那些早已陷入官僚式「无人知情地狱」的大厂,本来就在为最大产出和高流动率做优化,所以觉得这笔买卖显然划算。
- orangecat 则反过来指出:说「新模型更强」的说法总被证伪,这本身不成立——当前模型确实远强于一年前的顶级模型,看不出来只能是强烈的动机性推理。
战线四:照相机类比(本帖最被推崇的框架)
trashb 提出了一个被反复引用的类比:他希望 AI 之于编程,能像照相机之于绘画。今天我们理解的绘画和照相机出现之前的绘画完全不同——当年它是一门严肃的「记录现实」的职业,创造性反而退居其次;今天它主要是休闲活动和创作出口。他希望编程也走这条路,即使代价是自己丢掉现在的职业:把钱从编码里抽走、把创造性放回来,赶走投资人、留下爱好者。他还补了荷兰语里的 “broodschilder”(面包画家)一词,以及英国那些「方形奶牛」画作,来说明历史上的委托绘画有多么受制于金主。
- bluebarbet 说这个类比精彩得让他懊恼自己没想到——紧接着的两条回复用夸张的吹捧句式(”true North Star of analogies”)做了个精彩的钓鱼,bluebarbet 随后自嘲道:「很高兴我们达成了一致(你、我,还有你在回复的那个 bot)。」
- luxcem 提了个反问:没人会去美术馆盯着代码看,创意编程的受众太薄了。回复里给出了一串反例:Stitch4223 举出 demoscene 和 Underhanded C Contest,说这些代码本身就该展出——魔法般的技巧只有少数人看得懂,但背后的故事、优化、诡计甚至排版能讲给任何热爱设计的人听;satiated_grue 指出代码确实进过拍卖行(The Algorithm Auction);alanbernstein 说他更愿意把代码类比成诗,并给出了 Norvig 那篇著名的拼写纠错文章;pksebben 讲了他在 Recurse Center 玩的游戏「Monstrosity」——比谁能用最低效、最绕、最晦涩的方式拼出一个字符串(用位移算法造 ASCII 之类),「它很美,而且这种事是 AI 永远不会想到去做的」。
- raincole 提出了最冷静的对照:围棋在古代中国是「四艺」之一,这没能阻止 AlphaGo 击败最强人类。ratherlongname 的回复是:但这也没能阻止人们享受下围棋。theptip 把这个思路补完:我们可能真的会迎来一个「编程作为艺术」的黄金时代,就像今天下棋的人比历史上任何时候都多,尽管手机就能打败卡尔森——只不过除了极少数明星主播,绝大多数人将是为爱而非为钱做这件事。johnnyanmac 给出了最刺痛的回应:「我享受的是能付得起房租。从峰值 16 万掉到 8 万会难受但能过;从 16 万掉到 0、外加就业市场僵住三年,那才是让我激进化的东西。」
战线五:情绪与个人处境
- p2detar 用了另一个更黑暗的类比:把文中的「编程」和「程序员」全替换成「纺织」和「织工」,再对照工业革命,结局就很清楚了。他说自己入行 20 多年,认为事情正在发生根本且不可逆的改变。sashank_1509 把这个类比的账算得更细:结果是独特的衣服被千篇一律的衣服取代、有手艺的工作被无脑工作取代、机器做得比好裁缝差得多但大众不在乎也分辨不出——「回头看是笔挺蠢的交易,我怀疑编程也会走这条路。」
- cowanon77:他曾真心享受写代码到把它当成艺术和沉思的地步,25 年的企业开发把这份享受打没了,AI 只是棺材上最后一颗钉子。
- Martin_Silenus 贡献了全场情绪最浓的一段:他这辈子都在吐槽那些过度工程化的哥德堡机械式代码,不想在人生末尾变成让 agent 用 10 倍速生产同样的东西。在 teaearlgraycold 劝他「别让骄傲占上风,写软件不该关乎自我」之后,他的回应是:他最骄傲的恰恰是那些最没用的、为自己做的东西——那些让他觉得「我真牛」而机器在哭着喊妈妈的东西,「demoscene 就是关于这个的,hacking 从一开始就是关于这个的」;而那些「财务上有用」的,是他最羞愧的——「那些让我活下去,而不是让我觉得活着」。
- Kuyawa(60 岁)走向了完全相反的方向:他把「忍不住要写代码」直接定义为成瘾。他每天写代码,大量使用 AI,两天做一个 app,从不卖,只是囤着,「好像 app 多了我的宇宙就变大了」。他说这个瘾毫无道理,但他不想被治好。qarl 的心情类似:作为一个老人回望一生,他记得所有那些有想法却没时间没精力去做的事,而过去五个月他落地了 5 个好玩的点子——「感觉像在飞。这真是活着的好时代。」
- jchw 写了全帖最长也最平衡的一条收尾式思考:他确实哀悼编程艺术可能的消亡,但他不拿绘画作类比,而拿制造业里失传的手艺作类比(美国外包多年,掌握相关技能的人正在凋零)。他的核心论点是:编程「不是艺术」的成分远大于「是艺术」的成分——好看但不能运行、不做任何有意义之事的代码鲜有价值;IOCCC 是他能想到最纯粹的艺术性编程,但如果那些代码不能编译运行,就一点也不有趣了。所以文本和绘画领域的「反击」能成立(因为那里的表达与媒介合一),代码领域却没人会来拯救编程。不过他也说,自己并不认为拐点已经到来:人们过于急切地采用 AI 代码,很多代码库因为不够谨慎而正在受损;他个人觉得某些新模型写的代码「更有品味、注释不那么蠢和冗余」,但仍然烂到不能直接上线。他的结尾很无奈:「这确实糟糕,因为哪怕抛开艺术不谈,它曾经真的是一份很好的职业……我只希望 AI 编程的奇点愿意等我先把房贷还完。」