旧空调主板上的Rust笔记

整理储物间的时候翻到我爸的工具箱,铝制的,边角磕得坑坑洼洼,里面除了电烙铁、吸锡器、缠得乱七八糟的杜邦线,还有个比巴掌大一点的旧笔记本,纸页黄得发脆。

那天热得离谱。
柏油路晒得软乎乎的,走上去能粘掉鞋跟。我家那台挂在卧室墙上的老空调,突然在凌晨三点停了。
风叶卡在上半段,转也不是,停也不是,吹出来的风带着一股电路板烧糊的味道。我爸披着外套从次卧冲进来,拆了面板测了半天,叹口气说,主板上的驱动芯片烧了,原厂配件要等十二天。

2019年的那次主板崩溃

那会他刚退休,没事干,就想着自己改个通用控制板。之前修了三十年家电,写惯了C语言的51单片机程序,那套东西熟得不能再熟,哪知道这次自己家用,反倒出了幺蛾子。程序写好的头三天,空调时好时坏,有时候大半夜自动切换到制热模式,把我冻得裹着被子跑到沙发上睡。翻来覆去查了一周代码,才发现是温度传感器的指针读值越界,把本来的26度,读成了零下100度。

他在那个老的家电维修论坛上吐槽这个问题,有个学计算机的年轻人给他回帖,说叔你试试用Rust写,编译期就把内存越界的问题给你拦下来,根本不会出现这种读错值的破事。

一开始他哪看得懂啊。满屏的英文报错,所有权、借用、生命周期,每个词都认识,拼在一起就不知道说的啥。有次他对着一个borrow checker的报错骂了快半小时,说这破软件比他修了四十年的老冰箱还难伺候,借个传感器的值都要追着问你用多久,用完了要还,生怕你拿了东西不还。有次他熬到两点,我起夜看见他书房的灯还亮着,屏幕上满是红色的报错,他手里攥着半块凉掉的烧饼,对着屏幕较劲。

老家电维修工具箱散落的杜邦线和焊锡丝
老家电维修工具箱散落的杜邦线和焊锡丝

就这么磨了快两个月,他终于把那个空调控制板的程序写完了。编译通过的那天,他特意给我打了个电话,声音都亮了两个度,说你快回来看看,这空调现在稳得很,从20度调到30度,半分偏差都没有,不会再半夜吹热风了。

帮楼下张奶奶改的温控器

不过话说回来,技术这东西,从来不会只待在自己家的空调上。

楼下张奶奶的儿子在深圳工作,每年就过年回来一次,老人冬天怕冷,买了个功率很大的电暖器,但是没有恒温功能,全靠手动拔插头。之前用C写的那个温控模块,装上去没半年就出了问题——程序内存泄漏,传感器读值卡死,电暖器从下午三点一直烧到晚上十点,张奶奶起夜的时候发现屋里热得能烤红薯,吓得赶紧拔了插头,之后好几天都不敢用那个电暖器,裹着两床被子睡觉。

我爸知道了之后,就把原来的模块拆了,用Rust重新写了控制逻辑。他跟我说,这次写的时候,编译器把所有可能出问题的地方都指出来了,比如传感器的值可能读成空,比如定时器的指针可能野掉,以前用C写的时候,他全靠自己记着哪里要做判断,年纪大了难免有疏漏,现在有这个编译器盯着,写完编译过了,就敢往用户家装。

那个模块装上去之后,快三年了,一次问题都没出过。张奶奶每次在小区门口碰到我,都要塞给我半袋自家腌的萝卜干,说那个小盒子真管用,现在到18度就自动断电,低于15度再启动,她晚上睡觉再也不用定闹钟起来拔插头了。

嵌入式Rust编译报错的老旧笔记本屏幕截图
嵌入式Rust编译报错的老旧笔记本屏幕截图

我那会还笑他,说你现在也算掌握新技术的老师傅了。他撇撇嘴,说哪是什么新技术,就是个能帮你少踩坑的工具。之前用C写程序,就像你光着手在老小区的黑楼道里走,哪有个台阶哪个地方有积水,全靠你自己记着,走个十年八年,总有踩空的时候。现在用Rust,就像有人提前把所有的坑都给你标出来,你走的时候就不容易摔。

笔记本最后一页的字

这次整理储物间翻到那个旧笔记本,我翻了快半个钟头。

里面夹着的东西杂得很:有当年买电子元件的发票,有张奶奶给的萝卜干的包装纸,有半张画满了电路的草稿纸,还有他当年对着编译器报错划掉的废稿。我之前总觉得Rust这种听起来就和高性能服务器、区块链、硬核程序员绑定的技术,离老南京城的烟火生活远得很,直到看见草稿纸旁边他写的那行歪歪扭扭的小字——漏出去的内存,迟早要变成用户家的火情。

现在小区里那些搞智能家居的年轻人,经常特意绕到我家来找我爸。说之前装的那些智能开关、门锁,动不动就因为内存泄漏死机,半夜锁自己弹开,或者灯光突然全亮,吓人的很。听说我爸用Rust写的嵌入式模块稳得很,就过来讨代码。我爸也不藏私,把自己写的那些注释得密密麻麻的代码全部拷给人家,还拉着人家在小区的石凳上坐一下午,泡着自带的雨花茶,讲他当年修空调遇到的那些因为程序不稳定出的糟心事。

他现在还是每天下午背着那个铝制的工具箱,在小区里转。帮独居的老人换个灯泡,给邻居家的小孩修个坏了的遥控车,偶尔碰到谁家的智能设备出问题,他就蹲在人家家门口拆半天,屏幕上还是满屏的英文报错,他就戴着老花镜逐行看,遇到看不懂的就给那个论坛上认识的年轻程序员发语音,问人家这个borrow的问题到底怎么改。

我之前总觉得,技术的变迁是写在大厂的发布会PPT上的,是那些听起来高大上的性能提升、架构升级。直到看见那个磨得起毛的旧笔记本,才反应过来,所有的技术最后落到普通人的生活里,从来都不是什么惊天动地的大事。不过是让老空调不会在三伏天吹热风,是让独居的老人能睡个安稳觉,是让半夜不会因为程序崩溃出现莫名其妙的火情。

前几天我爸给我发消息,说他最近在给小区的旧门禁系统写控制程序,还是用Rust。他说之前那个老门禁,动不动就因为程序死机,把业主锁在外面,上次有个晚归的小姑娘在楼道里站了半个钟头,冻得直哭。这次换了新程序,肯定稳。

我盯着那条消息看了半天,突然想起之前在技术文章里看到的那些对Rust的评价,说它是内存安全的,是零成本抽象的,是未来的系统级语言。可在我爸那个满是焊锡味的工具箱里,这些宏大的评价,最后都简化成了一句很朴素的话:别出问题,别给别人添麻烦。

作者|大讲堂

排版|大讲堂

审核|小北

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:旧空调主板上的Rust笔记
文章链接:https://lfdjt.com/info_23_30521.html