level 10
目 录
1、什么是自编程序?
2、为什么提出“自编程序”?
3、自编程序用什么语言?
4、自编程序时的母程序。
5、“自编程算法”。
6、各种学习算法。
7、自编程序模型。
8、“自编程算法”的用途。
2016年04月05日 07点04分
3
level 10
1、什么是自编程序?
自编程序不是说,让人自己学会编程序。
它指的是一种计算机技术,就是让计算机程序为自己编写程序。
已经是一个计算机程序,为什么要让它自己为自己编写程序?这是因为一般的计算机程序都是由人编写的。这些程序一旦编写成功,其运行方式就被程序固定了下来,不能再做任何改变。程序如果出现不足,就只能重编程序,或者用补丁弥补程序的不足。
如果一个计算机程序能够自己为自己编写程序,情况就大不相同了。这个程序就可以通过自编程序,弥补原来程序的不足,提高原来程序的性能。
2016年04月05日 07点04分
4
level 10
2、为什么提出“自编程序”?
我是在分析人脑工作情况以后,提出“自编程序”的想法的。
人脑工作时的各种操作方式,可以看成是一个个程序。可是没有任何其它东西,来为人脑编写程序。人脑在人类个体生长过程中,其能力在不断成长,这可以视为其程序功能在不断提高。可是没有任何东西为人脑补充程序,修改程序。
这一切只能解释为,人脑会在工作过程中为自己自编程序。凭借这些自编程序,人脑才不断提高自己的的功能,是自己的智能越来越高。
因此,“自编程序”是我们仿照人类智能不断进步的模式,提出的构造强人工智能一个技术手段。而且我认为,只有采用“自编程序”才能使得强人工智能赶上甚至超过人类智能。
也就是说,采用“自编程序”是构造仿人智能系统不可或缺的技术手段。
2016年04月05日 07点04分
5
level 10
3、自编程序用什么语言?
一提到“自编程序用什么语言?”,我们都会马上想到各种高级程序语言。最初(大约二十年前),我也曾试验过很多种用计算机语言自编程的方案。但是没有什么进展。
经过多年的探讨。我认识到自编程序必须用自己的语言。这种语言的基本词汇就是一些成功运行的程序,我把它们叫做“小程序”。自编程序语言没有其它的词汇。因此自编程序语言的语法就只有把“小程序”顺序连接。
这样一来,所谓的自编程序就是由“小程序”连接而成的大程序。
2016年04月05日 07点04分
6
level 10
4、自编程序时的“母程序”。
由谁来负责连接和管理这些自编程序呢?我设计用一个由人编写的系统程序来负责连接和管理“小程序”和自编出的程序。这个负责连接和管理的系统程序,我把它叫做“母程序”。
“母程序”有很多任务要完成。
第一、连接小程序,组成自编程序。
第二、记录、保存、调用自编程序。
第三、由于小程序只能直接连接,其循环、转移活动由母程序负责。
第四、负责小程序间的信息交流。
第五、负责系统与外界的交流。
第六、负责在自编程序时,淘汰不成功的组编形式,确认成功的组编形式。
2016年04月05日 07点04分
7
level 10
5、“自编程算法”。
根据以上设计,一套完整的“自编程算法”就设计出来了。
算法,在计算机理论中,指的是编写程序的方法。“自编程算法”涉及到两种程序的编写:一是“母程序”的编写,另一个是自编程序的编写。
在“自编程算法”中,“母程序”不是目标程序,目标程序是那些自编程序。但是“母程序”的性能会直接影响到自编程序的性能。
“母程序”是一个由人编写出来的程序,我们就能够对它的编写进行全面控制。但是,尽管如此,“母程序”却不是一个可以任意编写的程序,它必须能够满足我们在第4段提出的六点要求。在那六点之中,解决第二到第五项任务都不困难。重头戏在第一项和第六项。第一项我们在自编程序模型一段去讨论。第六项我们则要在各种学习算法一段讨论。
“小程序”是“母程序”自编程序的词汇。它们是一些可以独立运行的程序,它们连接起来运行,又可以组成性能更强大的程序。它们的内容根据需要而定。有三种情况:
第一、用于演示自编程序过程,检验母程序性能。此时小程序不必太复杂。
第二、用于普通的要用自编程序的场合。此时的小程序根据需要设计。
第三、用于仿人智能的的自编程序。此时的小程序要按人类智能的实际设计。
“自编程算法”内容表述起来很简单,就是要我们设计一个母程序和一些小程序。由母程序作为系统程序,负责连接“小程序”组成自编程序。然后由母程序负责选择、记录、调用成功的自编程序。
2016年04月05日 07点04分
8
level 10
6、各种学习算法。
为什么又要扯上各种学习算法?这是因为在把小程序连接成自编程序以后,有些连接后的程序,可以满足我们预期的目标,我叫做成功程序。另一些连接后的程序,不能够满足我们预期的目标,我叫做失败的程序。而母程序获得成功程序的过程,就是一些学习的过程。
为什么要叫做学习算法?因为各个学习过程也是一些程序,它们有相对固定的格式,这些格式也是算法。
与自编程序关系密切的有尝试学习算法(摸索学习算法)、模仿学习算法、逼近摸索学习算法、伴随学习算法。
各个学习算法都是一个反馈循环。
以摸索学习算法为例。首先是产生自编程序,然后把程序交付运行,再通过与外界交互确定自编程序是否成功。如果自编程序不成功,返回循环中重新自编程序,再次把程序交付运行,再次通过与外界交互确定自编程序是否成功。如果自编程序再不成功,就再次返回循环中重新自编程序。如果自编程序获得成功,就退出循环,记录保存成功程序。
2016年04月05日 07点04分
9
level 10
摸索学习过程没有组编小程序的模式,它把小程序一一尝试组编为自编程序,一一尝试运行。也因此叫做摸索学习过程。摸索学习过程是一个进展很慢,耗时很长的学习过程。
模仿学习过程有组编小程序的模式,但是这些模式不是由编程者写入母程序中,而是由母程序向外界模仿着学习而来。
逼近摸索学习过程介于摸索学习过程和模仿学习过程,它有一个大概的模式,但是又不能完全去模仿,要经过一些摸索才能成功。
伴随学习过程是系统无意间学习到的东西。其用处很大。
2016年04月05日 07点04分
10
level 10
7、自编程序模型。
什么是自编程序的模型?它是指具有一定结构的母程序,可以顺利地完成自编程序、自修改程序、自调用程序等任务。
前面我们已经指出,母程序是一个由程序员编写的程序。编写母程序可以采用任何一种高级计算机语言,只要它能够产生一个具有自编程序能力的母程序即可。至于用高级计算机语言如何产生自编程序的功能?就要看我们的进一步研究了。
自编程序模型就为我们提供了,使用高级计算机语言产生自编程序的功能的基本范式。这种范式一共有三种,详细介绍在主题《实现自编程算法的新思路》中。
第一种、条件转移模型。
这种模型概况是这样:由条件转移语句去执行小程序。由转移条件作为执行某个小程序的向导。由“转移条件发放程序”来变换小程序执行的次序。变化的转移条件、条件转移语句、小程序的执行共同构成不同的自编程序。由学习程序决定自编程序的成功与否。母程序记录下成功运行的转移条件的顺序,就记录下成功的自编程序。调用某个成功运行的转移条件的顺序,就调用了某个自编程序。
2016年04月05日 07点04分
11
level 10
第二种、数组函数指针模型。
这种模型概况是这样:把小程序一一的赋值给一个函数指针数组。由循环语句执行某个函数指针的函数(即小程序)。由“数组变量发放程序”发放不同的数组变量标号,来变换小程序执行的次序。循环语句、小程序的执行构成不同的自编程序。再由学习程序决定自编程序的成功与否。母程序记录下成功运行的数组变量的顺序,就记录下成功的自编程序。调用某个成功运行的数组变量的顺序,就调用了某个自编程序。
第三种、eval()函数模型。
eval()函数的作用是把其内部的字符编译为机器码执行。如果其内部的字符不是有效的程序信息,eval()函数会返回一些不可执行信息。
能够使用eval()函数的计算机语言不多,这也是它应用不够广泛的原因之一。
这种模型概况是这样:把高级计算机语言作为字符串处理。利用字符串处理方式编写小程序。把编写好的字符串放到eval()函数中,由eval()函数执行自编程序。由学习程序决定自编程序的成功与否,eval()函数也可以淘汰一批语法不合格的程序。成功程序的字符串就是成功自编程序的记录。再次把某个成功程序的字符串放到eval()函数中执行,就是对该自编程序的调用。
对比一下三种自编程序模型。就会发现,第一、二两种模型自编程序已经不再用计算机语言表示,也不用小程序来表示,它们是由转移条件顺序(第一种模型)和数组变量标号(第二种模型)的顺序来表示自编程序。
2016年04月05日 07点04分
12
level 10
第三种、组编“自编智能”的演示程序。
这类程序是我们用“自编程算法”构建出智能程序的预演。其目的是找出“自编程算法平台”的最佳结构。
什么是“自编程算法平台”?它就是一种母程序。它是我们构建仿人智能系统的基础。具有合理的、完善的实现仿人智能的自编程序基础。
由于我们对这个“自编程算法平台”需要反复地探索和修改完善,因此很多工作需要编写演示程序,用它进行试验。
此类程序的母程序要求尽可能完善。小程序则不必要求过高,能完成实验项目即可。
第四种、仿人智能程序。
这种程序是我们提出、使用“自编程算法”的目的。因此它要求合理的、完善的“自编程算法平台”,要求完整的、全部的智能小程序参与组编。并且最终实现我们使计算机智能,赶上或超过人类智能的目标。
2016年04月05日 08点04分
14
level 10
9、“自编程算法”与智能。
智能产生与自编程序有什么关系?
答案是:系统智能的产生是系统自编程序的结果。而且一个有智能系统,如果能够不断自编程序,它的智能就会不断提高。
使用什么样的“小程序”就可以产生全部高级智能?
人类智能的主要操作部分是思考,它又由联想、想象和思维组成。而思维又由判断、推理、逻辑思维、类比思维、抽象、分析、综合、理解等不同层次、不同性质的具体操作组成。这里面,每个智能操作都可以编写出程序作为小程序。
我们不仅要从智能的角度考虑小程序的设置,还要从计算机的功能出发,设计一些“小程序”,使它们能够与智能操作接轨。
例如以“保存”“调用”“遗忘”“复制”“比较”“罗列”“替代”“胡乱(非逻辑)”等为基本操作(小程序),通过自编程序产生所有智力功能。
2016年04月05日 08点04分
15