2009年3月25日星期三

IT与命运,人生随想

写点严肃的。


我信命!我相信是命运决定的我的性格:我从不认命。
从事IT行业是很奇妙的,它给了我们更宽广、更抽象的思考事物的方式。我的脑子里常常会冒出许多天马行空的想法,在这里面,有一些是关于命运的。
偶然事件:
IT行业是建立在绝对理论基础上的。写一个程序,有一处错误,不管编译多少回,它还是会错,不会神奇地调试通过;操作系统的引导代码被破坏,不管试图启动多少回,系统也还是启动不了;数据被删除,等十天、一百天、一万年都不可能自动跑回来。
从写程序的角度看待代码世界,是不存在偶然事件的。即便是随机函数,也是由某些看似随机的外因(CPU响应时间,鼠标的位置等)引起的。人工智能也是建立在越发复杂、抽象的算法上的,也绝对没有随机性。
换到生活上来,人生的偶然性难道不是算法的复杂造成的吗?
扔一枚硬币,掉下来的是正面还是反面,在掉之前就已经决定了。当然,这可能有太多的因素组成:扔硬币人(程序里的对象)作用在硬币上的力,硬币受到的外因(如风、地球引力)......。其中扔硬币的人在这个事件中所表现的作用力也是由太多复杂的过程、变量、继承影响的,比如肌肉的表现、神经的支配,,这些原因的原因又能追溯到原因的3次方。以此递推,总会找到所有引起这枚硬币正面还是反面的原因来,而这些原因又是绝对事件,非偶然。这样看来,那扔硬币不就是必然事件了吗?
所以,命运是必然的。我一直认为只有努力才能改变命运的想法是命里早就注定的;很多人因为相信算命先生的一席话,错失大好机会,庸庸碌碌一生也是命里早就注定的。那写这篇文章看起来也是命中注定的了。

算法复杂度:
程序员在写一个程序时,常常会遇到这样的情况:确信一段代码绝对不会有漏洞了,但过一段时间却又发现了完全没有想到的错误。或者还有,在解决一个问题的时候,我们绞尽脑汁想出来一个自认为完美的算法,却在一个偶然的机会得到高人的指点,恍然大悟,自己怎么就没想到呢?
是啊。以动物的思维去看待世界,看待人,一定不像以人的思维去看待动物。也许在动物的世界里有另一种“高等”的思维,是脱离生命、价值等的思维模式。但我们不是动物,所以想不出来。当然,我以人的角度去看这个事情,本身又是局限的,相当于白说。
这样看来,每一样东西都是有思维的。人和任何事物一样,不过就是一个可以接受输入的程序段而已,挨打的时候会痛、因为扔硬币会乱想、因为乱想会写下来。那硬币也一样,扔它的时候,它会跳起来;用锤子砸它,它会变扁。当然,我不是说它有佛性,我以人的思维,还是看不透一枚硬币的思维的。

唯心论
如果我们写了一个复杂的程序,在程序里有一个复杂的类,类里封闭了大量的思维过程。再如果这个类实例化了一个对象,它可以应对大量的不同输入的处理,这样,这个对象便生动了起来。就像我们按下键盘的一个A,对象便认为它接收了A。再换个角度思考一下,如果我们用模拟的方式向对象传递一个信号,说按下了键盘上的A,那对象还是会以为外部接口按下了键盘A。
那如果这个对象是人呢?
恭喜你,程序员就是上帝了。
人常常会做梦,做梦的时候一定不会认为是在做梦,所以,保不齐现在就在梦里(别看我,也说你呢!)
程序有时候会有BUG,或者陷入异常。疯子、精神失常者会不会是另一个异常呢?但愿上帝不会结束它(她?他?)。
程序可以不断的调试、重新执行。那整个世界如果是一个复杂的程序(我想不出来程序存在哪里?),重新调试是否意味着时间可以倒流?
那时间又是什么呢?也许就是程序执行时的CPU执行流程。如果没有外部时间的参考,一台PIII在执行一段代码的过程中,对象本身不会感到慢,和P4上执行的过程一样。
程序如果是个死循环呢?

做程序的一个原则就是充分封装,以一个对象的角度看其上层调用是不现实的,最多上层安排一个猜测的过程而已。如果我是这个对象,我的所有想法都是来自上层的设计,那这些想法是真的吗?我不知道。也许上帝正关注着我写这个文章。

没有评论:

发表评论