这两日真够呛。。。好继续,正文:
若果把计算机看成函数,那会产生什么问题呢?显然是存储问题,因为函数并没有存储概念。我们做数学题,做逻辑题,做问答,做统计,这些都不存在存储概念。因为我们思考逻辑的时候,定义已经是确定的了。也正因为是确定的,才可以逻辑思考。试问一个变量,时而鸡,时而马,该怎么判断呢?if判断?if后再变化你怎么办(多线程问题)?DB,一个存储器的存在,怎样融入函数当中呢?
假设,我们对DB不会作出任何修改,那么则有f' = f DB,于是f'就是计算机本身IOout = f' IOin
假设,我们对DB会作出修改,那么还有f' = f DB么?我们都知道定义域任意元素x,都有值域中唯一确定的元素y与之对应,于是y = f' x = f DB x存在问题,DB的变化,致使函数不存在。那么把计算机看成函数的观点崩溃了?我们换个角度,先把DB分成两部分:管理数据的函数g 和 纯数据 v。然后我们把纯数据看作参数,即 f' = \v -> f.g v,而g v就是DB。把管理数据的函数g看成系统的一部分,把纯数据看作IOin会怎么样?没错,我们重新得到IOout = f' IOin。
其实对于函数来说,要解释DB最大的问题在于状态。函数不存在状态,所以计算机加入了一个特殊的东西:时钟。值+时间=状态,在可以忽视时序问题时,可以直接有值=状态。忽视时序问题,就相当于我们平时说的异步。若果单单使用锁,只是一种耗费资源手段。而我们看到无论是唤醒线程,还是延时读取,都是依赖时钟。
请想起我之前所说的机器,他们从无态到有态,最关键的部分就是时钟。其实我们谈到状态这个词的本身,就已经引入时间概念。而我们现在遇到很多函数式都不涉及时钟,是因为我们需要的是异步。
[该贴被SpeedVan于2013-08-02 01:10修改过]
[该贴被SpeedVan于2013-08-02 07:52修改过]
[该贴被SpeedVan于2013-08-03 16:02修改过]