为什么计算机程序能解决问题

来源:互联网 发布:淘宝卖家订单 编辑:程序博客网 时间:2024/04/30 23:59
长久以来,我们已经习惯了计算机程序的诸多特性,并且基于各种各样的积木将一种又一种的武器塞入军火库中,但是有时候必须停下来思考一下火药的意义。

计算机程序基于这样一种原则:“如果一个目标困难到能够想到的解决方案都无法一次性解决的时候,那么我们可以将困难分解为一小步一小步地去解决,每一小步独立的解决方案都都是下一个解决方案的基础。”

首先,能想到的很重要,而且越来越重要,我很奇怪现在还没有人将学习成本真正纳入企业研发成本中去,我们现在往往是这样解决的,学习成本换算成时间成本,然后再对时间成本进行处理。学习成本并没有作为一个独立的东西被提出,也就导致无法在它的基础上进行细化,然而学习成本在当前往往是非常高额的,好方法的被想到和不被想到差别是巨大的。很多高效的模块和体系之所以没有大规模应用就是因为学习成本太高了,学习成本太高导致我们每次遇到各种相似的问题都总是站在起点上进行思考。

一次性解决的意义是,我们必须把问题拆分到能被一次性解决的程度,以海量的一次性解决方案拼成最终的解决方案。

反观目的本身,我们能这样做原因在于,目的可以被拆分,而目的可以被拆分的原因在于我们对目的足够了解,换句话说,我们在写程序之前,往往已经有了整个问题的解决方案,只是通过将解决方案抽象化为程序来实现我们自己的想法。

事实上,很多计算机目的无法轻易实现的原因就在于程序开始之前对这个问题还没有好的解决方案。问题在于,创造性的初期,人类,和许多动物一样,都是通过试错产生问题的解决方案的,而试错的过程往往是没有清晰的整体解决方案的。换句话说,有时候你不得不做一些尝试,哪怕你不知道结果为何,现在很多算法复制了这种尝试,然而这些算法的所谓的尝试往往也是人告诉它去试的,人事先告诉它你去试什么,如果出现什么样的情况做出什么样的反应等等。这已经很接近了,但是这同样没有解决问题。

打通这一切的关键在于,机器要根据眼前的情况自己去设计实验方案,通过它自己的尝试去学习只对它有价值的知识,如果有新的目的进入,它能够使用只对它有价值的知识来设计对目的的解决方案。

教育本身应该是共通的,无论是我们还是机器,之所以遗传的过程中不遗传知识,是因为你必须按照你生活的具体情况形成你独立的知识。机器也是如此,计算机生存的具体环境是网络,计算机能够实际操作的各种工具更加清晰,封装更加明确,问题在于,计算机不懂,我们懂。

所以现在有部分人迷恋去搭建语义网,希望用这个来实现机器也懂自己到底在干嘛的境地,这个是很关键的,乌鸦知道拿石子喝水的过程中自己在做啥,我们可以很容易得让机器去模拟这个动作,但是机器永远不知道自己执行每一个代码的原因,我们可以在中间过程设置无数的中间变量来暴露这些消息,但这依然不是一种直接的操作方式。

也就是说,我们可以隐藏锤子的造法、工艺等等,但是更关键的问题在于什么时候使用这个锤子,依然需要复杂的元数据,更重要的是生成这些元数据的方法。


0 0
原创粉丝点击