Chinaunix首页 | 论坛 | 博客
  • 博客访问: 635264
  • 博文数量: 54
  • 博客积分: 3812
  • 博客等级: 上校
  • 技术积分: 992
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-16 20:53
文章分类

全部博文(54)

文章存档

2010年(10)

2009年(24)

2008年(20)

分类: LINUX

2009-03-18 22:05:28

    如果程序彼此之间不能有效通信,那么软件就难免会陷入复杂度的泥淖。
    在输入输出方面,Unix传统极力提倡采用简单、文本化、面向流、设备无关的格式。在经典的Unix下,多数程序都尽可能采用简单过滤器的形式,即将一个输入的简单文本流处理为一个简单的文本输出。
    抛开世俗眼光,Unix程序员偏爱这种做法并不是因为他们仇视图形用户界面,而是因为如果程序不采用简单的文本输入输出流,它们就极难衔接。
    Unix中,文本流之于工具,就如同在面向对象环境中的消息之于对象。文本流界面的简洁性加强了工具的封装性。而许多精致的进程间通讯方法,比如远程过程调用,都存在牵扯过多各程序间内部状态的倾向。
    要想让程序具有组合性,就要使程序彼此独立。在文本流这一端的程序应该尽可能不要考虑文本流另一端的程序。将一端的程序替换为另一个截然不同的程序,而完全不惊扰另一端应该很容易做到。
    GUI可以是个好东西。有时竭尽所能也不可避免复杂的二进制数据形式。但是,在做一个GUI之前,最好还是应该想想可不可以把复杂的交互程序跟干粗活的算法程序分离开,每个部分单独成为一块,然后用一个简单的命令流或者是应用协议将其组合在一起。在构思精巧的数据传输格式前,有必要实地考察一下,是否能利用简单的文本数据格式,以一点点格式解析的代价,换得可以使用通用工具来构造或解读数据流的好处是值得的。
    当程序无法自然地使用序列化、协议形式的接口时,正确的Unix设计至少是,把尽可能多的编程元素组织为一套定义良好的API。这样,至少你可以通过链接调用应用程序,或者可以根据不同任务的需求粘合使用不同的接口。
阅读(2162) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-04-02 16:53:38

unix 哲学,希望尽快悟出来啊。