《Unix 编程艺术》 第八章 微型语言
Unix 有个长期传统,即包容小型的、为专门应用领域特质、大量减少程序行数的语言。
《Unix 编程艺术》 第七章 多道程序设计
多道程序设计是设计中的荒蛮之地,几乎没有好的实践方针。许多程序员尽管精于判断如何将代码分解成子过程,然而最终还是编写出单个庞然大物般的单进程程序,而这些程序往往失败在自身的内部复杂度之上。 Unix 设计风格都运用“做单件事并做好” 的方法,强调用定义良好的进程间通信或共享文件来联通小型进程。 尽管将程序划分成协作进程带来了全局复杂度降低的好处,但代价是我们必须更多地关注在进程间传递信息和命...
《Unix 编程艺术》 第六章 透明性
优雅的代码事半功倍:优雅的代码不仅正确,而且显然正确:优雅的代码不仅将算法传达给计算机,同时也把见解和信心传递给阅读代码的人。通过追求代码的优雅,我们能够编写更好的代码。学习编写透明的代码是学习如何编写优雅代码的第一关,很难的一关。
《Unix 编程艺术》 第五章 文本化
序列化(保存)操作有时也称为 列集(marshaling),其反向操作(载入)称为 散集(unmarshaling)。 #文本化的重要性 文本流是非常有用的通用格式,因为人无需专门工具就可以很容易地读写和编辑文本流,这些格式是透明的(或可以设计成透明的)。
《System, Math and Explosions》 摘抄
系统从根本上就是复杂地,因为它不仅仅包含事物的集合,还包含事物的连接关系。而连接关系增长的非常快。
随着系统的发展,理解一切是如何工作的,或者系统是否还仍然有效,变得越来越困难。这会让人感到难以理解、脆弱和不可预测。到那时,系统就正式变成了一坨 *
如果使用得当,上概述的工具可能会非常有效。但数学就是数学。线性地移除系统中的部分,连接会减少得更快。治疗复杂性的症状通常只是重新分配它。简而言之,避免复杂性陷阱的最佳方法就是完全避免复杂性。
随着系统的发展,理解一切是如何工作的,或者系统是否还仍然有效,变得越来越困难。这会让人感到难以理解、脆弱和不可预测。到那时,系统就正式变成了一坨 *
如果使用得当,上概述的工具可能会非常有效。但数学就是数学。线性地移除系统中的部分,连接会减少得更快。治疗复杂性的症状通常只是重新分配它。简而言之,避免复杂性陷阱的最佳方法就是完全避免复杂性。
《Good decision-making is good process》 摘抄
这篇文章提出了“针对一个问题做出决定的结果并不是最重要的,而做出决定的过程,才是决定是否是好决定的标准” 的看法。文章同时给出了一个解决好问题的应该有的过程:通过自己的术语定义问题,使用不同的视角探索解决方案,获取做出决定所需要的信息并尽可能地降低噪声,以及区分决定是早期决定还是晚期决定并以此做出不同策略。
《Unix 编程艺术》第四章 模块化
软件设计有两种方式:一种是设计得极为简洁,没有看得到的缺陷;另一种是设计得极为复杂,有缺陷也看不出来。第一种方式的难度要大得多。
模块化原则在这里展开来说就是:要编写复杂软件又不至于一败涂地的唯一方法,就是用定义清晰的接口把若干简单模块组合起来,如此一来,多数问题只会出现在局部,那么还有希望对局部进行改进或优化,而不至于牵动全身。
模块化原则在这里展开来说就是:要编写复杂软件又不至于一败涂地的唯一方法,就是用定义清晰的接口把若干简单模块组合起来,如此一来,多数问题只会出现在局部,那么还有希望对局部进行改进或优化,而不至于牵动全身。
《Unix 编程艺术》 第三章 对比
阐述了 Unix 作为操作系统的几个统一性理念,包含有对多任务,协作进程,二进制文件,CLI 等内容的思考,也对比了与 MacOS,Windows 等操作系统的差异。
《Unix 编程艺术》 第二章 历史
阐述了 Unix 发展过程中的一些重要事件,大多是事件本身的记录,阅读时没有太多的感触,因此没有做太多的笔记。
《Unix 编程艺术》 第一章 哲学
第一章中,概述了 Unix 哲学的基础以及 Unix 的十六条原则,所有的哲学和原则最核心的就是控制复杂度:KISS(Keep It Simple, Stupid)