搭积木的人
小时候我有一个塑料箱子,里面塞满了花花绿绿的积木块。周末趴在地板上,把那些零散零件拼成能看能动的东西——一架歪歪扭扭的吊车,一座一碰就散的城堡。不需要什么理由,就是单纯享受“做出来”的感觉。长大以后回头看,我大概一直都是这种人:喜欢用自己的手把脑子里的东西搭出来。
后来接触了编程,发现这事和搭积木很像。你脑子里有一个想法,一行行代码写下去,慢慢把它变成屏幕上能运行的东西。第一次用 C 语言打印九九乘法表,几行代码就让屏幕上整整齐齐排满了数字——当时的兴奋,和拼好第一个模型的感觉一模一样。
但也和搭积木不一样。积木搭歪了会倒,搭错了拆掉重来就行。编程的挫败感更折磨人:你对着屏幕,程序就是不对,你不知道为什么。可能整个晚上都在找那个拼错的变量名,也可能发现自己从头到尾把一个概念理解反了。如果运气不好,就是两眼瞪着报错信息发呆,连该搜什么都不知道。那种无力感,比积木塔塌了难受得多。
可一旦“卡住了”被“跑通了”替代,满足感也加倍。像是小时候花一下午搭完一个复杂的模型,退后两步看着它——就是那种心情。我后来发现,工作中如果同事说遇到了什么 bug,我会忍不住凑过去看。不是想帮忙,就是好奇:到底哪儿出错了?就像小时候蹲在别人塌掉的积木塔旁边,想搞清楚是哪一步没搭稳。
但这两种“搭建”有一个根本的不同。积木受限于手里的零件数量和物理规律,你能搭出的东西始终有个天花板。代码没有这个天花板。它当然有自己的约束——算力、语言特性、系统架构——但这些约束是规则而非边界,你可以在规则之内造出无限多东西。
而且代码造出来的东西不止是“可以很大”。一旦部署到服务器上,它就活了——可以被任何联网的人访问,可以同时服务成千上万个人。一个人、一台机器,写出来的东西就有机会被无数人用到。积木当然也能拍照发出去,但那是积木的照片在传播,不是积木本身在运转。而一段跑起来的代码,是它自己在被别人触碰,在替别人干活。这种“活物”一样的感觉,是物理世界里搭不出来的。
有时候想起这些,会觉得自己很幸运。成年之后还能找到像童年搭积木一样让人沉浸的事情。它也许只是一段没人看到的脚本,也许只是解决了一个很小的问题。但如果某个角落有人因为你的代码而方便了一点点——那种感觉,和很多年前趴在地板上、退后两步看着自己搭的第一个积木模型,是差不多的。