曾经有人问过我,软件像什么?我想了想回答到,软件像是对现实世界的抽象。后来慢慢发现,世间的一切事物之间都有着千丝万缕的关系,不同领域的东西总有一些东西具有类比性。
听听下面这些术语你就知道了:Bug、病毒、原子操作、锁、信号灯、生产者与消费者等等。我们可以以宇宙运作的方式来看待运行在计算机里的程序:内存和各种硬件资源是广阔的宇宙空间,地址空间里的每一个比特是一个原子(不是物理意义上的原子,而是古希腊哲学意义上的原子),CPU的地位比较特殊,它是处于时间维度上的,使静态的'宇宙'动了起来。在这个模型里,仅仅有了构成宇宙的元素,让宇宙有条不紊的运行起来的是操作系统,它负责线程调度,让每件事物在量子级别上拥有了动的能力,使一切事物在这个'宇宙'里拥有了存在的意义,它是上帝之手,它是第一动力。进程是这个'宇宙'一些事物的组织形式,进程之上还有更高级别的组织形式,比如服务。
我们真实的宇宙,也可以参照计算机的模型来运作。宇宙里的每一件事物,小到原子电子,大到恒星星系,谁能保证它们在同一时刻不是只有一个在动?宇宙把时间片切割的非常短,人们也是无从得知的。或许它还有个多核CPU呢,来驱动同一时刻中海量事物的运动。哈哈,当然这不只是科幻,还是我们以计算机的角度来看待宇宙方式。像OOP一样,它也是我们用计算机来解决问题时不可或缺的思想模型。真实的宇宙要比这复杂的多,我们穷尽整个人类文明或许都无法得知。呵呵,人类文明又算什么呢,只不过是宇宙角落里一盏亮了不久又要即将熄灭的灯。
等到哪天我们在计算机的内存里创造了某种存在,它们是否也会以同样的眼光看待我们,就像我们永远无法窥视自己的造物主一样,大多数人选择了在自己的世界里度过艰苦而又平凡的一生,临死之前都不会瞥一眼外面的世界。
曾经,我对计算机有一股异于常人的狂热之情,我期望计算机可以帮助人们做一切事情。在学生物学基因遗传相关知识的时候,我总感觉DNA这东西是二进制内存的四进制升级版,或许将来我们可以直接对DNA编程,定制所需的生物功能,甚至创造不存在的物种。
我想过做类人机器人,是在听说了人工神经网络之后。我觉得让一个软件拥有学习的能力,甚至是维护自身的能力,这才是最终极的软件,什么病毒、木马的都弱爆了。把一个'大脑'放在内存里,总觉得有点憋屈,它接触不到人类在现实世界中所接受的INPUT,很难期望它能做出人类在现实世界中所做出的OUTPUT。所以我觉得,不可能只用计算机软件从内存里做出一个拥有人类思维的大脑。这样的话,只能再给它装各种传感器,尽量模仿人的外形,生怕它感受不到人类所能感受到的东西。人类拥有上亿的神经元,比起CPU核心屈指可数的电子计算机来说并行处理能力强了可不是一小截。现有硬件的能力太弱。想做下去必须要研发更高级的处理器或者使用不同架构的计算机(量子计算机、生物计算机?),或者拥有极快的速度以高并发来填补低并行的缺陷。然而并没有什么卵用,这只是想想罢了。要做这些谈何容易,各种理科的东西都可以用上了,而且是精深顶级的知识,一个人不吃不喝研究学习一辈子未必会有结果。更何况,我们是拥有社会属性的人。
没有人拥有一手遮天的能力。人生有限,技艺无穷,我们所需要做的就是在自己岗位上做好自己的工作,很多事,其实应该留给后人去做。