本文来自微信公众号: 不懂经 ,作者:经叔,原文标题:《AI编程的悲剧,并不只在于它杀死了软件|不懂经网站》
这几天,硅谷吵得最凶的一件事是:软件是不是死了,是不是要一文不值了?
导火索是Adobe的软件被人用AI逆向编译,然后整个做成了开源。几十年的积累、成百上千人的工程团队,被AI几天就"复刻"了出来。消息一出,很多大佬都觉得软件的天塌了。著名独立开发者levelsio干脆发了一条帖子:"软件已死"。护城河塌了,写代码这门手艺好像一夜之间不值钱了。
看到这些讨论,我想起之前分享过的一篇文章,2023年《纽约客》上的《码农的悲歌》。
作者James Somers是一位职业程序员,从小痴迷电脑,为了让屏幕上跳出一句"Hello,world",能在飞机过道上趴着折腾好几天。他赶上了程序员最风光的年代:公司抢人,薪水随便开,谷歌给工程师配免费咖啡、健身房和"20%自由时间"。
可后来他亲眼看到,一个编程只懂皮毛的朋友,借助GPT-4几个小时就做出了他自己一直搞不定的iPhone应用。
那篇文章里有一种很深的伤感。他想起输给AlphaGo的李世石,那句"我要为自己如此无能而道歉"。他说,编程对他来说一直深不可测,如今他却想为它写一篇悼文。
不过文章最后,他还是给了自己一点希望:也许值得教给孩子的,不是一项技能,而是一种精神。手艺会过时,但黑客精神是永恒的。
三年过去了,当时的担心基本都成了现实。今天分享一篇大西洋月刊的最新文章,同样充满真情实感和个人恩怨,可以看成那篇悼文的续集,值得读完全文。
作者是Ian Bogost,游戏设计师、学者,也是大西洋的长期撰稿人。他小学一年级就开始学编程,做过职业程序员,后来转向写作和研究,很多年没怎么写代码了。
去年开始,他用AI一口气做了十几个小程序:一个记录烧烤店配菜口味的iPhone应用,过去要全职做几周,现在两天就搞定了;一个专门按30秒计时的手表应用;一块挂在墙上、显示自家气象站数据的小屏幕。
一开始,他是兴奋的。AI让他重新找回了编程的快乐,bug不再让人烦躁,失败的项目也不心疼,那些过去"不值得花时间"的小想法,现在都能做出来。他甚至以为,AI终于能实现计算机先驱们的老梦想:让普通人为自己写软件,打破少数"祭司"对计算机的垄断。
他发现,AI编程最大的价值,是解放普通人的创造力。但这种解放有个前提:把AI当成合作伙伴,你提想法,它来实现,你再判断、修改,在一来一回里把东西做出来。他最开心的经历,都来自这种协作。
让他担心的是两件事。一是做个人软件,仍然绕不开平台的规矩,还是要交苹果每年99美元的开发者费,还是要守平台的规矩,连手表振动几下都由苹果说了算。二是AI工具越来越倾向全自动,一句话交付一个应用,默认你只要结果。那个本该属于每个人的创造过程,又一次被大公司收走了。
所以Somers悼念的,是一门手艺被机器拿走;Bogost担心的,是本可以让每个人成为创造者的机会,又被拿走了。
文章最后也有温情一刻。他在厨房旁边挂了一块黑白小屏幕,每15分钟更新一次天气。他说,计算机不一定要连接世界、拯救世界,也可以只是安安静静挂在墙上,做一件可爱又有用的小事。
我觉得,这也许是普通人在AI时代最该珍惜的东西:不为了做成一门生意,只为自己做一点有用、有趣的小东西。
未来10年学什么不会失业?(码农的悲歌)
“20世纪发明的所有职业,都难逃AI的冲击!”

AI编程的悲剧
By Ian Bogost
我和家人偶尔喜欢吃一顿慢火烹制的美味肉食,可每次去烧烤店,我们总想不起自己到底喜欢店里的豆子和凉拌卷心菜哪一种。豆子有的甜,有的辣;凉拌卷心菜有的用醋调味,有的则是奶油口味。
我们总会说,应该想个办法把这些记下来,却从来没有真的去做。我以前常开玩笑说,我可以做个应用。可那实在是个荒唐的念头。
生成式人工智能让这件事变得没那么荒唐了。到去年夏天,我已经用AI做了一段时间的小程序。AI高超的编程能力帮了我这个忙碌的人一把。我有职业程序员的背景,却没多少理由写程序,它让我时隔多年第一次又能以创造性的方式和计算机一起工作。
我想看看,作为一个单打独斗的程序员,自己能把AI推到多远。我想,烧烤配菜偏好这个问题正好可以当作测试案例:做一款功能完整的iPhone应用,我给它取名Beanslaw,解决一个古怪而实用的需求,过去根本不会有人愿意把它商业化。
零零散散编程两天,就足以做出一个专业级的应用Beanslaw。就在不久前,这件事还需要几周全职投入。这个应用会在可搜索的地图上显示烟熏肉餐馆;它还实现了相当复杂的智能筛选,能排除韩式烧烤、巴西烤肉churrasco以及其他同样美味、却属于另一种烧烤体系的菜系,那些地方没有我要找的豆子和凉拌卷心菜。
用户可以给豆子打标签,比如素食、汤汁丰富,也可以给凉拌卷心菜打标签,比如颗粒粗、芥末味,然后按自己想要的配菜特征筛选地图。我甚至还做了新手引导教程。应用已经可以发布了。

图片简介:手机界面顶部显示“Beanslaw”,地图上标出了多家烧烤店;底部可见“你的评分”“社区评分”“按豆子或凉拌卷心菜特征筛选”等选项。
我兴冲冲地拿给一位朋友看。他一边点着手机,一边问:“其他人的凉拌卷心菜和豆子评分呢?”他不理解,一个应用如果只是个人日志,意义究竟在哪里。将近二十年的智能手机应用已经训练他把软件理解成一种集体智能机制。如今,一个只有少数人会使用的程序反而显得陌生。App这个词指向的也不再只是计算机程序,而是一种面向全球、能够借助规模放大的软件生意。
AI既然这么擅长写软件,我又花了大约一个小时,就给Beanslaw加上了社区评分。现在,它做的事情符合我朋友的预期了:把可能多达数十亿的用户连接起来。但这么一来,一款原本只为满足我个人怪癖而做的应用,也变成了软件注意力经济中一个候选项目,当然是个毫无希望的候选项目。
我从来没有把Beanslaw公开发布。不过在那之后的一年里,我借助AI写了十几个程序,解决一些反常的问题,也借此试图理解AI编程,也就是有人称为vibe coding的实践,会给计算机文化带来什么。AI辅助编程本来有可能让普通人重新拥有为自己制作软件的能力。
可到目前为止,它在实际运作中只是让我们再次走上软件开发几十年来一直走的那条老路:少数拥有特权的人决定计算机应该用来做什么,其余人则排队跟上。
20世纪60年代初,一位刚从斯沃斯莫尔学院哲学系毕业的年轻人Ted Nelson,受到Vannevar Bush 1945年在《大西洋》杂志发表的文章《正如我们所能想到的》启发,开始构想一种面向全人类、任何人都能访问的计算机出版系统,用来承载全球知识。
正是在这项工作中,他创造了超文本这个词。十年后,1974年,Nelson在名为Computer Lib/Dream Machines的小册子宣言中进一步扩展了计算机赋予大众力量的想象。
那时,计算机是企业和政府办公室使用的大型昂贵机器。在个人电脑真正到来之前,Nelson谴责“公众与计算机内部人士之间令人骇然的鸿沟”。他把那些既能接触计算机、又掌握相关专业知识的企业和政府人士称为“祭司阶层”。Nelson主张拆掉这个祭司阶层,把计算交还给普通人。
Nelson和个人电脑革命中的其他人物把自己的工作看成真正的革命:Computer Lib里的Lib指的是解放,和“妇女解放”里的lib一样;他和同伴也把这项工作视为反文化运动的一部分。参与设计Logo编程语言的Seymour Papert设想,编程可以让孩子控制这些机器,摆脱向机器低头的处境。
Alan Kay受到Papert启发,构想出平板电脑式的Dynabook,一台“适合所有年龄儿童的个人电脑”。设计了第一台Apple电脑、并与Steve Jobs共同创办Apple Computer的Steve Wozniak,则把廉价、公开分享的软件技能视为推翻企业计算机垄断的一种方式。
有一段时间,这种解放主义的愿景确实变成了现实。早期的Apple II和Commodore 64开机后会进入命令提示符,用户可以立刻用直观的BASIC语言开始编程。当年的早期广告明确把这些机器宣传成可以由用户自行编程的设备。那个时代的计算机杂志会刊登代码,让读者手动输入自己的机器。
做时间的朋友,在AI时代会很惨|不懂经网站
奇迹与恐怖的年代:啊啊啊啊啊啊啊啊啊啊AI
20世纪80年代初,我上一年级时就学了Papert的Logo,因为我就读的私立学校投资购买了个人电脑,建了放置这些电脑的机房,也雇了老师指导我们。这个早期优势让我对计算机编程有了信心。
那时,编程被当作一种普通活动,和画画、阅读差不多。我很自然地又学会了BASIC、汇编、Pascal、C等语言。那时的机器还做不了太多事情,而它们发展的速度足够慢,普通人,甚至孩子,都能跟上并学会新东西。
计算机虽然变得更贴近个人,依然昂贵,绝大多数人仍然用不起。买得起电脑的人相对富裕,往往更愿意购买商业软件,自己写软件的情况反而少。几年之内,Macintosh和Windows普及的图形用户界面让机器更容易使用,却也让它们变得更加复杂。
电子表格、文字处理器和排版软件等商业工具带来了新的计算机创作形式,但这些成果已经远远偏离Kay和Nelson的想象。计算机原本被设想为帮助人实现自我的工具,最后却成了家用电器。
在20世纪80年代和90年代,普通人构建自己软件的能力时强时弱。HyperCard用户在Mac上制作数据库、菜谱和游戏;坐在灰色隔间里的办公室职员用Visual Basic构建Windows程序来自动化工作,很多程序只为自己服务。万维网让普通人可以把网站发布给全世界,而不只是在自己、朋友或同事之间分享。
到21世纪头几年,Web 2.0经济开始收回网络的开放性,把人们引导进Blogger、YouTube和Facebook这样的平台。祭司阶层回来了,富有的科技巨头成了它的主教。
AI编程没有挑战这种权力,反而让它更加稳固。去年冬天,我做一项原以为很简单的氛围编程任务时,遇到了一个典型而乏味的软件权力案例。
我早就对Apple Watch上的倒计时应用不满意了。它列出一大串时间,停止按钮却小得可怜。我主要按30秒为单位计时:拉伸腿后肌、烤肉、泡茶。于是,在AI的帮助下,我做了一款名为Taptimer的手表应用。每点一下屏幕,就增加半分钟;计时结束后,手表会震动提醒。再次点击屏幕的任何位置,就能把提醒关掉。听起来很简单,对吧?
问题在于,Apple不允许第三方程序发出它那款特殊“原生”计时器所使用的连续振动通知。我只能退而求其次,改成单次震动提醒。它确实能用,我每天都在用Taptimer,可软件被允许做什么,决定权掌握在运营这些平台的所有者手中。
他们当然有理由,或者至少有借口。打着易用性、安全性或控制的旗号,寡头式科技行业规定了软件可以是什么、可以做什么。软件行业开始把朋友之间分享的程序当作面向数百万人的产品来对待,部分原因在于,它根本无法想象有人为什么要费心做一个不以财富、权力或声望为目标的程序。
AI编程出现时,计算机祭司阶层已经处在排他性最强的阶段。二十年来,软件生意一直把业余爱好者赶出软件创作,同时逼我们使用它自己制造的工具。
没有AI聊天的童年,将成为富人孩子的特权?
为什么今天科技圈的人都这么幻灭?
20世纪90年代初,我刚开始写Mac程序时,可以编译出一个程序,把它放进磁盘,再交给朋友。Apple关于如何完成这件事的文档,当时是可以在书店买到的印刷书,而且整整十年变化不大。
等我坐下来写Beanslaw时,我需要每年99美元的Apple Developer Program订阅,需要足够熟悉Apple的开发工具,才能理解如何使用ChatGPT生成的代码,还需要足够的软件发布经验,才能把做好的软件从自己的电脑弄到手机上。
我必须懂得足够多的软件制作知识,才能和AI讨论某些任务应该怎么做,并就此协商。其中有些工作完全谈不上技术,比如建立一个已知烧烤店的白名单,让应用始终显示孟菲斯的Rendezvous、达拉斯的Pecan Lodge等餐馆。
另一些工作则需要对软件开发这套实践具备更深的官僚体系知识,例如如何通过Yelp提供的后端服务加入餐厅图片,同时避免一不小心花掉几千美元。
我越是用AI编程,就越能感到自己原有的编程知识和AI为我打开的全新编码能力之间存在拉扯。如果靠自己,我本来也能做出那位试用Beanslaw的朋友所期待的社区评分。但要通过互联网服务,以可扩展的方式存储数据,事情很复杂。
对于一款原本只打算给几个人使用的程序,我不会愿意花这个工夫。ChatGPT向我介绍了Apple的一项名为CloudKit的编程功能,让这个过程变得简单。接着,AI又直接给了我代码,让实现本身也变得简单。
还有些时候,我知道自己想要什么,也知道该怎么做,只是不想为具体执行投入时间。AI让一些小规模的软件探索变得合理,也变得有趣。比如,我家办公室里的以太网交换机总是掉到更低的吞吐速度。为了监测它,我用AI做了一个Mac程序,运行网速测试,并把结果显示在菜单栏里。
再比如,最近一本书开始接受预订之前,我必须重建自己的个人网站。我依靠30年的网站开发经验,告诉AI我想要哪些功能,比如重定向旧网址、按地理位置展示不同内容,可在真实的工作和生活事务之间,我实在抽不出时间自己完成这些事。
这个过程称为vibe coding,好像只要输入一个提示词、挥挥手,就能得到一套完整可运行的计算机程序,这完全误解了事情的本质。
计算机科学家有时会谈到“高层”和“低层”编程。低层编程包含大量非常微小、具体的指令;高层编程则把这些工作抽象成更简单、更容易使用的方法。低层编程有时被认为更具技术含量,也因此更正统,但人们通常认为高层编码能更快地产出结果。后一个价值取胜了。
多年来,软件开发不断提高抽象层级,因为这样可以简化产出。只有在必要时才使用低层工作,而低层工作往往只是为了构建工具或基础设施,让高层编程得以进行。
氛围编程延续了这种趋势。编程始终包含一个反复进行的过程:告诉计算机你想得到什么结果或体验,让机器运行指令,再根据结果修改指令。起初,这些指令极其基础:移动一个数字,或执行一次数学运算。
后来,指令变得更加复杂,也更加抽象:把文件写入磁盘、画一个圆、在地图上标出一个位置。计算机程序在幕后经常会生成并运行更低层级的代码,把它作为自身工作的一部分。AI编程完全没有打破这个过程,它只是把这项工作向前延伸了。
这也让氛围编程的美学对程序员来说完全不陌生。编程的即时体验没有改变,只是你和底层工作之间隔得更远了。意识到这一点后,我明白了为什么程序员会立刻被生成式AI吸引,也明白了他们为什么可能无法理解其他行业中反对AI的人。
用AI创作文稿或插画,似乎抹去了作者或艺术家的体验,以及他们参与创作的过程。创作过程被结果取代了。可对程序员来说,结果和过程同时变好了。AI编程丝毫不像一种妥协,也不像作弊,它感觉就像编程本身。
或者说,它像是最好的编程状态。我发现自己在和AI一起编码时,变成了一个更慷慨、更开放的程序员。功能请求或建议听起来不像冒犯或抱怨,反而像值得考虑的机会。
同样,漏洞也不再令我烦恼。缺陷不再代表我做错了什么,而成了一个可以扔回机器、让机器帮忙解决的问题。即使是走不通的路或糟糕的想法,也会让人感觉良好。一方面,我享受把它们做出来;另一方面,原型制作的体验很熟悉,只是更快,也更有意图。
比如,今年夏天的几个星期里,我迷上了一台售价30美元、带圆形屏幕和旋钮的小电脑,它有点像Nest恒温器。我认定这东西可以承载一款机灵的电子游戏,于是买了一台,尝试了各种想法:圆形Pong、圆形打砖块、滚动弹珠、开保险箱、绕绳球、迷你高尔夫、驾驶汽车、驾驶宇宙飞船、割草。
每个点子都挺可爱,可没有一个有趣到足以让人玩第二次。至少眼下,我停了下来。这种感觉很熟悉:在业余和职业编程生涯中,我已经开始并放弃了几百个软件项目。但氛围编程做出来的失败没那么糟,因为编程给出了有启发性的结果,却没有吞噬我的生活。
AI时代最危险的错觉2.0:为什么“专家”的经济护城河正在迅速消失|不懂经网站
当AI替你完成了工作,一个人要靠什么能力被市场付钱?
这一切依然依赖于我因为种种偶然因素、却又已经在这个位置上待了很久的计算机祭司阶层成员身份。我刚开始用ChatGPT编程时,这个过程几乎是辩证式的。我向AI提出要求,它给出一些代码,我再把代码实现进自己的项目。整个过程包含大量一步一步的往返讨论和行动。
可是,在这一年里,随着技术不断发展,我能感觉到自己的控制感和能力逐渐退去。今年春天,情况发生了变化。所谓的Claude Code“代理式执行”让AI可以访问一个目录,自主创建一整套程序,甚至是复杂的程序。
这种看起来更自动、因而也更令人向往的方法已经扩散开来,OpenAI也加入了一个名为Codex的版本。AI从帮助人编程,也就是作为一种反复用计算机做东西的过程,转向自己解决问题。程序员不再需要参与。
这似乎让氛围编程实现了自动化,甚至可能让编码祭司阶层失去神职。我对此表示怀疑,主要因为过去许多试图让编程民主化的努力,都被工业力量吞没了。不过,对于业余编程来说,自动化本身也是一个错误的目标。我用AI编程时,最有产出、最有趣、也最令人满足的体验,恰恰来自协作。
今年早些时候,我开始对软件阅读中尚未被探索的设计空间感兴趣。于是我做了一些原型:一款电子阅读器,把一个故事分配到横跨太平洋的15小时旅程中,仿佛读者正在一路旅行;一款类似的阅读器,读者在现实空间中移动时,它会逐步发放一段出问题的公路旅行故事;还有一则每次打开时都会悄悄改变人物遭遇的随机故事。
在这些案例里,我的审美、技术和写作目标都在迭代中变化:我先提出一个计划,ChatGPT帮我实现,然后由我判断结果,再重复这个过程。
遗憾的是,在我认真用AI编程的这一年里,这种创作范式已经被取代。当我试着和ChatGPT搭档写代码时,软件现在会催促我改用自动化工具。我发现特别适合迭代工作的某些直接文件编辑功能,也变得困难甚至不可能使用。
整个行业如今似乎都默认,程序员的最终目标一开始就已经确定,剩下的工作只是朝那个目标前进:让我做一款游戏,或者制作一个网站,或者生成一个应用。
许多关于这一现象的新闻报道把这种效率视为进步,默认AI编程会让软件行业变得更有生产力。可我感到,AI最能解放人的时候,是我把它当作一个合作伙伴,让它在我的意图和机器的实现之间提供反馈回路。我把它当作一个吐出答案的硅基祭司,或一个替我执行命令的仆从时,得到的东西就不一样了。
回望自己的氛围编程之旅,我现在才意识到,开始这项尝试时,我对一件本该知道的事实认识不足:早在AI编程工具出现之前,软件大部分已经被高科技行业控制;那些工具注定会让情况变得更糟,改善只是次要结果。
我掉进了一个不断扩大的裂缝,裂缝一边是小规模、个人化软件的幻想,另一边是规模化的大企业现实。就连我用来写软件的AI服务也变化得太快,以至于我上周做某样东西时采用的方法,到了下周Claude或ChatGPT更新后就可能改变。整个结构像是建在一层冰面上。
我转而寻找一种软件版的冰爪,能够咬住冰面,抵抗软件滑向商业化,同时又足够实用,可以撑过最初的好奇心。做起来很难,却依然可能。可每次追求它,我还是觉得自己像抓在一块结霜的峭壁上,随时可能滑落。
在这个攀爬过程中,我找到了一块价格低廉、可以编程、能够挂在墙上的电子墨水屏。我家院子里有一套气象站,我很喜欢这样一个想法:为它产生的本地微气候数据做一块漂亮而不显眼的显示屏。
我和新版ChatGPT反复较量了一番,不过只要坚持要求AI像合作伙伴一样和我交谈,暂时还可以继续合作。就连我用来做这个项目的那些更古怪、更开放的开源电子平台,也因为全球家庭创客志愿者20年来混乱而渐进的积累,形成了一个意外出现的祭司阶层。
AI帮我理解了这一切,让我,也让我们,可以开始动手。接着,我们一起设计布局,从气象站吸取数据,反复调整天气状况图标的外观。我又想到,可以把泳池加热器的温度显示出来,再加入草坪传感器测得的土壤湿度。
要不是计算机让这些事情变得容易,它们本来会显得过于奢侈。现在,这块小屏幕就挂在报警面板旁边,每15分钟更新一次。
我从厨房或车道经过它时,总会感到一阵快乐的颤动。这感觉不完全是骄傲,因为我很难把这项成果全部归功于自己。这也谈不上机会主义,仿佛我可以把气象站显示屏打包转卖,做成某种增值产品或硬件配件副业。
我感受到的,反而是这件事本身的朴素。一块黑白小屏幕正在向我显示天气,它算是我做的,尽管有AI的帮助。真好。
计算机偶尔也可以不必连接世界,不必拯救世界,也不必毁掉世界。它只要谦逊地挂在这个世界内部的墙上,做一件可爱、有意图,甚至也许有用的事情,就够了。
那些反文化运动中的计算机革命者,后来大多成了计算机祭司,他们曾经相信,这样就已经足够。【懂】







