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

我在初高中的时候学习过一些 Pascal 编程,主要是为了参加 NOIP 竞赛。那时候对于编程的理解非常局限于函数的实现,觉得能够实现复杂的深搜广搜和动态规划就是很厉害的人了,各种能把 N^2 降低到 N*Log(N) 的奇淫技巧都好厉害,练习 KMP 这样的字符串匹配算法也是家常便饭。对于编程高手的理解非常局限于“快速而正确地实现常用的函数”。
本科的专业是计算机软件,大一的某课大作业是用 C# 在老师提供的 API 上完成一个局域网聊天室。这是我第一次接触工程类的项目,第一次使用 Visual Studio 配置复杂的编程环境。助教在作业的过程中带我们手把手打开了MSDN,带我们查看了字符串处理的各种API,只需要调用函数就能完成 replace,substring,sort。
这对我而言简直颠覆三观,晴天霹雳!原来我并不需要手写 KMP,MSDN 里面啥都有!

API 的出现让我一下子跳脱了那种拘泥于函数实现的局限,让我意识到函数复用所带来的无限可能。原来已经有那么多别人实现的功能,我可以如此轻易地站在别人的肩膀上。而后出现的移动互联网和各种SDK,可以轻易地组合出各种有意思的应用。
意识到 API 的存在,算是我“打通任督二脉”的时刻吧。对我而言,使用工具去解决问题的快乐,大于打造工具本身。
继续阅读
全部内容学习编程可以为自己带来什么?
之前引用过一个笑话: "程序员有个著名的笑话,这么说的:'老公,晚上回来买一个西瓜,如果看到西红柿,就买两个。'晚上,老公买了两个西瓜回来,老婆问为什么,老公说,'因为看到了西红柿。'程序员看到了一定会心一笑,甚至认真的人还会辩解说完全没有什么问题,认为这是对于语言严谨的追求。" 这个笑话说明编程其实改变了我们的思维方...
想成为计算机技术高手,一定要懂汇编吗?
大概在另外一拨人的眼里,成为计算机学科的高手应该是把数学学好,只有把高等数学学好,精通概率、统计、随机过程、抽象代数,熟练掌握各种建模方法,才是计算机科学的王道。再结合各种领域知识,年薪百万轻轻松松。弄点高级算法几十亿被收购瞬间财富自由。 技术只是技术本身,计算机发展了这么多年,无数新技术层出不穷。每个人都靠着自己的专...
学 Java 感觉越学越没劲了,很零散,没有一个支架撑起一个体系,该怎么办?
看样子你该去实习了。。。 不做真实项目找不到弱点呀~
