人类的行为与程序计算

2023-11-04

胡言乱语

引子

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

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

人类

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

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

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

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


人类所面临的问题

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

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

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


人类解决问题的过程

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

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

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

这里写图片描述

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

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

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


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

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

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

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

这里写图片描述

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

这里写图片描述

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

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

这里写图片描述

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


代码生成器

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人类的行为与程序计算 的相关文章

  • 常用的工具

    进程 1 IDA 交互式反汇编器专业版 Interactive Disassembler Professional 简称为IDA IDA Pro是一款支持交互 可编程的 扩展插件 支持多种处理器的逆向工程利器 我一般用来看看库依赖 2 Pr
  • 如何选择PLC?主要从这8个方面入手

    在PLC系统设计中 首先要确定系统方案 下一步是PLC的设计选择 PLC的选择主要是确定PLC制造商和PLC的具体型号 系统方案需要分布式系统 远程I O系统和网络通信 那么如何选择PLC呢 1 PLC厂家的选择 确定PLC制造商主要应考虑
  • windows powershell快捷键

    复制ctrl c 鼠标右键 粘贴ctrl v 鼠标右键 删除整行命令esc 删除光标前一个单词ctrl backsapce 删除光标后一个单词ctrl delete 删除光标前一个字符backsapce 删除光标后一个字符delete 删除
  • 无符号16位整形数组转float---Java

    代码 public float int16tofloat int a if 0 a length 2 a length lt 0 return null int len a length 2 float c new float len fo
  • 【程序】【必须】PID位置环控制,代码+调参

    前面两篇博文已经实现了电机测速和PID速度环控制 在这篇博文中 我们主要说明位置环的代码怎么写以及PID参数怎么调 1 位置环代码实现 写完速度环后位置环就很简单了 在串级PID中 内环的控制量一般是外环控制量的微分 在我们这里 外环是控制
  • 2022.6.1 C++——类型设计与实例化对象

    对象的创建与使用 对象的创建与使用 1 直接定义类的实例 对象 2 C 对象模型讨论 3 this指针的作用 对象是类的实例 声明一种数据类型只是告诉编译系统该数据类型的构造 并没有预定内存 类只是一个样板 图纸 以此样板可以在内存中开辟出
  • 使用ubuntu系统做程序开发

    本人是在台式机上安装的ubuntu16 04长期稳定版来做的开发环境 ubuntu安装后的操作 由于在安装完后 第一件事就是联网 说下我公司网需要的是固定ip 需要在网络设置ipv4 必须注意 是 设置好了马上生效的 需要重新开启打开后 才
  • Python中一维向量和一维向量转置相乘

    在Python中有时会碰到需要一个一维列向量 n 1 与另一个一维列向量 n 1 的转置 1 n 相乘 得到一个n n的矩阵的情况 但是在python中 我们发现 无论是 T 还是 np transpose 都无法实现一维向量的转置 相比之
  • 视频技术阐释

    目录 一 视频定义 二 视频原理 三 视频中的图像表达原理 四 视频的基础参数 帧 长宽比 分辨率 帧率 码率 重采样率 色深 五 视频的高低频 六 视频编码与格式 七 视频评价 八 视频开发库 九 视频协议 十 常用视频编辑软件 一 视频
  • 数值求解一维定态薛定谔方程

    背景 学习量子化学原理与应用课程时 一维定态薛定谔方程经常归结为解二阶偏微分方程 因此 学习数值解法一方面能够验证解析解 另一方面也能够应对更多更复杂的势垒函数对应方程的解 参考资料 https github com FelixDesroc
  • 人类的行为与程序计算

    胡言乱语 引子 人类从出生伊始都在面临着生活中的种种问题 人类无时无刻不在进行着问题的解决过程 程序从设计之初也是用来解决生活中特定问题的 那么人类行为与程序计算理论之间又有什么相似性呢 人类 人类所面临的问题 人类解决问题的过程 人类解决
  • C语言 程序 杨辉三角实现

    9 杨辉三角形 在屏幕上显示杨辉三角形 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 问题分析与算法设计 杨辉三角形中的数 正是 x y 的N次方幂展开式各项的系数 本题作为程序设计中具有代表性的题
  • java实现信息的增删改查功能的网页设计(1)

    仅供参考 不可转载 如遇其他情况概不负责 后果自负 切记 该项目运用的技术 spring springMVC ibatis 本网页只有一个页面 包过信息的增 删 改 查功能 只有部分代码 仅供参考 因该项目比较大 所以仅提供了一个页面内的增
  • 怎样在 Markdown 中使程序代码带上行号

    在图灵社区使用 Markdown 写文章时 如果在一段文字的每行开头加上四个空格 或者一个制表符 Tab 这段文字就会被视为程序代码 这样 就会自动识别所用的编程语言 进行代码染色 语法高亮显示 但是 如果这段程序很长的话 就有两个小问题
  • Testing-《软件测试》读书笔记(四)

    静态测试是指测试非运行部分 检查和审查 白盒测试是指访问代码 能够查看和审查 静态白盒测试实在不执行的条件下有条理地仔细审查软件设计 体系结构和代码 从而找出软件缺陷的过程 有时也成为结构分析 静态白盒测试的原因 首先是尽早发现软件缺陷 另
  • 如何创建你的第一个西门子200PLC程序

    更多关于西门子S7 200PLC内容请查看 西门子200系列PLC学习课程大纲 创建西门子200PLC程序分五步 1 打开Micro WIN软件 2 新建工程 3 打开程序编辑器 4 输入程序指令 5 保存程序 我们以下图程序为例讲解西门子
  • Java语言与面向对象的程序设计

    这几天很迷茫 听老师介绍了一款软件 中国大学MOOC 刚好我是软件专业的学生 索性听了北京大学老师的一节关于Java的讲课 果断被震撼到了 他们的讲课给人一种很深刻 深入 的感觉 我今天就把老师讲到的东西记了下来 以便于有兴趣的朋友阅读 J
  • kotlin高阶函数开发一个程序,统计文本中字符串出现的个数

    一 高阶函数是Kotlin的核心部分 下面来使用下高阶函数写一个程序 注意 我这里的File使用的是 与src同级的文件 你可以根据自己的需要 修改文件地址 代码实例 package net println kotlin chapter5
  • HTML(HBuilder)作业题10- 用户登录(jquery)

    问 简单的用户登录怎么弄 答 1 利用jquery 2 利用if 注释 用鼠标离开区域开始判断 可以自行尝试修改成click单击按钮 HBuilder
  • IntelliJ IDEA 编译程序出现非法字符的解决方法

    最近编码完成后总是报非法字符 项目启动不起来 网上有很多说是File gt Setting gt File Encoding 将IDE Encoding和Project Encoding 都设置为UTF 8就行 可是我试了不行 后来看到另外

随机推荐

  • 最近大火的 prompt 论文集锦

    近来作为nlp领域新宠 prompt频频出现在大众视野 小编整理了一些优质论文 欢迎大家一起交流 1 论文名称 P Tuning v2 Prompt Tuning Can Be Comparable to Fine tuning Unive
  • Unity--Physics.OverlapSphere的参数LayerMask和GameObject的layer

    Layer介绍 Unity中是用int32来表示32个Layer层 int32表示二进制一共有32位 0 31 在Unity中每个GameObject都有Layer属性 默认的Layer都是Default 在Unity中可编辑的Layer共
  • buck芯片能产生负压吗?

    buck芯片能产生负压吗 1 前言 2 分析 1 前言 有的运放需要正负压供电 负压的产生一般是由电源芯片处理 将正压转换为负压 那么问题来了 buck能产生负压么 2 分析 开关电源有三种基本拓扑 buck boost buck boos
  • 敏捷开发系列之旅 第三站(认识FDD特征驱动开发)

    上篇文章中 我们探讨了 什么是XP极限编程 以及极限编程的管理思想 核心价值观等等 在敏捷开发之旅的第三站 我想要和大家一起分享FDD特征驱动开发方法 特征驱动开发 Feature Driven Development 还是老规矩 讨论之前
  • DALL·E 2 解读

    目录 一 导读 论文信息 CLIP 打通文本 图像模型 相关讲解 扩散模型Diffusion Model相关讲解 二 DALL E 2 模型解读 DALL E 2 模型总览 DALL E 2 训练过程 DALL E 2 推理过程 由文本生成
  • project 2007项目管理软件

    Microsoft Office Project 2007 项目管理软件 Microsoft Project 2003 2007是国际上最为盛行的基于网络的项目管理软件 在各类IT集成及开发项目 新产品研发 房地产项目 设计项目 工程建设项
  • Java性能调优笔记

    Java性能调优笔记 调优步骤 衡量系统现状 设定调优目标 寻找性能瓶颈 性能调优 衡量是否到达目标 如果未到达目标 需重新寻找性能瓶颈 性能调优结束 寻找性能瓶颈 性能瓶颈的表象 资源消耗过多 外部处理系统的性能不足 资源消耗不多但程序的
  • JSON中的key下划线与驼峰互转

    JSON中的key下划线与驼峰互转工具类 1 JSON中的key 下划线转驼峰 public final static Object underlineToHump String json Object obj JSON parse jso
  • WebGL射击游戏的优化

    myshmup com 允许在浏览器中创建 shmup 射击 游戏 我们可以使用具有创意通用许可证的资源或上传自己的艺术作品和声音 创建的游戏可以在网站上发布 该平台不需要编码 游戏对象的配置是在用户界面的帮助下执行的 后端是使用Djang
  • Spring MVC结果转换

    一 返回视图 ModelAndView 1 视图路径 默认在当前Control的路径下 表示项目部署的根目录 例如 new ModelAndView home jsp 返回的路径是 user home jsp new ModelAndVie
  • 实现一个最小的操作系统

    实现一个最小的操作系统 本实验在Vmware虚拟机的Linux环境下完成 准备工作 硬件 VMware下Linux虚拟机 Ubuntu 18 04 5 LTS 软件 汇编编译器NASM 软盘绝对扇区读写工具 dd命令 VMware的安装以及
  • 机器人基础原理1_2——机器人分类与常见坐标系

    机器人分类与常见坐标系 1 机器人的分类 1 按辈分 2 对应人的不同器官 3 按其构成机构 3 按驱动方式不同 4 按用途分类 2 常见的坐标系及对应的机器人结构 2 1 笛卡尔坐标系 2 2 圆柱坐标系 2 3 球坐标系 1 机器人的分
  • ThoughtWorks(中国)程序员读书雷达

    软件业的特点是变化 若要提高软件开发的技能 就必须跟上技术发展的步伐 埋首醉心于项目开发与实战 固然能够锤炼自己的开发技巧 却难免受限于经验与学识 世界上并不存在速成的终南捷径 但阅读好的技术书籍 尤其是阅读大师们的经典著作 总能收到事半功
  • Zabbix学习笔记(一)---Zabbix的安装

    目录 前言 一 Zabbix简介 二 下载与安装 1 CentOS 9安装 2 安装zabbix A 安装Zabbix包 B 安装Zabbix server 前端 Agent C 设置httpd D 安装数据库 总结 前言 近期学习网络运维
  • vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速

    如何在vue中引入高德地图在这里就不过多赘述 大家可以看这篇参考在vue中引入高德地图 说正事 使用高德地图实现轨迹回放 并能实现倍速控制 具体效果如图 核心代码 绘制小车 this marker new AMap Marker posit
  • ElasticSearch入门

    ElasticSearch概述 ElasticSearch 简称es es是一个开源的高扩展式全文检索引擎 它可以近乎实时的存储 检索数据 本身扩展性很好 可以扩展到上百台服务器 处理PB级别的数据 ElasticSearch安装 声明 j
  • Qt 学习之旅 ----可移动的无边框圆角窗口

    Qt 默认的窗口会有系统自带的边框 如图 但是在大多数情况下 系统自带的边框是不需要的 去掉边框很简单 在建立窗口时 加入如下一个函数 w setWindowFlags Qt FramelessWindowHint 这样 边框就被去掉了 但
  • win7安装计算机的更新,解决win7系统更新升级教程

    操作系统是一个复杂的程序 在使用过程中也需要不断的更新 修复漏洞 但是很多朋友都会将win7系统的自动更新关闭 我给大家带来了win7系统更新升级的小方法 大家可以参考一下 win7系统可以说是目前最易用的操作系统 它增加了一些小功能 如快
  • DevOps B站学习版(一)

    学习地址 01 DevOps的诞生 哔哩哔哩 bilibilihttps www bilibili com video BV1Pt4y1H7Zq p 1 vd source 1f09c23f556b3d6a9b7706f8db12fa54
  • 人类的行为与程序计算

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