读书笔记 · 2020年 5月 6日

《UNIX编程艺术》

提供策略而不是机制

Unix引入了带目录节点的树形文件名字空间已经用于程序间通信的管道机制

Rob Pike的unix哲学 别胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在 尽量使用简单的算法配合简单的数据结构:拿不准就穷举 编程的核心是数据结构,而不是算法

Brian Kernighan:计算机编程的本质就是控制复杂度

“一切皆文件”模型以及在此基础上建立的管道概念

协作式多任务 vs抢占式多任务 (主动 vs 被动)

MacOS文件分:“数据分支”(文档和程序) 和 “资源分支”

200-400逻辑行代码是最佳点,与语言无关

Brook定律 对一个已经延期的项目,增加程序员只会使该项目更加延期。更一般地,这个定律预言:项目成本和错误率按程序员人数的平方增长。

正交性:重构的原则性目标就是提高正交性。

全局变量对模块化是毒药:java中的static

序列化有时也称作列集(marshaling),反向操作也叫做散集(unmarshaling)

SPOT原则 (Single Point of Truth): 避免重复

《网络风格的元素》(the elements of networking style) 一书的作者在另一个略有不同的背景下说的:“如果你知道自己在做什么,三层就够了;但如果你不知道自己在做什么,十七层也没用。”

全局变量对模块化是毒药,很容易使各模块轻率、混乱地相互泄露信息。

当你很想设计一个复杂的二进制文件格式,或一个复杂的二进制应用协议时,通常明智的做法是躺下来等待这种感觉过去。

UNIX文本文件格式:\nnn或\onnn或\0nnn表示八进制值为nnn的字符,\xnn表示十六进制值为nn的字符, \dnnn表示十进制,\unnn表示十六进制的unicode字面值

不要过分区别tab和whitespace