读 王垠 Unix的缺陷

原文链接:http://blog.sina.com.cn/s/blog_5d90e82f01014k5j.html

文章的主题思想是:unix的原则,程序处理文本流,因为它是一个通用的接口,是有问题的。

作者的反思,文本流是没有类型概念,从而导致了解析时候的问题。

A程序输出文本,shell程序进行扩展,形成文本,B程序接收后,出现了问题。如shell执行ls,而文件夹里面有-l这个文件名,从而出现问题。给出的解决方案是,程序间交互的不是文本,而是类型数据,并且是已经解析好的类型数据。

这个说法有一定道理,也就是所谓的歧义性。文中举的两个例子都很典型。C程序可能对参数有个前提之类的,但是前面的不知道。采用强类型的方法则可以去掉这个问题。

这样做有两个前提:1.必须有通用的数据结构;2.必须有公用库。

实际上,java、C#就是这么做的,定义了标准的接口,输出时就可以了。corbar也是如此,可以序列化,对方可以解析。

这种问题也是很明显,除非大家都是一种语言做的,否则就有互操作问题。你怎么知道C语言的String 和 C++语言的String是一码事呢?除非你把编译器再统一一下,细节问题也是很多。

解决的方法:

1.采用一半的方法,把参数上加上类型标志?现有程序得改动,也不符合第3条原则;

2.把程序输入的不弄那么多类型,分成两种,一种是 选项,一种是  变量值。变量值加上冒号。

其实他说的有道理,程序之间交换的应该有类型。所以用文本流有问题。但是类型太多同样有问题。

你可能感兴趣的:(程序,主题,target,blank,的)