模式,动态,数据化及其他

此文是从俺的SPACE 听云轩上弄来的

模式,动态,数据化及其他

这里的模式是指构造一类相似事物需要共同遵守的法则,换句话说就是模版或类。但当前语言中“类”的概念要远狭隘于此,因为模式可以构造任何事物,包括自身。
前面的文章中曾经提到过编程语言有一个努力的方向是尽最大可能减少代码中的重复,函数,oop,泛型都是如此。他们其实都是模式。函数是一类计算过程的模式,它特殊在不需要其余的参数就可以构造出计算的逻辑;oo中的类自不待言,是对象的模式;泛型类就是带参数的模式了。还有模式的模式,前两天刚刚提到的“计算模式”,软件工程里面的“设计模式”,都是更“高次”的模式。
模式提供避免重复的途径,我想它几乎是唯一的途径。
再来看动态和数据化。动态就是将程序输入的不确定性引入行为的不确定性,要引入不确定性,行为自身必须有一定的数据属性,这就是数据化。数据化越彻底动态性越强。这就是动态语言把诸如函数之类控制元素当作数据的原因。反过来,行为数据化可自然导致行为自输入获得不确定性,也就是动态。
所以,动态就是数据化。
 
然后是模式和数据化的关系。
模式要构造一类事物,可构造意味着这类事物是数据化的。因此非数据的出现意味着不能彻底应用模式,因此就可能出现重复。c++里的类没有数据化,尽管模版提供了一些构造类的模式,但那是在编译时实现的,运行时输入的不确定性根本未曾引入该构造过程,充其量不过是编译器帮人写了重复代码而已。它还是死的。
因此我们需要一切皆数据的语言。模式是数据,模式的模式是数据,直到无穷。
 
将会产生什么呢?
一个算法从一个算法类(或模式,模版)中构造出来;一类类似的计算过程被形式化并抽象为类,这正是可爱的“计算模式”;甚至一种设计模式也被以类的形式具体化了(也怪不得设计模式是从smalltalk的圈子里出来的了,它得益于smalltalk的动态性。至于smalltalk里是否已经存在这种“设计模式类”我就不得而知了);这时候唯一的瓶颈是我们的想象力,因为任何的共性都可以被我们利用。
 
此时不妨换个视角。
其实这样的思想已经被我们应用了几千年。数学对象就是模式。
数是一切相似类的类。模式。
向量,群,矩阵,只要是抽象出来的,就是一类事物的共性,就是模式。
到了泛函之类,就是模式的模式了,这在近代代数里屡见不鲜。
计算机源于数学,但到了一切都是数据的动态语言才真正回归了数学。
 
******************************************************
 
刚才在图书馆翻那本《程序设计语言:设计与实现》的时候,这两天来萦绕心中的几个东西突然融合了,然后就有了这篇文章。
我曾对问题的最优子结构等东西思考了很久,原因是我想自己找一个严格的方法确定问题是否具有最优子结构,但只能半严格化。直到前两天在那本算法上看到了拟阵。然后就叹服于数学的表达力。抽象的美丽是刺激写下本文的一个重要原因吧。然后自然就是自去年十一假期以来一直未放下的动态语言的思考了。还有前两天“计算模式”给我的震撼,没想到数据化的范围可以是如此之广。

******************************************************

前两天才发现程序员04(还是05?忘了)上有一篇介绍MDA的文章,所言有一些与本文相似。感兴趣的找找看。

感觉大家太习惯在细节上考虑问题了,为什么不能超越纷繁复杂的技术去思考一些背后本质的东西?我想这正是软件科学的一大欠缺,它应该向物理学借用一些思维。当然,软件是复杂的,我们或许只能作出定性或半定量的分析。

另外,BLOG里另两篇文章是一年前所为,当时没有深入计算理论,里边的思考有些幼稚,感兴趣的凑合着看吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值