复合数据 在实际的程序设计中(模拟数学或现实系统), 操作(过程)要应用到的数据往往不是一个单独的基本类型数据, 而是多个基本类型数据复合起来的: 例如分数是由分子和分母确定起来的, 单一的分子和分母都不能称为分数. 而将分子和分母以某种方式复合起来比单独管理分子和分母具有更强的可读性, 减少了编码中的精力消耗; 同时加强分子和分母之间的关系(分子和分母的关系应当强于这两个符号之于别的数据的关系…
第五章 优化程序性能(摘要与注解) 我错了,我明天一定把这一篇补完 我对了,我今天把这一篇补完了 感觉是本书最难理解和应用的一章, 所以得多花点功夫尽可能深入理解了然后写的好一点 影响优化的细节 有些问题导致编译器不敢放开手脚优化, 所以一味依赖编译器优化是不可行的 常见的影响优化的问题(可能在极端情况下, 优化后的程序与优化前的执行结果不同): 内存别名使用(两个指针实际指向同一地址, 看似相…
现代计算机通过每一层都是下一层的缓存的抽象构建出存储器的层次结构, 依据程序的局部性原理巧妙解决了存取信息的速度远小于 CPU 处理速度的问题. 前置知识可看: CSAPP3e第六章(存储器层次结构) | Amiriox’s Storage Cache lab 分为两个部分: 第一部分写一个模拟程序, 模拟缓存的行为; 如果对缓存的原理和行为理解透了难度不高, 主要难点是必须用 C 写 第二部分…
程序设计需要考虑的基本元素 基本的表达形式: 基本的数据表达 与 基本的过程表达 组合的方法: 将基本表达组合起来构成复合的元素, 如 Lisp 的组合式 抽象的方法: 为复合对象命名, 从一个新的抽象层次操作非基本单元 在 lisp (SICP 使用 scheme 方言) 中有如下体现: