月刊:2026年2月

发布于 更新于
文章变少了,程序员与AI,克服rust,人间恶魔

文章变少了

最近一两年,我发布的博客文章的数量是越来越少的。

尤其是这个“技术月刊”系列,按频率来算其实已经变成了“技术年刊”了。

我写得更少的原因之一,是现在的AI太好用了。很多知识你直接去问chatGPT,他的回答会比我辛苦写半天的博客文章更详尽、更生动、还能即时互动追问。因此我的很多博客文章选题,已经失去了其预想中的社会价值,不再是能帮助人类向前进步的微小推动力了,而是茫茫互联网中不起眼的数据垃圾。

当然,AI也不是万能的。姑且不说依旧存在的小概率错误和幻象,哪怕AI的回答都是“对的”,也未必一定能够满足所有人的需求。例如,一个知识点可能非常庞大,任何人包括AI的回答不可能也不应该面面俱到,总会有侧重点,有时还需要一些画外音或者一些主观性非常强的判断和猜测。这样,人类包括我的文章就依然有存在的意义,可以为读者提供一种新的视角,也可以避免这个世界完全被AI统治之后导致的千篇一律。

原因之二,是我对我自己的要求更高了。以现在的眼光回头审视以前发的文章,不禁自嘲:“这tm写的都什么玩意,讲话都讲不清楚”。不过这些黑历史也并不是毫无意义的,应该可以看出来,我的表达能力、技术水平和思维方式都在逐年提高,这些文章对我个人的价值是无法磨灭的。所以我现在也不轻易动笔,只有当想清楚并且学清楚了一个话题之后,我才会写成一篇博客文章,花更多的时间、用更好的表达,写完之后还要反复审阅和修订。如果说以前的文章我写到60分就能发出来,现在我则要求自己写出自己90%的水平再发。

有小伙伴问我为什么不做RSS。我的真实想法是,我不想做打扰和互动,我不想做任何形式的推广。我与读者之间萍水相逢,靠缘分相遇。如果我的文章有价值,那你自然会在搜索引擎中见到我;如果见不到我,那说明我做得不够好,我继续努力,相关数据我都会在搜索后台不定期查看的。

架构师、专家与主程

过去的2025年,我的工作内容有一些改变。我的工作重心不再是把控项目的架构方向和指导相对低级别的同事了,我转而开始聚焦在一些专业技术,在一些领域内进行深入探索。

我所使用的代表性技术包括c++、rust、音频相关技术。这些都与一般意义上的web前/后端开发离得越来越远了,回顾我的程序员职业生涯,从python数据处理,到后端开发,到前端开发,再到现在客户端开发,我一直在拥抱变化,一直走在探索的最前列。

我看了一些招聘岗位信息,偶然间看到“主程”一词,忽然觉得有些恍惚——若干年前我入职某家公司的时候,老板就希望我成为公司的“主程”。说实话我一直不理解“主程”这个词的具体含义,或者说一直将其与“架构师”、“专家”这些角色混淆,只把这些岗位当作是“很厉害的程序员”。

而如今我反省一下我自己的职业生涯,似乎豁然开朗:我其实就是把这三个角色全都干过一遍了。

三者的核心区别:

  • 主程:在工程中负责实现核心部分(引擎/核心模块/性能瓶颈),有时也包括上层业务模块,关键点在于一直在大量贡献代码和改别人的代码,并对团队中其他成员提出具体的目标和要求,负责技术方案拍板和技术兜底。
  • 架构师:主要关注系统边界、技术选型、非业务需求、长期演进,这时候写的主要是Demo、骨架、规范约束、文档,而不是业务功能。
  • 技术专家:深入研究某一两个领域的技术问题,寻找新的突破点,构筑技术壁垒。

之前我也跟朋友们说过一个观点:所谓架构师,本质上是清洁工,日常工作就是维护架构的清洁,给其他人铲屎。

现在我想到一个比喻,我觉得更加很形象:

刚刚步入社会,你孤身一人在大城市打工,租了一个单间住着。那你在你自己的房间里,不管弄得多乱、多脏,还是多香、多美,只要你自己能接受、能正常生活,就完全没有任何问题,没人可以指责你。这时候是一个“普通的程序员”。

当项目变大,你升职加薪,整租了一套两室两厅的好房子。这个家不仅是你一个人住,你还会经常约朋友们过来吃饭。你必须亲自打理这套房子里的一切,并且收拾得看得过去;等朋友来了,虽然你可以指挥他们洗菜切菜擦桌子拖地等等,但是一切必须以你为主。这时候你是“主程”。

当项目成熟,你换了一栋别墅。面对这么大一套房子,你已经没有办法对所有家务事亲历亲为了,你要做的是划分区域、明确规则,例如101是厨房、102是厕所、201给A同学住、202给B住……你无力也没有兴趣去管201房间里乱不乱,你要做的是保证A同学不在厨房里拉屎,拉屎必须去厕所拉。这时候你是“架构师”。

经年累月,别墅变得老旧。虽然可能马桶堵了空调坏了,但是大家凑合也能住下去,在外界看来你们依然是豪门望族。你看破红尘,把自己关在3楼的研究室里,不问世事,房间里摆满了复杂的仪器和深奥的手稿,在别人眼中你可能是个沉默的科学疯子,只有你自己知道你的工作的真正价值。恭喜你,这时候你成为了一名伟大的“技术专家”。(笑)

技术不重要

老生常谈的话题,在我的博客里更是常客了。

前阵子我谈过了《资本论》,如今我再提一个与我们程序员更相关的问题:

一家软件公司将一个软件产品开发的比较成熟,在市场上有比较稳固的地位之后,此时如果裁掉大部分员工或者是扩招更多员工,短期内都不会对营收产生比较明显的影响。那么这个时候价值的来源是否还是员工的劳动,用资本论如何解释这个问题?

这在《资本论》中并不反常,因为:劳动是价值的唯一源泉,但不是“每一个时刻都在发生”的源泉。

更具体地说,程序员、产品经理等员工的工作,是属于价值的创造过程(生产过程);而软件的销售变现,则属于价值的实现过程(流通过程)。上述问题所描述的现象,其实是价值实现阶段与当期劳动的相对脱钩,而不是价值不再来源于劳动。

软件公司的核心资产,具体来说一个成熟的软件产品,它的本质其实是过去大量劳动的凝结,包括代码、架构设计、算法、产品理解、市场教育等等。此时,为了开发这款软件所耗费的过去的大量的劳动,都已经凝结并固化在了这款软件本身,形成了一种类似机器——或者更准确说是“生产资料”的存在,而此时占据软件这个“生产资料”的资本也就奠定了其剥削地位。在这个时候,技术确实不重要了,因为技术已经固化为了机器。

但是,机器会老旧,会过时,下一台新的机器从何而来呢?——还得是掌握技术的工人。(注:工人指的是一种角色,一个具体的人可以同时兼任多种角色)在过去,实体经济行业中,一台机器设备可以管用几年甚至几十年,一套成熟的技术的寿命可能比人的一辈子还要长;而在日新月异的信息技术行业中,一套软件、一种框架可坚持不了太久。

机器本身不会自我复制,也不会自我迭代,必须要融入新的人类劳动,才能产出新的价值、才能复制和迭代升级。

那肯定有人要问了,AI时代,也许很快它就能够自我复制和迭代了呢?我的回答是:那种形态的AI,它还只是一种“工具”吗?到那时它是否已经算是一种新的生命形态,类似黑奴那样,作为一种新的种族与人类并列了?这个问题涉及哲学和伦理,过于宏大,在这里不展开。且目前看来短时间内还发展不到这个程度,因此我先忽略这种情况。

对于“技术是否重要”这个问题,不同人在不同时间阶段,都会给出不同的答案。

AI焦虑

在我身边,有些朋友与我一样对AI抱有“谨慎乐观”的态度,而同时,也有一部分朋友对AI抱有过度乐观、甚至因此而感到有些恐惧的态度。

对于后者,也就是对AI产生焦虑和恐惧心理的朋友,我想不客气地说:你也许应该反省一下自己的工作内容了。

现阶段的AI,确实很聪明,尤其是它的“博学”很容易让人产生恐惧。例如,假如你是一个前端程序员,精通TS、网络、甚至在客户端积累了很多踩坑经验,你就是一个一般意义上的资深程序员甚至是专家级程序员。你本来很骄傲,直到你遇到了AI——你发现它很轻松地就能写出漂亮的python、go、rust、c++,也能随时用上新的框架新的语言,甚至对架构和模式的“理解”也比你更深,这种情况下,觉得恐惧也是正常的。

但如果真的恐惧的话,那我不客气地说:你对你的工作的认识是明显不足的。

程序员的工作并不只是写代码,从最根本上来说,程序员的工作其实是在现实世界与抽象的二进制世界之间搭建桥梁。

AI懂技术,甚至也懂架构,但是它永远不懂世界,不懂人性,不懂甲方或产品的需求。未来,或者说从现在开始,程序员们应该把AI当作“一个完全听从你指挥的高级程序员团队”,程序员们应该把精力从具体的技术上释放出来,转而更加关注架构设计、业务表达和对未来的规划,就像一名所谓架构师、或者一名研发小组负责人那样工作。

在这样“人人都是架构师”的思路下,即使之前我说依然世界上还有很多信息化建设的需求还未满足,但未来这个行业也确实应该会减少岗位数量。对于那些无法胜任“架构师”角色的初级和高级程序员来说,淘汰恐怕是难以避免的命运。虽然残酷,但这是合理的,因为IT行业一直以来都是“劳动力密集型行业”,虽然做的是“高技术”的工作,但这种组织模式在社会学的角度却是非常低级和原始的,转型升级、解放生产力是必经之路也是人类必然的奋斗方向,历史大势不可阻挡。

如果你作为一名程序员,最近发现AI可以完成你现在绝大部分工作,那你确实应该恐惧,但恐惧的不应该是AI本身,而是你自己的工作状态。

面向AI编程

业界最近一直在探索AI的应用方式,研究如何更好地将AI融入项目和日常工作中。最近一个比较主流的方向是:主动提供一些说明文件给AI,例如包括架构设计、思想、技术栈、约定习惯等,AI在生成时也一并将这些内容作为输入提供。

但我还有另一种想法:面向AI编程。

具体地说,不仅仅是让AI更贴近人类,也要反过来,人类主动向AI靠拢。

先打个比喻。在汽车发明、替代了马车之后,汽车工程师们并没有开发出“更好的马鞭”,而是发明了一套完全不同以往的、更有利于机械理解的输入方式——“方向盘和脚踏板”,人们也很快习惯了后者。

也就是说,我们人类不应该只是寄希望于继续按照我们以往的编程思路,要求AI按我们的方式思考,而是反过来,人类去习惯一套更有利于AI理解的编程思路。

怎样的编程思路会让AI更舒服?我的答案是:加大设计模式、模块解耦的力度。

以前我们会说:编程的世界没有银弹,不要过度设计,要在设计和实现速度之间找到平衡。为什么要找平衡?因为各种设计模式在理论上是美好的,但是落到现实中,越多的抽象也往往意味着越多的代码复杂度和代码量,所以一个成熟的工程师必须在理想和现实之间进行取舍。

现在,这个原理依然不变,只不过,天平要向“理论”的那一边更加倾斜,因为在AI的帮助下,我们“实现”的代价已经明显降低了,我们可以以同样的精力写出几倍于以前的规范化、模式化的代码。

更具体地说,以前可能是“哎呀先写出来再说、别搞太复杂的架构”,而现在可能是“我要先搭好一套比较完美的架构、剩下的让AI去填充”。即使对于一个系统中的一个小模块,我们也要做好领域划分、模块封装、目录结构、命名规范等完整的架构设计,按这种方式设计之后,AI就可以以最小的上下文代价去理解现有的工程,可能存在的错误和不合理设计也可以被尽量局限在小的范围之内。

——既然AI擅长做小型Demo而不擅长全局统筹,那我们就尽量把大项目拆成小的、独立的模块让AI去发挥它现在擅长的能力。

其中我想要特别强调的,是“命名规范”。其实不仅仅是程序员,产品、测试、设计等所有团队角色都应该注意这一点;而在我的日常工作中,很可惜的是,团队中的同学们经常忽视这一点,导致很多低效沟通。例如,在寻找测试机的时候,大家总是说“那部黑色手机壳的手机”,而不是“1号测试机”;例如在沟通某个产品需求的时候,产品经常会说“某某弹窗”,而在疑惑中打开代码一看,原来那玩意它是个Drawer

“命名规范”,实际上是一套人与人之间的RPC接口文档,如果文档写得不清晰,那就只能靠模糊匹配、反复确认,这样就抬高了沟通成本。而现在的(编程领域)AI都是大语言模型,它们都是通过语言来理解人类的知识,也通过语言与人类进行交互,因此命名规范的问题同样地存在于在人与AI的沟通之中。

固然,我们现在让AI来靠近人类,有一个很重要而且很现实的理由是,我们已经在现有的技术基础上迭代了几十年,不可能整个业界在一夜之间转型,在可能很漫长的过渡期内,只能用这种妥协的方式来保证人类和AI之间的协作。但是在妥协的同时,我们也要清醒的认识到,我们现有的技术基础很可能在未来被完整地推翻。就像虽然如何照顾和驾驭马匹是一项传承千年的专业技术,但是当方向盘和脚踏板普及之后,这样的技术也就失去了其原本的意义和价值。

业界提出一个更加激进的概念:Vibe coding,意思是人类完全用自然语言指导AI实现代码,并完全接受AI的代码、不关心其中的实现细节。这种模式过于激进,因为代码已经完全脱离人类的理解而存在,当迭代到一定程度、当AI无法控制规模或解决遇到的bug的时候,这个项目也就几乎无法被修复再利用,只能被完全推倒重来。我对此持悲观态度,在可见的未来,AI的智能水平无法达到这种模式所需的要求。这只能用于一些小型Demo项目,或者所谓的“throwaway weekend project(周末小项目)”之中,就像现在的程序员人人都能写一些小型脚本一样,以后非专业的普通人也将有能力给自己开发一些小型工具应用软件。

软路由

临近春节,今年我也和往年一样,提前了比较长的时间回家,远程办公。

然而远程办公的第一天,我就发现一个巨大的困难:没有一个好用的梯子,我几乎无法使用 Github Copilot 的能力。

说来也算是好运,25年中旬,内存价格还处于低位的时候,我入手了一台小主机,并且,这次春节期间我还很明智地把它随身带回了老家。这台小主机,虽然它的宝贝详情中通篇都没有出现“软路由”三个字,但如今我看,它全身每一个细节都是为了“软路由”而打造的,尤其是这个双千兆网口还带wifi6的设计,啧啧。

于是我奋战一晚上,一直搞到凌晨3点,终于是马马虎虎把软路由给配置好了,第二天开始得以正常办公。当看见copilot正常地、迅速地弹出行内补全的时候,我悬着的心终于放下了。

我拿起手机跟朋友吐槽:“没有ai的我像个废物”。

同时也隐隐地产生了担忧:在东升西落的世界格局之下,也不知道这份通往“freedom”的配置还能持续多久。与其说“恐惧AI”,不如说,我更恐惧的是“与那个闪耀世界隔离”。

年末年初的这段时间,千问、元宝明显加大了推广力度。元宝选择直接发微信红包,千问选择请大家喝一杯奶茶。后者这一招在我看来技高一筹,同时带动多个业务板块,是典型的阿里风格。但是作为一个普通用户,我只能很遗憾地说,经过我的体验,目前国内主流的几个AI服务(DeepSeek、千问、元宝、豆包等),它们的智能水平与年初相比甚至与国外的差距变得更大了。

网上流传着一张梗图,颇为讽刺:

  • 美国的AI大战:bench提升76%,新增某某特性,速度提升25%,支持100万token上下文……
  • 中国的AI大战:元宝给你发了一个现金红包,千问请客1分钱喝奶茶……

但是有一说一,国内的AI推广也有好的一面,至少它们的普及程度还是比较广的。就连我妈现在都会、甚至都习惯于使用豆包来提问、写报告、甚至写教案。也算是普惠大众了吧,这倒是莫名地符合我们国家善于兜底的政治风格。

克服rust恐惧症

去年10月我才刚刚宣布“克服cpp恐惧症”,还不到半年,我居然又玩上了rust,我自己都有点惊讶于自己的成长速度。

必须承认的是,我这次的学习历程,相当大程度上都是依赖AI的帮助。AI不仅能帮我写代码,还能给我详细解释原因,还有语言设计背后的含义。虽然现在知识已经存在于我的脑海中,成为了我的一部分,但是如果没有AI,我的学习道路可能会走得非常曲折。

早在2023年5月,我曾经尝试过认真学习了一遍rust。当时的体验总体来说是负面的,因为它那套所有权的机制太复杂了,在不熟悉rust语言的情况下,一个初学者甚至连一行代码都写不出来,每一行代码都会遇到奇奇怪怪的新问题。而这个漫长的学习过程,哪怕是以我现在的能力和经验、第二次再学rust的情况下,都持续了大约有2个月的时间,其学习曲线之陡峭,令人叹息。

而在掌握了rust的语法之后,我发现,我对这门新语言还是很有好感的。最重要的一点在于,从一名自诩架构师的角度来看,我觉得它的表达力特别强。它的表达力已经接近于Typescript,已经能够几乎像自然语言一样地书写代码了。

特别是与死板的golang对比,尤为明显。不过,尽管如此,rust依然不能替代golang的生态位,因为rust的并发很难写。这样对比之下,golang的go关键字可谓是神来之笔,此曲只应天上有啊。在常规web后端服务中,golang依然会是我坚定的第一选择。

而经过这两场难忘的学习经历之后,我产生一个大胆的想法:也许教育行业需要迎来一场远比IT行业更加彻底和疯狂的AI革命?

恶魔在人间

让我们回归现实。前阵子有一件事让我不吐不快,大家来评评理:

25年秋天,在参与了一次并不算很愉快的公司团建活动之后,返回杭州的第二天,我严重腹泻并伴随轻度发烧。在当时有一些地区有登革热、基孔肯雅热的病例报告,而我在团建期间也确实被蚊子咬了很多大包,所以谨慎考虑之下,我去医院做了检查。

令我震惊的是,小小发热腹泻,验血竟然抽了我5管血,化验费将近300元。

  • 一管血:检查白细胞之类的经典指标,很正常。
  • 一管血:检查登革热、基孔肯雅热病毒特征,很合理。
  • 一管血:专门检查“电解质”,我看了下化验单,仅仅就查了钠离子和钾离子,这一项还得几十块钱。
  • 两管血:送往当地疾控中心复核。毕竟传染病,可以理解,可是为什么要患者付费?这一项又是一百多块钱。

最后诊断结果啥也不是,就普通的细菌感染,应该是由严重腹泻导致的并发症。医生开了一板抗菌西药,药费几块钱。我回家再自己喝几包蒙脱石散,很快就好了。

我要给出一个暴论:现在,化验费就是医院“创收”的经典手段。

也许有人要骂我了,怎么这么阴谋论,诊断谨慎一些不是好事吗?

因为我并不是第一次经历类似事件。

早几年,医院的创收手段是——中药。

有一段时间我觉得我经常消化不好,当时我还天真地认为中医可以“调理”,就去医院挂了个中医,开了点中药,好家伙结账时候又震惊我了,一星期的疗程,中药费将近800元。吃完了啥也不是,没有任何好转,光有副作用了,我也不会再去当韭菜了。(后来通过清淡饮食、坚持每天吃大米饭,得到了明显的好转)

我还因为一些小毛病去过皮肤科、去过骨科、去过外科,没检查出什么大问题,医生也不忘给你开两盒中成药,不掏个一两百块钱别想走出医院。可真正治病解决问题的,都是那价格几块钱的西药。

最恶劣的,甚至我觉得已经处于违法边缘的,是一次去耳鼻喉科。医生诊断我是过敏性鼻炎,说这个病无法根治,这个我大致是认可的;可随后医生说,年纪越大越难治,现在有一款新药,价格有点贵,我建议你试试。我将信将疑地同意了,拿着处方单,取药地点并不是熟悉的中药房或西药房,而是医院后街的一家私营药店。老板熟练地拿出几支药水,说,总共2000多元。

你没看错,两千多元,几支药水,不走医保,患者全额自付。当时我非常震惊,我在网上搜索这款药,完全没有找到任何相关信息。而且这家店是那个医生指定的,估计其他药店也不会有相同的药物出售。其实到这里答案都已经呼之欲出了,当时我真的纠结了一会儿要不要拿着这些单据去有关部门走一趟,纠结了一会还是觉得算了,我认了,不想惹事,况且万一真有小概率真冤枉了好人那也不好。

上述事件都发生在杭州某家很大的三甲医院中。而有一次我不信邪,去了另一家名气更大的大医院,结果也是半斤八两。

医德是一方面,而医术又是令人担忧的另一方面。前几年有段时间我想治疗一下我的脱发问题,为此我跑了几趟医院。医生们开的都是那两种常见药,一种内服的,一种外用的。我用了相当长的一段时间,当然也没啥效果。最后一次去看医生,当我走进诊室,看见那位医生光秃秃的头顶,那一刻我突然就释然了——医生自己都解决不了的病,我还能指望医生吗?从此不再与这种“疾病”抗争,而是坦然接受,与自己和解。

与之类似的还有另一个小毛病,我去看了几次医生,几位医生给出的药物疗法各不相同,但是都没有根治,我也曾一度放弃了。后来一次偶然的机会在淘宝看到熟悉的药物,我点进去看,商品详情中详细描述了用法和注意事项,是两种我曾经用过的药物搭配使用,于是我抱着死马当活马医的心态,购买并按说明用药,您猜怎么着,嘿,药还没用完呢,我的毛病就治好了!

所以,经历过这些事件之后,我对医生这个职业群体,已经没有多少好感和信任了。

公立医院如此,私立医院更是放飞自我。有一次我在老家感冒发热,去小区门口的一家私人诊所看看,医生很热情地向我推荐一款新型中药,效果如何如何好,我听她讲的天花乱坠,直到最后我听到她说:“这是注射剂,把中成药直接注射进血管”的时候,我彻底破防了——我他妈到底在这里浪费个几把时间啊!然后愤怒地离开了这家小诊所,回家还特别交代家人,千万要远离这些卖中药的小诊所,太吓人了。

我不是一棍子打死。我愿意相信,医护群体中有很多很负责任、甚至很伟大的白衣天使存在;但我也同样坚信,这个群体中也有不少坏人存在。伟大的不是医生这个职业,伟大的只是某些医生个人。

我可以理解医生为了创收而使的这些小手段,毕竟学医确实不容易,毕业出来还要规培,正经开始赚钱都要三十岁了。但这并不是医生剥削患者的理由,患者并没有欠医生什么,更何况,患者是不是有可能从事着比医生还要辛苦的职业呢,患者就不值得体谅吗?而且医生是公认的“后期职业”,越老越吃香,就这样还要与民争利吗?让我这种吃青春饭的程序员情何以堪呢,等老了以后就别看病了,直接死了得了呗?

坏人,就在群众之中。甚至,你、我,都有可能是坏人,因为一己之私,做一些看似无伤大雅的“小恶”,不知不觉间,就成为了恶魔的化身。

《荀子·性恶》曰: “人之性恶,其善者伪也。”

近段时间,关于美国“斩杀线”的话题,在互联网上引起了远超其应有热度的广泛讨论。但你看看我提供的这些案例,是不是可以说明,“斩杀线”其实可能离我们并不遥远,也许如果某一天监管稍稍松懈了,斩杀的屠刀有没有可能就会落在我们头上?