“我们就是一群代码猴子,上蹿下跳,自以为领略了编程的真谛。可惜当我们抓着几个酸桃子,得意洋洋坐到树枝上,却对自己造成的混乱熟视无睹。那堆“可以运行”的乱麻程序,就在我们的眼皮底下慢慢腐坏。”
——《代码整洁之道》作者 RobertC.Martin,于SD West 2007技术大会
————————————————
真正学懂计算机的人(不只是“编程匠”)都对数学有相当的造诣,既能用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题——而这种思维和手段的最佳演绎就是“算法”。
通俗来说,算法是数学理论和工程实现的杂糅,是一门十分神奇的学问。
算法包罗万象,奇杂无比。单从狭义上面来说,在ACM竞赛中包括的内容就有二十几种之多,其中就以动态规划、搜索、贪心、递归、计算几何(凸包、半平面交、旋转卡壳)、数学(数论、组合、概率、博弈等)、图论(最短路、生成树、强连通分量、网络流等)、数据结构(线段树、并查集、树状数组等)、字符串(KMP、扩展KMP、AC自动机、字典树、后缀数组)为主。可以说,在任何一类中想要达到某种高度,都是非一两年的学习而不得速成的。
而上述仅仅是从狭义上面说的。在广义上面,ACM算法只是算法中的一小部分。还有其他的包括机器算法、人工智能算法、大数据算法等等。可以说,算法才能代表计算机科学。没学过算法,没掌握过算法的程序员,不能说他有能力。用一句话来形容,就是“整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。”
开启自己内功心法的修炼之路。
Gitee/Github同步更新
个人GItee主页:Click to My Gitee
个人Github主页:Click to My Github