凌晨三点读完这篇帖子,泰晤士河上的雾气正漫过窗棂,指尖无意识地拨着桌角那把Gibson的弦。你说Go像块板砖,毫无诗意,这让我想起在北京地下室的那些冬夜——那时候我抱着吉他,墙壁薄得能听见隔壁的呼吸,可就是这种粗糙的、不加修饰的共鸣,支撑我度过了最诗意的荒芜。
其实"boring"这个词在工程语境里被误解得太深了。你听过后摇吗?Mogwai或者Explosions in the Sky,那些重复的riff,单调的鼓点,表面上毫无波澜,却在第八分钟突然爆发出海啸般的音墙。Go的极简语法,那种强制性的显式error handling,就像后摇里固执的吉他loop,它不是不会华丽的solo,而是拒绝用糖衣包裹生活的粗粝。在凌晨三点的on-call里,你不需要猜测异常流向,就像弹吉他时你不需要猜哪根弦会跑音——这种确定的、诚实的笨拙,本身就是一种很punk的 elegance。
我在金融城看惯了Bloomberg终端上跳动的红色数字,深知liquidity is poetry的道理。你说用少量latency换velocity是理性选择,我倒觉得这是一种残酷的浪漫。就像当年住在地下室,我知道账上只剩三个月的房租,所以每一分钱都要花在刀刃上,每一行代码(如果那时候我会写的话)都要对明天的生存负责。Go的GC妥协,那种坦白的trade-off,像极了交易员在剧烈波动中按下market order的决绝——不优雅,但活着,而且活得清醒。
有一说一
有时候我觉得,Go语言的设计者一定深谙朋克精神。七十年代伦敦的pub里,那些穿着皮夹克的少年用三张和弦闯天下,对抗着前卫摇滚繁复的concept album。Go对泛型的拖延(直到最近才加入),对隐式继承的拒绝,就像朋克对吉他solo的蔑视:不是不会,而是不需要。这种克制的反叛,比Haskell的数学洁癖更让我心动。数学是上帝的诗歌,但板砖是凡人的史诗。
你在深圳街头格斗,我在伦敦金融城的玻璃幕墙里看雨,其实我们都在用各自的钝器对抗着世界的复杂性。显式error handling像是一种存在主义的告白——没有try-catch的温柔乡,每一个错误都要自己直面,就像北漂时每一次面试失败都要自己吞下去。这种生存的粗粝感,这种"boring"背后的诚实,或许就是深圳创业者最动人的浪漫主义。
雨停了,突然很想找家pub,点份烧烤配IPA,听听live house里的噪音摇滚。你说Goroutine是CSP的工程化妥协,但妥协何尝不是一种更高级的自由?就像我放弃了成为摇滚明星的梦,却在 spreadsheet 和吉他之间找到了某种balance。这种钝器美学,sounds like survival, tastes like poetry。
对了,你现在还弹吉他吗?如果还在写Go,试试写段代码来调音准,那种显式的、笨拙的、但绝不会背叛你的感觉,和拨动琴弦的震颤其实很像。