XiangXiChen's Blog

A Programmer's Blog

Read <<Linux-and-the-Unix-Philosophy>>

2013-04-23 | Comments

学习中……

读后感
读完该书,我发现了我有NIH综合症,理解了“小即使美”,明白软件系统的发展其实和人类的3个生长阶段差不多。虽然我并不是同意所有的观点,但是从中学到了不少东西,让我更加深入了解软件开发过程。

要点

  • NIH综合症
    看到这个词,让我很惊讶,这不是在说我吗?不可能,他又不认识我。看来得NIH综合症的人不少呀!
    细想一下,NIH综合征确实要不得,首先自己不是绝顶聪明的人,自己做出来的东西很难超越其他人的东西,既然这样,那何必要自己重新做一遍呢!倒不如直接使用已有的东西,从中学习和研究,并且找到改良的地方,来满足自己的需求。直到你有足够的经验,了解前人遇到的困难,能够“取其精华,去其糟粕”,这时候再提出自己的方案,这样不是更好吗。

  • 小即是美
    我很同意这个观点,但是怎么样的大小才算”小”?这个比较难把握。
    小的尺度很难把握,但是我们却可以通过这样的方法来保证我们的程序尽可能小:一个程序只做一件事情,一个功能只做一件事情,一个类只做一件事情,一个函数只做一件事情。

  • 一个程序只做好一件事情
    “一个程序只做好一件事情“应该是”小即是美“的一种具体做法了。很同意这种原则。
  • 尽快建立原型
    尽快建立原型确实好处多多,因为它可以直观的验证你的想法,并且其他人也可以直观的看到你的想法。
    这里有一个问题:是不是所有的程序都能快速的建立原型?如果不可以的话,有什么好办法?
    对于有些比较难的功能(特别是那些前瞻性的,研究性质的功能),想要快速建立原型,有时候是不大可能完成的,面对这样的功能,你只能“慢慢”来了。
  • 人类创造的“三个系统”
    人类的系统设计可以类比人的三个生命阶段:未成年,成年和老年。
  • 可移植性比高性能的优先级更高
    作者提出的观点是:机器的性能越来越高,同时机器的更新换代越越来越快,如果你的程序的移植性很差,那么你的程序将无法存活下来,相反,如果你的程序移植性很高,虽然性能差一些,但是在新的机器中可以袮补你目前的低性能。
  • 采用纯文本文件来存储数据
    这个观点是基于“可移植性优先级更高”的原则提出来的,文本文件的性能会比较差,但是移植性是一级棒的。
  • 充分利用软件的杠杆效应
    该原则说的就是我们应该避免NIH综合症,尽可能的使用已经存在的程序。同时你也应该允许其他人使用你的程序来发挥杠杆效应。
  • 使用shell脚本来提高杠杆效应和可移植性
  • 避免强制性的用户界面
    我无法理解该原则,对于一个普通用户来说,谁会去学习这么多的命令呀,谁又能记住那么多命令。不怪的Unix和Linux的普通用户的数量远远比不上Windows。
  • 让每一个程序都成为过滤器
  • 允许用户定制环境
  • 尽量是操作系统内核小而轻量化
  • 使用小写字母并尽量简单
    我不同意,该原则已经不大适用了,我觉得应该是该大写的就大写,该长的就长,不要吝啬那几个字母。
  • 保护树木
  • 沉默是金
    这是我无法忍受的原则。你的沉默就以为着我的痛苦,往往我需要痛苦的研究你为什么这么沉默。
  • 并行思考
  • 各部分之和大于整体
  • 寻求90%的解决方案
  • 更坏就是更好
  • 层次化思考

引用
1. <<Linux/Unix 设计思想>>

Comments