人类的行为与程序计算

胡言乱语

引子

人类从出生伊始都在面临着生活中的种种问题,人类无时无刻不在进行着问题的解决过程。程序从设计之初也是用来解决生活中特定问题的。那么人类行为与程序计算理论之间又有什么相似性呢?

  • 人类
  • 人类所面临的问题
  • 人类解决问题的过程
  • 人类解决问题的过程与程序执行
  • 代码生成器

人类

人类是当今地球上最智慧的生物,这是无可置疑的,虽然部分动物也拥有智慧比如说部分灵长类动物。但是人类却远比其他动物高级的多,人类和其他地球上现存的生物都是地球上的成功者,比历史进化的长河中灭绝的动物都要成功。

人类与其他的动物的不同之处在于,其他动物生存伊始只是为了解决固定的简单的问题(这里我们不深入讨论生物的终极目的是生存和繁殖的相关问题),比如鸭被设计用来解决捕食,果腹,交配,繁殖等问题,当然也包括面对捕食者时的生存问题。鸭子对这些问题的解决方式,都比较固定,例如,鸭子的印刻现象,这是天生固有的,无论鸭一出生面对的是鸭妈妈还是移动的人类,鸭子都会产生跟随行为。这些行为模式都是固定的,向公鸭呈现一只木头雕刻出的母鸭,将会激发出公鸭的一系列的献媚行为。一旦动物的固定行为模式被激发,动物将会完整地执行这套行为。

人类则不同,虽然,人类与其他动物一样也有固定行为模式,比如天冷时的不可控制的颤抖行为,吮吸行为等等。但是人类有一项所有动物都不具有的技能,就是面对新问题时可以根据已有经验进行推演,然后选择在现有数据下的最优抉择。

动物和人一样,天生就带有一系列的固定行为模式,就像一系列的用于解决特定问题的程序一样,例如求解斐波那契序列的C++程序,该程序只能解决斐波那契问题,类似的你让公鸭在面对食物时,执行“一系列的献媚行为”显然是不可理喻的。这些固定模式已经被优化了几千上万代,那些优化的比较渣的固定行为模式,正如你们所想的那样,在进化的过程中都淘汰掉了。


人类所面临的问题

人类所面临的问题,比起其他动物来说复杂的多,比如人类在社会中所面临的问题是不计其数的,这些问题可不是远古时代我们祖先所没有遇到过的。例如,学生时代,所面临纷繁复杂的游戏,有些男生沉迷于游戏无法自拔,有些男生则能够从以前的故事或者经验中获得如何解决这些问题的解法。还有,人类在城市居住,所面对的插座和危险的交通等问题都是远古社会所不存在的。

无法自拔的学生,在游戏中获得认同感,在远古社会,青春期的男性需要在部落中赢得尊严和名望,这样才能在部落中获得女性的青睐和相应的社会地位从而得到更多的交配机会和生存资源。这些学生在面对游戏时,脑子里面对竞技行为的固定行为模式被激发,沉迷其中并获得生理上相对应的成功感受。这些人的固定行为模式,在面对相似的问题后,虽然正确无误的被激发,可是却没有考虑到当前的环境。另一部分学生则不同,他们在面对这些问题时能够学习以往经验,并从中吸取教训从而压制这种固定行为模式的激发。

这才是人类独一无二的,人类从出生的时候被刻上了数以千计的固定行为模式,却能够根据当前环境和以往习得的知识做出已知的最佳选择。


人类解决问题的过程

虽然人类有数以千计万计的固定行为模式,但是在数量级上和所面临的问题还是不能比的。所以人类还有一项惊人技能,就是能够组合现有的行为模式来解决新问题。

例如,在陌生的地方向陌生的人问路,在远古社会像陌生人问路的可能几乎是没有的,那么现代人类是如何解决这一问题。虽然,在大脑里没有现有的固定行为模式可选,但是我们却可以临时组合出一系列的行为来解决这一问题。

首先选择"左顾右盼"寻找可以询问的陌生人,找到陌生人后选择"微笑"这一固定行为模式,然后选择"行走"这一固定行为模式向陌生人走去,然后"开口说话"做自我介绍,接着"询问",最后"理解"陌生人的答案。当然这些固定行为的粒度划分的是比较粗的。如下图所示:

这里写图片描述

人类能够快速的从一系列的行为模式中,挑选出一组行为模式临时组成一种和程序执行一点类似的解决方案。图中所展示的是一种顺序解决方案,其实中间夹杂着很多的分支决策的,例如路上没有行人怎么办,面对的是一个不乐于助人的人怎么办?如下图所示:
这里写图片描述

现实生活中的情形要比这个复杂一千倍一万倍,人类还可以根据现有情况临时改写行为模式(类似根据现有的状态临时改变行为模式),当然我们不会去追究其中奥秘(显然我也不够格),人类在几亿年的进化过程中通过无数代的筛选优化,已经成为最优秀的**“问题解决体”**了,虽然终极问题还是难以启齿的繁殖。

其实先想像一下,要你来设计一个机器人,你肯定也要依照这样的方式,例如向机器人大脑中,刻写上足够的固定的行为模式来解决生活中的一些"经典问题",为了解决新问题,你必须编写一个**“模式生成器”**,来根据现有模式来临时编写一些模式出来,最最最重要的问题在于能够在行为模式执行过程中,能够根据当前的环境不断的去修正现有的行为模式。


##人类解决问题的过程与程序执行
人类为了减轻自己的负担,发明了计算机,为了指导计算机的执行过程,人类要发展了编程语言理论。通过编写程序来指导计算机的执行,例如为了解决数字的阶乘问题,我们可以编写C++代码来解决相关问题,如下:

int factorial(int num)
{
	return num <= 1 ? 1 : num * factorial(num - 1);
}

这种程序确实在解决阶乘的时候,能够完全胜任,但是它能够解决斐波那契序列吗,当然不能。这种固定的程序类似于生物天生的固定行为模式,能够解决经典问题。有人会说,我们可以编写解决斐波那契额序列的程序啊,但是问题来了,如果要解决输出所有斐波那契序列的阶乘数值呢,这就无能为力了,现实生活中的问题是不计其数的,不可能解决的完。

所以,我们需要向人类借鉴一些思维方式,例如随机选择固定的行为模式临时生成解决方案。如下,我们可以从编程语言中选择固定的**“元操作”**来组成一段代码来解决新问题。也就是所谓的代码生成器,可惜现在还没有这样的理论。

这里写图片描述

其实一段代码也是一种"虚拟机器",例如**“阶乘代码”**这种虚拟机器来解决阶乘问题,这种机器是固定的。有虚拟机器,相对应的也应该有物理机器,比如冯诺依曼机,只是冯诺依曼机不是针对特地问题的,粒度也相当细,如下图:

这里写图片描述

我们可以根据这些"固定行为模式",来随机选择组成临时的程序,但是这是由专业人士来挑选的。如果有一种代码生成器,能够根据输入的问题,来临时组成一段代码来解决问题。但是这个代码生成器想想就很复杂,但是我们照样可以仿照人类来设计这种机器。

人类在面对复杂问题时,不可能立马设计出一种相当完善精确的行为模式出来来解决问题。人类总是短视的,例如我要问路时,不可能设计出一种精确模式出来,比如问路之前我不会去想**“如果那个陌生人说法语我该怎么办”**,人类总是走一步算一步的。如下图所示:

这里写图片描述

我们根据当前状态情况,来实时设计模式序列。


代码生成器

从前面所示,我们该如何设计代码生成器。首先我们必须有足够的完善的固定代码序列,然后我们必须设计出一个算法,输入当前问题,然后输出代码序列,并实时的执行。设计代码序列时要同时与当前状态进行交互,并实时执行。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值