《编程珠玑》阅读笔记


本书的开篇主要讲了要具体分析自己的问题,具体化自己所要解决的问题。文中以a,b对话的形式,然后又具体分析其对话来进行观点的表达。比如在听完文中两个人的对话后,可以这样分析:如果主存容量不是严格的限制在1mb,或是1~2mb之间,那么我们就可以一次性将所有数据都加载到主存中。 如果主存容量严格的限制txt在1mb,因此无法一次载入完成排序。那么我们可以将文件分割为两个文件,再分别用bitmap处理。分割策略可以简单地把前一半的数据放到一个文件,后一半的数据放到另一个文件,分别排序后再做归并。也可以把文件中小于某个数的整数放到另一个文件,叫greater.txt.分别排序后,把greater.txt的排序结果加到less.txt的排序结果即可。

文章中形象的给出了例子,也给出了解决的办法和思考方式。这就是逐步的引导我们,要根据具体的问题,具体的分析问题,思考问题,然后找到问题的解决办法,我觉得这使我从中学到的最重要的东西。

第二章是关于算法和数据结构的,一开始提出了三个思考的问题,提并不算难,只要仔细思考就能得出。我觉得其中重要的是,数据决定程序结构。恰当的数据视图实际上决定了程序的结构。我们常常可以通过重新组织内部数据来使程序变得小而美。 发明家悖论:更一般性的问题也许更容易解决。程序员在节省空间方面无计可施时,将自己从代码中解脱出来,退回起点并集中心力研究数据,常常能有奇效。数据的表示形式是程序设计的根本。

下面是退回起点警醒思考的几条原则:

使用数组重新编写重复代码。冗长的相似代码常常课可以使用最简单的数据结构--数组来更好的表述。

封装复杂结构。当需要非常复杂的数据结构时,使用抽象术语进行定义,并将操作表示为类。

尽可能使用高级工机具。超文本,键值对应,电子表格,数据库,编程语言等都是特定问题领域中的强大工具。

从数据得出程序的结构。在动手编写代码之前,优秀的程序员会彻底理解输入,输入和中间数据结构,并围绕这些结构创建程序。

在阅读此书中,我还感觉深有感悟的是程序性能分析方面。因为平常并没有接触这个方面,由于目前水平较低,所以平时还不会思考到程序性能分析方面的事情,目前只是着重于编写出符合要求的软件,并没有深入的去思考程序的性能以及性能的优化。

优化程序的性能有多个方面。目前对于我们来说,最符合最实际的方面是从设计方面去优化性能。1.问题定义。良好的问题定义可以有效减少程序运行时间和程序长度。2.系统结构。将大型系统分解成模块,也许是决定其性能的最重要的单个因素。3.算法和数据结构。4.代码调优。针对代码本身的优化改进。5.系统软件。有时候改变系统所基于的软件比改变系统本身更容易。

优质内容筛选与推荐>>
1、学习进度表(第十一周)
2、关于临界资源访问互斥量的死锁问题
3、高斯背景建模
4、安装进程内钩子程序(鼠标钩子和键盘钩子)
5、【Django 字段和相关参数补充】


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号