本章着重谈论一些小事,测试、调试、计时。说是小事其实也是大事,想想自己曾经为调试一个程序而彻夜难眠的经历吧。这里面又有断言大法的叙述,「在测试时使用断言,而在产品发布时把断言关闭的程序员,就像是岸上操练时穿着救生衣,而下海时将救生衣脱下的水手」。在计时部分,作者展现了老练的洞察力,不过缓存溢出这种错误现在可能少见多了。
编程珠玑第二章探讨
这一章给出了三个小问题,都非常有趣且实用,分别用来阐述二分法,递归与抽象,离散化思想。第一个问题可以认为是二分思想的巧妙运用,众所周知通常二分前数据应当是有序的,比如C++中的set或map容器的工作原理,都是维护一棵平衡树;大量常见的数据结构如:平衡二叉树、线段树、二叉堆、堆排序都合理发挥了二分法的威力。第二个问题紧扣主题,有哪些基本操作可以用来解决问题,「看起来很困难的问题也可以有一个简单的、意想不到的答案」。我觉得第二题给出的三个解决方案都很重要,第一个算法是看透了暴力算法的本质,最大限度减少了使用额外空间辅助移动带来的浪费;第二个算法的递归思想很通用也很重要;第三个最为精妙的算法向我们展示了抽象思维的可贵。第三题是一道不错的离散化题目,书中说排序也好,打标识也好都是离散化的体现。所以作者也说:
ASC2014世界大学生超级计算机竞赛
写在ASC2014决赛之前
今天是4月12日。
我从2月16号来到学校,2月17号面试,然后一直要搞到4月27号。足足两个月的时间,这段时间收获的东西不少,需要批判的地方也不少。不敢说自己真的做了多少优化,至少装配计算集群环境以及安装应用和调试参数这些流程都略知一二了。没有学习太多的并行程序做法。我也认清了自己的学习模式,我不喜欢捡碎片的学习法,我比较适合体系式的学习,把一切都串在一起,有好处也有坏处。总之,先上图再说吧: