Skip to content

第三章 那个工具

第二天早上,林知行是被方小满摇醒的。

“起来起来!”方小满的脸凑得很近,嘴里一股牙膏味,“给你看个好东西!”

林知行眯着眼睛,摸到手机看了一眼时间:八点二十。今天周六,没课。

“干嘛?”他翻了个身,把被子拉过头顶。

“ChatGPT!”方小满一把扯开被子,“你不是说要找工具吗?这就是工具!”

林知行愣了两秒,从被子缝里露出一只眼睛:“什么?”

“昨天热搜那个!”方小满把手机屏幕怼到他眼前,“我试了一晚上,牛逼坏了!你快起来试试!”

屏幕上是一个聊天界面,对话框里写着:“请用通俗的语言解释量子力学。”

下面是一大段回复,用词清晰,逻辑连贯,甚至还有类比。

林知行盯着看了几秒,心里冒出第一个念头:这不就是高级版的搜索引擎吗?

“看完了?”方小满催促,“你快起来,我教你用。”

“我再睡会儿。”

“睡个屁!”方小满直接把他拽了起来,“你昨天不是说要找O(log n)的工具吗?这就是!”

林知行被他拽得坐起来,头发乱糟糟的,眼镜歪在一边。他揉了揉眼睛,接过方小满的手机,又看了一遍那段回复。

确实比搜索引擎好。搜索引擎给的是链接,需要你自己去筛选、阅读、总结。这个直接给你答案,而且是整理好的答案。

但林知行还是不太信。

“这玩意儿能干嘛?”他问。

“啥都能干!”方小满兴奋得像个推销员,“写论文、写代码、做翻译、做计划……我昨晚让它帮我写了一篇市场营销的作业,直接交了!”

“你不怕老师查出来?”

“查个屁,这又不是抄的,是AI生成的,原创!”方小满理直气壮。

林知行没接话。他把手机还给方小满,自己下了床,去卫生间洗漱。

刷牙的时候,他对着镜子想:AI生成的内容,算原创吗?

从版权角度可能算,因为没有直接复制别人的文字。但从学习角度,如果作业的目的是让你掌握知识,那让AI写等于没学。

不过这不重要。重要的是,这个工具到底能做什么。

洗完脸出来,方小满已经把林知行的笔记本电脑打开了,浏览器页面停在一个简洁的界面上。

“来,你试试。”方小满把电脑推到他面前。

林知行坐下,看着屏幕上的输入框。光标在闪,等着他打字。

他想了想,输入了一个问题:

“如何用O(log n)的算法解决人生选择问题?”

然后按了回车。

屏幕上开始出现文字,一行一行往外蹦,速度很快。

“将人生选择问题类比为算法问题,需要先定义输入、输出和约束条件。如果目标是在有限选项中找到最优解,可以考虑使用二分查找的思想:首先,评估所有选项的中间点,判断当前选择是否接近目标;如果不够好,排除一半选项,继续在剩余选项中搜索。这种方法的时间复杂度是O(log n),比穷举的O(2^n)高效得多。”

林知行盯着这段话,手指停在键盘上,没动。

方小满凑过来看:“写的啥?O(log n)?你问它这个?”

林知行没回答。他继续往下看。

“但人生选择问题与传统算法问题有一个关键区别:人生选项的评估标准往往是模糊的、主观的、随时间变化的。因此,直接套用二分查找可能不够。更合适的方法是启发式搜索:定义一个近似的评估函数,快速筛选出几个有潜力的方向,再深入评估。这样可以在O(n)甚至O(log n)的时间内找到一个‘足够好’的解,而不必追求绝对最优。”

林知行的呼吸停了一拍。

启发式搜索。

这正是他昨晚在草稿纸上写的“假设1”。

一个AI工具,用三秒钟的时间,把他苦思冥想了一整晚的思路,清晰地表达了出来。

“怎么样?”方小满问,“牛逼吧?”

林知行还是没说话。他删掉刚才的问题,输入了一个新的:

“假设一个大专计算机专业的学生,想在毕业前找到一份体面的工作,有哪些可能的路径?请列出至少5条,并评估每条路径的难度、时间成本和成功率。”

回车。

文字开始往外蹦。

“路径1:专升本,再考研,进入大厂。难度:高。时间成本:3-5年。成功率:约10%。”

“路径2:考取计算机技术与软件专业资格考试(软考)证书,进入中小企业。难度:中。时间成本:1-2年。成功率:约30%。”

“路径3:自学热门技术(如AI、大数据),做个人项目,通过技术博客或GitHub积累影响力,争取内推机会。难度:中高。时间成本:1-2年。成功率:约20%。”

“路径4:参加编程竞赛或黑客马拉松,获得奖项,吸引企业注意。难度:高。时间成本:6个月-1年。成功率:约5%。”

“路径5:创业,做小型软件项目或外包服务,积累商业经验。难度:极高。时间成本:不确定。成功率:约2%。”

林知行一条一条看完,手指在触摸板上滑动,把页面往上滚,又看了一遍。

这些路径,他自己也想过。但AI用几秒钟的时间,就整理出了一个清晰的框架,每条路径都有难度、时间成本和成功率的评估。

虽然这些数字不一定准确,但至少提供了一个起点。

“你在问它啥?”方小满看得一头雾水,“找工作?”

“嗯。”林知行简短地应了一声。

“你直接问它找工作?”方小满挠了挠头,“这能有用?它又不能帮你投简历。”

林知行没解释。他删掉对话,输入了第三个问题:

“请帮我设计一个课程设计项目,主题是‘基于AI的智能问答系统’,要求使用Python语言,包含前端界面、后端逻辑和数据库。请给出整体架构、技术选型、实现步骤和预计开发时间。”

回车。

这次,AI的回答更长了,分成了几个部分:整体架构、技术选型、实现步骤、预计开发时间。每个部分都有详细的说明,甚至给出了代码示例。

林知行看着屏幕,脑子里在飞速运转。

课程设计。

他们这学期有一门课叫“软件工程实践”,期末要交一个课程设计。大多数同学都是在网上找现成的代码改一改,或者几个人凑一个敷衍了事。

林知行本来也打算这么干。但现在,他有了一个新的想法。

如果他用AI来辅助完成这个课程设计呢?

不是让AI直接生成代码,而是用AI来帮他理清思路、设计架构、选择技术栈、甚至写部分代码。他负责整体把控和核心逻辑,AI负责细节填充和重复劳动。

这不就是他昨晚写的“假设2”吗?

找到一个工具,能帮他快速生成和评估方案,而不是手动一个个试。

“你到底在干嘛?”方小满忍不住了,“神神秘秘的。”

林知行转过头看着他,眼神里有一种方小满没见过的光。

“我在试一个工具。”他说。

“啥工具?”

“一个能降低时间复杂度的工具。”

方小满一脸懵:“啥?”

林知行没再解释。他转回电脑,开始认真地和AI对话。

他不再随便问问题,而是像写算法一样,把课程设计这个大问题拆解成若干子问题:

第一步,明确需求。他输入:“我想做一个智能问答系统,主要功能是用户输入问题,系统返回答案。请帮我列出核心功能和非核心功能。”

第二步,设计架构。他输入:“请根据上述功能,设计一个前后端分离的架构,前端用什么框架,后端用什么框架,数据库用什么。”

第三步,技术选型。他输入:“请比较Flask、Django、FastAPI三个Python后端框架的优缺点,并推荐一个适合这个项目的。”

第四步,实现步骤。他输入:“请给出详细的实现步骤,从环境搭建到功能测试,每一步都要具体。”

每一步,AI都给出了详细的回答。有些回答他觉得不够好,就追问、修改、重新提问。有些回答他觉得很好,就记录下来,准备后续使用。

方小满在旁边看了一会儿,完全看不懂。

“你这是在写代码?”他问。

“不是,我在设计。”

“设计啥?”

“设计一个系统。”

“啥系统?”

“你别管了。”林知行头也不抬,“去帮我带个早饭。”

方小满张了张嘴,想说什么,但最后还是叹了口气,拿起饭卡出去了。

宿舍里安静下来,只剩下键盘敲击的声音。

林知行继续和AI对话。他发现自己越问越顺,越问越快。AI就像一个无所不知的助手,随时准备回答他的任何问题。而他的任务,就是把问题拆解得足够细,细到AI能够理解和回答。

这不就是算法思维吗?

把一个大问题,拆解成若干小问题。每个小问题都足够简单,可以用现有的工具或方法解决。然后,把小问题的解决方案组合起来,就得到了大问题的解决方案。

分治法。

林知行的手指停在键盘上,脑子里闪过这个概念。

分治法的核心思想是:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

时间复杂度通常是O(n log n)。

而他现在做的事情,就是用AI作为工具,实现分治法中的“各个击破”环节。

他负责分割问题,AI负责解决子问题。

他负责整合结果,AI负责提供细节。

人机协作。

林知行深吸一口气,感觉有什么东西在脑子里炸开了。

这不是简单的“用AI写代码”或者“用AI做作业”。这是一种新的工作方式,一种把人类的思维能力和AI的计算能力结合起来的工作方式。

而他的算法思维,恰恰是这种方式的最佳搭档。

因为他天生就会拆解问题。

方小满带了两个包子和一杯豆浆回来,看见林知行还坐在电脑前,眼睛盯着屏幕,手指飞快地敲着键盘。

“你一早上没动?”他把早饭放在桌上。

“嗯。”林知行拿起包子咬了一口,眼睛还盯着屏幕。

“至于吗?”方小满凑过去看,“你在跟AI聊天?”

“不是聊天,是工作。”

“工作?”方小满更困惑了,“你又没工作。”

“课程设计。”林知行指了指屏幕,“我在用AI做课程设计。”

方小满看了看屏幕,上面是一大段密密麻麻的文字和代码片段。

“你让AI帮你写代码?”

“不是让AI写,是我指挥AI写。”林知行纠正他,“我负责设计,AI负责实现。”

“有区别吗?”

“当然有区别。”林知行放下包子,转过身认真地看着方小满,“就像你是老板,我是员工。你负责决定做什么,我负责去做。这能一样吗?”

方小满想了想,好像有点道理。

“那你这个老板,指挥得动AI吗?”

“现在还不太顺,”林知行承认,“但我在学。”

方小满摇了摇头,坐回自己的床铺:“你魔怔了。”

林知行没接话。他转回电脑,继续工作。

一整个白天,他都坐在电脑前,除了上厕所和吃饭,几乎没动过。方小满叫他打球,他不去;叫他打游戏,他不去;叫他出去逛街,他更不去。

“你是不是被AI附体了?”方小满傍晚的时候问。

“我在赶进度。”林知行说。

“啥进度?课程设计还有两个月才交呢!”

“我想早点做完。”

“为什么?”

林知行停下敲键盘的手,想了想,说:“因为我想验证一个想法。”

“啥想法?”

“一个关于时间复杂度的想法。”

方小满彻底放弃了,摇着头出了宿舍,说要去找别的朋友玩。

宿舍里又只剩下林知行一个人。

窗外的天色渐渐暗下来,路灯亮了,食堂的排风扇又开始嗡嗡转。林知行打开台灯,继续工作。

他发现自己越来越顺了。

AI的回答不总是对的,有时候会胡说八道,有时候会给出过时的信息,有时候会理解错他的意思。但他学会了如何提问、如何追问、如何纠正、如何筛选。

这就像调试代码。

代码第一次运行总会报错,但你不能直接放弃。你要看错误信息,定位问题,修改代码,再运行。反复几次,直到代码正确运行。

和AI对话也是一样。

第一次提问可能得不到满意的答案,但你可以追问、修改、重新提问。反复几次,直到得到你想要的结果。

关键是,你要知道你想要什么。

而林知行知道。

他想要的是一个完整的、可运行的、质量不错的课程设计项目。他把大目标拆成小目标,小目标拆成子任务,子任务拆成具体的问题,然后一个个问AI,一个个解决。

十一点的时候,方小满回来了,带着一身烧烤味。

“还没睡?”他看了一眼林知行的电脑屏幕,“你还在搞?”

“快了。”林知行说。

“你到底在搞什么?”方小满凑过去看,“这都是代码?”

“嗯,框架已经搭好了,现在在写细节。”

方小满看不懂代码,但他能看到屏幕上有很多文件夹和文件,看起来像一个真正的项目。

“你一整天就搞了这个?”他问。

“嗯。”

“用AI?”

“嗯。”

方小满沉默了几秒,说:“你牛逼。”

林知行没接话。他还在敲键盘。

方小满洗完澡出来,看见林知行还坐在那里,台灯把他的侧脸照得发亮。他的眼镜反射着屏幕的光,手指在键盘上飞舞,像在弹钢琴。

“你不睡了?”方小满问。

“再等等。”林知行说,“还差一点。”

方小满看了看时间,十二点半。他摇了摇头,爬上床,很快就打起了呼噜。

林知行继续工作。

凌晨一点,两点,三点。

宿舍里安静得只剩下键盘声和方小满的呼噜声。

三点二十分的时候,林知行停下了手。

他盯着屏幕,长长地呼出一口气。

屏幕上,是一个完整的项目文件夹。里面有前端代码、后端代码、数据库脚本、配置文件、README文档,甚至还有一个简单的测试用例。

他点击运行。

几秒钟后,浏览器弹出一个界面。一个简洁的问答系统,输入框里可以输入问题,点击按钮,下方会显示答案。

他试了几个问题,系统都给出了合理的回答。虽然答案的质量参差不齐,但基本功能已经跑通了。

林知行靠在椅背上,摘下眼镜,揉了揉酸涩的眼睛。

他做到了。

用一天的时间,从零开始,搭出了一个课程设计的框架。别人需要两周甚至一个月才能完成的活,他用一天就搞定了。

不是因为他比别人聪明,而是因为他找到了一个对的工具,并且用对了方法。

他把大问题拆成小问题,让AI解决小问题,自己负责整合和把控。这就是分治法,这就是O(n log n)的算法。

而他的算法思维,让他天然适合这种工作方式。

他重新戴上眼镜,看着屏幕上那个简陋但可运行的系统,嘴角忍不住往上翘了一点。

也许,他真的找到了一张正确的地图。

或者,找到了一个能帮他画地图的工具。

他拿起手机,给方小满发了一条消息:“我搞完了。”

发完才想起来方小满就在上铺,而且已经睡死了。

他笑了笑,关掉电脑,关掉台灯,躺在了床上。

黑暗里,他睁着眼睛,脑子里还在转。

但这次,他想的不是“是否存在O(log n)的人生路径”。

而是:这条路,他已经开始走了。