欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

哲学问题3:“拍卖结束了没?”

哲学问题3:“拍卖结束了没?”

哲学问题3:“拍卖结束了没?”

在大约10年前,易趣网(Eachnet)还很风行的时候,我也写过一个拍卖(Auctions)平台。
在编写程序时,遇到一个问题。
比如一个卖家(Seller),把他/她所想要卖出的商品项目(Item)的拍卖结束时间设定为某日13:00,那么,从他/她开启拍卖项目时起,截至那个13:00时刻,都是各位竞买者(Bidder)自由下标竞拍的有效(Available)时间。13:00时刻一过,则该Item的状态为“Auction Ends”。
那么,对于某一个Item,就有两种基本状态: 要么是Available,要么是 Ends。
前者对于竞买者来说,意味着可以随意下标;后者对于竞买者来说,则宣告他/她不能再下标。
那么,程序如何告诉访问者(包括竞买者和卖家和guest),某个Item是Available还是 Ends呢?
从数学上看,Available或Ends这个状态值,是时刻的函数。那么,可以把这个函数值算出来(自变量是当前的时刻,比较项是某个确定的时刻比如13:00),保存在一个变量里,令访问者可以随时由程序告诉他们这个变量的值。
问题是,如果这个变量能真实地反映出该Item在每时每刻的状态(以备随时响应访问者)的话,就需要程序无时不刻地不在进行这个函数计算。也就是说,程序必须在时间轴上连续地、密致地进行计算。
这样一来,就算是拍卖网站上连个鬼都不来,网站程序仍然要日以继夜、一刻不停地进行运算。这样的话,开销就太大了,而且纯粹浪费运算资源。
于是,我想到了一个办法。既然某个Item的 Available或Ends这个状态值,是用来告诉访问者的,那么,为什么不可以在访问者,访问这个Item的当时之瞬间,进行这个函数计算呢?
具体地说,是这样的:
02:00 ——  卖家开启Auction Item,设定结束时刻为13:00。该Item的状态值设定为Available。
03:00 ——  某个竞买者访问该Item。程序在这一瞬间,将当前时刻与13:00比较,计算出该Item的状态值为Available。该竞买者可以自由下标。数据库中该Item的状态值为Available。
04:00  ——  又一个竞买者访问该Item。发生的事情同前。数据库中该Item的状态值为Available。
……
……  }—— 无人访问。数据库中该Item的状态值为Available。
……
12:50  ——  又一个竞买者访问该Item。发生的事情同前。数据库中该Item的状态值为Available。
12:55  —— 无人访问。数据库中该Item的状态值为Available。
13:00  —— 无人访问。数据库中该Item的状态值为Available。
13:01  —— 无人访问。数据库中该Item的状态值为Available。
14:00  —— 无人访问。数据库中该Item的状态值为Available。
15:00  —— 有人访问(不论是竞买者还是卖家或是guest)。程序在这一瞬间,将当前时刻与13:00比较,计算出该Item的状态值为Ends。任何人不能再下标了。自此往后,该Item的状态值永远为Ends。
也就是说,该Item的状态值,从Available变更为Ends,是由一个外部访问所触发导致的。反过来说,如果always没有外部访问,这个状态值,将永远保持Available,哪怕到世界末日,亦然如此,永恒不变。
这件事情,对于编写程序的我来说,是知道个中“奥秘”的。然而,对于一切使用程序的访问者(所谓“外人”)来说,这件事情则完全是透明的。他们不必在13:00时刻之后关心网站数据库中那个Item的状态值,到底是不是Ends。他们若想验证,只需上网站打开网页,一看便知 —— 程序立刻就会告诉他/她:Ends!
面向一切访问者,程序总是能在任何时刻,反馈出符合Item真实情况的、正确的状态值,永不出错。
这件事情,会启发我们这样一些问题:
(1)如果说,这样的程序是在利用某种“骗术”的话,那么,访问者是否能够确切地洞知,程序是“欺骗性”的,还是“忠实性”的呢?
(2)如果程序“自己”,能够“骗”过一切人,包括编写这个程序的我本人的话,那么,这对于我们地球人来说,意味着什么……?
===== ===== ===== ===== 
(3)对于这个帖子,我早就想到了,各位网友、大虾,会提到“观察者模式/逆观察者模式”、“薛定谔的猫咪”、“波函数坍缩”、“双缝实验”、“惠勒延迟选择实验”……等等话题。这些话题,早就被大家讨论烂了,而我最关心的问题之一,实际上是下面这个:
在上述的实例中,我在编写程序时,之所以采用“骗术”,是迫于对一个现实因素的考量,即:我的网站计算机运算资源有限,以及实际的计算机,对于时间不可能做无限细分的运算。其实,这就引入了一个范畴:经济性。
这种“骗术”,是可以满足“向所有访问者反馈正确信息”这个要求的,极尽经济性的实现。
那么,容我大胆地推广一下,我们的造物主 —— 上帝,是否也会出于经济性,向我们施行这种“骗术”?
比如说,当一切受造主体(凡有需求他物存在的一切主体)在某一时刻,完全“不需要”月亮的“存在”的话,那么,此刻,上帝是否会“收回”月亮?即释放月亮令其他一切受造物感知其存在的资源?
意见分正反两方面:
(正方)是的。释放资源,是经济性的体现,是上帝伟大智慧之所在。
(反方)不会。在上帝手中,资源无限。祂毫不吝啬于万有。如果说,释放资源是经济性的体现的话,那么,释放资源需要多一道操作。这多一道操作,是不是也要耗费资源?上帝会在月亮的资源与释放该资源的操作上所耗费的资源之间,做一个权衡吗?如果要做权衡,岂不是需要一个算法?应用算法,是不是也要耗费资源?算法在上帝智慧库中的存储,是不是也要耗费资源?上帝是不是要在这个智慧库资源与月亮的资源之间,做一个权衡?如果要做权衡,岂不是需要一个算法?应用算法,是不是也要耗费资源?算法在上帝智慧库中的存储,是不是也要耗费资源?……当上帝预见一切受造物将永恒不再需要月亮存在时,根据经济性,必定也要释放那些(其实是无穷的)算法的资源。那么,释放资源需要多无穷道操作。这无穷道操作,是不是也要耗费无穷的资源?…… 所以,事实一定是:在上帝那里,无所谓资源的大小尺度,也不存在经济性这个范畴。
(正方反驳)既然你强调上帝手中资源无限,那么,这是不是可以意味着:上帝完全可以利用这无限的资源,进行无限的操作呢?如果不是的话,上帝手中无限的资源,还有什么意义呢?
(反方再反驳)无限的资源,意味着上帝没有必要做那些事情!
(正方再再反驳)既然你说到了“没有必要”,这不就是经济性的体现吗?
问题还远远没有结束……
上帝或许不会因着考虑手中资源的多寡,来释放某个资源,但祂毕竟有这个权利。比如说,时间是祂创造的,祂或许在某一时刻,释放了对于绝大多数人的时间存在资源,惟独为一小部分人保留了时间的存在(让他们经历时间的流逝,那真是和上帝亲密相处的美好时光呀!)。那么,当绝大多数人重新获得时间的存在的时候,他们什么也不知道,甚至无法用时间来量度这个“间断”的存在。但那一小部分人,却知道到底发生了什么……
是否会有那么一小部分人,亲身经历了一次上帝那边的事情,成为“上帝的人”(好像那些站在程序员身后,窥看到他如何编写“骗术”代码的“内部人士”一样)?当然,这样的一小部分人,要承受着被世人视其为“另类”的痛苦。

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功