矛盾性产生了数学,数学产生了离散数学,离散数学产生了计算机,计算机产生了汇编语言,汇编语言产生了静态和动态的高级语言,可见根在数学上。而硬件、操作系统、语言的现实复杂性,要求不断提高适应能力。新语言层出不穷,语言库越来越强,让人目不暇给。选择变多是好事,让语言能力伸展到各个应用领域,向更宽更深方向发展,是必然的。各种应用领域有自己的特殊要求,语言应该是走向专一,专做一个方面的事。现实中这个趋势也已越来越明显。这是其一。另一个,各种语言之间怎么去联系?这个联系从语言层面去解决会很痛苦,从语言应用的结果去做这个联系才会简单。这个结果是什么,是数据。以什么形式表现的数据更便于联系起来呢?二进制还是文本?显然是文本。是格式文本还无格式文本?当然是有确定意义的格式文本更便于联系。因为联系最终是程序员或者其它人,一目了然是最好的选择。对于不同语言设计的应用,结果联系是一方面,还有一个,功能共享。既然各种语言源码级的联系都很难,二进制的lib共享则更是不好处理了。这意味着语言生产力会存在很大的浪费。但是如果做成一个个功能单一的小应用,用动态语言粘合起来,这个复杂性就能得到有效解决。这方面,unix做出了优秀的设计。由功能单一的小工具用粘合语言构成复杂的大工具是unix系统工程最妙的思想之一。至于并行和并发(消息或事件)驱动,可以在粘性语言的解释层面去设计,可以是操作系统的一个接口调用。
这样的设计应该可以适应机器、操作系统和语言的复杂现实,最大化地免除同一操作系统上各种语言api生产力简单重复,不同操作系统之间的应用也可以不别重复,A要B的应用结果,或者B要A的应用结果,只需要一个应用队列,将应用、特定操作、接收信息、发送信息、权限等各个小队列组合起来,A、B就能通过通信很好地利用彼此的算力和数据了。让机器、系统、语言三者的发展拥有更大的独立性和灵活性,将更多的精力用于适应问题而不是彼此之纠缠不清(依赖性)。
小机器可以有效构成大机器,功能单一小应用可以构造功能复杂的大应用,这是unix对我的一个简单启示。谢谢你,UNIX!够我学一辈子。
阅读(1819) | 评论(0) | 转发(0) |