《枕边算法书》阅读笔记(4)

这本书,一开始觉得很“算法”,而且夹杂着浓烈的作者主观意识。但是越读到后面,越来越觉得,这确实就是一本枕边书,确实就是作者的随笔心得,因此必然会带着作者的主观意识,阅读时好的地方会产生共鸣,不同意作者的地方保持自己的思考,确实也是不错的选择。

继续排序算法,连续为解决同一个问题(集合A是不是集合B的子集),介绍了3种不用的搜索排序算法。三种方法各有优劣,第一个算法在两个集合的元素都比较少时效率非常高,但是一旦元素数量变多效率就会急剧下降。第三个算法速度不会受到太大影响,而且较快,但是牺牲了内存空间。第二个算法平衡了速度和空间,且结合了“排序”和“搜索”。说道这里,作者最后的观点我很同意。有的人拿到需求,立即开始写代码;有的人会先考虑代码性能、扩展性等各方面因素,慢慢着手设计算法。随着时间推移,这两类人在技术上的差距会越来越大。我记得我在大三时,有一段时间每天写可行性分析、需求分析、系统设计等各种文档,每天面对着word,还要设置各种格式,很多同学都已经很厌倦了。甚至有人抱怨“软件工程专业毕业后可能不会写代码,只会写文档了。”这话不知道怎么传到了老师耳朵里,老师讲了这么一句话:“软件工程,不仅仅只包含了编码。你写文档就是在设计蓝图,编码就是是用钢筋水泥板砖,最后铸就了这个项目的高楼大厦。”所以,结合文章的观点,如果一个程序员只会写代码,真的是可悲的码农。只有带着自己的思考去设计,才会有更快的提高。

Soundex算法,挺有趣的,有兴趣的朋友自行研究下吧。

作者讲了梅森素数的起源的故事,中途经过了多次的修改、勘误、后续的补充。联系实际,其实就是越来越多的“if-else”结构,越来越复杂得选择分支,严重影响了程序的简洁性。今天我还在朋友圈看到了有人吐槽看了200多行带着神秘数字的if-else分支。程序员看到了这种影响阅读与修改的代码一定会去“重构”这部分。没错,梅森素数经过了历史的风雨,现在也重构为了一句话:如果p为素数时,2的p次方 - 1也是素数,那么这个素数就被称为梅森素数。

文学编程,讲的是高纳德教授的故事,编程不是单纯的技术工作,而是从美学的角度,是一门艺术。这和我大学入门时老师的观点一致,当时两位老师给我们选用的入门教材书叫《C语言的科学和艺术》,毕业后基本就没有使用过C语言,书中的内容也忘记了很多,但是第一节课,老师介绍这本教材的标题和为什么选择这本书作为教材的原因,那堂第一节C语言课我确实认真听了。编程,创作的即是科学,也是艺术。

你可能感兴趣的:(《枕边算法书》阅读笔记(4))