乐于分享
好东西不私藏

AI发展史 | 星光不问赶路人:关于那些灵魂的温柔回望——写于“发展史”系列写作的阶段性节点

AI发展史 | 星光不问赶路人:关于那些灵魂的温柔回望——写于“发展史”系列写作的阶段性节点

“从亚里士多德到李飞飞,从逻辑的萌芽到深度学习的绽放——这个系列用温柔而诗意的笔触,书写了人工智能发展史中51位灵魂的故事。如今,阶段性回望。这不是终点,而是途中。我想与你一起,看看来路,也望望前程。星光不问赶路人,我们慢慢走。”

01. 阶段性回顾

写下又一位人物的故事,光标在文档末尾安静地闪烁。

这已经是我这个系列的第很多期了。从亚里士多德开始,一路走到今天,不知不觉间,已经积攒了厚厚的一叠文稿。有时候回翻前面的内容,会恍惚觉得,自己不是在写作,而是在一条漫长的河流边行走,每隔一段路,就遇到一个人。他们有的站在很古老的岸边,衣着和语言都带着那个时代的印记;有的离我们很近,仿佛刚刚转身离开,茶杯里的水还是温的。

我给他们每个人都写了一篇文案。不是那种严谨的学术传记,而是更私人的、更像是在夜晚灯下与他们相对而坐的文字。我想写他们的智慧,更想写他们的温度;想写他们为人工智能这片星空贡献了什么,更想写他们作为普通人,如何在各自的困境里,依然选择了仰望。

现在,我想在这个节点上,停下来,回望一下来路。

不是为了总结什么宏大的结论——坦白说,我觉得自己没有这个资格。我只是一个讲故事的人,一个把那些遥远的名字变成可读文字的人。我想做的,是把这些人物放在一起,看看他们之间那些隐秘的联系,那些跨越时空的呼应,那些生前未曾谋面、却在思想深处握过手的瞬间。

这也是一封写给读者的信,感谢你们陪我走了这么远。如果你才刚刚翻开这个系列,那也没关系——我们从头开始,慢慢走。

窗外的城市灯火通明,一如人类千年来从未熄灭的求知欲。

我们出发吧。


卷一:最初的提问

一切都从一个很朴素的问题开始:什么是思考?

我们今天谈论人工智能,谈论机器学习、神经网络、大语言模型,好像这些概念是从二十世纪中期突然冒出来的。但如果你愿意把目光放得更远一些,会发现那个核心的追问,早在两千多年前就已经被轻轻放在桌上了。

亚里士多德是这条河流的源头之一。

我写他的时候,努力让自己回到那个没有计算机、没有逻辑代数、甚至没有“算法”这个词的时代。亚里士多德在吕克昂学园的廊柱下散步,学生们跟在身后,边走边谈。他提出了“三段论”——如果所有人都会死,如果苏格拉底是人,那么苏格拉底会死。这在我们今天看来几乎是废话,但在当时,这是人类第一次试图把“正确的推理”变成一套可以遵循的规则。

他不是在发明真理,而是在发现人类思维深处的某种结构。这种结构不是随意的,不是靠直觉的,而是有章可循的。

这就是后来一切“智能”模拟的起点。因为如果你想让一个非人的东西——无论是机械装置还是电子计算机——表现出“思考”的能力,你首先得知道思考遵循什么样的规则。亚里士多德给了我们第一张地图。虽然那张地图还很粗糙,很多地方写着“此处有未知”,但方向是对的。

然后时间一下子跳过了将近两千年。

中间有很多人走过,但真正让我觉得有趣的一个,是赖蒙·鲁尔。这位十三世纪的哲学家和传教士,来自马略卡岛。他有一个近乎疯狂的念头:真理是可以被机械地推出来的。他设计了一种转盘,上面画着各种基本概念——善、伟大、永恒、智慧等等——通过转动转盘,把这些概念组合起来,就能产生所有可能的真理。

今天听起来,这很像一种粗糙的“概念组合生成器”,有点像今天的语言模型在做的某种简化版本。但在那个年代,这个想法太超前了,超前到被很多人当作怪谈。鲁尔一生写了大量著作,试图推广他的“伟大艺术”,但最终还是孤独地老去。有人说他是在北非传教时被石刑处死的,也有人说他回到了马略卡岛,在平静中离世。

我写他的时候,心里有一种奇异的感动。一个十三世纪的人,在黑暗中摸索着,试图设计出一种“思考的机器”。他不知道什么是算法,什么是计算,但他就是觉得,真理不应该只属于少数人,它应该是可以被推演、被呈现、被看见的。这种朴素的信念,让我觉得他就是那个时代的一颗孤星。

再往后,勒内·笛卡尔登场了。

笛卡尔是我写得比较顺畅的一篇。可能是因为他太有名了,“我思故我在”这句话几乎成了现代哲学的标签。但我不想只写那个标签。我想写的是他如何在一个充满不确定性的时代里,试图找到一块绝对坚实的基石。他怀疑一切——感官会欺骗你,梦境和现实难以区分,甚至数学定理也有可能是某种邪恶的魔鬼植入你脑中的幻觉。但他发现,有一个东西是无法怀疑的:那个正在怀疑的“我”。

这就是“我思故我在”的真正含义。它不是一句口号,而是一个在怀疑的深渊里抓住的最后一根绳索。

笛卡尔对人工智能的意义在于,他把“思维”和“身体”分开了。思维是精神性的,身体是物质性的。这一划分后来引发了无数争论——机器能拥有精神吗?如果我们把“思维”理解为某种可以在物质基础上实现的功能,那笛卡尔其实是给人工智能留下了空间。因为他的二元论虽然把精神和物质分开了,但并没有说物质不能模拟精神。后来的计算机科学,某种程度上就是在尝试用物质(硅、电、逻辑门)来重现思维的过程。

但我写笛卡尔的时候,更多的是在写一个人。一个体弱多病、喜欢赖床、在荷兰隐居了很多年的学者。他写《第一哲学沉思集》的时候,大概是那种深夜醒来、对着天花板反复推敲的状态。这种状态,我在写这个系列的很多篇文案时,自己也有过。

然后是莱布尼茨

莱布尼茨是我个人非常偏爱的一位。不是说他的贡献比其他人更大,而是他有一种让我着迷的气质。他几乎什么都懂——哲学、数学、物理、法学、历史、语言学、地质学,甚至还想出了二进制。他和牛顿各自独立发明了微积分,虽然为此打了大半辈子的架,但这不是我关心的。我关心的是他的一个梦:一种通用的符号语言。

莱布尼茨觉得,人类的争论之所以没完没了,是因为语言太模糊了。同一个词,不同的人有不同的理解;同一个句子,不同的语境有不同的含义。如果能创造一套精确的符号系统,每个符号都对应一个明确的概念,那么两个人在争论的时候,就不用吵架了,只需要坐下来,拿笔算一算,结果自然就出来了。

这就是他说的“普遍文字”和“演算推理器”。

你看,这里面已经包含了后来计算机科学的两大核心:一是符号化,把自然语言翻译成精确的符号;二是可计算,把推理变成一种演算。莱布尼茨没有造出计算机,但他描绘了计算机存在的理由。他甚至设想过一种机器,可以自动进行逻辑推理——这不就是“通用计算机”的概念雏形吗?

我写莱布尼茨的时候,用了很多轻柔的句子。因为我觉得,一个生活在十七世纪的人,能梦见三百年后的世界,这件事本身就很温柔。他的梦没有在当时实现,但它像一颗种子,埋在土里,等待合适的季节。

大卫·休谟是这条河流上的一个转折点。

休谟不是那种会设计机器的人,他甚至可能对“人工智能”这个词毫无兴趣。但他提出了一个深刻的问题:因果关系是真的吗?

我们看见太阳晒,看见石头热,就说“太阳晒热了石头”。但休谟说,你只看到了两件事先后发生,你并没有真正“看见”因果。因果关系不是世界本身的属性,而是我们大脑的习惯——我们把经常同时出现的事物联想在一起,久而久之,就觉得它们之间有必然联系。

这个观点在当时是爆炸性的。它动摇了整个科学大厦的基础,因为科学的前提就是世界遵循因果规律。但休谟没有因此变成怀疑论者,他只是很冷静地说:我们没有理由相信因果关系是客观真实的,但我们也无法摆脱这种信念——它太根深蒂固了,是我们思维的基本方式。

这对人工智能的启示是深远的。今天的机器学习,很大程度上就是休谟式的:模型从海量数据中发现相关性,然后用这些相关性去做预测。它不关心“为什么”,只关心“是什么”。你不需要告诉机器因果机制,你只需要给它足够多的例子,它自己就能学会“如果A,那么很可能B”。

朱迪亚·珀尔后来花了很大力气试图把因果推理带回到人工智能中,这是后话。但休谟在两百多年前,就已经把这个问题摆在了桌面上。我写休谟的时候,一直在想,他大概是个很安静的人。不爱争论,不爱站队,只是坐在爱丁堡的书房里,一个字一个字地写下那些让后人头疼的思考。这种安静的深刻,是我很向往的。

查尔斯·巴贝奇阿达·洛芙莱斯,是我一起写的两篇。

不是因为他们的故事重叠太多,而是因为他们放在一起,才构成一个完整的画面。巴贝奇是那个造梦的人,阿达是那个读懂梦的人。

巴贝奇的一生充满了挫败感。他设计了差分机和分析机,但都没有真正建成。不是因为设计有问题,而是因为资金被断了、工匠不够好、政府的耐心耗尽了。他像一个超前的建筑师,图纸画得精美绝伦,但施工队始终跟不上节奏。晚年的时候,他孤独、愤怒、郁郁寡欢。我写他的时候,心里有些不忍。一个天才,活在自己的时代里,却属于另一个时代,这种错位感是很折磨人的。

但还好有阿达。

阿达·洛芙莱斯是拜伦勋爵的女儿,但她没有继承父亲的诗才,而是继承了母亲的数学头脑。她翻译了一篇关于巴贝奇分析机的论文,并在注释中写下了自己的思考。那些注释比原文还长,还深刻。她看到了巴贝奇没有明确说出来的东西:这台机器不只可以做算术,它还可以处理任何可以用符号表示的东西——音乐、逻辑、甚至文字。

她写下了历史上第一段被公认为“计算机程序”的代码——虽然从来没有在真正的机器上运行过。她还提出了一个很重要的观点:机器不能创造任何真正的新东西,它只能执行人类给它的指令。这就是后来著名的“阿达·洛芙莱斯 objection”——机器永远无法拥有真正的创造力。

今天的大语言模型能写诗、能编故事、能生成我们从未见过的图像,这让一些人觉得阿达错了。但其实不然。她说的“不能创造”,是指机器没有自己的意图、自己的意志、自己的主观体验。它可以生成新的组合,但那个“想要生成”的冲动,依然来自人类。这个观点,至今仍有讨论的价值。

我写阿达的时候,是带着一种很柔软的心情写的。她只活了三十六岁,短暂的一生里有才华、有疾病、有赌债、有对数学的痴迷。她像是那个时代的一道光,闪烁了一下,然后就熄灭了。但就是那一下,照亮了很多后来的路。


卷二:逻辑的骨架

如果说前面的那些人是在为人工智能绘制蓝图、打下地基,那么从乔治·布尔开始,房子真正动工了。

布尔是一个自学成才的数学家。他出身贫寒,父亲是个鞋匠,他自己十六岁就开始教书养家。但他对数学有一种近乎痴迷的热爱。他想搞明白一个问题:逻辑能不能像代数一样运算?

在他之前,逻辑是哲学系的事,代数是数学系的事,两不相干。布尔觉得这不对。他认为,逻辑的本质就是一套运算规则——你给定了前提,经过某些变换,就能得到结论。这和代数里你给定了方程,经过移项合并,就能得到解,本质上是同一种活动。

于是他创造了布尔代数。与或非,AND OR NOT。就这么几个简单的东西,构成了今天所有计算机逻辑电路的基础。你电脑里的每一个比特,每一次判断,背后都是布尔代数在默默工作。

写布尔的时候,我特意查了很多关于他生活细节的资料。他不是一个只在纸上做学问的人。他爱诗歌,尤其爱丁尼生;他教育女儿的方式很开明,后来他的女儿写了《小妇人》。他是一个温和的、沉静的人,在皇后学院的讲堂里,用清晰而缓慢的语调讲述着那些看似抽象、实则无比具体的逻辑规则。

我不知道他是否意识到自己工作的意义,也许他知道。也许他觉得,这只是把一件本来就很美的事情,换了一种方式说出来而已。

伯特兰·罗素是这一脉的继承者,也是放大者。

罗素是我写过的文稿中,性格最鲜明的人物之一。他出身英国贵族,却一辈子在批判传统、挑战权威。他和怀特海合写的《数学原理》,试图把整个数学建立在逻辑的基础之上——这大概是人类历史上最宏大也最疯狂的知识工程之一。

写罗素的时候,我翻阅了很多关于他生平的资料。他的情感生活很复杂,他的政治立场让他进过监狱,他活到九十八岁,几乎见证了现代世界的全部变迁。但回到人工智能这条线上,罗素最大的贡献是:他证明了逻辑的边界。

他和怀特海花了十几年写《数学原理》,成果是辉煌的,但哥德尔后来用一个简洁到惊人的定理,指出了他们系统的不完备性。罗素本人对此的反应是诚实的——他没有恼羞成怒,而是接受了这个事实。这种面对真理时的谦逊,是很动人的。

我写罗素的时候,用了很多篇幅去写他生活中的柔软片段——比如他给朋友写信时那种带着幽默的自嘲,比如他晚年面对年轻记者提问时的耐心。我觉得这很重要。因为一个人太容易被标签化了:哲学家、逻辑学家、和平主义者、诺贝尔文学奖得主。但撕掉这些标签,他就是一个不断追问、不断犯错、不断修正的老人。这种生命力,比任何标签都珍贵。

路德维希·维特根斯坦是罗素的学生,但后来成了罗素的“对手”。

写维特根斯坦是最费心力的一篇之一,因为他的思想太独特了,而且前后期变化极大。早期他觉得语言就是世界的逻辑图像——一个句子之所以有意义,是因为它对应着世界中的某种状态。晚期他推翻了自己,觉得语言的意义在于使用——就像一个工具箱,锤子、锯子、尺子,它们之所以有意义,是因为我们在特定的生活情境中使用它们。

维特根斯坦对人工智能的影响是间接的,但很深。早期的他,支持了符号主义的信念——语言可以分解为逻辑原子,世界可以被精确描述。晚期的他,则让后来的人工智能研究者开始反思:机器真的需要“理解”语言吗?还是只需要学会“使用”语言?今天的大语言模型,某种程度上就是维特根斯坦晚期的胜利——它们不试图“理解”词语背后的终极意义,它们只是在海量的使用实例中,学会了如何像人类一样使用词语。

我写维特根斯坦的时候,最打动我的是他的生活态度。他继承了巨额财富,然后全部捐掉;他当过乡村教师、园艺工、医院护工;他一辈子都在和自己搏斗,不断地怀疑、推翻、重建。最后他说:“告诉他们,我过了很棒的一生。”这句话在我写完那篇文案之后,还在脑海里转了很久。

诺伯特·维纳是一个跨界者,而且是一个不太在意边界的人。

他研究数学、物理、生物、工程,然后在1948年出版了一本叫《控制论》的书,副标题是“关于在动物和机器中控制和通信的科学”。这个副标题本身就宣告了一种新的思维方式:动物和机器,在控制与通信的层面上,是可以被统一讨论的。

维纳的核心概念是“反馈”。恒温器根据室温决定是否启动加热,你的手碰到烫的锅会瞬间缩回,这都是反馈。维纳说,这就是智能的基本机制——感知、比较、行动,再感知、再比较、再行动,形成一个循环。

这个观点在今天看来是常识,但在当时是革命性的。因为在那之前,大家讨论机器智能时,想的都是“符号推理”——给机器一些公理,让它推导定理。维纳说不对,智能不只是坐在书斋里推导,而是在与世界的互动中适应和学习。

写维纳的时候,我特别注意描写他的性格。他从小是个神童,长大是个怪人,记忆力惊人,社交能力很差。他会在讲座中突然停下来,盯着天花板看很久,然后继续讲,好像什么都没发生过。他晚年对自动化技术的伦理影响很忧心,担心机器会让人类失去存在的意义。这种忧心,在今天看来,越来越像是预言。

库尔特·哥德尔只做了一件事,但这件事足够伟大——伟大到撼动了整个数学和逻辑学的基础。

他证明了不完备性定理:任何足够强的一致的形式系统,都包含一个在该系统内既不能被证明也不能被证伪的命题。简单来说,就是任何有点用的逻辑系统,都有自己搞不定的问题。

这是对罗素和怀特海《数学原理》计划的一记重击。他们想证明数学是完备的、一致的、可判定的,哥德尔说:不可能,别想了。

哥德尔对人工智能的意义是什么呢?如果你相信人的思维就是某种形式系统,那么哥德尔证明了形式系统有局限,所以机器永远无法达到人类思维的某种超越性。但如果你觉得人类思维本身也有局限——哥德尔似乎更倾向于这种理解——那么机器和人的差距就没有那么大。

这个问题至今没有定论。但我写哥德尔的时候,最打动我的不是他的数学结果,而是他这个人。他后来患了严重的妄想症,总觉得自己会被毒死,只吃妻子做的饭。妻子住院后,他把自己饿死了。一个能看透数学最深层结构的人,却无法摆脱自己的恐惧。这种反差,让我在写那篇文案的时候,几次停下来,不知道该用什么样的语气继续。

沃伦·麦卡洛克沃尔特·皮茨,是我放在一起写的。

前者是个精神科医生,整天琢磨大脑是怎么回事;后者是个早熟的天才,逻辑学功底扎实,性格孤僻。1943年,他们合作了一篇论文,提出了第一个神经元的数学模型——M-P神经元模型。

这个模型很简单:一个神经元接收多个输入,每个输入要么兴奋要么抑制,如果兴奋的总和超过某个阈值,这个神经元就“放电”,输出一个信号给后面的神经元。就这么简单,但它是所有人工神经网络的起点。

写麦卡洛克和皮茨的时候,我一直在想一个问题:灵感是怎么发生的?一个精神科医生,一个逻辑学家,他们在芝加哥的某个咖啡馆里是怎么聊起来的?是谁先提出的那个想法?皮茨当时才二十岁,是个离家出走的少年,麦卡洛克比他大二十多岁,是什么让这两个人坐在一起,写出了那篇改变历史的论文?

这些细节可能永远无法还原了。但我在文案里尝试做了一件事:用想象的笔触,勾勒那个思想交会的瞬间。不是为了编故事,而是为了呈现那个时刻的光亮。两个不同背景的人,在各自领域的边缘地带,同时看到了一个可能性——用数学描述神经元,用神经元构建思维。这就是跨学科的美妙之处,也是人工智能自诞生以来就带着的基因。


卷三:机器的诞生

阿弗烈·诺夫·怀特海,我在前面提到过,他和罗素合著了《数学原理》。但在AI史上,他还有一个更直接的身份——他是罗素的老师,也是罗素的合作者,后来两人的关系疏远了,但怀特海一直保持着某种绅士的沉默。

我写怀特海的时候,没有停留在《数学原理》上,而是更多地写他晚期的“过程哲学”。他认为宇宙不是一堆静止的物体,而是一系列不断发生的事件。这听起来很玄,但和后来人工智能领域的一些思考有奇妙的呼应——比如,智能不是一种“状态”,而是一个“过程”;不是“我聪明”,而是“我正在进行聪明的活动”。

怀特海是一个温和的人。他在哈佛的岁月里,讲课的声音很轻,学生得坐前排才能听清。他在课堂上的姿态,总是微微前倾,像是在把自己的思想轻轻递出去。我写他,是想提醒自己:学术界不只有争锋相对的论战,还有一种安静而坚定的传递。

约翰·冯·诺依曼是我写过的文稿中,智商溢出屏幕的一位。

他是数学家、物理学家、计算机科学家、博弈论之父,几乎在每个领域都留下了深刻的痕迹。他参与了曼哈顿计划,设计了计算机的“冯·诺依曼架构”——就是那个把程序和数据存在同一个存储器里的设计,至今仍然是绝大多数计算机的基本结构。

写冯·诺依曼的时候,我查阅了很多关于他的轶事。据说他的心算能力惊人,有人说他能在脑子里完成复杂的数值计算,速度堪比后来的电子计算机。他社交能力很强,喜欢派对,爱讲笑话,跟人聊天时经常一边说着某个数学定理的证明,一边随手在餐巾纸上涂画。

但让我在文案里着墨更多的,是他晚期的《计算机与人脑》。这本书很薄,是在他去世后出版的,里面比较了计算机和人脑的结构差异。他意识到,计算机和大脑的工作原理完全不同,但也许在数学的层面上,它们是相通的。这个思路后来启发了神经网络的研究。

冯·诺依曼五十三岁就因癌症去世了。他躺在病床上,还在给朋友写数学问题,好像想用最后的智力活动对抗身体的衰败。我写到这里的时候,觉得文字很难承载那种复杂的情感。一个在理智上几乎无所不能的人,终究还是败给了身体的有限。这很公平,也很残忍。

莫里斯·文森特·威尔克斯,对于大众来说可能比较陌生,但他在计算机史上有一席之地——他建造了世界上第一台存储程序式计算机EDSAC。

冯·诺依曼提出了架构,威尔克斯把它变成了真实的机器。那时候还没有集成电路,计算机是由成千上万个真空管和继电器组成的庞然大物,占满一整间屋子,发热量大得惊人,动不动就出故障。但就是在这种条件下,威尔克斯和他的团队在剑桥大学一砖一瓦地搭起了EDSAC。

写威尔克斯的时候,我努力去想象那种状态:没有现成的零件,没有成熟的工具,一切都要自己设计、自己调试。一个焊点接错了,整个机器就不工作;一根导线松动了,计算结果就莫名其妙。在这种“动手”的层面上,早期的计算机科学家更像工程师,甚至更像工匠。

这种“动手”的精神,在后来的人工智能发展中其实被淡忘了。当我们谈论深度学习、大语言模型时,很少去想那些模型运行的物理基础是什么。但威尔克斯提醒我们:所有的智能,终究要落脚在某个物理实体上。那个实体可能是一堆真空管,可能是硅芯片,可能是量子比特,但它必须是物质。

艾伦·麦席森·图灵,这个名字在AI史上太特别了。我写他的时候,反复告诉自己:不要写成陈词滥调。

图灵有很多标签:计算机科学之父、人工智能之父、二战密码破译者、同性恋、被迫化学阉割、四十二岁自杀。每一个标签都足够写一本书。但我想要的是更私人的、更贴近的图灵。

我写了他提出的“图灵机”——一个抽象的数学模型,无限长的纸带,一个读写头,一套简单的规则。这个模型简单到不能再简单,但它能计算任何可计算的东西。这就是“通用计算”的概念,也是所有现代计算机的理论基础。

我写了他提出的“图灵测试”——如果一台机器能在对话中让人类无法分辨它是人还是机器,那它就应该被认为是智能的。这个测试在今天看来有很多漏洞,但它的意义不在于技术细节,而在于它把问题从一个深奥的哲学争论变成了一个可操作的经验检验。

我写了他在布莱切利庄园破译德军Enigma密码的事。那段历史被电影《模仿游戏》呈现过,但电影简化了很多东西。图灵的工作不仅是天才的智力游戏,更是对人类苦难的直接介入——他的破译缩短了战争,拯救了无数生命。

我也写了他的孤独。他在战后因为同性恋被起诉,选择了化学阉割来避免入狱。那之后,他的精神越来越差,最终在1954年,吃了氰化物泡过的苹果。那个苹果后来成了苹果公司标志的一个流传甚广(尽管未经证实)的传说。

我在文案的最后写了一句:“他教我们如何思考机器能否思考,却没来得及看见,后来的世界里,每个人口袋里都揣着一台‘图灵机’。”这不是什么了不起的话,但写的时候,眼眶确实热了一下。

克劳德·艾尔伍德·香农,是另一个让我觉得“上帝在发笑”的天才。

他是信息论的创始人,定义了比特,给出了信息熵的公式。他还爱好杂耍、骑独轮车、设计自动下棋机。他的硕士论文就把布尔代数应用到了开关电路上——这个工作直接奠定了数字电路的理论基础。

写香农的时候,我很想传达一种感觉:这个人似乎从不觉得世界是严肃的。他对待学术问题有一种游戏的姿态,把深奥的数学和好玩的发明混在一起。他晚年患了阿尔茨海默症,但据家人说,他从来没有显得痛苦——他只是慢慢地、温柔地,把对这个世界的记忆一件件放下了。

香农让我想到一个问题:天才一定是痛苦的吗?至少香农提供了一个反例。他可以极其严肃地研究问题,同时极其不严肃地对待生活。这种松弛感,也许正是他创造力源源不断的原因之一。


卷四:达特茅斯与之后

1956年的夏天,达特茅斯学院。

那是一个改变历史的会议。麦卡锡、明斯基、香农、罗切斯特等人聚在一起,讨论了一个当时还不太有名字的领域。麦卡锡给它取了个名字,叫“人工智能”。

关于那次会议,我在写约翰·麦卡锡的文案时做了比较详细的描述。但在这个阶段性回望里,我想更多地说一说那种氛围。

那是一个乐观的时代。电子计算机刚刚诞生,图灵机理论已经成熟,控制论提供了新的视角,信息论给出了度的量。一群年轻人觉得,只要给机器足够的能力,它就能做到人类能做的任何事情——也许用不了几年。

这种乐观后来被证明是过度了。达特茅斯会议后的十几年里,人工智能确实取得了不少进展,但很快就撞上了第一堵墙——很多看似简单的问题(比如让机器理解一个三岁孩子都能懂的故事)比想象中难得多。但这不妨碍那次会议的历史意义。它宣告了一个领域的正式诞生,确立了一个共同的目标,把不同背景的人——逻辑学家、数学家、工程师、心理学家——聚集在了同一面旗帜下。

麦卡锡是那次会议的主要推动者。他后来发明了Lisp语言(这是AI领域最古老也最优雅的编程语言之一),提出了分时系统,创建了斯坦福人工智能实验室。他是一个内向的、不善言辞的人,做起报告来声音很平,缺乏抑扬顿挫。但他的想法是清晰的、坚定的。他始终坚持符号主义——他认为智能的本质是符号操作,只要给机器足够的逻辑规则和知识表示,它就能推理出一切。

这个信念后来受到了神经网络的强烈挑战,但麦卡锡到晚年都没有改变立场。他不是固执,而是觉得符号主义这条路还没有走到头。这种在潮流面前不被裹挟的定力,是值得尊敬的。

艾伦·纽厄尔赫伯特·亚历山大·西蒙,是我放在一起写的一对搭档。

纽厄尔是兰德公司的研究者,西蒙是卡内基梅隆大学的教授(他得过诺贝尔经济学奖,但他说自己真正的身份是认知心理学家和人工智能研究者)。他们合作开发了“逻辑理论家”——一个能证明罗素《数学原理》中定理的程序;后来又开发了“通用问题求解器”——一个试图模拟人类解决问题通用策略的系统。

写西蒙的时候,我翻阅了他大量的访谈资料。他说话很快,思维跳跃,从一个领域跳到另一个领域,好像所有知识在他脑子里都是连通的。他相信符号主义,相信人类的智能可以用物理符号系统来解释。这种信念贯穿了他的一生。

1960年代,西蒙和纽厄尔做出了很多令人兴奋的成果,但到了1970年代,符号主义遇到了瓶颈,神经网络一度被边缘化。西蒙把注意力转向了认知科学和经济学,但他始终没有放弃对智能本质的追问。他活到了八十五岁,直到生命的最后几天还在写论文、参加会议。这种“终身学习”的态度,本身就是智能的一种体现。

马文·明斯基是那个时代的另一个核心人物。他是麦卡锡在麻省理工学院的合作伙伴(尽管两人的关系后来变得微妙),是人工神经网络的早期倡导者,也是它的早期批评者。

明斯基和佩珀特合著的《感知机》一书,对罗森布拉特的感知机做了数学上的分析,指出了它的局限性。这本书的影响很大——在它出版后的十几年里,神经网络研究陷入了所谓的“寒冬”,很多研究者转向了符号主义或其他方向。

我写明斯基的时候,没有把他写成“反派”。事实上,他的批评是基于严格的数学分析的,不是情绪化的否定。他对神经网络局限性的判断在当时是正确的(后来的突破来自于对那个局限性的克服——多层网络和反向传播)。而且,明斯基本人后来也没有彻底否定联结主义,他只是认为它需要和符号主义结合。

明斯基还写过《心智社会》,提出了一个有趣的观点:智能不是来自一个中央控制器,而是来自大量相对简单的“智能体”的互动。这个观点和后来的多智能体系统、甚至和深度学习中的注意力机制都有某种呼应。他是一个一直在思考、一直在修正自己观点的人。这种人,很难用简单的“支持”或“反对”来归类。

弗兰克·罗森布拉特的故事,是我写过的最伤感的一篇。

他是感知机的发明者。1960年代,他设计的感知机——一种模拟神经元的简单网络——引起了巨大轰动。《纽约时报》报道说,“电子大脑学会了识别图像”。军方投了大量资金,大众媒体把他捧成了明星。

但好景不长。明斯基和佩珀特的《感知机》指出了单层感知机的数学局限性。罗森布拉特当然知道这些局限性,他认为多层感知机可以克服,但问题在于当时没有有效的算法来训练多层网络。而且,批评的声音来得太快太猛,资金开始撤离,舆论开始反转。

罗森布拉特四十三岁那年,在一次帆船事故中溺水身亡。有人说他是自杀,但这从未被证实。我写那篇文案的时候,特意去查了很多当年的报道和后来的传记,想拼凑出那个最后的画面:一个人在湖上,船翻了,他没有游向岸边。不知道是体力不支,还是别的什么原因。

但不管怎样,一个四十三岁的生命就这样终止了。如果他活得更久,看到1980年代反向传播的复兴、看到2010年代深度学习的爆发,不知道会是什么样的表情。也许会笑一下,说:“我就说吧。”


卷五:寒冬里的火光

1970年代到1980年代,是人工智能的“寒冬”。

词汇本身带着寒意。媒体不再报道了,政府不再砸钱了,很多研究者转了行,留下来的人也活得不太好。但我写这个时期的几个人物时,反而有一种别样的感受——寒冬不一定是坏事。它逼退了那些跟风的人,留下了那些真正热爱这件事的人。

杰弗里·埃弗里斯特·辛顿,是我写过的最有“坚守感”的人物之一。

他是英国人,来自一个显赫的家族——曾祖父是数学家和逻辑学家,叔叔是核物理学家,堂姐是物理学家。但他走了另一条路:神经网络。这条路在1980年代几乎是一条死路——没有数据,没有算力,没有同行支持,发表论文都很难。

辛顿告诉我的一件事是:真正的信念是不需要路人掌声的。他带着几个研究生,在多伦多大学的一间小办公室里,日复一日地推导公式、写代码、跑实验。他们没有GPU,用的是最普通的电脑;没有ImageNet那样的大规模数据集,只能自己造一些简单的例子。但他们在做一件很重要的事:让多层神经网络可以训练。

1986年,辛顿和鲁梅尔哈特、威廉姆斯一起发表了一篇论文,重新推广了反向传播算法。这个算法其实不是他们发明的,但他们让它变得可用、广为人知。反向传播解决了多层神经网络的训练问题,是后来深度学习爆发的数学基础之一。

我写辛顿时,特别想传达一种“长跑者”的感觉。他不是最快的,不是最炫的,但他是最持久的。当别人都退出赛道的时候,他还在跑。到了2012年,他和他的学生用深度学习在ImageNet比赛上碾压了所有传统方法,那一年被视为“深度学习元年”——距离他入行,已经过去了将近三十年。

三十年,一个人的大半辈子。

约翰·亨利·霍兰德,可能不算是AI核心圈的人物,但他很重要。他是遗传算法的发明者,也是复杂适应系统理论的奠基人之一。

霍兰德的想法很简单:自然界的进化是一种聪明的搜索机制。你不需要事先知道“最优解”是什么,只要有一个评价标准(适应度函数),然后让候选解之间互相“交配”、随机“变异”,经过很多代之后,优秀的解就会自然涌现出来。

这个想法在人工智能领域产生了深远影响。它告诉我们:智能不一定是逻辑推理,也不一定是神经计算,它还可以是进化的过程。霍兰德晚年的时候,他的学生和追随者很多,但他本人一直保持着一种朴素的学者风度,很少出现在聚光灯下,只是安静地写着书、带学生、推公式。

大卫·马尔,是另一个让我觉得遗憾的人物。

他是英国神经科学家,在剑桥和麻省理工工作。他把视觉理解为一个信息处理的过程,提出了视觉计算的三个层次:计算理论、算法、实现。这个框架影响了后来整个计算机视觉领域。

但马尔只活了三十五岁,白血病。他在生命的最后几年,已经知道自己时日无多,但还在疯狂地写书、做研究,好像想把自己脑子里所有东西都留在纸上。他的《视觉》一书是在他去世后出版的,至今仍是计算机视觉领域的经典。

我写马尔的时候,一直在想一个问题:如果我们知道自己的时间有限,会怎么选择?马尔的选择是:把全部的生命压进一个方向,压成一本薄薄的书,然后离开。这种“向死而生的创造力”,让我在写那篇文案的时候,手是颤抖的。

朱迪亚·珀尔,是我写的过程中思考最久的一位。

他是犹太人,出生在以色列,在以色列理工学院读工程,后来去了美国,成了计算机科学教授。他早期研究启发式搜索,搞了A*算法之类的——这些都是人工智能教科书里的经典内容。但他最重要的贡献是之后的事:贝叶斯网络和因果推理。

贝叶斯网络是一种用图来表示概率关系的框架。它让机器能够在不确定的条件下进行推理——比如,你发烧了,可能是流感,也可能是肺炎,贝叶斯网络可以帮你计算各种可能性的大小。

但珀尔不满足于“相关性”。他想让机器学会“因果性”——不仅仅是“A和B经常一起出现”,而是“A导致了B”。这是一个质的飞跃,因为因果关系是科学思维的核心,也是人类智能区别于统计模式识别的地方。

珀尔后来写了一本书叫《因果论》,系统性地提出了因果推理的数学框架。我写那篇文案的时候,专门花时间读了他的一些论文和采访。他是一个说话直接、不绕弯子的人,对当下深度学习只关注相关性不关注因果性颇有微词。但这不是嫉妒,而是老一辈学者对学科方向的真诚关切。


卷六:深度学习时代

从辛顿的坚持,到杨立昆和本吉奥的加入,深度学习终于从边缘走到了中心。

杨立昆是法国人,在巴黎读博期间就开始了卷积神经网络的研究。LeNet是他早期的工作,用于手写数字识别。这个网络的结构——卷积层、池化层、全连接层——至今仍是计算机视觉的标配。

我写杨立昆的时候,花了很多笔墨在他的求学经历上。他读博的时候,神经网络几乎是学术界的“禁忌”,导师也不太支持。但他觉得这个东西太有意思了,放弃不了。他和几个志同道合的朋友,在巴黎一个偏僻的研究所里,用极其有限的资源做着实验。

这种“边缘状态”下的坚持,和辛顿在加拿大的情况如出一辙。有时候我想,也许创新的本质就是这样:它最开始总是出现在主流之外,被权威忽视甚至打压,然后靠一群“不合时宜”的人,一点一点地把它推成主流。

约书亚·本吉奥,作为“深度学习三巨头”中的第三位,他的贡献同样巨大。他专注于深度生成模型和表示学习,提出了很多重要的思想。他也是一个很开放的研究者,培养了一大批优秀的后辈,形成了蒙特利尔学派的深厚根基。

我写本吉奥的时候,最打动我的是他的性格。他是一个非常温和、善于倾听的人。在学术会议上,他不会像有些人那样咄咄逼人地推销自己的观点,而是耐心地听完别人的发言,然后给出建设性的评论。这种学术风度,让我觉得他不只是一个人工智能研究者,更是一个“学术氛围的塑造者”。

福岛邦彦,是日本学者中我特别想写好的一位。

他在1979年提出了Neocognitron——一个模拟哺乳动物视觉皮层结构的多层神经网络。这个模型已经包含了卷积、池化、层次化特征提取的思想,比杨立昆的LeNet早了将近十年。

为什么福岛的工作没有像后来的深度学习那样引爆整个领域?原因很多:算力不够、数据不够、反向传播没有很好地结合进来、论文主要发表在日语期刊上。但历史就是这样的——不是你做得早,就一定能被记住。不过,我们在回望时,不应该忘记那些“早于时代”的人。

福岛后来一直在大阪大学做研究,为人谦逊,不太争名利。我写他的时候,特意提到他在实验室里那种专注的状态:不关注外界的喧嚣,只是安静地搭建模型、观察结果、一点点改进。这种“工匠式”的研究风格,在如今节奏越来越快的学术圈里,显得尤为珍贵。

甘利俊一,是另一位日本的学术长者。

他是数学家,对神经网络理论的贡献非常深厚。他在1970年代就提出了随机梯度下降的数学基础,后来又在信息几何方面做了大量工作。信息几何是一个看起来很抽象、但实际上对理解深度学习内部机制很有用的理论工具。

甘利是一个讲话慢条斯理、每个词都经过斟酌的人。他说自己最喜欢的不是做最热门的研究,而是把一件事情从数学上彻底搞清楚。这种对“透彻性”的追求,在今天这个“先跑个实验再说”的时代,显得有些老派,但恰恰是这种老派,构成了学问的根基。

雷·索洛莫诺夫,可能很多人没听说过。

他是苏联数学家,早在1960年代就提出了“无限贝叶斯”和“算法概率论”的思想,和柯尔莫戈洛夫、蔡廷一起被称为“算法信息论”的奠基人。但他的工作长期被西方世界忽视,因为冷战,因为语言隔阂,也因为他本人的性格不太善于推销自己。

我写索洛莫诺夫的时候,有一种很强烈的感受:知识的版图是有盲区的。那些在铁幕另一侧做出卓越贡献的人,因为种种非学术的原因,没有被写入主流叙事。这是不公平的。我在这个系列里写下他,就是为了稍微纠正一下这种不平衡。虽然一篇文章的力量很微小,但至少,他应该在“AI发展史”的星空里,有一颗属于自己的星星。

杨立昆、本吉奥、辛顿的“三巨头”故事,大家在很多地方都读过了。但我在我自己的文案里,试图呈现的是一个更私人化的版本。不是“谁打败了谁”,而是“三个人,三条路,从不同的起点出发,最终在同一个终点相遇”。他们之间有合作,有竞争,有分歧,也有相互尊重。这种复杂的关系,让人工智能的历史更加丰满。

李飞飞是这条脉络上的一个重要节点。

她是斯坦福大学的教授,ImageNet的创建者。ImageNet是一个包含1500万张标注图片的数据集,覆盖了22000个类别。在李飞飞创建ImageNet之前,计算机视觉的研究者大多用的是几十个类别、几百张图片的小数据集。大家没有意识到——或者说意识到了但没有能力去解决——数据量的瓶颈。

李飞飞看准了这一点。她花了两年多的时间,带着一群研究生和本科生,通过亚马逊的众包平台,一张一张地标注图片。那个时候,很多人觉得她疯了。花这么大精力做数据集,值得吗?论文怎么发?经费怎么申请?

但她坚持下来了。2012年,辛顿的学生用深度学习在ImageNet比赛中取得了突破性的成绩。那一年,整个计算机视觉领域都意识到了一件事:深度学习+大数据=范式革命。

我写李飞飞的时候,特别想写出她作为女性在学术界的经历。她来自中国,十几岁移民到美国,家里条件不好,在普林斯顿读书时还要去洗衣店打工。这条路不容易。但她没有因为不容易就选择容易的事。她选了最难的那条路——建数据集,然后等风来。风终于来了。

她的故事让我相信:有时候,伟大的贡献不在于提出一个炫酷的理论,而在于做一件“笨”但必要的事情。

大卫·鲁梅尔哈特、奥利弗·塞尔弗里奇、纳撒尼尔·罗切斯特、大卫·布莱克威尔、莱昂纳多·托雷斯·奎维多——这几个人物,我放在一起说。

鲁梅尔哈特是联结主义心理学的重要人物,他和辛顿一起推动了反向传播的复兴。塞尔弗里奇提出了“鬼蜮模型”——一个早期模式识别的框架,用许多“小鬼”在不同层次上做特征检测。罗切斯特是IBM的研究者,参与了达特茅斯会议的组织工作。布莱克威尔是统计学家,对贝叶斯方法和强化学习有重要贡献。托雷斯·奎维多是西班牙的自动化先驱,在二十世纪早期就尝试制造自动决策装置。

这些名字不如图灵、冯·诺依曼那么响亮,但AI史不是只有明星。它是无数人前赴后继的结果。有的人做出了关键突破,有的人铺了路,有的人填了坑,有的人写了一篇只有十几个引用但方向完全正确的论文。所有这些人都值得被记住。

我写他们的时候,会用更多的笔墨去描摹“日常感”——他们不是在神坛上,他们是在实验室里、在黑板上、在咖啡馆里。他们的疲惫、沮丧、兴奋、失望,和任何一个研究者没有本质区别。AI发展史,说到底,是人心的历史。

吴文俊、张钹、黄煦涛、傅京孙——这几位华人学者,我在系列里专门写了。

吴文俊先生是数学大师,他在拓扑学上有“吴公式”传世,晚年转向机器证明,提出了“吴方法”。他让我看到,中国学者在人工智能的早期就有世界级的贡献。他不是跟在西方后面跑,而是走出了自己的路。

张钹院士是国内人工智能领域的开拓者之一。他在清华大学创建了人工智能实验室,培养了几代人。我写他的时候,查了很多清华的历史资料,了解到他在1950年代从苏联留学回来,那时计算机还很稀罕,他就已经开始思考“人工大脑”的问题了。他的学术视野很开阔,不局限于某一个学派,而是兼容符号主义、联结主义、行为主义。这种“兼收并蓄”的态度,在当时的国内是难得的。

黄煦涛是模式识别领域的大家。他在美国伊利诺伊大学香槟分校工作了多年,带出了一大批华人学者。傅京孙是普渡大学的教授,在模式识别和机器智能方面做了大量工作。他们是华人学者在国际人工智能舞台上发光的第一代。

我写这些华人学者,不是因为民族情感,而是因为他们的故事本身就值得讲。他们经历的困难——语言、文化、资源不足、身份认同——比那些在英美主流学术圈里的人要多得多。但他们依然做出了世界级的工作。这种“在逆境中保持专注”的能力,本身就是一种深刻的智能。


尾声:未完成的故事

写到这里,字已经很多了,但我知道,遗漏的还有更多。

这不是一个完整的“AI发展史”——没有任何一个人能写出完整的版本。历史太丰富,视角太多元,每一个叙事者都有自己的局限和偏见。我唯一能保证的是,我认真写下了每一个人的故事,尽量理解他们的处境,尽量感受他们的温度。

回首这个系列的起点,从亚里士多德开始,我像是在一条很长的河边行走,每隔一段距离就遇到一个人。他们彼此之间大多数素未谋面,但他们的思想被纸张、被代码、被电路传递了下来。一个想法在笛卡尔的头脑中形成,经过莱布尼茨的加工,在布尔那里变成代数,被香农接入电路,在图灵那里成为理论,由冯·诺依曼实现为机器,再由辛顿、杨立昆、本吉奥们推向智能的深处。

这本身就是一个“神经网络”:每个人是一个节点,思想是节点间的信号,那些信号穿越了时间,跨越了地理,经历了战争的打断、寒冬的冷却、舆论的嘲讽,但最终还是传了过来,激活了下一个节点。

这个系列,我选择了“温柔”作为基调。

不是因为我故意回避了那些残忍的部分——哥德尔的晚年、图灵的悲剧、罗森布拉特的猝逝、无数研究者被边缘化和遗忘——而是因为我在这些故事的底处,看到的不是绝望,而是一种“明知不可为而为之”的温柔。亚里士多德可以在逻辑学上止步,他没有,他往前多走了一步。鲁尔可以不去想象“思考的机器”,他想象了,还造了一个转盘。阿达可以只翻译那篇论文,她写了注释,那些注释比原文还精彩。

这些人在各自的困顿里,选择了前行一小步。每一步都不大,但两千多年下来,我们从一个简单的追问走到了今天——一个普通人可以和手机对话、机器可以翻译上百种语言、算法可以识别癌症的世界。

这个世界不完美,有很多问题——伦理的、隐私的、就业的、权力的。但这不正是我们继续前行、继续书写的理由吗?

写下这些文字,我最大的感受不是“完成了”,而是“还在路上”。

窗外,天快亮了。

这个系列还会有下一期。因为AI的故事没有终章。下一个值得书写的人,也许正在此刻的某个实验室里,默默调试着代码,还不知道自己即将改变世界。也许那个“下一个人”,就是正在读这段文字的某位年轻研究者、学生或爱好者。

我不知道未来会怎样。但我相信,只要还有人仰望星空,还有人提出问题,还有人愿意在安静的灯下写下那些被遗忘的名字——这条星光之路就不会断。

感谢你陪我走过这一程。

不是“走完”,是“走过”。我们还会继续走下去。

晚安,愿思考永远自由。


02. 我的思考与感受

写了这么多人的故事,一个念头越来越强烈地浮现出来:我们真的在“创造”智能吗?还是只是在“发现”它?

每次写完一篇文稿,合上资料,我会在椅子上坐一会儿,什么也不做。窗外的天色从亮变暗,或者从暗变亮,我常常分不清是清晨还是黄昏。那些人物的面孔在脑海里一一闪过——亚里士多德在吕克昂学园的廊柱下散步,阿达在深夜的书桌前写下注释,图灵在布莱切利庄园的院子里推着自行车,辛顿在多伦多那间狭小的办公室里盯着屏幕。他们在不同的时空里做着同一件事:追问。

但他们的追问,从来没有真正被“回答”。亚里士多德没有告诉我们智能是什么,他只是给出了一个框架。图灵没有“解决”机器能不能思考的问题,他只是把它变成了一个可以讨论的问题。辛顿没有“完成”神经网络,他只是把它从废墟里捡起来,擦干净,交给下一代人。

这就是我的第一个感受:人工智能不是一个被“发明”出来的东西,它是一个被“一点点瞥见”的东西。每一次突破,都像是一个人站在悬崖边,努力向迷雾中张望,然后回来告诉我们:“那边有一点光。”他不确定那是不是真的光,也不确定走过去的路在哪里,但他说了。然后下一个人接着望,接着走。

这个过程里没有终点。我们总觉得“真正的智能”就在下一个转角,再给十年就够了。1950年代的人这么想,1980年代的人这么想,2020年代的我们也这么想。但那个转角永远在前面,我们永远在路上。这听起来有点沮丧,但我不这么觉得。恰恰是这种“永远在路上”的状态,让这件事有了持久的魅力——如果你真的走到了终点,那还有什么意思呢?

我的第二个感受,是关于“人”的脆弱与坚韧之间的矛盾。

我写的这些人,大多数都不是世俗意义上的“幸运儿”。有的被时代忽视,有的被同行打压,有的被疾病缠身,有的被偏见摧毁。哥德尔饿死了自己,图灵咬下了毒苹果,罗森布拉特消失在湖水中,马尔三十五岁就离开了。那些活到老年的,也往往经历了漫长的寒冬——辛顿等了三十年才看到自己的方向成为主流,珀尔的因果推理至今还没有得到应有的重视。

但你从他们的生命里看到的,不是苦难,而是某种近乎固执的温柔。维特根斯坦在病床上说“告诉他们,我过了很棒的一生”——这不是谎言,这是真正的释然。冯·诺依曼在临终前还在计算数学问题——这不是逃避,这是用自己的方式与世界告别。阿达只活了三十六岁,但她留下的注释里没有哀叹,只有对未来的清澈预见。

这让我觉得,也许所谓的“智能”,不仅仅是一个技术问题。它和勇气有关,和耐心有关,和面对失败时的姿态有关。一个算法可以很聪明,但一个“人”在面对不确定的未来时仍然选择前行——这种品质,机器学得会吗?我不知道。但我知道,这正是我写下这些故事的原因之一。

第三个感受,是关于“被遗忘”这件事。

写这个系列的过程,很大程度上是一个“打捞”的过程。那些闪闪发光的名字——图灵、冯·诺依曼、香农——不需要我写,他们已经是恒星了。但还有很多人,在大众叙事里几乎没有出现。赖蒙·鲁尔,十三世纪的马略卡岛僧侣,他的转盘几乎被历史淹没。托雷斯·奎维多,二十世纪初的西班牙工程师,他设计了最早的自动决策装置,但很少有人知道。福岛邦彦,他的Neocognitron比LeNet早了将近十年,但提起卷积神经网络,大家只记得杨立昆。

我写下他们,不是为了和主流叙事对抗,而是因为我渐渐意识到:历史不是一条直线,而是一片森林。我们走的那条路,只是无数可能路径中的一条。那些没有被走成“主流”的路,并不是错的,它们只是——岔开了。但岔开不意味着消失。那些“岔路”上的思考,也许在未来某一天会被重新发现,成为新的主流。

所以,我写他们,是给自己一个提醒:不要以为现在看到的“历史”就是全部。还有很多人在黑暗中摸索过,留下了一些笔记、一些图纸、一些代码,等着后来者去看见。

第四个感受,是关于“我”的位置。

写这个系列之前,我是一个普通的算法研究人员,对人工智能有一些兴趣,但远谈不上十分专业。写到现在,我依然不是专家。我的文案中没有写深度学习框架,没有推导反向传播公式,没有从头实现一个Transformer。我没有做那些专业的事情,但我在做另一件我觉得更重要的事:翻译。

把那些艰深的、学术的、被专业术语包裹的思想,翻译成普通人能读懂的语言。把那些被教科书压缩成“某某年,某某人提出了某某理论”的干瘪条目,还原成活生生的、有温度的人。把那些被遗忘的名字从时间的灰尘里捡起来,擦干净,放在灯下。

这不是为了“科普”而科普。而是因为我相信,思想的光芒不应该被术语的高墙挡住。一个不懂微积分的人,也应该能感受到莱布尼茨那种“万物皆可算”的激动。一个不会编程的人,也应该能理解阿达那个“机器不仅能算数,还能作曲”的直觉。一个从来没写过一行Python代码的人,也应该能在图灵的故事里,感受到一个人对世界最深沉的爱。

这是我给自己的定位:一个讲故事的人,一个翻译者,一个在深夜里安静写字的人。

03. 本期提问

在你读过的这51个人物的故事里,有没有哪一个人——不是最著名的那个,而是最让你心里动了一下的那个——他的困境、他的坚持、或者他面对失败时的姿态,让你在某个深夜突然觉得:“原来我们此刻面对的问题,他早就面对过了”?
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-06 10:27:56 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/905613.html
  2. 运行时间 : 0.082981s [ 吞吐率:12.05req/s ] 内存消耗:4,748.20kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=cf3a08db0f28b427f41b8c8ac00edd9b
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.11 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000709s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000834s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000367s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000265s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000467s ]
  6. SELECT * FROM `set` [ RunTime:0.000208s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000523s ]
  8. SELECT * FROM `article` WHERE `id` = 905613 LIMIT 1 [ RunTime:0.000487s ]
  9. UPDATE `article` SET `lasttime` = 1785983276 WHERE `id` = 905613 [ RunTime:0.007604s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000236s ]
  11. SELECT * FROM `article` WHERE `id` < 905613 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000446s ]
  12. SELECT * FROM `article` WHERE `id` > 905613 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000432s ]
  13. SELECT * FROM `article` WHERE `id` < 905613 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000665s ]
  14. SELECT * FROM `article` WHERE `id` < 905613 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002201s ]
  15. SELECT * FROM `article` WHERE `id` < 905613 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001669s ]
0.084603s