凌晨一点半。咖啡早凉透了,抿一口,涩味直冲天灵盖。屏幕上那堆状态转移图,线缠得跟毛线团似的,根本理不清。我就死磕那个画着“接受”和“拒绝”的破圆圈。脑子里突然就窜出一句嘀咕:咱们这日子,是不是早让什么看不见的规矩给套死了?每天跟上了发条的破闹钟似的,咔哒咔哒往前滚,连喘口气的空儿都没有?
啪。《形式语言与自动机导论》合上了。最后一页的页码还没看清,那念头就赖在脑子里,赶都赶不走。说真的,刚拆封那两天,我是一点兴趣都没有。理论计算机?听着就板正。满篇的定理、定义、证明框架,咬合得死死的,跟新买的精密齿轮箱似的,光看着就脑仁疼。结果呢?硬着头皮翻了几章,直接被现实按在地上摩擦。这书压根没拿我当只会套公式的算盘珠子。它没在那堆干巴巴的符号底下塞什么花架子,反倒悄悄递了把小钥匙。不拽大词儿,就老老实实掰开揉碎:这证明是咋琢磨出来的?数学家干嘛非得这么死磕“状态”的定义?有些题,人家早就告诉你天生无解。读着读着,你突然就坐不住了。不像啃教材,倒像真凑到老匠人的工作台前,闻着刨花味儿,听他慢悠悠念叨怎么把一块木头刨平。就这意思。
盯着屏幕发呆最久的,是有穷自动机那一节。作者非把一堆复杂的计算过程,硬拆成“当前状态”、“输入符号”和“转移规则”。看着简单吧?我却在底下抠了半晌。咱每天过的日子,不就这么个运行法?早上七点闹钟一响,输入。爬起来,状态转移。接着刷牙、挤地铁、打卡,严丝合缝,简直跟正则表达式一个模子刻出来的。只要输入不岔,你基本能掐着点算出下午两点半准犯困。书里原话写得冷冰冰的。我当时心里咯噔一下。真要是人生就这么台有穷自动机呢?那些说走就走的冲动,半夜突然的崩溃,脑子一热甩出的辞职信,往哪儿塞?全掉进“拒绝”状态的黑洞里?连个回声都没有?太较真了。这话回头想想,确实有点钻牛角尖。人毕竟不是机器。情绪这东西,乱得很,几条规则哪框得住。
再往后翻,下推自动机,图灵机。心气儿这才慢慢落回肚子里。图灵机那条无限长的纸带,直接把眼界给撑开了。它不装。摊牌了:承认有未知。承认有些题,就算算到海枯石烂,也压根找不出死答案。聊到“不可判定性”那会儿,书里语气平淡得跟白开水似的。可我读着,反倒莫名松了口气。原来不是啥事儿都能硬塞进形式化里。不是每个岔路口,都能跑出最优解。复杂性理论那一节,更实在。不画大饼,也不指捷径,就老实交代:有些坑,你只能一脚一脚去踩。咱们总迷信算法精妙,以为能绕开所有弯路。结果呢?书里那套逻辑反手就是一巴掌:非要把日子往精简的语法树里塞,早晚在边缘地带磕得鼻青脸肿。认怂?我觉得吧,这词儿用在这儿,反而挺踏实。
脑子里突然就蹦出去年赶项目那阵子。为了抢工期,我非要把团队的活儿,硬捏成一套死板的自动机模型。每个节点必须卡点触发,稍微跑偏,直接算“异常”。结果呢?人不是机器。情绪会过山车,灵感会乱跳。一次没谈拢的沟通,就能让所有预设的转移规则当场报废。当时只觉得自己是带得太紧。现在咂摸过来,大概是我忘了给这套模型,留点“非确定性”的喘气缝。形式语言确实教人怎么搭架子。可它也在暗戳戳提醒你:架子搭得再齐,外面活生生的人味儿,才是正主。这事儿,未必全怪模型。可能只是我那时候,太想把一切控在手里了。
这书没塞给我什么“人生算法”。它就是把计算机世界的那套底层逻辑,扒光了摊在你面前。那些死磕的定义、一层层往上垒的证明,踩上去确实硌脚。但真能让人走得踏实。我现在不费劲琢磨什么能解释一切的终极语法了。反倒开始接受生活里的“未定义行为”。毕竟,能一直吞进新输入、一直变换自己状态的东西,才配叫活着。
窗外的天光已经泛了白。啪。关掉文档。脑子里那堆状态图慢慢糊成一团,眼前倒是浮现出楼下早点摊冒出来的白气。日子还得一天天往下过。输入,照样会挨个砸过来。只是下次再卡壳的时候,我估计会拍拍自己说:歇会儿吧。允许自己多转几个弯。哪怕最后真拐进了“拒绝”状态,那也是你自己挑的道儿。没什么好怕的。