美文网首页
由程序的自我复制说起

由程序的自我复制说起

作者: EnjoyWT | 来源:发表于2019-07-22 21:16 被阅读0次

    原文链接

    以下摘自csdn的楼层回复,看了之后真有一种开了脑洞的感觉.

    这的很不错,下面的才叫思考。
    FreeFice(庄鱼):不是吧,你的想法和我昨天晚上的想法竟然非常一致!让我们先比较有机生命与数字生命之间的特点。
    通常人们说的生命都是指的有机生命,有机生命就是由有机物质组成的具有新陈代谢,繁殖,适应性,感知运动等等生命特征的散耗系统。不过什么是生命的本质却没有明确的答案。而由计算机中的数字信号构筑的“生命”属不属于“真正”的生命呢?
    “数字生命”是不是生命得首先搞清楚生命的本质是什么。生命是在一定环境下生命的,没有一定的生存空间,就不可能产生生命。有机生命的生存空间就是整个宇宙。狭义的说就是地球。地球上的地球如果离开适合生存的地球环境到真空去(离开模拟地球环境的飞船)就会立即死亡。所以说脱离一定环境说生命是没有意义的。生命就是在一定的环境中自发形成的适应这一环境的活动系统。如果一个系统不能应激环境不适应环境,这个系统做为一个整体就会失去自主性,就不说是生命。或者说生命是一种自平衡系统,当它的内部状态受到外界的刺激产生不利于整体保持平衡态的时候,它应该能够尽可能进行阻止这种远离平衡事件的发生。例如,人和动物饿了,就会感到难受,不会坐以待毙,而是到处寻找食物,然后吃了它,把身体恢复到正常状态。不能想象一个“动物”饿了一动不动,有天敌来了也无动于衷,这样也可以称之为生命。一个生态系统应该包括环境与生命主体,它们之间达到一种动态平衡。
    在这里,我们发现了生命的一系列的本质特征。1,它必须是个复杂系统;2,独立性;3,有一系列的内部状态;4,能够响应外部刺激,感受内部状态;5,有自主行为。这些行为的目的是维持内部状态处于正常水平。不看生命的载体,我们发现生命只不过是一具信息处理系统。这个信息系统的机制是接受外部信息及随时间而变化的内部状态,这些外部信息使内部状态产生变化,这些变化使系统有向无序的方向发展(热力学上就是熵增加),而系统根据这些内部状态产生一系列的行为,这些行为的目的是阻止熵增加,保持生命做为一个整体的存在性。而具有以上特性的系统都应该称之为“生命”!!我们还注意到上述一系列过程都是运算过程!运算贯穿了整个过程,没有运算就不存在这一切。运算的广义定义应该是:某个主体的状态发生了变化,则可以说它发生了一次运算。
    在计算机被运算的就是一系列内存中的数据结构,而进行运算的就是CPU。而运算的规则就是算法。而自然界中呢,被运算的就是一切物质,运算的规则就是自然规律!而运算主体就是宇宙本身!我们身为人类好象感到很自由,想干嘛干嘛,可真的是这样吗?我们的行为受到自然规律的制约,我们不可能创造出自然规律,而必须无条件的服从自然规律,而自然规律是宇宙产生那一刻就决定了的,要改变它只能是宇宙之外的东西了?或许是“上帝”!就象计算机中的某个进程,它的运行必须符合一定的语法句法,受到硬件的制约,人类规定的制约,我让你1+1=2,你就不可能得出1+1=3来。现在想想人类和运行中的程序一样不自由!人类可以无限次活动,可逃脱不了自然规律的约束,而程序无限次运行也摆脱不了人类的规定。程序(本文特指运行中的进程)运行在计算机中,计算机之外是创造计算机的人类。而人类生活在“这个”宇宙中,宇宙之外是创造宇宙的“上帝”,即使你否认上帝的存在也得承认某种类似上帝的东西存在。两个参照系变换的结果就是:计算机中的程序==自然界中的生命!当然目前的程序还不能等同与生命,因为它还不具有我上面所说的一些特征,但理论上这个等式是可以成立的,这需要我们编写具有生命特征的程序来证明它!如果我们编写的程序不进有上述的基本特性而且还无穷接近自然界中的生命,我们是不是更有理由认为他们就是活生生的“生命”呢?当然这些生命是存在计算机中的。在自然界中是不存在的。但如前所述不能因为它在自然界中不存在就说它不是生命,因为生命的定义是在一定的参照系中才有意义!计算机中的数字生命看计算机中的生命是存在的。好象我们看动物很愚蠢,谁知道在动物眼里我们是不是更愚蠢呢?“子非鱼,安之鱼之乐?”
    还是参照系的问题,梦对“醒着”的人来说是不真实的,可对做梦的人来说呢?显然是非常真实的,和现实中没什么区别!梦中人有喜怒哀乐,有饥饿有疲劳有疼痛,梦中的他认为这一切都那么真实。只要他一刻不醒来那梦中的一切就继续真实下去!如果有某种技术使他永远沉睡下去永远延续那个梦,梦中世界到底是不是真实的呢?对梦中人来说是的确真实的,对醒着的人来说是不真实的,无所谓真不真实,真与假只不过你处于什么样的参照系来看!假设所有的人都在做梦,没有任何人清醒,那么他们的世界是梦中世界还是使他们躯体存在的“现实世界”呢?现实世界显然是他们存在的基础,可他们完全没有感知它,除了使之存在以外还有什么意义?而梦中的世界是他快乐或痛苦,到底谁更重要呢?“ 昔者庄周梦为胡蝶,栩栩然胡蝶也。自喻适志与!不知周也。俄然觉,则蘧蘧然周也。不知周之梦为胡蝶与?胡蝶之梦为周与??”
    下面打算要写如何创造具有生命特征的程序,无奈下午要期中考试,是“操作系统”。不得不看下书先。考完再继续...

    数字生命系统的编写主要包括:生命个体的编写和生存环境的编写。他们又都包含了组成结构的编写和一些行为法则。生命个体的行为法则包括了如何对外界的刺激产生如何的响应,已经生命体应该具有的一系列行为。生存环境既虚拟世界的编写应该包括一定的共同生命空间,包括有生命的和无生命的资源,生命之间包括了竞争和合作等行为,以及一些环境参数,例如光照,温度,植被,地形等等等。总之要尽可能形成一个平衡的生态系统,之间的物质和能量保持能量守恒定律等大自然的规律。总之着虚拟世界就是对地球环境的模拟。首先看看生命个体的编写。
    让我们来比较有机生命与数字生命之间的结构。有机生命是由实实在在的物质组成的,我们这里只需扩展到有机物就可以了,无机物这样构成有机物,之间太复杂,对我们构建数字生命意义不大。我们知道有机生命主要的组成物质是蛋白质,而蛋白质又是由总共20多种氨基酸组成的。而氨基酸又是如何组成蛋白质,蛋白质又是如何组成细胞,细胞如何组成一个一个活的有生命的呢?现在我们知道其实这这些控制步骤的信息都是事先“写”在基因DNA上的。在细胞这个宇宙生命产生系统的内存中,DNA双链解开,以其中的一链为模板,根据把自身的信息转录到RNA上,这个RNA称为信使RNA,再配合核糖体RNA这个装配车间和转运RNA这个运输器把按照根据碱基互补配对的原理把氨基酸等原料以DNA中的编码次序链成一条蛋白质。生成什么样的蛋白质是按照DNA上的编码规定好的了。就这样不断的对NDA进行解码,然后按照编码合成不同的蛋白质。千万种蛋白质又按照自身的特性组成各种生命物质,再进一步构成细胞,细胞再进行细胞分裂,这细胞分裂又被各种各样的蛋白质控制何时如何分裂等等,形成各样组织,然后组织再构成器官,由器官构成整个生命。可以容易看出,整个过程算法都已经保存在DNA中,细胞CPU和内存按照DNA这个程序精确的执行。由一个受精卵变成一个活生生的人这整个过程就象计算机执行一段程序一样,十分精确。结果在还没开始执行时就已经在DNA中决定了的。因此,拿计算机来产生数字生命我认为是很自然的事情。
    计算机中的程序在计算机中中其实就是若干代码的集合。因为一个数字生命的组成元素就是一串串代码,这些代码又分成操作码和操作数。一个数字生命就是一段在内存中运行的有生命特征的代码。而有机生命的组成单位是细胞。不同的细胞以不同的数目和不同的方式就组成了形态各异的生命。更好的说法是由20多种氨基酸组成的千万种蛋白质以不同的数目和不同的方式就组成了形态各异的生命。这蛋白质一个微小的功能模块,它能完成一定的功能。对照程序,程序是若干有某种功能的关键字和用户自定义的标志符的集合。这些关键字和标志符按照不同的数目不同的顺序和一定的语法规则组成了无穷多种可执行的程序。每种具体的语言都有有限的关键字和语法。但由他们却可以编写无穷多种程序,这和氨基酸就20多种却可以构成千万种蛋白质以及由此组成的千万种生命是多么的相似!也可以说区区109种化学元素组成了整个物质世界。因为我们以有限的功能模块组成千万种“数字生命”是可能的。
    现在开始具体的数字生命编写。每个有机生物的细胞中都有DNA以及合成生命的原材料。在计算中就这些原材料就是语法所规定的关键字和一些标志符。例如,if,else,while,int,main,()等等等。我们在这里模拟有机生命的DNA结构,构建数字生命的DNA。这里以数组为例也可以是链表,结构体等等。数组比较简单且形象,所以以它为例。在一个足够长的数组的从第一个元素开始存储编写一个可执行程序所需要的所有关键字和常用的字符串,并且给他们一个索引号,例如1,2,3...1024可以是他们的下标。这一部分就是组成数字生命的“原材料”。另一个数组存储的是上述数组的索引号,构成了数字生命结构信息,例如54,357,77,5,85,436,7....547,54,68。一个编译器或解释器根据这个序列读取前面的子模块连接成一个符合语法的源程序,编译或解释执行之。具体例子如:
    char *MATERIAL[4096]={"a","b",..."Z",...,"#","include","<","stdio","."h","void","main",...}.
    int DNA={256,257,258,259,260,....}经过解释以后就是一段代码

    include<stdio.h>void main(){ printf("hello world!");}不同的序列产生不同的代码,如果这代码具有生命特征,那么就是产生了一个数字生命。容易看出这段数字生命的DNA具有有机生命DNA所具有的特性如复制、遗传、混合等,甚至产生变异而形成原来说没有规定的生命!

    待续...

    语言不是关键问题,它只不过一种工具而已。生命游戏外国人早有研究,对此感兴趣的人一定对RAY做的“Tierra”生命演化系统不陌生。他的系统通过几亿次复制遗传变异从一个祖先物种演化成具有寄生、竞争、合作、攻击等等的新数子生命。只不过他的生物几乎是完全自行演化的,想演化成人类这样的高智能生物必须模拟极复杂的真实地球环境,很难实现,所以我想人为的先生成更高级的物种在次基础之上再进化,就更有简便和方向性。
    遗传变异问题只需根据遗传算法和对环境的精妙模拟就可以实现程序的自我进化,当然基因突变以后的程序要符合语法才可以生存。我们可以事先尽量使它进化符合语法,这应该不是太大的难题。
    每一台联网的电脑都可以开辟一个内存区把它看成一个虚拟城镇,其他电脑上的程序可以在这个共同区域通信互动。虽然每个程序的物理位置都相对不变,但可以通过通讯访问任意联网的电脑上的别的生命,达到以“意识的速度”进行交流!随着这个生命系统的不断完善,人类还可以进入这个虚拟世界与这些数字生命进行交流,不过真正要达到想黑客帝国那样完全进入,具体技术可能要过100年以后才可以实现。原理也不复杂,只需一个神经元脉冲信号和数字信号的转换器就可以了。把大脑的任何神经元都接入到转换器,神经控制信号的输出经翻译转成控制虚拟生命的信号,你在想什么,虚拟世界中你的镜象就产生什么行为,而虚拟世界的信息又通过转化器进入你的大脑,因你的大脑神经已完全和虚拟世界对接,因此你将不再感知现实世界。你将生活在梦幻中。整个世界“虚拟世界”将以意念的形式运作。你脑子想到一辆汽车,就即刻产生一辆汽车,总之只用想不到没有做不到!当然也要遵守一定规则:不能破坏他人利益,不能想让人死就死,呵呵。
    可以预测,未来,估计22世纪或者更早的时候,就有几种高级物种共同生存:纯粹的自然繁殖方式产生的自然人、机械人、克隆人(生化人)、虚拟人和半机械半自然人、半机械半生化人等等几种方式混合而成的“人”。不过理论上自然人是最高级的,因为人毕竟是宇宙演化了亿万年才形成的,具有“灵性”;不过自然人也是最脆弱的,如果和其他类人搞不好关系就很危险了。人的生存空间不仅扩展到外太空还进入到了虚世界!也许有人一辈子都愿生活在虚世界中而不愿意出来(出来只需一个关闭转换器的操作)...也许这一切目前还是科幻,不过理论上完全可以实现!

    相关文章

      网友评论

          本文标题:由程序的自我复制说起

          本文链接:https://www.haomeiwen.com/subject/ssmhattx.html