我和刘新宇认识快10 年了。2007 年的时候我在诺基亚工作,和他所在的公司有技术项目合作,每隔几周都要一起开会,所以渐渐混熟了。那时他的职位是项目经理,虽然做着管理的工作,但是我感觉他的技术水平比大多数工程师都要好。 有一次工作上的原因,我和他一起去匈牙利出差,在飞机上我在看小说,而他拿出一本英文数学书看了一路。他说数学和编程是他的兴趣爱好,每年他都会尝试学习一门编程语言,或者了解一个新的数学领域。 不同的人有不同的追求,当我们大多数人为了房子车子,为了升职加薪而加班忙碌时,刘新宇却把6 年的业余时间用在了写作上,而且是写一本免费的书。这本书最初的版本是用英文写的,中文版是后来翻译的。 我在大学学计算机编程的时候,看的是严蔚敏老师的《数据结构》,当时书里都是Pascal伪代码,老实说我没能坚持看完。 如今,编程语言相比二十多年前极大丰富了,而且产生了很多种编程范式。《算法新解》的一大特色就是提供了多种编程语言的算法实现代码,并且充分利用了各种语言特性。某些算法用函数式编程语言实现会特别简洁,比如用Haskell 实现的快速排序只有几行代码。 现在,软件开发行业的分工已经非常细了,有人专门负责编写算法提供封装好的库,也许绝大多数程序员很少需要自己实现某些算法。我们学习算法和数据结构,不一定就要实际去编写算法代码,也可以当作一种了解程序底层运作的方式,而这有助于更好地解决问题和优化程序。 阅读算法书是会有点枯燥的,先通过阅读对算法原理有个基本的概念,然后读者可以把它当作手边的参考书,在实际遇到相关问题时拿出来仔细阅读,结合实际场景可以有更深刻的理解。 这本书是按照教材的风格编写的,由浅入深,每个算法从实际应用场景出发,阐述数学原理,再给出伪代码,并且提供实际可以运行的实现。最后,作者还给出了供课后思考练习的习题。我希望这本书有机会成为计算机教学中的基础教材之一。 这本书采用了一种新颖的发布方式,它像一个开源软件项目一样,作者像管理源代码一样管理书的内容,允许读者参与其中贡献思路代码,帮助修改错误,以及在其整个生命周期里持续改进。 在软件和互联网高速发展的这些年里,我们程序员不断开发功能满足需求,但我们也应该为纯技术保留一份好奇、一份执着,刘新宇多年的坚持着实令我感动。虽然算法都是冷冰冰的符号公式,但是从书里的文字、插图和代码里,我们可以感受到作者的技术情怀。 ——姚冬,YY 直播架构师