前言 · 写给当年那个学不会算法的自己
初看到这本书的题目,也许有人会觉得风马牛不相及:如何把算法写成童话?真的会有这样一个人,能把文学的优美趣味、哲学的思辨,加上计算机的严谨,汇在同一本书里吗?
这个问题不是今天才有的。一百六十多年前,牛津大学的一位数学讲师写了一本小女孩掉进兔子洞的童话,在里面藏了一整章的逻辑玩笑。很多人读了一百五十年都不知道,作者刘易斯·卡罗尔的本职,是数学教师查尔斯·道奇森。一九九一年,挪威的一位中学教师把整部哲学史装进一个十四岁女孩的信箱,《苏菲的世界》后来被译成了六十多种语言。再往前,一八八四年,一本叫《平面国》的小书,靠一个正方形的眼睛讲透了维度这件事。这样的书每次出现,评论界都要犹豫一下它算什么文体;读者从不犹豫,它们成了经典。
所以这个问题的答案是:能,而且有人反复做到过。真正的问题不是"能不能",是谁来做,为什么做。
大家好,我是秋天的怀念。一个坐在轮椅上的程序员。
这个开场我写了很久。不是想怎么写,是想哪些不写——写了几年代码、教了几年编程课,我习惯把自己藏在作品后面。但这一本书不行。这本书的序,必须从轮椅讲起,因为它讲的所有故事,都是从轮椅出发的。
我家里有电脑。可我对它一直无感,我不玩游戏,也不知道它能干什么。真正让我和计算机相遇的,是家人的一句话:希望我用计算机,当自己的腿,当自己的手。后来我才知道,这话有个学术版本,叫媒介是人的延伸。但对当时的我来说,它就是一个特别具体的愿望。
于是我读了教育技术学,一门研究学习资源开发利用的专业。文科我没得选——写字太慢,卷子永远写不完,我被迫学了理科;教师资格证也因为身体的原因没有考成,那是 2016 年,院长亲口告诉我的。上讲台的门关上了,可教书育人这件事,是专业塞给我的使命,关不上。后来我做了一个刷题的应用,把讲台搬进了软件里;再后来 AI 出现,我少年时那些模糊的愿望,突然全被具象化了。
然后说算法。我不是科班,和算法的缘分,从 2014 年高中的一堂数学课开始:一道找假币的题,老师给了二分法,我背了十二年,直到一位教授用同一道题告诉我,答案可以是五次。我学得跌跌绊绊:学完整本 C 语言,不知道链表是什么;考研把算法题全部写满,分数下来,评分标准躺在阅卷人的抽屉里,没有人告诉我错在哪。这些年陪算法一起受伤的日子,我记了很多。有人说伤疤要藏好,我的看法相反——事故就是故事。把它们讲出来,算法就没有那么枯燥。
说到这里,该交代我的职业了。我在电力行业做过信息化,需求响应、计价规则、出力控制、数据清洗,电表的那些事我都干过。也正是在这个行业里,我成了"被 AI 伤过的工程师"——我手写的代码,被 AI 写完了;我熬出来的实现,被推翻了。那一刻很难受。可难受过后我想明白了一件事:当年手写的代码之所以错,不是因为我笨,是因为从来没有人告诉我,动手之前,还有一种笨办法,能把每一种可能都先看清楚。现在我有了这支笔——AI 就是这支笔。所以我要做的不是逃离,是用 AI 这支笔,完成一场彻底的反叛和自我救赎:把当年每一个错误的写法,重新写对一遍。
这本书就是那场救赎的产物。它是一本讲算法的童话,也是一个程序员的自传。书的主人公叫林朝歌——山鲁佐德讲了一千零一夜的故事保住性命,他要把自己的这一生,也讲上一千零一夜。每一夜,一个故事:童话的皮,算法的核,中间夹着他自己。故事可以虚构,算法必须为真,每一夜末尾都附一张真伪核对表,哪句是安徒生说的,哪句是我编的,写得清清楚楚。代码全部用 Java,完整、可运行,每一行都真的跑过。
这本书写给两种人。一种是学算法的学生:如果当年有这么一本书引我入门,我相信自己一定会比现在更喜欢算法——这话是我写这本书的全部理由。另一种是当年的我自己,那个坐在教室里背二分法、背着背就困惑的少年。写书的时候我常常觉得,我是在隔着十几年的时间和他对坐,把当年没有人告诉我的一切,讲给他听。这也是我自己的文学梦:用 AI 这支笔,写给过去的自己。借着这支笔,我完成了一次精神的复活,也重新和这个世界建立了连接。
山鲁佐德讲故事,是为了活过那一夜。林朝歌讲这一千零一夜,是为了让当年那个学不会算法的孩子知道:你没有错,你只是还没遇到属于你的那本书。
现在,灯点亮了。第一夜,马上开始。
版权声明:本文为作者原创,受著作权法保护。未经授权禁止转载、搬运、摘编、改编及任何形式的二次创作;个人学习引用请注明作者与原文出处。转载授权请联系作者(CSDN 私信)。侵权必究。