知乎/回答
2 分钟

你的启蒙算法是什么?

作者

创建于

发布于知乎/回答

提问的原意是“打通任督二脉”,我也分享一下我的经历,但并不是某个算法,可能有些跑题。

我在初高中的时候学习过一些 Pascal 编程,主要是为了参加 NOIP 竞赛。那时候对于编程的理解非常局限于函数的实现,觉得能够实现复杂的深搜广搜和动态规划就是很厉害的人了,各种能把 N^2 降低到 N*Log(N) 的奇淫技巧都好厉害,练习 KMP 这样的字符串匹配算法也是家常便饭。对于编程高手的理解非常局限于“快速而正确地实现常用的函数”。

本科的专业是计算机软件,大一的某课大作业是用 C# 在老师提供的 API 上完成一个局域网聊天室。这是我第一次接触工程类的项目,第一次使用 Visual Studio 配置复杂的编程环境。助教在作业的过程中带我们手把手打开了MSDN,带我们查看了字符串处理的各种API,只需要调用函数就能完成 replace,substring,sort。

这对我而言简直颠覆三观,晴天霹雳!原来我并不需要手写 KMP,MSDN 里面啥都有!

API 的出现让我一下子跳脱了那种拘泥于函数实现的局限,让我意识到函数复用所带来的无限可能。原来已经有那么多别人实现的功能,我可以如此轻易地站在别人的肩膀上。而后出现的移动互联网和各种SDK,可以轻易地组合出各种有意思的应用。

意识到 API 的存在,算是我“打通任督二脉”的时刻吧。对我而言,使用工具去解决问题的快乐,大于打造工具本身。