注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

My Unix World

不要迷恋Unix,Unix只是计算世界很小的一部分!

 
 
 

日志

 
 

【Learn】理解Unix哲学  

2008-12-01 23:03:13|  分类: L-Unix |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Unix哲学理解
1,Windows与Unix的不同定位,应用领域的不同
Windows是一款商业产品,目标是市场份额和市场利润。作为一个直接推论,Windows强调易用性和对人的适应,它通过图形化界面,从而让计算机对人类的惰性进行适应。它关注利润,而软件的生命周期与软件的质量,只能退居此等重要的地位,持续不断的升级行为有利于获取持续的利润。Windows适用于家庭应用和傻瓜式办公应用。它所面向的是大众。
Unix从人类与计算机关系的角度,公正的看待问题,界定人与计算机的职责范围,确定一种最有效的交互方式。Unix哲学,就是在现在的技术水平之下,对人机职责的一种非常合理的划分。它不仅仅包含了计算机与软件设计的基本理念,而且包含人机模型中人类的职能,以及人类与计算机交互过程中应该遵循的规范。
严格说来,Windows不能称之为操作系统,它的本质是商业软件,或者说,为了一定商业目的而开发的类似操作系统的具有比较好的人类交互界面的私有软件。FOSS完全关注于软件本身,而不在意最终用户的数量。软件运行很好,但用户寥寥,这从商业软件的标准来看是失败的,但从FOSS的标准来看却是成功的。

为了“用户友好”。微软把所有事情都分解为简单步骤,所以完成同样的任务要花多得多的步骤,难看的Vi比花哨的Word完成同一操作所需的击键次数少的多。能够同时关注到用户友好和功能强悍的软件是不存在的,功能友好,意味着软件对人的适应,但往往在这个过程中,软件也就失去了它该有的品质甚至职责。

在Unix哲学中,人与软件是平等独立的关系,软件并不依附于人。在Unix中,软件担负它该有的职责,它的核心是功能,重点在质量。软件与人是平等的主体,软件没有主动与人交流的欲望,如果有,它需要适应人,相反,如果人需要如软件沟通,那他就需要下功夫去了解软件的特性和喜好。这就是真实的世界。

在Unix设计哲学中,人机交互接口:
  人---->计算机:文本/命令/代码/配置文件
  计算机---->人:文本和图形展示
  约束与补充: 统一的交互规范、完善统一的文档帮助系统、遍布全球立体多层面的人类互相帮助体系、开放式的软件开发与共享结构。
  人机接口要求:KISS--Keep It Simple, Stupid.
软件开发的目标:
  开发功能完善并且有质量保证的软件。
软件开发基本思路:
  模块化 Do one thing.
根据“软件开发的目标”和”软件开发基本思路“,得出一系列推论或者指导原则,这就是常见的那些Unix设计原则,比如Doug Mcllroy的三条哲学,Rob Pike的C语言设计指导思想,Mike Gancarz总结的X设计哲学,或者是The Art of Unix programming总结的一系列原则和哲学。
2,在开发模式和版权模式方面的不同
版权方式方面,不需要比较,显而易见。
3,Unix的特点

4,理解Unix设计原则

总结Eric S. Raymond The Art of unix programming:
(1)KISS for Programmer
    Rule of Modularity: Write simple parts connected by clean interfaces.
    Rule of Composition: Design programs to be connected to other programs.

    Rule of Clarity: Clarity is better than cleverness.
    Rule of Simplicity: Design for simplicity; add complexity only where you must.
    Rule of Transparency: Design for visibility to make inspection and debugging easier.
    Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
        Rule of Robustness: Robustness is the child of transparency and simplicity.

    Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
    Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.

(2)KISS for End User
    Rule of Least Surprise: In interface design, always do the least surprising thing.
    Rule of Silence: When a program has nothing surprising to say, it should say nothing.
    Rule of Repair: When you must fail, fail noisily and as soon as possible.

(3)Other
    Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
        Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.

    Rule of Optimization: Prototype before polishing. Get it working before you optimize it.

    Rule of Extensibility: Design for the future, because it will be here sooner than you think.
    Rule of Diversity: Distrust all claims for "one true way".

  评论这张
 
阅读(288)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017