zoukankan      html  css  js  c++  java
  • 《编程珠玑》阅读笔记

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Interesting Finds: 2008.10.27~2008.10.29
    Interesting Finds: 2008.11.21~2008.11.25
    Interesting Finds: 2008.11.31
    Interesting Finds: 2008.10.30~2008.10.31
    Interesting Finds: 2008.11.01~2008.11.07
    Interesting Finds: 2008.10.19~2008.10.23
    Interesting Finds: 2008.11.08~2008.11.11
    Interesting Finds: 2008.11.12~2008.11.14
    Interesting Finds: 2008.11.17~2008.11.18
    Interesting Finds: 2008.10.24~10.25
  • 原文地址:https://www.cnblogs.com/tianzeyangblog/p/11048638.html
Copyright © 2011-2022 走看看